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