如何使用“nix-shell”固定软件包版本?

hac*_*acb 5 shell version configuration nix

据我了解,我可以使用该-I标志来使用给定版本的 Nix 软件包。但我想知道在一个shell.nixconf中是否可以有类似的东西:

  • gitv2.1.2
  • htopv1.2.3
  • ...

能够确保给定的工具版本。

pro*_*tob 2

您可以导入包含特定软件包版本的散列的 nixpkgs 存档。例如,您可以在这里找到哈希值

{ pkgs ? import <nixpkgs> { } }:

let
  gitPkgsHash = "0c159930e7534aa803d5cf03b27d5c86ad6050b7"; #git 2.16.2
  htopPkgsHash = "5ed9176c52e4ceed2755a19b3e8357a0772de8ff"; #htop 2.0.0
  gitPkgs = import (fetchTarball "https://github.com/NixOS/nixpkgs/archive/${gitPkgsHash}.tar.gz") { };
  htopPkgs = import (fetchTarball "https://github.com/NixOS/nixpkgs/archive/${htopPkgsHash}.tar.gz") { };
in

pkgs.mkShell {
  buildInputs = [
    gitPkgs.gitAndTools.gitFull
    htopPkgs.htop
  ];
}
Run Code Online (Sandbox Code Playgroud)

附言。在此配置中,我使用了较新的版本,因为您的版本非常旧并导致了一些错误