我正在网络中构建一个只能通过Web代理访问外部世界的nixos系统。 nixos grub configuration尝试通过git://
网址访问grub存储库,这显然不适用于我的网络。
因此,我想用相应的git://
网址替换http://
网址。 (savannah支持both。)相应的nix documentation显示了如何执行此操作。
我创建了一个包含以下内容的文件~/.nixpkgs/config.nix
:
{
packageOverrides = pkgs: rec {
grub = pkgs.grub.override {
src.url="http://git.savannah.gnu.org/grub.git";
};
};
}
不幸的是,nixos-rebuild switch
仍尝试使用旧网址。
我做错了什么?
我还阅读了文档的customising packages。
从那以后我似乎可以将以下内容添加到/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
仍使用旧网址。我可能需要添加fetchurl,但我不知道如何在这个地方提供它。
答案 0 :(得分:2)
pkgs.grub.override
可以覆盖文件顶部的功能。要覆盖派生参数,请使用http://nixos.org/nixos/manual/sec-package-management.html#sec-customising-packages
overrideDerivation
{
packageOverrides = pkgs: rec {
grub = pkgs.grub.override (attrs: {
src = fetchurl { url = "http://git.savannah.gnu.org/grub.git";
sha256 = "";
};
});
};
}