NixOS: The Complete Guide

NixOS guide cover: 26.05 stable, declarative configuration, rollbacks

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

ItemNixOS
Based onNothing. Independent, built on the Nix package manager and the Nixpkgs collection
Release modelTwo stable releases a year, numbered YY.05 and YY.11, plus the nixos-unstable branch for people who want the newest packages
Current stableNixOS 26.05 "Yarara", released 30 May 2026, with bug fixes and security updates until 31 December 2026
Next releaseNixOS 26.11 "Zokor", planned for 23 November 2026 (the release managers say the dates may still move slightly)
Previous release25.11 "Xantusia", end of life on 30 June 2026
Packages149,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 systemsystemd. Since 26.05 the initrd (stage 1) also uses systemd by default
Default kernelLinux 6.18 in 26.05, up from 6.12
Install imagesGraphical 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 installerGNOME, 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 release13.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.

Read the install guide →

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.

Read the packages guide →

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.

Read the gaming guide →

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:

  1. 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.
  2. Atomic changes. Packages live under /nix/store in 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.
  3. 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.enable that 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.

MethodHow nixpkgs is chosenUpdate commandStatus
ChannelsA channel URL such as nixos-26.05, set with nix-channelsudo nixos-rebuild switch --upgradeStable, the default
FlakesAn input in flake.nix, pinned to an exact commit in flake.locknix flake update, then sudo nixos-rebuild switch --flake .#hostnameOpt-in, still an experimental feature in Nix
system.nixA pinned nixpkgs tarball inside the fileChange the pin, then rebuildNew 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 LinuxNot as a first stepThe graphical installer is easy, but changing almost anything later means editing Nix code, and most Linux tutorials you find will not apply.
A developerYesPer-project shells with exact tool versions, and a configuration that follows you to every machine.
Running serversYesEvery server is described in Git, rollbacks are built in, and the same configuration can deploy several machines.
An Arch userYes, if you want reproducibilityYou 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 gamerPossibleSteam 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 effortMaybe notImage-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 have

To 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

Go up

This site uses cookies for analytics and advertising (Google AdSense). By continuing to browse, you accept our use of cookies. Read our privacy policy