【问题标题】:How to modify a nixos package configuration如何修改 nixos 包配置
【发布时间】:2015-05-18 12:20:36
【问题描述】:

我正在一个只能通过网络代理访问外部世界的网络中构建一个 nixos 系统。 nixos grub configuration 尝试通过 git:// URL 访问 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,但我不知道如何在这个地方提供它。

【问题讨论】:

    标签: git nixos nix


    【解决方案1】:

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

    【讨论】:

    • 将该代码准确地放入~/.nixpkgs/config.nix 并没有改变任何东西。 nixos-rebuild switch 仍在尝试获取旧网址。
    • 请在nixos.org/nixos/manual/…阅读整个部分
    • 是的,我阅读了整个部分,但我不确定我是否理解正确。我在问题中添加了其他尝试。
    • 试试 grub2 而不是 grub。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-08-06
    • 1970-01-01
    • 2017-02-20
    • 2019-11-22
    • 2018-01-07
    • 2016-03-28
    • 1970-01-01
    相关资源
    最近更新 更多