NixOS
Notes on Nix & NixOS
Personal journey notes for learning Nix and NixOS the way practitioners who already live in this ecosystem would sequence the work: early feedback loops, modern defaults, depth when you have something real to debug.
Baseline: Nix 2.34.x · NixOS / nixpkgs 26.05 “Yarara” (as of mid-2026).
This is a normal topic-oriented book (parts and chapters), not a day-calendar or certification track. Chapter contract: Syllabus.
What “done” looks like
- Explain store, derivations, evaluation vs realization, generations, and GC roots in plain language
- Run one flake-defined NixOS 26.05 host; break it, roll back, recover
- Prefer modern CLI + flakes as the default; recognize classic commands when you meet them
- Separate system (NixOS) and user (Home Manager) concerns cleanly
- Package something you actually use; write modules with real options
- Keep secrets out of the store; layout disks with Disko when you reinstall
- Deploy beyond one box, use a binary cache and CI, harden without cargo-cult
How the book is organized
| Part | Path | Focus |
|---|---|---|
| Front matter | 00-front-matter/ |
Syllabus + Lab 0 (single-server / dev / Elitebook) |
| Concepts | 01-concepts/ |
Why Nix, store, language, CLI, flakes |
| NixOS host | 02-nixos-host/ |
Install, rebuild, users, net, modules, boot |
| Home & layout | 03-home-and-flake-layout/ |
Flake layout, locks, Home Manager, direnv |
| Services & security | 04-services-and-security/ |
Secrets, hardening, TLS front door, containers |
| Packaging | 05-packaging/ |
stdenv, overlays, caches, language ecosystems |
| Ops & fleet | 06-ops-and-fleet/ |
Disko, deploy, tests, CI, images, backups |
| Internals | 07-internals/ |
Evaluator, module system, upgrades, troubleshooting |
| Capstone | 08-capstone/ |
Rebuildability proof and recovery notes |
| Projects | 99-projects/ |
Derivations + branded distro (ISO, themes, editions) |
Chapters are topics, not “Day 1…Day 90”. Read in order when learning; use the sidebar as a reference index when you already know where to jump.
Lab 0 (recommended before first host work)
If you have a spare machine (example profile: HP Elitebook 2570p · 16 GB), set up the lab first:
- Roles & topology —
01a-lab-overview-and-roles.qmd
- Journey single-server (KVM, VMs, containers) —
01b-lab-journey-single-server.qmd
- NixOS dev machine —
01c-lab-nixos-dev-machine.qmd
- Elitebook hardware profile —
01d-lab-elitebook-2570p.qmd
- Ops cheatsheet —
01e-lab-ops-cheatsheet.qmd
How I intend to study
| Slice | Share | Purpose |
|---|---|---|
| Concept | ~25% | Manuals, mental models, why |
| Hands-on | ~55% | Configs and builds that can fail |
| Review | ~20% | Refactor modules, commit, write gotchas |
Rules that match expert practice:
- Disposable VM (or spare disk) for breakage; keep a daily driver safe
- Flakes + modern CLI by default from early chapters
- One change → rebuild → observe — avoid huge untested diffs
- Budget disk for
/nix/store
- Pin 26.05 deliberately; upgrade only with a written plan
Prerequisites
- Comfortable Unix shell
- Processes, files, SSH, basic networking
- Willingness to reinstall a VM
Formats
HTML (primary), PDF, and EPUB via the monorepo library portal when built.
Acknowledgments
Path designed as an expert learning sequence for Nix/NixOS. Topic inventory drawn from personal study notes and production practice.
Official docs (nixos.org, nix.dev, release notes) win when notes and reality disagree. No exam-vendor affiliation.