NixOSでシステム全体にインストールされているパッケージを確認するために使用できるコマンドはありますか?
たとえば、現在のユーザー用にインストールされているパッケージを一覧表示するために使用できますnix-env -q
。システム全体にインストールされているパッケージを一覧表示する方法がわかりません/etx/nixos/configuration.nix
。
2つの別々のインスタンスで使用したいと思います。
/etc/nixos/configuration.nix
inにパッケージを追加しましたが、すでにenvironment.systemPackages
実行されていることを忘れているとしましょうnixos-rebuild switch
。パッケージがシステム環境にあることを確認するために実行できるコマンドがあればよいでしょう。に
programs.bash.enableCompletion
設定しました。オプションは表示されません。true
/etc/nixos/configuration.nix
ニックス包装bash-completion
、このオプションはインストールするパッケージを設定するようです。bash-completion
パッケージが実際にシステム環境にあることを確認するために実行できるコマンドがあれば良いと思います。
答え1
これを行う専門的なツールはありません。このオプションは気に入るでしょうsystem.copySystemConfiguration
(文書の「参考」を参照)。
nix-store -q --references /run/current-system/sw
nixストレージパスリストに直接含まれていますがsystemPackages
、さまざまなNixOSオプションがそこにパッケージを追加できることに注意してください。
答え2
NixOSがソフトウェアをインストールする方法のためにインストールされたパッケージのようなものはありません。システム全体。つまり、ほとんどのパッケージマネージャとは異なる意味です。
ただし、ユーザーエクスペリエンス(別名プロファイル)を次のように考えるとシステム全体nix-store -q -R /nix/var/nix/profiles/system-${n}-link
、を使用して、特定のユーザーエクスペリエンスに対する依存関係を一覧表示できます。ここでは${n}
構成ファイルのコード名です。依存関係の意味は、直接依存関係と間接依存関係を意味します。
--tree
また、パラメータの代わりに-R
ASCII依存関係ツリーを取得できます。
答え3
最初のユースケースでは、次のものを使用できます。
nixos-rebuild dry-build
このコマンドは、ビルドされダウンロードされる項目を表示します。ビルドする必要がある新しいパッケージがあるかどうかを知りたい場合は、上記のコマンドを使用できます。
ビルドされているが現在アクティブでないパッケージについてはお知らせしません。前任者。 Firefoxを追加しconfiguration.nix
、再構築し、Firefoxを削除し、再構築し、Firefoxを追加して上記のタスクを実行すると、新しく構築する項目がないため、何も表示されません。 Nix は、ガベージコレクションまで、以前のパッケージを保持します。
nixos-rebuild dry-activate
何の変更もなく新しいシステムを構築する方法もあります。特定のサービスの無効化/有効化などの他の変更が表示されます。