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

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

我在频道上有一个 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

这有什么帮助!

相关内容