NixOS is a declarative, reproducible approach to system building. The documentation is great if you're an expert, but for beginners it can be very confusing. This guide is intended as a gentle, opinionated, hands-on introduction to NixOS.
This is a work-in-progress! Some parts are missing information, and other parts I haven't figured out yet! If you see anything amiss or feel like helping, open an issue or a PR!
The first question beginners will have is "How do I install this thing?"
As a beginner, you'll want some kind of sandbox to play around in and break stuff before you're ready to entrust your important things, so we'll focus on installing NixOS in a VM.
Before getting into the most common tasks, take a moment to review the fundamentals of running NixOS.
How do I do XYZ? Find out in the common tasks section!
A quick introduction to the Nix expression language, from which everything Nix is built.
A brief introduction to building with flakes.
This section covers the most common configuration structures and idioms.
There will be some sharp edges and counterintuitiveness in any sizeable system. If you get stuck, have a look at the common problems section.