【问题标题】:Nix channels and GHC/Hackage package versionsNix 频道和 GHC/Hackage 包版本
【发布时间】:2017-11-11 14:41:30
【问题描述】:

我目前正在通过Gabriel's tutorial 处理 Nix 和 Haskell

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

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

【问题讨论】:

    标签: haskell nix


    【解决方案1】:

    给定一个修订哈希,比如说683c68232e91f76386db979c461d8fbe2a018782,您可以列出来自该修订的所有包

    nix-env -qaP -f https://github.com/NixOS/nixpkgs-channels/archive/683c68232e91f76386db979c461d8fbe2a018782.tar.gz
    

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

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

    【讨论】:

      【解决方案2】:

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

      编辑

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

      这给出了下表:

      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
      

      但是更简单的方法会很好......

      【讨论】:

      • 我们可以在 repl 中执行 ` (import {}).ghc `(或以其他方式评估)来获得 ghc 版本吗?还有nixos.org/nixos/packages.html?channel=nixos-20.03&query=ghc(我相信那里使用的搜索非常基本,尽管完全匹配,ghc 并没有出现在第一页上。但你明白了。)
      最近更新 更多