git - 如何修改 nixos 包配置

标签 git nixos nix

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

因此我想将 git:// url 替换为相应的 http:// URL。 (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 仍然尝试使用旧的 URL。 我做错了什么?


我还阅读了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 仍然使用旧的 url。我可能需要添加 fetchurl,但我不知道如何在这个地方提供它。

最佳答案

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

关于git - 如何修改 nixos 包配置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29075927/

相关文章:

Git Packfile 条目偏移量计算

nix - 如何通过在本地构建它们而不是下载预构建的二进制文件来强制 Nix 为 "install packages"?

nix - 制作一个与 NixOS 兼容的简单 Deb 包(Mathematica 的 wolframscript)

purescript - 在NixOS上开始使用purescript时需要帮助

c++ - Nix Gradle dist - 无法为 Linux amd64 加载 native 库 'libnative-platform.so'

git - 无法通过 HTTP 推送 git repo

git - merge 3 棵树的简单方法,无需触及索引或工作树

android - 奇怪的自动提交(Android Studio、GitKraken、Ubuntu)?

python - 使用 nix 正确设置全局 python 环境

haskell - 如何使用 haskell 堆栈创建一个 nix 包