我在频道上有一个 NixOS 盒子nixos-16.03
。我希望机器保持在基本稳定的状态,所以我想避免切换到频道nixos-unstable
。
但是,我需要安装比该渠道中可用的软件包更新的版本(nodejs-6_x
在本例中)。在手册中,有一节描述了一键安装,乍一看这似乎正是我所需要的。然而,Hydra 服务器位于http://Hydra.nixos.org似乎没有提供该部分中描述的工具.nixpkg
使用的任何文件。nix-install-package
该 wiki 还记录了一个可以自定义包的过程(该页面称为修改包),我认为它可以用于我的目的,尽管看起来我会与该工具作斗争而不是使用它。
我也在IRC上问过这个问题(感谢M-Ralith
耐心回答我无知的问题!),但我不太明白如何应用它。建议是“覆盖 nixpkgs 配置中的 src 和版本”,这听起来像是我可以.nixpkgs/configuration.nix
在我订阅的频道 ( ) 中编写一个 nix 表达式并覆盖包的这些属性nixos-16.03
。当我询问频道中不存在的包时,建议是“指定整个包而不是仅仅覆盖 src 和版本”,我认为这意味着我需要复制包的整个 nix 表达式我感兴趣。在我看来,nix-env
如果稳定通道赶上或超过我用来覆盖的版本,这将具有防止更新该包的效果。
对于包存在于另一个频道中我想安装,但保留在当前频道,有更好的方法吗?几乎感觉我应该能够做类似的事情nix-build <url> | nix-env -i
。理想的情况是安装这个,但没有配置可能会阻止它在以后升级(如果我当前的频道赶上)。
答案1
你可以使用nix-env
工具
% nix-env -f https://github.com/NixOS/nixpkgs-channels/archive/nixos-unstable.tar.gz -iA tig
或使用nix-build
工具
% nix-build -I nixpkgs=https://github.com/NixOS/nixpkgs-channels/archive/nixos-unstable.tar.gz -A tig
这有什么帮助!