nix-roadmaps
Learn Nix
An illustrative path through the official nix.dev material — trunk steps run down the spine, supporting topics branch off each one. Start at the top and work down; every step is a checkable milestone in the roadmaps CLI.
Key
Main quest
Quest item
Side quest
Install Nix
- Multi-user vs single-user install
- Verify with
nix --version
- Ad hoc shell environments
- Reproducible interpreted scripts
- Declarative shells with
shell.nix
First steps
- Pinning Nixpkgs for reproducibility
- Auto-activation with direnv
- Attribute sets, lists, functions
- Laziness and evaluation
Nix language basics
- Strings, paths, string interpolation
- Derivations and the
.drvgraph
- Fetchers: sources from Git and URLs
- Working with local files
Packaging software
stdenv.mkDerivationphases- Overrides and overlays
- Build vs runtime dependencies
- The Nix store and closures
- Garbage collection and roots
Reproducible builds
- Sandboxing and purity
- Cross compilation
- Options, types and defaults
- Writing your own module
Module system
- NixOS configuration
- Generations and rollback
- Testing systems in a VM
- Continuous integration with GitHub Actions
- Binary caches and remote builders
Deployment & CI
- Flakes (experimental)
- Deploying NixOS systems
Contribute to Nixpkgs
- Package conventions and review
- Documentation and the Nix community