Nix
Nix は、パッケージ管理の信頼性と再現性を高めることを目的とした純粋に機能的なパッケージマネージャーです。
インストール
Nix のインストールには 3 つの選択肢があります。ネイティブ Arch Linux パッケージ、Nix が公式にサポートするアップストリームインストールスクリプト、および Nix のサードパーティサポートを提供する会社である Determinate Systems が提供する「Zero to Nix」スクリプトです。
ネイティブ
Nix は nix パッケージでインストールできます。
アップストリームインストールスクリプト
ファイルを curl --proto '=https' --tlsv1.2 -sSfL https://nixos.org/nix/install -o nix-install.sh
でダウンロードし、ファイルを確認します: less ./nix-install.sh
、そしてスクリプトを実行します ./nix-install.sh --daemon
で Nix のインストールを開始します。
Zero to Nix インストールスクリプト
より簡単で、複雑でない Nix のセットアップを望む場合は、Determinate Systems のセットアップを使用できます。ファイルを curl --proto '=https' --tlsv1.2 -sSf -L https://install.determinate.systems/nix -o nix-install.sh
でダウンロードし、ファイルを確認します: less ./nix-install.sh
、そしてスクリプトを実行します sh ./nix-install.sh install
でインストールを開始します。
詳細については、Determinate Systems のマニュアル を参照してください。
設定
Nix デーモンが起動時に起動するように、nix-daemon.service
を有効化します。
デーモンソケットにアクセスするために必要なユーザーを nix-users
グループ に追加します。変更が有効になるためにセッションを再起動します。
チャンネル を追加し、更新します。
$ nix-channel --add https://nixos.org/channels/nixpkgs-unstable $ nix-channel --update
使用方法
シェルが設定された後、以下を実行することで hello が更新された PATH にインストールされます:
$ nix-env -iA nixpkgs.hello
バイナリ自体は /nix/store/[hash]-hello-[version]/bin/hello
に位置します。
hello
を実行して、正しい PATH にあることを確認します。動作すれば、以下で削除できます:
$ nix-env --uninstall hello
または、インストールされているプログラムのリストを確認できます:
$ nix-env --query
さらに、世代をリストすることもできます:
$ nix-env --list-generations
より詳細な情報については nix-env(1) を参照してください。
ヒントとコツ
最大ジョブ数
デフォルトでは、nix は一つのビルダーのみを使用します。以下の設定により、nix は CPU の数だけのジョブを使用することができます:
/etc/nix/nix.conf
max-jobs = auto
グラフィカルアクセラレーション
OpenGL および Vulkan アプリケーションを実行するには、NixGL を使用します。
デスクトップ統合
デスクトップ環境と Nix アプリケーションを統合するために、~/.nix-profile/share
ディレクトリを $XDG_DATA_DIRS
に追加します。例えば、export XDG_DATA_DIRS=$HOME/.nix-profile/share:$XDG_DATA_DIRS
を使用します。
nix-shell の Zsh 統合
nix-shell
はデフォルトで Bash を起動します。zsh-nix-shellAUR は、nix-shell
環境でデフォルトのシェルとして Zsh を使用することを可能にします。一部のプロンプトプラグイン、例えば zsh-theme-powerlevel10kAUR や zsh-pure-promptAUR は、nix-shell
インジケーターを提供します。
トラブルシューティング
ファイルが多すぎます
一部のビルドでは以下のようなエラーが発生することがあります:
error: opening directory '/nix/store/...': Too many open files
nix-daemon.service
を編集してファイルの上限を増やします:
[Service] LimitNOFILE=65536
root ユーザーチャネルに関する警告メッセージ
Nix を使用中にこのエラーが発生した場合:
warning: Nix search path entry '/nix/var/nix/profiles/per-user/root/channels' does not exist, ignoring
root ユーザーはチャネルを更新する必要があります:
# nix-channel --update
ユーザー関連の Nix 検索パスエントリが存在しない、無視しています
warning: Nix search path entry '/nix/var/nix/profiles/per-user/<USER>/channels' does not exist, ignoring
FS#78828 を参照してください。または、問題が発生しない #Upstream installation script または #Zero to Nix installation script を使用できます。
エラー: ファイル 'nixpkgs' が Nix 検索パスに見つかりませんでした (これを $NIX_PATH または -I で追加してください)
FS#78828 を参照してください。または、問題が発生しない #Upstream installation script または #Zero to Nix installation script を使用できます。
サンドボックスビルドの問題
その他のサンドボックスの問題
error: while setting up the build environment: mounting /proc: Operation not permitted error: program '/usr/bin/nix-env' failed with exit code 1
1: package 'utils' in options("defaultPackages") was not found 2: package 'stats' in options("defaultPackages") was not found Error: .onLoad failed in loadNamespace() for 'utils', details: call: system(paste(which, shQuote(names[i])), intern = TRUE, ignore.stderr = TRUE) error: cannot popen '/nix/store/fnkvlbls29d01jcx3wsdnhykyrl7087r-which-2.21/bin/which 'uname' 2>/dev/null', probable reason 'Cannot allocate memory'
この問題は上流で知られています:#2311、#3000、および #4636。
最も一般的な修正は、設定ファイルでサンドボックスを無効にすることです:
/etc/nix/nix.conf
# disable sandboxing sandbox = false
その後、nix-daemon
サービスを再起動します。
ロケール警告
Nix wiki は export LOCALE_ARCHIVE=/usr/lib/locale/locale-archive
の実行を推奨しています。または、環境変数 LC_ALL=C
をエクスポートします。