2

我正在一个只能通过网络代理访问外部世界的网络中构建一个 nixos 系统。nixos grub 配置尝试通过一个git://在我的网络上显然不起作用的 URL 访问 grub 存储库。

因此,我想用git://相应的http://URL 替换 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仍然使用旧网址。我可能需要添加 fetchurl,但我不知道如何在这个地方提供它。

4

1 回答 1

2

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 = "";
      };
    });
  };
}
于 2015-03-16T12:54:56.913 回答