話す経緯

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

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

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

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