NixOS: The Complete Guide

NixOS is an independent Linux distribution in which the whole system, from the bootloader to the users and the installed programs, is described in text files and then built from them. It is based on no other distribution. Instead, it is built around the Nix package manager and Nixpkgs, one of the largest package collections in the Linux world. If you change a line in the configuration and rebuild, NixOS produces a new version of the system and keeps the old one, so a bad change can be undone from the boot menu.
This page is the starting point for everything tuxai.dev has published about NixOS. It explains what the distribution is, how its configuration model works, the difference between Nix and NixOS, the flakes versus channels question and who should use it. Each topic links to the full guide for the details. All versions, dates and package counts below were checked against nixos.org, the NixOS manual, the Nix reference manual, the NixOS GitHub repositories, Discourse announcements and Repology on 14 October 2026.
NixOS at a glance
| Item | NixOS |
|---|---|
| Based on | Nothing. Independent, built on the Nix package manager and the Nixpkgs collection |
| Release model | Two stable releases a year, numbered YY.05 and YY.11, plus the nixos-unstable branch for people who want the newest packages |
| Current stable | NixOS 26.05 "Yarara", released 30 May 2026, with bug fixes and security updates until 31 December 2026 |
| Next release | NixOS 26.11 "Zokor", planned for 23 November 2026 (the release managers say the dates may still move slightly) |
| Previous release | 25.11 "Xantusia", end of life on 30 June 2026 |
| Packages | 149,566 in nixpkgs unstable and 143,202 in nixpkgs 26.05, according to Repology on 14 October 2026. nixos.org itself says "over 140 000" |
| Init system | systemd. Since 26.05 the initrd (stage 1) also uses systemd by default |
| Default kernel | Linux 6.18 in 26.05, up from 6.12 |
| Install images | Graphical ISO with the Calamares installer, which boots into a live GNOME or Plasma session, and a minimal ISO for a console install |
| Desktops in the installer | GNOME, Plasma, Xfce, Pantheon, Cinnamon, MATE, Enlightenment, LXQt, Budgie, or no desktop at all |
| Architectures (ISO) | 64-bit Intel/AMD (x86_64) and 64-bit ARM (aarch64). Official Amazon EC2 images exist for both |
| First release | 13.10 "Aardvark", 31 October 2013 |
The NixOS manual does not publish a minimum amount of RAM or disk. It only warns that the build steps run during installation can need quite a bit of memory, and suggests enabling swap on machines with little RAM.
NixOS guides on tuxai.dev
Start with the install guide if NixOS is new to you. The other two go deeper into packages and into gaming.
Start here: install NixOS with flakes
A flakes-first install of NixOS 26.05: declarative partitioning with disko, your first flake.nix, rebuilds and rollbacks, remote installs on a VPS with nixos-anywhere, and how flake.lock works.
Packages and the Nix store
The three ways to install software (nix-env, environment.systemPackages and nix profile), temporary shells, overlays, pinning nixpkgs, and how the store and garbage collection work.
Gaming on NixOS
Steam declared in configuration.nix, 32-bit graphics, NVIDIA and AMD drivers, Proton-GE, Gamescope and Gamemode, Lutris and Heroic, and why games downloaded outside Steam can fail to start.
What makes NixOS different?
NixOS is different because you do not change the system by running commands that modify it. You describe the system you want in a file, usually /etc/nixos/configuration.nix, and NixOS builds that system for you. On Debian, Fedora or Arch, every install and every edit under /etc changes the running system in place. On NixOS, the file is the record of how the system was built.
A short configuration looks like this:
{ config, pkgs, ... }:
{
imports = [ ./hardware-configuration.nix ];
boot.loader.systemd-boot.enable = true;
boot.loader.efi.canTouchEfiVariables = true;
networking.hostName = "laptop";
networking.networkmanager.enable = true;
services.openssh.enable = true;
users.users.alice = {
isNormalUser = true;
extraGroups = [ "wheel" "networkmanager" ];
};
environment.systemPackages = with pkgs; [ git firefox htop ];
system.stateVersion = "26.05";
}Nothing happens until you apply it with sudo nixos-rebuild switch. That command builds the whole system described in the file and then switches to it. Three properties follow from this design:
- Generations. Every rebuild creates a new generation and leaves the previous ones in place. Each one appears as an entry in the boot menu, so if an update breaks something you pick the earlier entry and you are back where you were.
- Atomic changes. Packages live under
/nix/storein folders named after a hash of everything used to build them. A new version goes into a new folder instead of overwriting the old one, which is why an interrupted upgrade does not leave the system half updated. - Reproducibility. Copy the configuration (and, with flakes, the lock file) to another machine and you get the same system. That makes it a good match for servers and for people who reinstall often.
The cost is that you have to learn the Nix language and the names of the options, and software that expects a standard /usr/lib layout does not run out of the box. The packages guide explains how the store works and why installing with the wrong command leads to "I installed it but it isn't there".
Nix vs NixOS: what is the difference?
Nix is the package manager. NixOS is the Linux distribution built on top of it. The two are easy to confuse because they share a name, a website and a lot of documentation.
- Nix installs packages from Nixpkgs into the Nix store. You can install it on other Linux distributions and on macOS, next to the system's own package manager, and use it for development shells or per-user tools. nixos.org offers a multi-user install (recommended on Linux with systemd) and a single-user one.
- Nixpkgs is the collection of package recipes, kept in one large GitHub repository. Both Nix on other systems and NixOS use it.
- NixOS adds modules on top: the options such as
services.openssh.enablethat configure services, users, the bootloader and the kernel. The 26.05 release alone added 85 new modules and 1,547 options.
You can try Nix on Ubuntu or Fedora first and move to NixOS later if the model suits you. Our comparison of APT, DNF and pacman covers the traditional package managers that Nix is usually measured against.
Flakes or channels?
Both work, and the choice affects how you pin and update nixpkgs, not what your system can do. Channels are what a fresh install uses by default. Flakes are an opt-in feature that many published configurations rely on.
| Method | How nixpkgs is chosen | Update command | Status |
|---|---|---|---|
| Channels | A channel URL such as nixos-26.05, set with nix-channel | sudo nixos-rebuild switch --upgrade | Stable, the default |
| Flakes | An input in flake.nix, pinned to an exact commit in flake.lock | nix flake update, then sudo nixos-rebuild switch --flake .#hostname | Opt-in, still an experimental feature in Nix |
| system.nix | A pinned nixpkgs tarball inside the file | Change the pin, then rebuild | New in 26.05 |
On the status: the Nix reference manual (version 2.34.9 on nix.dev) still lists flakes and nix-command among its experimental features, and the nix flake page opens with a warning that its interface may change. In practice, you enable them with one line:
nix.settings.experimental-features = [ "nix-command" "flakes" ];NixOS itself treats flakes as a normal choice by now: nixos-generate-config takes a --flake option to create a flake.nix for you, and nixos-install accepts one. Our install guide uses flakes from the first command and explains what the experimental label means for a server you plan to keep for years.
Which NixOS ISO should you download?
For a desktop or a laptop, download the graphical ISO. It starts a live session and opens the Calamares installer, which asks for language, location, keyboard, user, desktop, whether to allow unfree software and how to partition the disk, with an option for LUKS encryption. The boot menu offers GNOME or Plasma, each with the LTS kernel or the latest one. The live desktop does not decide what you install: you choose the final desktop inside the installer.
The minimal ISO has no graphical environment and is much smaller. You partition, write the configuration and run nixos-install by hand. Both images exist for x86_64 and aarch64, each with a SHA-256 file next to it on the download page.
Is NixOS right for you?
NixOS suits people who want a system they can rebuild from a file and are willing to learn a new language to get it. It is harder at the start than most distributions, and the difficulty is concentrated in the first few weeks.
| You are... | NixOS is a good fit? | Why |
|---|---|---|
| New to Linux | Not as a first step | The graphical installer is easy, but changing almost anything later means editing Nix code, and most Linux tutorials you find will not apply. |
| A developer | Yes | Per-project shells with exact tool versions, and a configuration that follows you to every machine. |
| Running servers | Yes | Every server is described in Git, rollbacks are built in, and the same configuration can deploy several machines. |
| An Arch user | Yes, if you want reproducibility | You keep fresh packages on nixos-unstable, but you trade the ArchWiki habits for options in a file. There is no AUR: packages come from Nixpkgs or from your own Nix code. |
| A gamer | Possible | Steam is one option away, but everything is opt-in. Our NixOS gaming guide covers the setup, and our Steam and Proton guide covers Linux gaming in general. |
| Looking for an "immutable" desktop with less effort | Maybe not | Image-based systems such as Vanilla OS or GNOME OS Preview give you a locked base and rollbacks without a configuration language. |
For more context, our overview of independent Linux distributions puts NixOS next to Void, Slackware and Alpine, our Void Linux page covers a very different independent distribution, and the hub lists all Linux distros we cover.
Troubleshooting NixOS: Common Questions
Is NixOS good for beginners?
Not as a first Linux distribution. Installing it is easy with the graphical ISO, but day-to-day changes are made by editing configuration.nix in the Nix language, and generic Linux instructions often do not work. If you already use Linux and want a system you can rebuild from a file, it is worth the learning time.
How do I roll back NixOS after a bad update?
Reboot and choose an older generation in the boot menu, or run sudo nixos-rebuild switch --rollback on the running system. Both take you to the previous configuration without reinstalling anything.
sudo nixos-rebuild switch --rollback # back to the previous generation
ls -l /nix/var/nix/profiles/system-*-link # list the generations you haveTo try a change without making it the boot default, use sudo nixos-rebuild test. If it misbehaves, a reboot brings back the last working generation.
How do I update NixOS?
With channels, run sudo nixos-rebuild switch --upgrade. With flakes, run nix flake update in the folder with your flake and then sudo nixos-rebuild switch --flake .#hostname. To move to a new release, point the channel or the flake input at the new version, for example nixos-26.11 once it is out, and rebuild. You can also set system.autoUpgrade.enable = true; to have a systemd timer do it for you.
Can I install software without editing configuration.nix?
Yes. nix-shell -p htop opens a temporary shell with the program available and leaves nothing installed afterwards. For a per-user install, nix-env -iA nixos.htop still works, and nix profile add nixpkgs#htop is the newer command (nix profile install is an alias), which requires the experimental nix-command feature. Anything installed this way is not in your configuration, so it will not come back after a reinstall. The packages guide compares the three methods.
Is NixOS good for gaming?
Yes, once you declare what you need. Add programs.steam.enable = true; and allow unfree packages with nixpkgs.config.allowUnfree = true;, then rebuild. The Steam module turns on 32-bit graphics support by itself. AMD and Intel graphics work with Mesa, while NVIDIA needs a few extra lines. The gaming guide has the full configuration, including Proton-GE.
Do I need flakes to use NixOS?
No. A standard install uses channels and configuration.nix, and that is fully supported. Flakes add an exact pin of nixpkgs in a lock file, which helps when you manage several machines or share your configuration, but they are optional and still marked experimental in the Nix manual.
Should I use the stable release or nixos-unstable?
Use the stable release (26.05 today) unless you need newer packages than it has. The NixOS manual describes nixos-unstable as the main development branch, which can change a lot between updates, and does not recommend it for production machines. 26.05 gets updates for seven months, until 31 December 2026, so plan to upgrade around each new release.
Sources
- nixos.org, home page and download page (current version, ISO images, Nix install options)
- NixOS 26.05 released, official announcement (support dates, 25.11 end of life, modules and options added)
- The NixOS manual, version 26.05: installation, graphical installer, upgrading, channels, rollback, package management
- NixOS release notes (26.05 highlights, kernel, systemd stage 1, system.nix, release history)
- NixOS 26.11 release schedule, nixpkgs issue #567567, and the 26.11 release cycle post on Discourse
- nixpkgs installer modules and the Calamares desktop list on the nixos-26.05 branch
- programs.steam module on the nixos-26.05 branch
- Nix reference manual: experimental features and nix flake
- Repology: nixpkgs unstable and nixpkgs stable 26.05 (package counts, 14 October 2026)
