moonsn

moonsn

如何在 NixOS 中固定某個 package 的版本

nixos 在執行 nixos-rebuild 時,會更新隨著指定的 nixpkgs 版本來更新軟體。

雖然我使用了 flake 特性,但是我希望大部分情況下軟體都保持最新,只有少數軟體版本我需要固定。

具體來說:我有個 nixos 運行著 gitea,我希望我在編譯這個系統時,不要更新 gitea 的版本。

sudo nixos-rebuild test --flake '.#gitea'

解決方案:

這裡有個查詢包版本對應的 nixpkgs commit 的網站:https://lazamar.co.uk/nix-versions/ 並帶有 pin 包的提示程式碼

例如我需要 pin gitea 為 nixos-unstable 的 1.18.5 版

let
     pkgs = import (builtins.fetchGit {
         # Descriptive name to make the store path easier to identify                
         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
載入中......
此文章數據所有權由區塊鏈加密技術和智能合約保障僅歸創作者所有。