8

我正在按照指南设置 nix 和 haskell-ng。但是当我走到这一步时

nix-env -iA nixpkgs.haskellEnv

然后我得到错误:

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

知道出了什么问题吗?

4

1 回答 1

8

该命令nix-env -f "<nixpkgs>" -iA haskellEnv应该可以工作。

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

属性路径在 Nixpkgs 内部是确定性的,但到达 Nixpkgs 所需的路径因系统而异。我们通过给出 nix-env一个显式-f "<nixpkgs>"参数来避免这个问题,但是如果你在nix-env 没有那个标志的情况下调用,那么调用很可能会失败:

$ nix-env -iA haskellPackages.cabal-install
error: attribute ‘haskellPackages’ in selection path
       ‘haskellPackages.cabal-install’ not found

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

$ nix-env -qaP coreutils
nixos.coreutils  coreutils-8.23

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

$ nix-env -qaP -A nixos.haskellPackages
$ nix-env -iA nixos.haskellPackages.cabal-install
于 2015-11-19T15:40:53.333 回答