Nix is a purely functional package manager. NixOS is a Linux distribution using Nix.
Nix channels - NixOS Wiki
Nix retrieves packages from channels within repositories. The most important repository is nixpkgs, which contains regular stable channels (e.g. 19.09) and the single most popular Nix channel, nixpkgs-unstable. I have a local copy of nixpkgs on pigeon at ~/code/nixpkgs.
Do not confuse stable channels with LTS! There are no LTS channels. Stable channels roll over roughly every 6 months, with about a month of support overlap.
home-manager is the usual tool for managing user environments. See home.nix
Sander van der Burg's blog: Managing private Nix packages outside the Nixpkgs tree
Thedro Neely: Declarative user package management in NixOS
kimagure: Putting your own derivations in Nix Profile
See https://nixos.wiki/wiki/Storage_optimization for detailed info
nix-store --optimise
can save some space for a one-time CPU cost. nix.autoOptimiseStore = true
can do this automatically
Nix keeps old packages around to facilitate easy rollbacks. This can take up a lot of space
Packages can be deleted when they are not linked to from any GC root. nix-collect-garbage
will do this, or nix-store --gc
.
Profiles and generations are GC roots, as well as /run/booted-system on NixOS.
nix-collect-garbage -d
will delete "old" generations, that is, all but the current one
Mic92/nixpkgs-review: Review pull-requests on nixpkgs
Nix Pills: Recipes for using Nix; less impenetrable than the manual
readlink -f
is useful for tracking down the actual content of files.
strace is useful for tracking down configuration/logs
How do Nix builds work?