如何禁用Nix中对Haskell软件包的测试?

时间:2020-03-20 20:53:03

标签: haskell nix

我正在尝试使用Nix为Haskell开发一个开发环境。我有一个default.nix,它仅引用我的.cabal文件作为软件包列表。但是我想使用的一个软件包numhask-space不会构建,因为测试失败了。因此,我试图覆盖它并跳过测试。

这是我的默认值。nix:

# default.nix
let
  pkgs = import <nixpkgs> { };
in
  pkgs.haskellPackages.developPackage {
    root = ./.;
    modifier = drv:
      pkgs.haskell.lib.addBuildTools drv (with pkgs.haskellPackages;
        [ cabal-install
          ghcid
        ]);
    source-overrides = {
      numhask-space = pkgs.haskell.lib.dontCheck pkgs.haskellPackages.numhask-space;
        };
  }

但是我一定不能做对,因为我得到了错误:

cabal2nix: user error (Failed to fetch source. Does this source exist? Source {sourceUrl = "/nix/store/w3pcvlj7b0k44v629k00kw2b0k86fcyj-numhask-space-0.3.0", sourceRevision = "", sourceHash = Guess "", sourceCabalDir = ""})

简而言之,如何覆盖此haskell软件包,使其不运行测试,并且可以将其安装在开发环境中?

1 个答案:

答案 0 :(得分:2)

source-overrides覆盖软件包的来源,即字面意义上的src属性,而不是整个软件包。您应该改用overrides参数:

    overrides = self: super: {
      numhask-space = pkgs.haskell.lib.dontCheck super.numhask-space;
    };