以下を使用してインストールするパッケージを検索するとします。nix-env
~の--query
タスク:
$ nix-env -qa 'aspell.*en'
aspell-dict-en-7.1-0
/etc/nixos/configuration.nix
NixOSメインにこのパッケージ名を書きました構成ファイル:
environment.systemPackages = with pkgs; [
aspell-dict-en
];
ただし、sudo nixos-rebuild switch
NixOS コマンドを実行すると構成の更新次に、指定されたすべてのシステム全体のパッケージをインストールします。宣言的に、エラーで中断されます。
error: undefined variable ‘aspell-dict-en’ at /etc/nixos/configuration.nix:44:5
多くのパッケージ(すべてではありません)から返された名前nix-env
と設定オプションで指定する必要がある名前がenvironment.systemPackages
異なることがわかりますが、ロジックを理解していません。で見つけたパッケージをインストールする方法はnix-env
?
ベストアンサー1
NixOS コミュニティには 3 つのマニュアルがあります。問題がある場合は、まず確認してください。
- ニックスマニュアル、パッケージマネージャ用
- NixOS マニュアル、オペレーティングシステムの場合
- Nixpkgs マニュアル、Nixパッケージインフラストラクチャ
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
。