你如何使用克隆的 nixpkgs 重建 nixos 包?
How do you rebuild nixos packages using cloned nixpkgs?
我真的很喜欢 nixos/nix 的确定性,但我无法理解为我的使用定制包的最佳方式。我使用 nixpkgs.config.packageOverrides
属性取得的成功有限,但它很痛苦,我发现它失败的次数比它工作的次数多(例如,我花了数周时间试图覆盖我在稳定和不稳定渠道中获取的 virtualbox 版本但它从来没有正常工作过)。
我的下一次尝试是克隆 nixpkgs 存储库并尝试直接修改表达式。我认为如果我将克隆的路径添加到 $NIX_PATH
的开头,这会起作用。但是,重建似乎并没有体现我的变化。我还尝试了 https://nixos.org/wiki/Create_and_debug_nix_packages 中描述的 nixos-rebuild -I $NIXPKGS switch
变体,但它也没有接受我的更改。
这种克隆方法是否可行?如果可行,我做错了什么?
VirtualBox 很特别,因为它不是一个简单的包,而且还需要 NixOS 集成 (setuid)。所以最好克隆nixpkgs来修改它。
nixos-rebuild switch -I /mypath
应该可以工作,其中 nixpkgs 位于 /mypath
.
内
我真的很喜欢 nixos/nix 的确定性,但我无法理解为我的使用定制包的最佳方式。我使用 nixpkgs.config.packageOverrides
属性取得的成功有限,但它很痛苦,我发现它失败的次数比它工作的次数多(例如,我花了数周时间试图覆盖我在稳定和不稳定渠道中获取的 virtualbox 版本但它从来没有正常工作过)。
我的下一次尝试是克隆 nixpkgs 存储库并尝试直接修改表达式。我认为如果我将克隆的路径添加到 $NIX_PATH
的开头,这会起作用。但是,重建似乎并没有体现我的变化。我还尝试了 https://nixos.org/wiki/Create_and_debug_nix_packages 中描述的 nixos-rebuild -I $NIXPKGS switch
变体,但它也没有接受我的更改。
这种克隆方法是否可行?如果可行,我做错了什么?
VirtualBox 很特别,因为它不是一个简单的包,而且还需要 NixOS 集成 (setuid)。所以最好克隆nixpkgs来修改它。
nixos-rebuild switch -I /mypath
应该可以工作,其中 nixpkgs 位于 /mypath
.