話す経緯

  • 聞かれることが増えてきた
  • 上手く説明できない

環境構築で大変だったこと

Arch Linuxを使っていると痛感するが、どれだけ自分好みの環境を作っても、数年後にはパッケージの更新が依存地獄でできなかったり、新しいPCに乗り換えるなどの理由で1から作り直すことになる。

一方、NixOSならばPCを乗り換えても問題ないし、依存関係で苦しむこともない。

宣言的なシステム管理

従来のOSでは、命令的にシステムを構築している。 例 : $ sudo apt install ~

NixOSでは、設定ファイルを変更し、ビルドすることでシステムを構築する。 file-20260715025031833.png 個人的には、どのパッケージ使ってるのか一覧で見れて好き この再現性はNixによって担保されます。 なぜそうなるかは調べてください。(ここに書くには余白が狭すぎる( ‘ω’ )(適当))

依存関係の整合性が取れる

   全てのソフトは/nix/storeで暗号化ハッシュをつけられて保存される。  このハッシュ値を使うことで、同じソフトでも違うバージョンが共存できる。  そのため、なんかのソフトがアップデートして他のソフトが死ぬことがない。

私が使い始めた経緯

file-20260715025833652.png ジャンクノートを大学入学時に購入した。まともにWindows10が動かないくらいの性能だ。 だが、近いうちにツヨツヨpc買うことを夢見ていたため、移植が楽そうなNixOSを選択した。 あと、shinbunbun先輩のLTを聞いて面白そうだと思ったからというのもある。 私の所属しているZliというサークルでは、NixOSを使っている人が多かった。

複数コンピュータを”楽に”管理したい

さて、サーバーのメンテナンスというのは大変なものは既知の事実だと思う。 私がNixOSを使い始めたくらいにコーディングができるLLMが出てきた。 私はサーバーを楽に管理するため、AIに任せようとした。 そのため、設定ファイルをカキカキするだけでインフラ管理ができるNixOSは、クラウドに対するterraformくらい便利だった。 NixOSでの構成は、以下のようになっている file-20260715031103419.png デスクトップならば、GUI関連のソフトウェアとカスタマイズの設定 開発サーバーならば、開発用のソフトウェアや専用の環境 NASならば、データの保存・管理に向いたソフト それぞれの設定ファイルで管理することが可能だった。 共通する設定は、moduleという単位で共有することが可能で、いちいち設定しなくて良いため楽だった。

Flakes

複数の設定ファイルを一つの場所で管理するためのツールみたいなものです。 これのおかげで、一つのレポで設定ファイルを管理できます。 ビルド時は、

sudo nixos-rebuild --flake /your-path#host-name

のように#をつけることで特定の設定ファイルでビルドできます。 深くは説明できないですが便利です。