I absolutely love NixOS! I use it as my main OS both on my desktop and my VPS.
What is truly magical is the ability to configure even projects with pinned dependencies via shell.nixand if you have NixOS on a server you can also write and import a default.nix to set up a reproducible deploy on any NixOS machine.
Here a couple of tips I learned myself:
  • If you want you can also use the passwordFile rule to store the encrypted passwords outside of your config code.
  • It's better to avoid nix-env entirely as it's NOT reproducible, it's better to use nix-shell for occasional use or add them to the environment directly.
  • Even cooler, you can write scripts with a special shebang that let you automatically load various languages or packages.