我已经安装了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
命令?
最佳答案
我不确定你如何设置你的项目,但可能最简单(但有限)的方法是使用堆栈的 nix integration它将使用 GHC 和来自 nix
的 native 依赖项。
不幸的是,stack nix 集成相当落后。它不使用 nix 来构建您的包,只是为了创建一个具有 GHC 和 native 依赖项的环境。您必须使用 stack 本身来构建项目,并且由于 stack 将运行 cabal,因此它仍然应该与该标志一起使用。 stack nix 集成不会生成具有由堆栈解析的依赖项的 .nix 文件,因此您无法使用 nix-build
构建项目,并且输入 nix-shell< 没有意义
。为此,您必须使用 stack2nix
或 stackage2nix
之类的工具。
因此:使用 stack --nix build
进行构建,并且 stack 应该使用 nix 来设置 GHC 和 native 依赖项。
当您准备好处理重要业务(例如自动构建和部署)时,请研究 stack2nix
或 stackage2nix
,使用它们将依赖项卡住到 nix
文件,然后使用 nix-build
、nix-copy-closure
等进行构建和部署。
关于haskell - 如何在 nix-shell 中使用已安装的 ghc 和堆栈?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46194110/