如何使用已安装的ghc与堆栈内的nix-shell?

时间:2017-09-13 09:42:27

标签: haskell ghc haskell-stack nix nix-shell

我已使用ghc构建工具安装了stack。它编译了我的项目。但是当我在项目目录中输入nix-shell并希望从nix-shell编译我的项目时,我看到如下错误:

No compiler found, expected minor version match with ghc-8.0.2

可以通过运行stack setup命令来解决此问题。但是我担心这会在我的计算机上再次安装ghc一次耗费更多空间等等。如果没有运行ghc,是否可以使用已安装nix-shell stack setup pom.xml | | -----sub module A pom.xml | | -----sub module B pom.xml | | -----sub module plugins/C pom.xml | | -----sub module plugins/D pom.xml 命令?

1 个答案:

答案 0 :(得分:2)

我不确定你是如何设置项目的,但可能最简单(但有限)的方法是使用堆栈的nix integration,它将使用来自{{1的GHC和本机依赖项}}

不幸的是,堆栈nix集成相当倒退。它没有使用nix来构建你的包,只是为了创建一个GHC和本机依赖的环境。你必须使用堆栈本身来构建项目,并且由于堆栈将运行cabal,它仍然应该使用标志。堆栈nix集成不会生成.nix文件,其依赖项由堆栈解析,因此您无法使用nix构建项目,并且无法输入nix-build。您必须使用nix-shellstack2nix之类的工具。

所以:使用stackage2nix构建并且堆栈应该使用nix来设置GHC和本机依赖项。

当您为认真的业务做好准备(例如自动构建和部署)时,请查看stack --nix buildstack2nix,使用它们将依赖项冻结到stackage2nix文件中,然后使用nixnix-build等构建和部署