web-dev-qa-db-ja.com

Nixパッケージの名前を見つけてそれをconfiguration.nixにインストールする方法は?

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で見つけたパッケージをインストールするにはどうすればよいですか?

23

NixOSコミュニティには3つのマニュアルがあります。行き詰まっている場合は、常に最初に参照してください。

Nixのすべてのパッケージは、Nix式で指定されます。 Nix式はNix言語で記述されたテキストであり、通常、拡張子.nixが付いたファイルにあります。

すべての式には、いわゆる「記号名」があり、nix-envを使用すると、人間が読める名前が出力されます。 サンプル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を実行してシステムを更新します。

22

データサイエンスにNixOSを使用している場合:

Pythonモジュール:

nix-env -qaP .\*pylint.\*

または

py_pkgs="nix_packages_py35.txt"
nix-env -qaP | grep -i python36 > ${py_pkgs}
grep pandas ${py_pkgs}

または、特に[〜#〜] r [〜#〜]パッケージ/ライブラリを検索する場合

nix-env -f "<nixpkgs>" -qaP -A rPackages .\*tidyverse.\*

あるいは、あなたは例えばnpmパッケージ:

nix-env -qaPA 'nixos.nodePackages'

pkgsを検索するためのWebサイトもあります

4
InLaw
nix-env -v -qaP '*' | grep "nvim"

nix-env -v -qaP '*'の結果をファイルに保存します(通常は戻るのに時間がかかるため)。


心に留めておいてください、nix-envはhaskellPackages(そしておそらく他のもの)の下のものを無視するようです。


nix-env検索は、5秒以上かかり、その後error: regex error...が返されるため、現在非常にイライラしています。

1

追加ミルジャンスオプション:/nix/store お気に入り grep -irw "programm-name" /nix/store。しかし、これは少し混乱するかもしれません。また、ホームディレクトリで.local/share(インストールされているプログラム/アプリの場合)。

0
saggzz