1. Nix の目的と環境構築
そもそも Nix とは?
Section titled “そもそも Nix とは?”Nix は、一言でいうと、ソフトウェアのパッケージ方法を定義する可搬な記述式です。
Nix で何ができる?
Section titled “Nix で何ができる?”Nix (+ flakes) を使うと、以下のようなことの組み合わせが簡単に達成できます。
(定義部分)
- nixpkgs で定義されている大量のパッケージを利用する
- ソフトウェアのビルド式を定義し、誰でもビルドできるようにする
- 依存関係の明示化も Nix に強制されるので、必要な依存が見つからない!が起こり得ない
- 任意の GitHub リポジトリの任意の ref を、 Flake が定義されている限り 手動でクローンせずに 実行する。
- 上のすべてを、コミットハッシュ単位でバージョンを固定して行う
- かつ、 1 コマンドでアップデート可能
(利用部分)
↑で定義したすべてのソフトウェアを使って、
- 開発用シェルの定義を記述し、開発者の間で共有する (
shell.nix
,devShell
) - ユーザースペースの定義、その方法の共有 (Home Manager, modules)
- ファイル (
.bashrc
など) や、ソフトウェアのインストールなど
- ファイル (
- OS の設定の一元的管理 (NixOS)
- ソフトウェアのインストールなど
1. Nix のインストール
Section titled “1. Nix のインストール”公式のインストーラー https://nixos.org/download/
または、 Determinate Systems のインストーラー https://github.com/DeterminateSystems/nix-installer を利用してください。
Determinate Systems のインストーラーは、デフォルトで後述 (2.) の設定が ON になっていたり、アンインストーラーが付属したりしています。
チャンネル (後述) を聞かれた場合は、 nixpkgs-unstable
を選択してください。
2. Nix CLI の設定 (公式のインストーラー利用時)
Section titled “2. Nix CLI の設定 (公式のインストーラー利用時)”次のコマンドを実行 (するか、同等のことを) してください。
mkdir -p ~/.config/nixecho 'experimental-features = nix-command flake' > ~/.config/nix/nix.conf
次のコマンドを実行して、 Hello, Nix!
と表示されたら成功です。
nix run nixpkgs#hello -- --greeting 'Hello, Nix!'