hamishmack has quit [Quit: My MacBook has gone to sleep. ZZZzzz…]
<LnL>
those where renamed in nix 2.0
<LnL>
so if the version of nix used can't be detected the old values are used
<LnL>
check darwin-option nix.package
FRidh has joined #nix-darwin
hamishmack has joined #nix-darwin
johnw has joined #nix-darwin
johnw has quit [Ping timeout: 265 seconds]
philr has joined #nix-darwin
alexteves has joined #nix-darwin
johnw has joined #nix-darwin
__Sander__ has joined #nix-darwin
jrolfs has joined #nix-darwin
jrolfs has quit [Ping timeout: 240 seconds]
johnw has quit [Read error: Connection reset by peer]
johnw has joined #nix-darwin
hsribei has joined #nix-darwin
johnw has quit [Ping timeout: 240 seconds]
johnw has joined #nix-darwin
Sonarpulse has joined #nix-darwin
__Sander__ has quit [Quit: Konversation terminated!]
jrolfs has joined #nix-darwin
jtojnar has quit [Remote host closed the connection]
jrolfs has quit [Quit: WeeChat 2.1]
Sonarpulse has quit [Ping timeout: 260 seconds]
johnw has quit [Ping timeout: 240 seconds]
Sonarpulse has joined #nix-darwin
jtojnar has joined #nix-darwin
the has joined #nix-darwin
the has quit [Changing host]
the has joined #nix-darwin
johnw has joined #nix-darwin
philr has quit [Ping timeout: 268 seconds]
FRidh has quit [Quit: Konversation terminated!]
johnw has quit [Ping timeout: 260 seconds]
the has quit [Remote host closed the connection]
<ejpcmac>
Hi! Is it normal that I get so many new derivations on each updates? I mean, I just updated after two days and I have for instance a new `git-2.18.0` derivation with a different hash, but Git has not been updated in the mean time.
<ejpcmac>
It seems to take quite a lot of place for a few changes.
<clever>
ejpcmac: one of gits dependencies has changed
<ejpcmac>
So Git needs to be re-built.
<clever>
or re-downloaded from the binary cache
<ejpcmac>
I one hand it is advertised that Nix can save space by sharing derivations between users / installed programs, but in fact you end up rebuilding each dependent derivation on each update.
<clever>
depends on if something like glibc has changed or not
<ejpcmac>
Ok, that’s only if it has an impact?
<ejpcmac>
I mean, I am used to rebuild dependent ports on FreeBSD when there is a huge system update, but generally for tiny updates you don’t need to re-build all dependent ports.
<clever>
yeah, the hash in the path is a has over all of its inputs, which are themselves hashes on their inputs
<clever>
so nix will only rebuild things when the inputs have changed
<clever>
bbl
<ejpcmac>
That’s strange when you are not used to.
the has joined #nix-darwin
the has quit [Changing host]
the has joined #nix-darwin
<LnL>
what nixpkgs are you using?
<LnL>
I wouldn't advertise nix as saving space, unless you drop it's most useful feature (rollbacks) nix will use more disk space than other traditional package managers
<LnL>
nix can be used to build a small closure of all the runtime dependencies for a package to be distributed, but that's pretty different from normal usage
<ejpcmac>
LnL: I’m using unstable
<LnL>
with unstable you'll get fresh binaries if staging was merged into master since the last update
<ejpcmac>
Regarding the place, for rollbacks it’s not a problem. But let’s say in my example Git depends on a given dynamic lib. This lib gets a minor patch update. As it is a dynamic lib, isn’t its update sufficient to apply the patch? Why does Git needs to be rebuilt in such case?
<gchristensen>
that is how the isolation works
<gchristensen>
/nix/store/hash-git/... will _always_ depend on exactly the same thing now and forever
<ejpcmac>
Ok, same dylib so. I understand.
<LnL>
in nix git linked against openssl-1.0.2o is considered a different version as the one linked against openssl-1.0.2n
<ejpcmac>
And shouldn’t be some way to optimize that? Saying at runtime “Hey, we’re at this generation so you should use this OpenSSL version”, but keeping the same binary so that it is not twice in the store?
<ejpcmac>
Because in this case the git binary is the same, isn’t it?
<LnL>
and this goes even one step further, git built using clang-5 != the exact same git built using clang-6
<LnL>
even if it doesn't have any runtime dependency on clang
<gchristensen>
ejpcmac: is it, though? how can you know for sure?
<LnL>
ah
<LnL>
well there's nix-store --optimize
<ejpcmac>
LnL: In this case the binaries can be different if LLVM has some new optimizations
<LnL>
that goes through the store and hardlinks files that have equivalent content
<LnL>
excatly
<LnL>
or git might not even build with clang-6
<LnL>
and then you'd loose the ability to reproduce the build locally because you don't know what it was actually built with anymore
<LnL>
so nix is pessimistic and assumes any change will break or change the result
<ejpcmac>
To sum up if I understand correctly: it has the same advantages and disadvantages of FP. It takes more memory but is reproducible and robust.
<LnL>
yeah
<LnL>
another interesting side effect of the fact that we rebuild all of nixpkgs frequently is that we find (and hopefully eliminate) a lot of intermittent failures
<ejpcmac>
I’m a FP enthousiast for more than a year now, discovering it with Elixir and lurking to OCaml and Haskell. But I also like the Rust way of using some FP semantics with powerful optimizations so there is no runtime cost.
<LnL>
same for subtile bugs in tools/libraries that are used by a lot of packages
<ejpcmac>
I would like to see some similarities in Nix
<gchristensen>
people say Nix trades disk space for sanity
<LnL>
^^
<ejpcmac>
^^
<gchristensen>
and disk space is a pretty cheap way to buy a load of sanity
<LnL>
it's a pretty common pattern for new users to run gc every hour, while long time users have a nix store of >=100G
<ejpcmac>
Indeed.
<gchristensen>
I usually GC when my nix store uses ~90% of my hd free space
<gchristensen>
I'm not doing anything else with the space
<ejpcmac>
I’ve set automatic GC on unused stores older than 30d for now. Let’s see how it evolves with time.
the has quit [Ping timeout: 244 seconds]
hamishmack has quit [Quit: My MacBook has gone to sleep. ZZZzzz…]
hamishmack has joined #nix-darwin
johnw has joined #nix-darwin
jtojnar has quit [Read error: Connection reset by peer]
jtojnar has joined #nix-darwin
alexteves has quit [Remote host closed the connection]
jtojnar has quit [Quit: jtojnar]
jtojnar has joined #nix-darwin
edwardk has joined #nix-darwin
* edwardk
takes the plunge.
<edwardk>
I knew inviting johnw to stay with me was dangerous