如何找到构建 macos/darwin 二进制缓存的 nixpkgs 修订版?

How to find nixpkgs revision where macos/darwin binary cache is built?

我想将 nixpkgs 固定到一个非常新的修订版,比如 Haskell LTS-12.9 或其他版本。我想为 MacOS (Darwin) 构建使用 nix-build。

问题是大多数 Haskell 包没有二进制缓存,构建需要很长时间才能完成(在 MacOS 上)。

我如何找到 "optimal" nixpkgs 修订版,该修订版足够新以包含我需要的软件版本,但又足够旧以供 Linux 和 MacOS 使用二进制缓存?

您可以找到 nixpkgs 的缓存版本 right here on the HowOldIs app.

您可能希望使用 nixpkgs-18.09-darwinnixpkgs-unstable 的修订版。


然后您可以像这样获取 nixpkgs

builtins.fetchGit {
  name = "nixpkgs";
  url = "https://github.com/nixos/nixpkgs.git";
  rev = "6ec64973bc3a48b0c54d11c782e8b88b550a8eab";
  ref = "release-18.09";
})

当修订不在默认分支下时,ref 属性是必需的 - 通常是 master

注释in the Nix manual描述如下:

Note: It is nice to always specify the branch which a revision belongs to. Without the branch being specified, the fetcher might fail if the default branch changes. Additionally, it can be confusing to try a commit from a non-default branch and see the fetch fail. If the branch is specified the fault is much more obvious.

我想这种行为是受 Git 协议中的变通方法的启发,如果我没记错的话,你只能指定用于获取的引用,但不能指定任意提交。