如何在 NixOS 中查找系统范围内安装了哪些软件包?

ill*_*out 7 command-line configuration package-management nixos nix

是否有一个命令可用于确定在 NixOS 中系统范围内安装了哪些软件包?

例如,我可以列出为当前用户安装的软件包nix-env -q。我不知道有什么方法可以从/etx/nixos/configuration.nix.


我想使用两个单独的实例:

  1. 假设我向/etc/nixos/configuration.nixin添加了一个包environment.systemPackages,但我忘记了我是否已经运行nixos-rebuild switch了。如果有一个我可以运行的命令来检查包是否在系统环境中,那就太好了。

  2. 我已经programs.bash.enableCompletion设置为truein /etc/nixos/configuration.nix。不看nixpkgs中的选项,我猜这个选项会设置bash-completion要安装的包。如果有一个我可以运行的命令来检查bash-completion包是否确实在系统环境中,那就太好了。

Vla*_*nát 6

没有专门的工具可以做到这一点。您可能喜欢这个system.copySystemConfiguration选项(请参阅文档中的“注意事项”)。

您将相对接近nix-store -q --references /run/current-system/sw– 直接包含在 中的 nix 存储路径列表systemPackages,但请注意,各种 NixOS 选项可能会在其中添加包。