NixOSでシステム全体にインストールされているパッケージを把握するために使用できるコマンドはありますか?
たとえば、現在のユーザーにインストールされているパッケージをnix-env -q
で一覧表示できます。システム全体にインストールされているパッケージを/etx/nixos/configuration.nix
から一覧表示する方法がわかりません。
これを使用したいインスタンスが2つあります。
/etc/nixos/configuration.nix
のenvironment.systemPackages
にパッケージを追加するとしますが、nixos-rebuild switch
をまだ実行しているかどうかを忘れてしまいます。パッケージがシステム環境にあるかどうかを確認するために実行できるコマンドがあったら、いいですね。
programs.bash.enableCompletion
で/etc/nixos/configuration.nix
をtrue
に設定しています。 nixpkgs のオプションを確認しないと、このオプションはbash-completion
パッケージがインストールされるように設定すると推測します。 bash-completion
パッケージが実際にシステム環境にあるかどうかをチェックするコマンドを実行できたらいいですね。
このための特定のツールはありません。あなたはsystem.copySystemConfiguration
オプションが好きかもしれません( "警告"のドキュメントを参照してください)。
nix-store -q --references /run/current-system/sw
– systemPackages
に直接含まれるnixストアパスのリストに比較的近づきますが、さまざまなNixOSオプションがそこにパッケージを追加する場合があることに注意してください。
NixOSがソフトウェアのインストールを行うアプローチのため、インストールされるパッケージなどはありませんシステム全体。ほとんどのパッケージマネージャーと同じ意味ではありません。
ただし、ユーザー環境(別名プロファイル)をシステム全体と同等に扱う場合は、nix-store -q -R /nix/var/nix/profiles/system-${n}-link
を使用して、特定のユーザー環境の依存関係をリストできます。ここで、${n}
はプロファイルの世代番号です。依存関係とは、直接的および間接的な依存関係を意味します。
さらに、--tree
引数の代わりに-R
を使用すると、ASCII依存関係ツリーを取得できます。
最初の使用例では、以下を使用できます。
nixos-rebuild dry-build
このコマンドは、何が構築されてダウンロードされるかを示します。ビルドする必要のある新しいパッケージがあるかどうかだけを知りたい場合は、上記のコマンドを使用できます。
これは、すでにビルドされているが現在アクティブではないパッケージについては通知しないことに注意してください。例configuration.nix
にfirefoxを追加する場合、再構築、Firefoxの削除、再構築、Firefoxの追加を行ってから上記を実行すると、新しく作成するものがないため何も表示されません。 Nixはガベージコレクションまで古いパッケージを保持します。
新しいシステムを構築するが変更を行わないnixos-rebuild dry-activate
もあります。一部のサービスを無効または有効にする場合など、他の変更が表示されます。