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
  1. 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 .drv graph
    • Fetchers: sources from Git and URLs
    • Working with local files

    Packaging software

    • stdenv.mkDerivation phases
    • 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
  2. Contribute to Nixpkgs

    • Package conventions and review
    • Documentation and the Nix community