| > So yes, if you need 100% deterministic, Nix is your guy. There are two orthogonal problems here: a lack of package isolation and nondeterminism. Nix isolates packages, such that updating one package has no impact on any other packages (with unavoidable exceptions like the graphics driver, presumably). You're right that package isolation isn't much of a problem on non-rolling distros. One of the benefits of Nix is that you get some of the stability and predictability of an LTS distro with the freshness of a rolling distro when desired, without having to deal with package conflicts. Incidentally, Nix doesn't need to be used in a deterministic manner. In fact, I don't think most desktop users of Nix care too much about determinism for most packages they run. I certainly don't; I'm happy to follow along with whatever arrives in my channel. Nix has features that support determinism, and I'm certainly glad they exist for when I end up needing them, but they're not necessarily why people use Nix. > Obviously, stateless is valuable. When I said "stateless", I was referring to the whole "cattle, not pets" view of servers, where the running state of any particular server is unimportant, with nothing in the filesystem being of value. I was arguing that needing to build a new image and reboot in order to change which packages are installed are a poor fit for the desktop use case, where frequent reboots are much more inconvenient than for the server use case. I'm not sure what taohansen meant when they used the word "stateless"; they seem to mean something different when they say that. Anyways, this point is not really applicable anymore, since you've stated: > You can install your packages and use them when you like, without requiring a rebuild. Presumably if you install additional packages uncontrolled by your tooling, then your systems can start to drift away from each other. Nix does not have this compromise; there's no build step. At any given point in time you can reproduce whatever configuration you have on one machine on another machine, regardless of how piecemeal you arrived at that configuration. |