Nix 2.28 – 2.34 (bridge)

Updated

September 12, 2026

Area Change
Fetchers Stricter NAR hash mismatches; prefer SRI hash = "sha256-…" over legacy sha256.
Flakes Source trees copied into the store more lazily (completed in 2.35).
nix store diff-closures, copy, ping remain the daily ops set.

Pin nixos-25.11 only to read old machines. Do not start new desk hosts there: it reached EOL on 2026-06-30.


Nix 2.35

Area Change
Flake sources Copied to the store lazily; unused flake files are not hashed into evaluation unless needed.
Sandbox FreeBSD jail sandboxing; Linux sandbox unchanged.
Installer Current upstream installer ships 2.35.2 (2026-08).
Security Recursive-nix advisory fix from the 2.35.0 series.

Key feature — current CLI on a 26.05 host

Stock 26.05 may print nix (Nix) 2.34.x. For this book’s 2.35+ baseline, install the upstream Nix installer on foreign Linux/macOS, or set nix.package = pkgs.nixVersions.latest; (or nix_2_35) on NixOS. Then:

nix --version
nix flake metadata github:NixOS/nixpkgs/nixos-26.05

Output (shape, after pinning 2.35):

nix (Nix) 2.35.2
Resolved URL:  github:NixOS/nixpkgs/nixos-26.05

NixOS 25.05 / 25.11

25.05 and 25.11 are previous stables. 25.11 “Xantusia” is deprecated (EOL 2026-06-30). If system.stateVersion is "25.11", leave it and move the flake input to nixos-26.05.


NixOS 26.05 — Yarara

Area Change
Support Bugfix/security until 2026-12-31.
Initrd Stage-1 systemd initrd is the default (not the old scripted initrd).
Toolchain GCC 15; GNOME 50 on desktop ISOs.
Nix Channel ships Nix 2.34; book CLI baseline remains 2.35+ (installer or nix.package).
Modules New options; confirm names with nixos-option if a 24.11 snippet fails eval.

Key feature — pin 26.05 in the desk flake

Save as flake.nix:

# flake.nix
{
  description = "Desk workstation on NixOS 26.05";

  inputs.nixpkgs.url = "github:NixOS/nixpkgs/nixos-26.05";

  outputs = { self, nixpkgs }: {
    nixosConfigurations.desk-workstation = nixpkgs.lib.nixosSystem {
      system = "x86_64-linux";
      modules = [
        {
          networking.hostName = "desk-workstation";
          system.stateVersion = "26.05";
        }
      ];
    };
  };
}
nix flake metadata
sudo nixos-rebuild dry-build --flake .#desk-workstation

Quick-Reference Matrix

The table below maps each NixOS release to the Nix CLI it ships and highlights the single most operationally significant change per pair.

NixOS Release Nix Version Shipped Most Impactful Addition
23.05 Stoat 2.13 Flakes opt-in stable via experimental-features
23.11 Tapir 2.18 nix flake metadata improvements; --log-format for CI
24.05 Uakari 2.22 nix build --rebuild reproducibility check; systemd initrd opt-in
24.11 Vicuna 2.24 nix store diff-closures stable; services.openssh.settings.AllowGroups
25.05 2.28 nix flake check / fetch-tree hardening; module cleanups
25.11 Xantusia 2.31 EOL 2026-06-30; last train before Yarara
26.05 Yarara 2.34 (pin 2.35+) Current baseline; systemd stage-1 initrd default; GCC 15

Nix 2.19–2.34 intermediate releases are available via pkgs.nixVersions even when the channel ships another version. Pin only when you need a CLI feature the channel does not have yet:

# configuration.nix  (pin Nix version independently of channel)
{ pkgs, ... }:
{
  nix.package = pkgs.nixVersions.latest; # or pkgs.nixVersions.nix_2_35
}