我正在按照本指南设置 nix 和 haskell-ng。但是当我走到这一步时
nix-env -iA nixpkgs.haskellEnv
然后我得到错误:
错误:未找到选择路径“nixpkgs.haskellEnv”中的属性“nixpkgs”
知道出了什么问题吗?
我正在按照本指南设置 nix 和 haskell-ng。但是当我走到这一步时
nix-env -iA nixpkgs.haskellEnv
然后我得到错误:
错误:未找到选择路径“nixpkgs.haskellEnv”中的属性“nixpkgs”
知道出了什么问题吗?
该命令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 安装会),那么属性路径
haskellPackages
是nixos.haskellPackages
. 因此,如果您想在nix-env
不给出明确-f
标志的情况下使用,那么这就是这样做的方法:$ nix-env -qaP -A nixos.haskellPackages $ nix-env -iA nixos.haskellPackages.cabal-install