主要观点:人们常将“不使用 Flakes”与“使用‘channels’”等同,但实际情况更复杂,“channels”在 NixOS 生态中有多种含义,包括整体概念、builtins.fetchTarball
的参数等,且使用nix-channel
管理输入存在全局值、非声明性等问题,Flakes 可替代nix-channel
语义但不是唯一替代方式,还有其他管理输入的方法如fetchTarball
和npins
。
关键信息:
- “channels”定义多样,如组织内 Hydra 实例上构建和测试的 Nixpkgs 版本等。
channel:...
语法是nixos.org
通道 tarball 地址的缩写。- Hydra 通道已弃用。
NIX_PATH
易混淆,其值和语义受多种因素影响。nix-channel
命令常被误与 Flakes 对立,用于系统范围管理输入,存在问题。- Flakes 使用“channels”概念,可替代
nix-channel
语义但不是唯一替代。 - 其他管理输入的方式有
fetchTarball
(繁琐但单文件可复制)和npins
(单用途管理输入工具)。
重要细节: - 不同用户和环境下
NIX_PATH
的值和语义不同。 - 使用
nix-channel
可能导致用户意外管理多个nixpkgs
输入。 fetchTarball
在单文件复制时有用,多输入时更新较麻烦。npins
简单直接,用于管理 NixOS 系统输入。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。