Пути атрибутов детерминированы внутри 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