web-dev-qa-db-ja.com

NixOSでシステム全体にインストールされているパッケージを見つける方法

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

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


これを使用したいインスタンスが2つあります。

  1. /etc/nixos/configuration.nixenvironment.systemPackagesにパッケージを追加するとしますが、nixos-rebuild switchをまだ実行しているかどうかを忘れてしまいます。パッケージがシステム環境にあるかどうかを確認するために実行できるコマンドがあったら、いいですね。

  2. programs.bash.enableCompletion/etc/nixos/configuration.nixtrueに設定しています。 nixpkgs のオプションを確認しないと、このオプションはbash-completionパッケージがインストールされるように設定すると推測します。 bash-completionパッケージが実際にシステム環境にあるかどうかをチェックするコマンドを実行できたらいいですね。

5
illabout

このための特定のツールはありません。あなたはsystem.copySystemConfigurationオプションが好きかもしれません( "警告"のドキュメントを参照してください)。

nix-store -q --references /run/current-system/swsystemPackagesに直接含まれるnixストアパスのリストに比較的近づきますが、さまざまなNixOSオプションがそこにパッケージを追加する場合があることに注意してください。

3

NixOSがソフトウェアのインストールを行うアプローチのため、インストールされるパッケージなどはありませんシステム全体。ほとんどのパッケージマネージャーと同じ意味ではありません。

ただし、ユーザー環境(別名プロファイル)をシステム全体と同等に扱う場合は、nix-store -q -R /nix/var/nix/profiles/system-${n}-linkを使用して、特定のユーザー環境の依存関係をリストできます。ここで、${n}はプロファイルの世代番号です。依存関係とは、直接的および間接的な依存関係を意味します。

さらに、--tree引数の代わりに-Rを使用すると、ASCII依存関係ツリーを取得できます。

2
Emmanuel Rosa

最初の使用例では、以下を使用できます。

nixos-rebuild dry-build

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

これは、すでにビルドされているが現在アクティブではないパッケージについては通知しないことに注意してください。例configuration.nixにfirefoxを追加する場合、再構築、Firefoxの削除、再構築、Firefoxの追加を行ってから上記を実行すると、新しく作成するものがないため何も表示されません。 Nixはガベージコレクションまで古いパッケージを保持します。

新しいシステムを構築するが変更を行わないnixos-rebuild dry-activateもあります。一部のサービスを無効または有効にする場合など、他の変更が表示されます。

0
Boris Babić