Review of home manager | Gunnar Þór Magnússon


Thanks for the review! I think it is a fair assessment and the tension between configuring stuff at the NixOS level versus the Home Manager level is certainly real.

For what it’s worth, I do both and the choice simply depends on whether I must be able to iterate on the HM configuration separately. For most NixOS users I imagine the HM NixOS module is the best choice, and if you just want to declaratively install user packages and define user services then I would recommend skipping HM entirely in favor of users.users.<name>.packages and systemd.user.*.

In your closing paragraphs I think you missed a use-case where HM comes in quite handy, and which happens to be my main use-case. Namely, those who have many different logins with slight differences in configurations. For example, I work as a freelance developer and have one or more NixOS containers per customer. The configuration of my user in those containers is of course done through HM and they all share a common base setup. But each customer is different and require a customized configuration. As a concre example, if a customer uses Terraform I can, with a line or two of Nix code, enable my preferred Terraform setup which will install the Terraform tooling with necesary providers, add terraform-mode to my Emacs configuration, add a few environment variables to set up Terraform logging, etc.

I think the above is difficult to accomplish – not to mention conveniently accomplish – with any other tool. At least I haven’t found anything like that.


Hi @rycee! Home Manager is a great project! But I’m not the author of this blog post, I just posted the link here because I thought it was interesting.