我正在一个只能通过网络代理访问外部世界的网络中构建一个nixos系统。nixos grub配置试图通过git:// URL访问grub存储库,这在我的网络中显然不起作用。
因此,我希望用相应的git:// URL替换http:// url。(savannah支持两者都有。)相应的nix文档展示了如何实现它。
我创建了一个包含以下内容的文件~/.nixpkgs/config.nix:
{
packageOverrides = pkgs: rec {
grub = pkgs.grub.override {
src.url="http://git.savannah.gnu.org/grub.git";
};
};
}不幸的是,nixos-rebuild switch仍然试图使用旧的URL。我做错什么了?
我还阅读了文档的定制包。由此,我似乎可以将以下内容添加到/etc/nixos/configuration.nix中
nixpkgs.config.packageOverrides = pkgs: {
grub = pkgs.grub.overrideDerivation (pkgs.grub ( attrs: {
url = "http://git.savannah.gnu.org/grub.git";
rev = "2ae9457e6eb4c352051fb32bc6fc931a22528ab2";
sha256 = "1ik60qgkymg0xdns5az1hbxasspah2vzxg334rpbk2yy3h3nx5ln";
}));
};然而,nixos-rebuild switchnixos-rebuild switch仍然使用旧的url。我可能需要添加提取器,但是我不知道如何在这个地方使用它。
发布于 2015-03-16 12:54:56
pkgs.grub.override可以覆盖文件顶部的函数。若要覆盖派生参数,请使用overrideDerivation,如http://nixos.org/nixos/manual/sec-package-management.html#sec-customising-packages中所述
{
packageOverrides = pkgs: rec {
grub = pkgs.grub.override (attrs: {
src = fetchurl { url = "http://git.savannah.gnu.org/grub.git";
sha256 = "";
};
});
};
}https://stackoverflow.com/questions/29075927
复制相似问题