NixOS 26.05 “Yarara” 已经发布,写一份配置文件就能管整个系统

如果你被 apt 卸掉过依赖包,被 dnf 留下过半升级的状态机,NixOS 会让你觉得是另一种操作系统:每个包、每个服务、每个内核参数,都写在一个文本文件里;这个文件构建出来的系统,在任何机器上都是同一份、出错了可以一键回到上一个版本。最新版 NixOS 26.05 “Yarara” 于 2026 年 5 月 30 日发布,是当下应该装的版本。

NixOS 26.05 Yarara 官方发布横幅(来源:nixos.org 官方公告页)

26.05 这次改了什么

本次发布由 yayayayakajopejoe1 主持,2842 位贡献者合入了 59703 个 commit。要点:

  • systemd stage 1 默认启用。initrd(Stage 1)改基于 systemd,旧的脚本实现已弃用、26.11 会彻底移除。
  • GNOME 50 “Tokyo”。默认桌面大版本升级,可访问性与显示处理有改进。KDE Plasma 用户仍走 Plasma 6。
  • GCC 15 + LLVM 21。C 编译工具链刷新,自行打包 C/C++ 的同学建议回归测试一遍。
  • 包库大换血。新增 20442 个包、更新 20641 个、剔除 17532 个包,目的是”保持可维护且安全”。依赖小众包的先确认是否还在。
  • 26.05 是最后一个支持 x86_64-darwin 的版本。维护 Nix-on-macOS 的同学请固定在此版本;26.11 会砍掉该平台。

Yarara 的安全与 bugfix 支持期到 2026-12-31,之后 26.11(代号 Zokor)上线。生产建议固定到一个 release 上。

怎么装 NixOS 26.05

按你的用途挑 ISO:

  • 图形 ISO(约 2.3 GB):自带 GNOME / KDE / XFCE 与若干应用,同时也是 Live CD,可先试用再装。 下载
  • 最小 ISO:无图形、体积小,适合做服务器。

按架构(x86_64 / aarch64)选好镜像,用 dd 或 Balena Etcher 烧进 U 盘并启动。图形安装器会引导你选磁盘、键盘、建用户、装 GNOME。服务器则可走最小文本安装器。

云上 官方 AMI 同步发到全 AWS 区域,owner 427812963091,镜像名匹配 nixos/26.05*。不要硬编码 AMI ID,从 Terraform / AWS API 拉最新,避开 90 天的 deprecation。

装完重启进入默认 NixOS,开终端。下面的内容才是 NixOS 有意思的地方。

整个系统在一个文件里

这是思维模型最大的转变。一切都在 /etc/nixos/configuration.nix

/etc/nixos/configuration.nix 配置示例示意图(stylised mockup — 官方截图不可用)

一个能启动 GRUB + GNOME + 几个系统包的最小配置:

Nix
{ config, pkgs, ... }:

{
  boot.loader.grub.enable = true;
  boot.loader.grub.device = "/dev/sda";

  services.xserver.enable = true;
  services.xserver.displayManager.gdm.enable = true;
  services.xserver.desktopManager.gnome.enable = true;

  environment.systemPackages = with pkgs; [
    firefox git vim neovim htop
  ];

  system.stateVersion = "26.05";
}

应用:

Bash
sudo nixos-rebuild switch

整套 /nix/store 体系会按这个文件重建、原子地切换、当前系统与描述完全一致。在 Debian 系发行版上,这一行等价于 apt + dnf + grub-install + systemctl enable + 手动重启;NixOS 把这一切压成一个事务、一条日志。

system.stateVersion = "26.05"; 是 Nix 的”我从这个版本开始”标记,不要往下调,保留自动升级与某些迁移路径。

用 nix-shell 拉一个可复现的开发环境

同一招对非 root 项目也好用。比如同时要 Rust + Node 22,就在项目里写 shell.nix

shell.nix 与 nix-shell 终端会话示意图(stylised mockup — 官方截图不可用)

Nix
{ pkgs ? import <nixpkgs> {} }:

pkgs.mkShell {
  name = "rust-web";
  buildInputs = with pkgs; [
    rustc cargo rust-analyzer
    nodejs_22
    openssl pkg-config
  ];
}

进项目目录、nix-shell 起手,26.05 版的 <nixpkgs> 上对应的工具链就上 $PATH。主机系统不动,提交 shell.nix,每个队友、每台 CI 都拿到同一份版本。

临时试验用 nix-shell -p python3;长期工作流配 direnv + .envrcuse nix; 是标准做法。

原子升级与即时回滚

这是把人”转粉”的部分。每次 sudo nixos-rebuild switch,NixOS 都在 /nix/store 写入一个新 generation,并加进 GRUB。老 generation 留着不删;内核升级把无线网卡踩崩了?重启选旧 generation,回到升级前。

不重启也行:

Bash
sudo nixos-rebuild switch --rollback

当前活跃版本被上一版替换,包和服务换掉,登录态还在。不用 dpkg --configure -a、不用 apt-mark hold、也不会留下”等周末再修”的状态。

NixOS system 多代切换 timeline 与 GRUB 引导菜单示意图(stylised mockup — 官方截图不可用)

查看当前系统保留的 generation:

Bash
sudo nix-env --list-generations --profile /nix/var/nix/profiles/system

nix-collect-garbage -d 一年清一次,避免 /nix/store 无限增长。

上手初期几条经验

  • 固定 channel,生产别换nixos-26.05nixos-unstable 切换会让系统针对一个游动的 target 重建。个人机器用 <nixpkgs>,生产用 pinned channel 或 flake input。
  • 直接改 /etc/nixos/configuration.nixnix-env -iA nixos.firefox 也能装,但用户层安装不进系统 profile,下一次 nixos-rebuild 看不到,回滚 generation 时这些包也会被一并拿掉。要装就写到文件里。
  • 多机共享用 flake,个人用 channel。Flake 把每个输入按哈希钉死,跨主机复现完全一致;channel 用着轻。两者都活、都不过时。
  • CLI 是一切真相。找不到的二进制就用 nix-shell -p 拉,或加到 environment.systemPackages。除了 nix search 不需要别的”apt-file 等价物”。

NixOS 适合什么场景

用一周就会发现它的卖点不止是折腾:云上可复现的 VM 镜像、跨队友跨 CI 的开发环境、原子化的 Kubernetes 节点配置(内核补丁踩到驱动可以秒回滚)、每台机器一个 configuration.nix 跟应用代码一起入库。

如果没试过声明式 Linux 发行版,26.05 是好的起点 — Yarara 的改动大多是内部(systemd Stage 1、GCC 15、桌面大版本)而不是面向用户的 schema 重写。烧个图形 ISO 进去,登进去,改一个文件、sudo nixos-rebuild switch,剩下的小时内大概就懂了。一个文件,就是整个系统。

官网:nixos.org

最后修改: 2026年7月28日

作者

评论

发表评论

您的邮箱地址不会被公开。