|
Software developers often want to customize: 1. their home environments: for packages (some reach for brew on MacOS) and configurations (dotfiles, and some reach for stow). 2. their development shells: for build dependencies (compilers, SDKs, libraries), tools (LSP, linters, formatters, debuggers), and services (runtime, database). Some reach for devcontainers here. 3. or even their operating systems: for development, for CI, for deployment, or for personal use. Nix provision all of the above in the same language, with Nixpkgs, NixOS, home-manager, and devShells such as https://devenv.sh/. What's more, Nix is (https://nixos.org/): - reproducible: what works on your dev machine also works in CI and in prod, - declarative: you version control and review your configurations and infrastructure as code, at a reasonable level of abstraction, to specify what the system should be, not how to get there, - reliable: all changes (switching generations or profiles) are atomic with easy roll back. |