Posts

Comments

Comment by l0b0 on The Best Software For Every Need · 2021-09-20T05:36:53.794Z · LW · GW

Software: Nix

Need: Package management

Other programs I've tried: Puppet, Ansible, Pip, Poetry, Virtualenv, Vagrant, NPM, Yarn, Gradle, Docker, Apt, Yum, Make, and many more I can't remember the names of.

It would be difficult to convince myself from ten years ago that Nix was even a good idea without trying it. The change is probably as fundamental as going from ./configure && make && make install to a package manager, or from no version control to Git. I'll give it a try

  • You can replace the vast majority of the use cases of the other programs above with Nix – it's not just another tool on the pile.
  • Do you ever work on more than one programming project? It's trivial to ensure they don't clobber each other, for example when they use different versions of NPM or Python.
  • Reverting to a previous version of your entire operating system configuration is trivial.
  • You don't need to write any rules to uninstall packages or disable services when you no longer need them, like in Puppet or Ansible - you simply remove the relevant line and rebuild.

Some arguments I can think of against Nix:

  • Builds can take a relatively large amount of disk space, but that's already really cheap and getting cheaper.
  • The Nix language is maybe about as complex as Puppet, Ansible or Vagrant, but unless you're developing software you won't need to deal with anything as complex as that.
  • Some of the tooling is still not very mature. Again, unless you're a developer using some unusual package management solution you should not worry about this.