moonsn

moonsn

nixosで特定のパッケージのバージョンを固定する方法

nixos-rebuild を実行すると、指定した nixpkgs のバージョンに基づいてソフトウェアが更新されます。

フレーク機能を使用しているため、ほとんどの場合にソフトウェアを最新の状態に保ちたいですが、一部のソフトウェアのバージョンは固定したいです。

具体的には、gitea を実行している nixos があり、このシステムをビルドする際に gitea のバージョンを更新したくありません。

解決策:

nixpkgs のコミットに対応するパッケージのバージョンを検索するウェブサイトがあります:https://lazamar.co.uk/nix-versions/ また、pin パッケージのヒントコードも提供されています。

例えば、gitea を nixos-unstable の 1.18.5 バージョンに pin したい場合は、次のようにします。

let
     pkgs = import (builtins.fetchGit {
         # ストアパスを識別しやすくするための説明的な名前
         name = "my-old-revision";
         url = "https://github.com/NixOS/nixpkgs/";
         ref = "refs/heads/nixos-unstable";
         rev = "64c27498901f104a11df646278c4e5c9f4d642db";
     }) {};

     myPkg = pkgs.gitea;
in

# 他のコード

# giteaサービスで使用するパッケージをpinしたパッケージに変更
services.gitea.package = myPkg
読み込み中...
文章は、創作者によって署名され、ブロックチェーンに安全に保存されています。