有没有人能够将liquidhaskell与nixos整合?

时间:2018-03-06 12:03:41

标签: haskell nixos liquid-haskell

我试图在NixOS上使用liquidhaskell。我可以安装软件包(liquidhaskell-0.8.2.3),虽然不是cabal集成,因为它需要cabal 1.18-1.25,但我有cabal 2.0.1.0。

我已经将liquidhaskell软件包安装为ghc-with-packages设置的一部分:

[~:0]$ readlink $( type -p liquid )
/nix/store/pdbzl0p6k1klmajx969b6vvwyw9w0s6b-ghc-8.2.2-with-packages/bin/liquid

在许多其他方面,包文本也安装在这个集合中:

[proclib:1]$ ls -ld /nix/store/pdbzl0p6k1klmajx969b6vvwyw9w0s6b-ghc-8.2.2-with-packages/lib/ghc-8.2.2/text-1.2.2.2/
dr-xr-xr-x 3 root root 68 Jan  1  1970 /nix/store/pdbzl0p6k1klmajx969b6vvwyw9w0s6b-ghc-8.2.2-with-packages/lib/ghc-8.2.2/text-1.2.2.2/

然而,液体看不出来:

[proclib:1]$ liquid ~/bin/h/nix.hs 
LiquidHaskell Version 0.8.2.3
Copyright 2013-18 Regents of the University of California. All Rights Reserved.

liquid: Main: Could not find module ‘Data.Text’
Perhaps you meant Data.Set (from containers-0.5.10.2)
Use -v to see a list of the files searched for.

以上不属于阴谋集团的一部分(试图从等式中消除阴谋)。

我尝试过使用nix-shell来完成这项工作,但是nix-shell或者是在语言编译语中打破了:

[~:0]$ nix-shell -p myHaskellEnv --run liquid ~/bin/h/nix.hs 
/nix/store/q1cwqhb6v8yx8vy4s5p6sxrq8s0bnqmy-nix.hs: line 5: {-#: command not found

感激不尽的任何帮助。

1 个答案:

答案 0 :(得分:0)

问题似乎是液体haskell忽略了ghcWithPackages包装器,因为它直接使用GHC API。您可以根据this thread按如下方式解决此问题。

nix-shell -p 'haskellPackages.ghcWithPackages(pkgs:[pkgs.text (pkgs.liquidhaskell)])' -p z3 --run 'liquid --ghc-option="-package-db=$(ghc-pkg list | head -n 1)" ./hellotext.hs'

或者有点等同,

nix-shell -p 'haskellPackages.ghcWithPackages(pkgs:[pkgs.text])' -p z3 -p haskellPackages.liquidhaskell --run 'NIX_GHC_LIBDIR=$(ghc-pkg list | head -n 1)/.. liquid ./hellotext.hs'

表示当您使用基于nix-shell包的cabal2nix时,它会立即生效。