假设我使用nix-env
的--query
操作搜索要安装的软件包:
$ nix-env -qa 'aspell.*en'
aspell-dict-en-7.1-0
我将此包名称写在/etc/nixos/configuration.nix
NixOS的主要配置文件中:
environment.systemPackages = with pkgs; [
aspell-dict-en
];
但是,如果我运行sudo nixos-rebuild switch
NixOS命令来更新配置并安装声明式指定的所有系统范围的软件包,它将中止并显示错误:
error: undefined variable ‘aspell-dict-en’ at /etc/nixos/configuration.nix:44:5
我知道对于许多软件包,尽管不是全部,但nix-env
返回的名称和应该在environment.systemPackages
配置选项中指定的名称是不同的,但是我不理解其逻辑。如何安装找到的软件包nix-env
?
-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
。