如何在 nix-shell 中使用已安装的 ghc 和堆栈?
How to use already installed ghc with stack inside nix-shell?
我已经使用 stack
构建工具安装了 ghc
。它编译我的项目。但是当我在项目目录中输入 nix-shell
并想从 nix-shell
编译我的项目时,我看到这样的错误:
No compiler found, expected minor version match with ghc-8.0.2
这可以通过 运行 stack setup
命令修复。但是我担心这会在我的机器上再次安装 ghc
并消耗更多的时间 space 等等。有没有一种方法可以将已经安装的 ghc
用于 nix-shell
而无需 运行 stack setup
命令?
我不确定您是如何设置项目的,但可能最简单(但有限)的方法是使用堆栈的 nix integration,它将使用 nix
中的 GHC 和本机依赖项。
不幸的是,stack nix 集成相当落后。它不使用 nix 来构建你的包,只是为了创建一个具有 GHC 和本机依赖项的环境。你必须使用 stack 本身来构建项目,并且由于 stack 将 运行 cabal,它应该仍然可以使用标志。 stack nix 集成不会生成具有由 stack 解析的依赖项的 .nix 文件,因此您无法使用 nix-build
构建项目,输入 nix-shell
也没有意义。为此,您必须使用 stack2nix
或 stackage2nix
之类的工具。
因此:使用 stack --nix build
构建并且堆栈应使用 nix 来设置 GHC 和本机依赖项。
当您准备好进行严肃的业务(如自动构建和部署)时,请查看 stack2nix
或 stackage2nix
,使用它们将依赖项冻结到 nix
文件中,然后使用 nix-build
、nix-copy-closure
等构建和部署
我已经使用 stack
构建工具安装了 ghc
。它编译我的项目。但是当我在项目目录中输入 nix-shell
并想从 nix-shell
编译我的项目时,我看到这样的错误:
No compiler found, expected minor version match with ghc-8.0.2
这可以通过 运行 stack setup
命令修复。但是我担心这会在我的机器上再次安装 ghc
并消耗更多的时间 space 等等。有没有一种方法可以将已经安装的 ghc
用于 nix-shell
而无需 运行 stack setup
命令?
我不确定您是如何设置项目的,但可能最简单(但有限)的方法是使用堆栈的 nix integration,它将使用 nix
中的 GHC 和本机依赖项。
不幸的是,stack nix 集成相当落后。它不使用 nix 来构建你的包,只是为了创建一个具有 GHC 和本机依赖项的环境。你必须使用 stack 本身来构建项目,并且由于 stack 将 运行 cabal,它应该仍然可以使用标志。 stack nix 集成不会生成具有由 stack 解析的依赖项的 .nix 文件,因此您无法使用 nix-build
构建项目,输入 nix-shell
也没有意义。为此,您必须使用 stack2nix
或 stackage2nix
之类的工具。
因此:使用 stack --nix build
构建并且堆栈应使用 nix 来设置 GHC 和本机依赖项。
当您准备好进行严肃的业务(如自动构建和部署)时,请查看 stack2nix
或 stackage2nix
,使用它们将依赖项冻结到 nix
文件中,然后使用 nix-build
、nix-copy-closure
等构建和部署