主要观点:
- Nix 通道易致混淆,
nixos-rebuild是糟糕的 shell 脚本,flakes 因在其基础上体验更好而更受青睐。 - 介绍 npins 及其工作原理,可替代 nix 通道进行包锁定。
- 给出消除 nix 通道、实现 NixOS 配置 pinned 且无需通道的方法,包括设置 npins、编写简单 shell 脚本、修复
NIX_PATH等。 - 新的工作流程为使用
npins update和./rebuild.sh更新 NixOS,构建更快且机器不会不同步。 - 需改进
nixos-rebuild等工具,如默认不应重建 Nix,nixos-option也需重写。
关键信息:
nix-channel易造成 NixOS 配置依赖不可控外部变量。nixos-rebuild源代码可查看,其 UX 在 flakes 上更好。- npins 可找到最新 commit 并下载代码,用于 Nix 包锁定。
- 可通过设置 npins、修改
NIX_PATH等消除 nix 通道。 - 新工作流程为
npins update和./rebuild.sh。
重要细节:
- Nix 构建过程中,非 flakes 时
nixos/default.nix被评估,flakes 时用yourflake#nixosConfigurations.NAME替代。 - 默认
NIX_PATH包含$HOME/.nix-defexpr/channels等。 npins核心是获取指定版本 nixpkgs 并存储相关信息。- 简单 shell 脚本通过
nix eval和NIX_PATH设置来构建配置。 - 可通过
nix.settings和nix.registry等设置修复NIX_PATH。 - 新工作流程中
npins update和./rebuild.sh可用于更新 NixOS。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用。你还可以使用@来通知其他用户。