如何修改nixos包配置

时间:2015-03-16 11:40:51

标签: git nixos nix

我正在网络中构建一个只能通过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,但我不知道如何在这个地方提供它。

1 个答案:

答案 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 = "";
      };
    });
  };
}