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
加载中...
此文章数据所有权由区块链加密技术和智能合约保障仅归创作者所有。