I like the idea of nix; and I love having the confidence of being able to easily install the same versions of software I like using on whatever machine I'll be using.
Typically, though, the number of times I'm setting up a computer so that I can work on it is best measured in "x times per year". For that case, it's harder to argue that Nix is worth spending the time compared to just slowly setting up each computer manually.
I think in this case, each user being able to use an ephemeral environment and quickly set up a familiar environment is where use of Nix seems much nicer than alternatives.
> For that case, it's harder to argue that Nix is worth spending the time compared to just slowly setting up each computer manually.
Actually that’s an even better justification for using NIx instead of slowly setting up each computer manually.
If you’re setting up a new computer every week, or even every month, you tend to remember all the packages, configs, and tweaks you need just from frequently doing it.
But if you need to set up a computer once a year, you forgot all that stuff, making it even more valuable to have it all scripted in a deterministic build.
This blog post “Erase Your Darlings” discusses this issue, along with a really interesting solution to it:
So much this. I’ve been setting up a new computer recently, first time in a while, and in the process I’ve been moving a bunch of stuff into Nix that was previously ad-hoc, specifically so I don’t have to remember about this again (and especially since I know I’ll be setting up another computer again in the near future). I even finally adopted nix-darwin and home manager in order to move more things under the Nix umbrella.
Additionally consider that you may consider ephemeral environments impractical for daily/frequent use because it would constantly lose your configurations and take forever to bring back up.