У сообщества NixOS есть три руководства, всегда обращайтесь к ним в первую очередь, если вы застряли:
Каждый пакет в Nix определяется выражением Nix. Выражение Nix - это некоторый текст, написанный на языке Nix, обычно находящийся в файле с расширением .nix.
Каждое выражение имеет так называемое «символическое имя», удобочитаемое имя, которое печатается при использовании nix-env. Смотрите пример выражения Nix . Сам Nix нигде не использует это символическое имя, поэтому не имеет значения, назван ли ваш пакет aspell-dict-en, это просто для вашего удобства, человека.
Что действительно имеет значение, так это так называемый «путь атрибута». Таким образом, ваша путаница происходит между символическим именем и путем атрибута. Каждый пакет имеет путь атрибута, который вы можете использовать в environment.systemPackagesпараметре конфигурации для установки в масштабе всей системы с помощью декларативного управления пакетами .
Чтобы узнать путь к атрибуту вашего пакета, добавьте еще один флаг -Pв ваш запрос:
$ nix-env -qaP 'aspell.*en'
nixos.aspellDicts.en aspell-dict-en-7.1-0
Вы должны быть удобными , используя nix-envна ежедневной основе, так что практика вызова nix-envс --queryи --installварианты. Однако вы также можете просматривать пакеты и узнавать их пути к атрибутам онлайн при поиске пакетов Nix . Введите aspell, нажмите, aspell-dict-enи вы увидите свойства различных пакетов, включая путь атрибута, как часть команды install:
$ nix-env -iA nixos.pkgs.aspellDicts.en
Теперь вы можете поместить этот атрибут path в /etc/nixos/configuration.nix:
environment.systemPackages = with pkgs; [
aspellDicts.en
];
Затем обновите систему, запустив sudo nixos-rebuild switch.
-Pопция не работает с--installed, как видно, сnix-env -q --installed -P | grep terminusкакими отпечаткамиterminus-fontвместоterminus_font. Обходной путь должен использоватьnix-env -qaP | grep terminus-font, но это означает, что вы не можете легко вывести выводnix-env -q --installedвconfiguration.nix.