Configuration.nixでNixパッケージ名を見つけてインストールするにはどうすればよいですか?

Configuration.nixでNixパッケージ名を見つけてインストールするにはどうすればよいですか?

以下を使用してインストールするパッケージを検索するとします。nix-env~の--queryタスク:

$ nix-env -qa 'aspell.*en'
aspell-dict-en-7.1-0

/etc/nixos/configuration.nixNixOSメインにこのパッケージ名を書きました構成ファイル:

environment.systemPackages = with pkgs; [
  aspell-dict-en
];

ただし、sudo nixos-rebuild switchNixOS コマンドを実行すると構成の更新次に、指定されたすべてのシステム全体のパッケージをインストールします。宣言的に、エラーで中断されます。

error: undefined variable ‘aspell-dict-en’ at /etc/nixos/configuration.nix:44:5

多くのパッケージ(すべてではありません)から返された名前nix-envと設定オプションで指定する必要がある名前がenvironment.systemPackages異なることがわかりますが、ロジックを理解していません。で見つけたパッケージをインストールする方法はnix-env

ベストアンサー1

NixOS コミュニティには 3 つのマニュアルがあります。問題がある場合は、まず確認してください。

NixのすべてのパッケージはNix式で指定されます。 Nix式はNix言語で書かれたテキストで、通常は拡張子が.nix

すべての式には「シンボル名」というものがあり、nix-env.seeを使用するときNix 式の例。 Nix自体は内部的にこのシンボル名を使用しないため、パッケージ名が指定されているかどうかは重要ではなく、aspell-dict-en単にユーザーの便宜のためです。

本当に重要なのは「属性パス」です。したがって、シンボル名と属性パスの間に混乱があります。各パッケージには、environment.systemPackages設定オプションでシステム全体のインストールに使用できるプロパティパスがあります。宣言的パッケージ管理

パッケージのプロパティパスを見つけるには、別のフラグを追加してください。-Pあなたの質問:

$ nix-env -qaP 'aspell.*en'
nixos.aspellDicts.en  aspell-dict-en-7.1-0

nix-env毎日簡単に利用できる必要があるので、nix-env使い方--query--install通話オプションを練習してください。ただし、オンラインでパッケージを参照し、その属性パスを見つけることもできます。Nix パッケージ検索。と入力してaspellをクリックすると、aspell-dict-enインストールコマンドの一部としてプロパティパスを含むさまざまなパッケージのプロパティが表示されます。

$ nix-env -iA nixos.pkgs.aspellDicts.en

これで、このプロパティパスを次の場所に配置できます/etc/nixos/configuration.nix

environment.systemPackages = with pkgs; [
  aspellDicts.en
];

次に、を実行してシステムを更新しますsudo nixos-rebuild switch

おすすめ記事