先日ふとNixOSに入門したが日本語文献少ない上に英語文献すらすくなかったので怒りが記事になった.
NixOSってなに
まとめると,
NixOS: 純粋関数型Linuxディストリビューション.Nixパッケージマネージャの上に構築される.
Nix: 純粋関数型パッケージマネージャ.パッケージのビルド方法や環境をNix言語で宣言的に書くことができる.パッケージはnix storeにハッシュ付きでインストールされ,パッケージのversionが違う場合は別物としてインストールされる.つまり,Dependenchy hellが起きない.パッケージのビルドの際はNix言語で記述された環境の下で行われるため,謎の環境依存の死亡などが起こらず,便利.パッケージはnixpkgsで管理されており,ここに登録されているパッケージはHydraという継続ビルド管理システムでビルドとテストが行われている.Hydraのビルドとテストに通ったものはnix-channelに登録され,インストール時に空からバイナリが降ってくるようになるっぽい. Nix言語: パッケージ管理用のDDL.遅延評価で純粋関数型.どっかできいたような仕様の言語ですね......
NixOps: Nixを使ったDevOps用のツール.
NixOSそのものがNix言語でかかれたパッケージになっているので,Nixパッケージマネージャがあるところであればどこにでも展開できる.また,宣言的に書かれているため,Nix言語で書かれた設定ファイルがあればどこでも同一の環境が展開できる上,ロールバックも簡単.故にDevOpsが簡単なOSになっている(もともとそういう目的で作られているので当然といえば当然).
基本的なこと
NixOSのインストール方法は公式マニュアルに譲るとして,基本的な事項について書いておく.
OSの環境設定
rootの環境に関しては,/etc/nixos/configuration.nixに記述されているとおりに展開される.ネットワークの設定やrootで使うようなパッケージ,デスクトップ環境の設定などはここで行うといい.各userの環境設定は,~/.nix-profile以下に保存されている.userの環境設定をいじる際は,nix-envを使うと良いだろう.