以下を使用してインストールするパッケージを検索するとします。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
。
答え2
次のWebサイトを使用してパッケージを検索できます。
データサイエンスにNixOSを使用する場合:
Python基準寸法:
nix-env -qaP .\*pylint.\*
または
py_pkgs="nix_packages_py35.txt"
nix-env -qaP | grep -i python36 > ${py_pkgs}
grep pandas ${py_pkgs}
または特別に探している場合右パッケージ/ライブラリ
nix-env -f "<nixpkgs>" -qaP -A rPackages .\*tidyverse.\*
あるいは、例えば、npmパッケージを入手することができる。
nix-env -qaPA 'nixos.nodePackages'
答え3
nix-env -v -qaP '*' | grep "nvim"
nix-env -v -qaP '*'
結果をファイルに保存します(通常は戻るのに時間がかかるため)。
haskellPackages
nix-envは、次のこと(および他のものも可能です)を無視しているようです。以下では、haskellPackagesなどのサブカテゴリのパッケージを検索できます。
nix-env -f '<nixpkgs>' -qaPA haskellPackages
nix-env検索は現在5秒以上かかり、再び返されるため非常に残念ですerror: regex error
。
答え4
nix-search () {
local cache_file=~/.cache/nix/nix-env-qaP
if [[ "$1" =~ ^--?c(ache)?$ ]]; then
mkdir -p $(dirname $cache_file)
echo -n "Caching packages.."
nix-env -qaP '*' >$cache_file
echo "