是否有一个命令可以用来确定在NixOS中安装了哪些软件包?
例如,我可以用nix-env -q
列出为当前用户安装的软件包。我不知道如何从/etx/nixos/configuration.nix
中列出安装在整个系统上的软件包。
有两个单独的实例我想使用如下:
/etc/nixos/configuration.nix
中environment.systemPackages
中添加了一个包,但我忘记了是否运行了nixos-rebuild switch
。如果我可以运行一个命令来检查包是否在系统环境中,那就太好了。programs.bash.enableCompletion
设为true
in /etc/nixos/configuration.nix
。如果不查看尼克斯中的选项,我猜想该选项将设置要安装的bash-completion
包。如果我可以运行一个命令来检查bash-completion
包是否真的在系统环境中,那就太好了。发布于 2018-02-06 10:26:07
没有专门的工具来解决这个问题。您可能喜欢system.copySystemConfiguration
选项(请参阅文档中的“注意事项”)。
您将相对接近于nix-store -q --references /run/current-system/sw
-- systemPackages
中直接包含的nix存储路径列表,但请注意,各种NixOS选项可能会在其中添加包。
发布于 2018-10-12 09:00:35
对于第一个用例,可以使用:
nixos-rebuild dry-build
此命令显示要构建和下载的内容。如果您只想知道是否有需要构建的新包,则可以使用上面的命令。
请注意,这将不会告诉您的软件包已经构建,但目前没有活动。例如。如果你把火狐添加到你的configuration.nix
,重建,删除火狐,重建,然后添加火狐,然后运行上面它不会显示任何东西,因为没有什么新的构建。Nix将旧包保存到垃圾收集为止。
还有nixos-rebuild dry-activate
,它构建了新的系统,但不做任何更改。它将显示其他更改,比如禁用/启用某些服务。
https://unix.stackexchange.com/questions/422147
复制相似问题