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