Nix 频道和 GHC/Hackage 包版本

Nix channels and GHC/Hackage package versions

我目前正在 Nix 和 Haskell 上完成 Gabriel's tutorial

在 nix 中有 channels,它们包含 (类似于 Stack LTS 版本) 一组精选的 Hackage 包和一个 GHC 编译器。

每一个 LTS version Stackage 显示GHC编译器的版本和版本 每个 Hackage 包。在开始使用频道之前,我在哪里可以查找有关 nix 频道的信息?

对于 Haskell 包的版本我找到了答案:有像 https://raw.githubusercontent.com/NixOS/nixpkgs/release-16.09/pkgs/development/haskell-modules/hackage-packages.nix 这样的文件。这些文件真的不好用...

编辑

在这个文件中我可以 搜索 = "base" 然后我可以找到 base 库的版本。 从基础库的版本我可以 lookup GHC 版本。

这给出了以下 table:

newest   -> base-4.10.0.0    -> GHC 8.2.1
17.09    -> base-4.10.0.0    -> GHC 8.2.1
17.03    -> base-4.9.1.0     -> GHC 8.0.2
16.09    -> base-4-9.0.0     -> GHC 8.0.1
16.03    -> base-4.8.2.0     -> GHC 7.10.3
15.09    -> base-4.8.2.0     -> GHC 7.10.3

然而,更简单的方法会更好...

给定修订散列,假设 683c68232e91f76386db979c461d8fbe2a018782,您可以使用

列出该修订版中的所有包
nix-env -qaP -f https://github.com/NixOS/nixpkgs-channels/archive/683c68232e91f76386db979c461d8fbe2a018782.tar.gz

您还可以混合和匹配来自不同修订版的包。唯一的缺点是没有官方的方法来搜索旧版本的包。

我写了 https://lazamar.co.uk/nix-versions 来帮助解决这个问题。它显示了软件包的所有过去版本、它们的派生版本以及如何安装它们。