👋

nixpkgsの更新を待たずにoverrideしてパッケージをインストールする(git 2.39.1の例)

2023/01/18に公開

背景

gitのセキュリティアナウンスがあった。更新を待たずに自分でパッチを当てて最新版のgitをいれたい
https://github.blog/2023-01-17-git-security-vulnerabilities-announced-2/

nixpkgsへのPRはこっちにある。これがマージされる前に最新版をいれたい。
https://github.com/NixOS/nixpkgs/pull/211281

やったこと

.config/nixpkgs/config.nix に以下のようなoverrideを書いて nix-env -iA nixpkgs.gitした。バージョンが2.39.1より前かどうか確認するとよりよさそうだけど、次の機会に譲ることにした

{
    packageOverrides = pkgs:
      with pkgs;
      let git_2_39_1 = git.overrideDerivation (drv:
            let version = "2.39.1";
            in {
              inherit version;
              name = "git-${version}";
              src = fetchurl {
                url = "https://www.kernel.org/pub/software/scm/git/git-${version}.tar.xz";
                sha256 = "sha256-QKOKCEezDDcbNYc7OvzxI4hd1B6j7Lv1EO+pfzzlwWE=";
              };
            });
      in {
        git = git_2_39_1;
      };
  }

より詳しく

overrideDerivationを使うとderivationの値を差し替えられる。
versionの指定によって置き換えられる部分を調べて置き換えた。
調査メモを残しているので必要があれば参考にください。

Discussion