如何在 NixOS 中安装一次性软件包?

Ben*_*ins 9 nixos nixpkgs nix

我在nixos-16.03频道上有一个 NixOS 盒子。我希望机器保持在最稳定的状态,所以我想避免切换到nixos-unstable频道。

但是,我需要安装比该频道中可用的包更新版本(nodejs-6_x在本例中)。在手册中,有一个部分描述了“一键安装”,起初看起来正是我所需要的。但是,http://hydra.nixos.org上的 Hydra 服务器似乎没有提供该部分中描述.nixpkgnix-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)

这有什么帮助!