Home in Nix – dotfile management
I tried out Nix recently, with the intention of using it to get declarative management of my user account.<p>I discovered too late that Nix basically has no support for this.<p>While NixOS has some very nice features for declarative setup, user environment management boils down to terminal commands for &quot;install package X, remove package Y&quot;.<p>The mentioned home-manager seems more of an awkward hack than a good solution in my view. It builds up a parallel package repository that you have to use besides the actual packages, and requires a lot of additional work if you want to customize something.<p>In my understanding (possibly incorrent?) it is also not actually immutable, but just dumps down files into $HOME, losing the most interesting aspect of Nix.<p>In the end I ditched it and stuck to my Ansible setup.<p>Nix is a great approach, and definitely worth a look, if you can stomach the other downsides (see below). But right now I would only recommend it for deterministic server builds or isolated dev environments, not for managing you main setup.<p>* Problems:<p>- There is plenty of documentation, but it is often incoherent, messy, missing important explanations, and it is generally very awkward to get a good insight and understanding of how all the parts fit together.<p>- The language... it is full of confusing oddities; clearly something that has grown peace by piece. Switching to something more coherent like Gluon (also functional, <a href="https:&#x2F;&#x2F;github.com&#x2F;gluon-lang&#x2F;gluon" rel="nofollow">https:&#x2F;&#x2F;github.com&#x2F;gluon-lang&#x2F;gluon</a>) would seem like a better approach to me.<p>- Packages: The quality can be very hit and miss. I discovered several that are written poorly. Plenty are also outdated&#x2F;unmaintained. But: considering the niche nature of Nix, the amount of packages is actually quite impressive.