首页 > 解决方案 > 在 NixOS 上强制 Haskell Stack 为 1.7.* 版本

问题描述

语境。

  1. 我正在运行 NixOS,stack包含在我的configuration.nix.
  2. 运行stack --version产量Version 1.6.3 x86_64
  3. 但是我需要 Version>=1.7来编译我的团队正在开发的前沿 Haskell 包。
  4. nixpkgs 搜索的当前版本是1.6.5,无论如何它太旧了。
  5. 我认为通常在非 NixOS 上,您可以在主文件夹中运行“堆栈升级”,但这似乎不起作用。

问题:有谁知道如何强制 NixOS 上的堆栈编译到版本,即1.7.1

标签: haskellhaskell-stacknixos

解决方案


添加此叠加层应该可以解决问题:

(self: super: {
  haskellPackages = super.haskellPackages.extend
    (hself: hsuper: {
      stack = (hsuper.callHackage "stack" "1.7.1" {})
              .overrideScope (hself2: hsuper2: {
        Cabal = hself2.Cabal_2_2_0_1;
        hpack = hself2.hpack_0_28_2;
      });
    });
})

这成功地建立stack在 Nixpkgs master 之上。它将作为stack属性或haskellPackages.stack属性可用。


推荐阅读