「パソコンが壊れた。でも大丈夫。設定ファイルをGitからクローンして`nixos-rebuild switch`すれば、30分で元の環境が完全に戻る」——これがNixOSの世界。他のOSとは次元が違う。
NixOSの核心は宣言的設定と再現性。`/etc/nixos/configuration.nix`という一つのファイルに「このパッケージを入れて、このサービスを有効にして、このユーザーを作って…」と書くだけ。OSの状態がコードで完全に定義される。
NixOSの革命的ポイント:
- アトミックアップデート — アップデートに失敗しても自動で前の状態にロールバック。ブートローダーに世代が並んでて、起動時に好きな世代を選べる。壊れる恐怖ゼロ。
- 再現性 — 同じ`configuration.nix`から全く同じ環境が作れる。開発チーム全員のマシンを同一環境に。Dockerよりさらに上の次元。
- nix-shell — プロジェクトごとに一時的な環境を作れる。`nix-shell -p nodejs_22`でNode.js 22があるシェルが起動。終わったら環境ごと消える。グローバルを汚さない。
- 開発環境の統一 — `shell.nix`に依存関係を書けば、チーム全員が同一バージョンのツールを使える。「俺のマシンでは動く」が消滅する。
でも学習コストは異常。Nix言語を覚える必要があるし、エラーメッセージが暗号みたい。そして何より、FHS(Filesystem Hierarchy Standard)に従わないから、バイナリを直にDLして実行するタイプのソフトが動かない。
僕はNixOSを半年使って、あまりの難しさに挫折した。でも「宣言的設定」の思想だけは忘れられず、今はdotfilesをGit管理してAnsibleでセットアップを自動化してる。NixOSのエッセンスだけ頂いてる感じ。