NixOS 半年度发布节奏如期而至,26.05 代号 "Yarara" 正式落地。这次 Nixpkgs 仓库新增 20442 个软件包、更新 20641 个已有包——增量相当可观。与此同时,上一版 25.11 "Xantusia" 已被标记弃用,2026 年 6 月 30 日后不再收到安全补丁。如果你还在跑 25.11,升级窗口已经打开。
版本生命周期:时间线要盯紧
NixOS 每个稳定版维护期约七个月。26.05 的支持截止日是 2026 年 12 月 31 日,25.11 的安全更新截止日是 2026 年 6 月 30 日。两条线之间有半年重叠,但重叠期结束后旧版就彻底裸奔。
实际影响:如果你的生产机器跑 25.11 且暴露在公网,6 月 30 日之后任何 CVE 都不会有人为你补。计划升级的时间最好卡在重叠期内,给自己留出回滚余地。
包仓库变化:量与质
20442 个新增包意味着 Nixpkgs 覆盖面继续扩张。对开发者来说,几个值得关注的趋势:
- 语言工具链更新:Python、Rust、Go 等主流语言的包版本普遍跟进上游,减少自行 overlay 的频率。
- 桌面与应用:KDE、GNOME 等桌面环境的版本随上游同步,新包中不少是桌面组件。
- 可维护性取舍:摘要提到"为了保持软件包集的可维护性"——这意味着部分过时或无人维护的包可能被移除或降级。升级后如果某个包突然消失,先查 Nixpkgs commit log 确认是否被剔除。
升级实操:从 25.11 到 26.05
升级 NixOS 稳定版的核心流程只有两步:改 channel、重建系统。以下是完整可复制的命令序列。
1. 切换 channel
# 查看当前 channel
nix-channel --list
# 将 nixos channel 切到 26.05
nix-channel --add https://nixos.org/channels/nixos-26.05 nixos
# 拉取新 channel 数据
nix-channel --update
切换后 nixos channel 指向 26.05 的包集合。--update 会下载对应的 Nixpkgs 仓库快照,耗时取决于网络,通常几分钟。
2. 重建系统
# 先构建但不切换,确认没有编译错误
nixos-rebuild build
# 确认无误后,切换到新配置
nixos-rebuild switch
nixos-rebuild switch 会激活新配置并加入 GRUB 启动项。如果新系统有问题,重启时在 GRUB 菜单选上一条配置即可回滚——这是 NixOS 最核心的安全网。
3. 用 configuration.nix 锁定状态(可选但推荐)
在 /etc/nixos/configuration.nix 中显式声明系统版本,方便团队协作和审计:
{ config, pkgs, ... }:
{
# 明确标注当前运行的 NixOS 版本,方便后续升级追踪
system.stateVersion = "26.05";
# 基础包列表——升级后建议逐项确认是否仍存在
environment.systemPackages = with pkgs; [
git
vim
curl
jq
];
# 开启自动升级,让系统在维护期内持续接收安全补丁
system.autoUpgrade = {
enable = true;
channel = "https://nixos.org/channels/nixos-26.05";
dates = "04:00"; # 每天凌晨 4 点检查更新
};
}
system.stateVersion 不影响实际包版本,但它告诉 NixOS 在某些需要迁移的状态文件(如数据库目录路径)上采用 26.05 的约定。不要把旧版的 stateVersion 改成新版——改这个字段只应在首次安装时设置,之后保持不变。
升级前检查清单
| 检查项 | 做法 |
|---|---|
| 自定义 overlay 是否兼容 | 在新 channel 下 nixos-rebuild build 一次,看报错 |
| 依赖的包是否被移除 | nix-env -qaP <包名> 在新 channel 下搜索 |
| 服务配置是否需要迁移 | 对比 /etc/nixos/configuration.nix 与新版默认值 |
| 回滚路径是否畅通 | 确认 GRUB 菜单保留旧条目 |
| 数据卷挂载是否正常 | mount 检查,NixOS 一般不碰 fstab 但 overlay 可能改 |
值得注意的风险点
- 包被移除:Nixpkgs 为保持可维护性会定期清理无人维护的包。如果你依赖的某个小众包消失了,短期方案是用
nixpkgs.overlays从旧版摘取定义,长期方案是自己接手维护并提交 PR。 - 配置选项废弃:部分 NixOS 模块选项在新版中被标记
deprecated或直接移除。nixos-rebuild switch时会有警告,务必逐条阅读,不要忽略。 - stateVersion 不要乱改:前面强调过,改 stateVersion 可能导致 PostgreSQL、Redis 等服务的数据目录路径迁移出问题。
26.05 的包增量说明社区贡献持续活跃。对现有用户来说,升级路径清晰、回滚机制可靠,唯一要紧的是赶在 25.11 安全更新截止日(2026 年 6 月 30 日)之前完成切换。跑一遍 nixos-rebuild build,确认无报错,再 switch——几分钟的事,换来七个月的安全覆盖。