NixOSでシステム全体にどのパッケージがインストールされているかを確認するには?

NixOSでシステム全体にどのパッケージがインストールされているかを確認するには?

NixOSでシステム全体にインストールされているパッケージを確認するために使用できるコマンドはありますか?

たとえば、現在のユーザー用にインストールされているパッケージを一覧表示するために使用できますnix-env -q。システム全体にインストールされているパッケージを一覧表示する方法がわかりません/etx/nixos/configuration.nix


2つの別々のインスタンスで使用したいと思います。

  1. /etc/nixos/configuration.nixinにパッケージを追加しましたが、すでにenvironment.systemPackages実行されていることを忘れているとしましょうnixos-rebuild switch。パッケージがシステム環境にあることを確認するために実行できるコマンドがあればよいでしょう。

  2. programs.bash.enableCompletion設定しました。オプションは表示されません。true/etc/nixos/configuration.nixニックス包装bash-completion、このオプションはインストールするパッケージを設定するようです。bash-completionパッケージが実際にシステム環境にあることを確認するために実行できるコマンドがあれば良いと思います。

答え1

これを行う専門的なツールはありません。このオプションは気に入るでしょうsystem.copySystemConfiguration(文書の「参考」を参照)。

nix-store -q --references /run/current-system/swnixストレージパスリストに直接含まれていますがsystemPackages、さまざまなNixOSオプションがそこにパッケージを追加できることに注意してください。

答え2

NixOSがソフトウェアをインストールする方法のためにインストールされたパッケージのようなものはありません。システム全体。つまり、ほとんどのパッケージマネージャとは異なる意味です。

ただし、ユーザーエクスペリエンス(別名プロファイル)を次のように考えるとシステム全体nix-store -q -R /nix/var/nix/profiles/system-${n}-link、を使用して、特定のユーザーエクスペリエンスに対する依存関係を一覧表示できます。ここでは${n}構成ファイルのコード名です。依存関係の意味は、直接依存関係と間接依存関係を意味します。

--treeまた、パラメータの代わりに-RASCII依存関係ツリーを取得できます。

答え3

最初のユースケースでは、次のものを使用できます。

nixos-rebuild dry-build

このコマンドは、ビルドされダウンロードされる項目を表示します。ビルドする必要がある新しいパッケージがあるかどうかを知りたい場合は、上記のコマンドを使用できます。

ビルドされているが現在アクティブでないパッケージについてはお知らせしません。前任者。 Firefoxを追加しconfiguration.nix、再構築し、Firefoxを削除し、再構築し、Firefoxを追加して上記のタスクを実行すると、新しく構築する項目がないため、何も表示されません。 Nix は、ガベージコレクションまで、以前のパッケージを保持します。

nixos-rebuild dry-activate何の変更もなく新しいシステムを構築する方法もあります。特定のサービスの無効化/有効化などの他の変更が表示されます。

関連情報