Nix和Haskell-ng安装错误:在选择路径'nixpkgs.haskellEnv'中找不到属性'nixpkgs'

jhe*_*dus 5 nix haskell-ng

我正在按照指南设置nix和haskell-ng。但是当我踏上一步

nix-env -iA nixpkgs.haskellEnv

然后我得到错误:

错误:在选择路径“ nixpkgs.haskellEnv”中找不到属性“ nixpkgs”

知道出了什么问题吗?

Pet*_*ons 5

该命令nix-env -f "<nixpkgs>" -iA haskellEnv应该起作用。

http://nixos.org/nixpkgs/manual/#users-guide-to-the-haskell-infrastructure引用:

属性路径是Nixpkg内部的确定性路径,但是达到Nixpkgs所需的路径因系统而异。我们通过提供nix-env一个显式-f "<nixpkgs>"参数来回避该问题 ,但是如果调用时nix-env 不带该标志,则调用失败的可能性很大:

$ nix-env -iA haskellPackages.cabal-install
error: attribute ‘haskellPackages’ in selection path
       ‘haskellPackages.cabal-install’ not found
Run Code Online (Sandbox Code Playgroud)

例如,在NixOS上,默认情况下,顶级名称空间中存在Nixpkgs 。要找出正确的属性路径,最简单的方法是查询众所周知的Nixpkgs软件包的路径,即:

$ nix-env -qaP coreutils
nixos.coreutils  coreutils-8.23
Run Code Online (Sandbox Code Playgroud)

如果您的系统做出这样的响应(大多数NixOS安装会做出响应),则的属性路径haskellPackagesnixos.haskellPackages。因此,如果您想在nix-env不给出显式-f标志的情况下使用,那么这就是这样做的方法:

$ nix-env -qaP -A nixos.haskellPackages
$ nix-env -iA nixos.haskellPackages.cabal-install
Run Code Online (Sandbox Code Playgroud)