話す経緯
- 聞かれることが増えてきた
- 上手く説明できない
環境構築で大変だったこと
Arch Linuxを使っていると痛感するが、どれだけ自分好みの環境を作っても、数年後にはパッケージの更新が依存地獄でできなかったり、新しいPCに乗り換えるなどの理由で1から作り直すことになる。
一方、NixOSならばPCを乗り換えても問題ないし、依存関係で苦しむこともない。
宣言的なシステム管理
従来のOSでは、命令的にシステムを構築している。 例 : $ sudo apt install ~
NixOSでは、設定ファイルを変更し、ビルドすることでシステムを構築する。
個人的には、どのパッケージ使ってるのか一覧で見れて好き
この再現性はNixによって担保されます。
なぜそうなるかは調べてください。(ここに書くには余白が狭すぎる( ‘ω’ )(適当))
依存関係の整合性が取れる
全てのソフトは/nix/storeで暗号化ハッシュをつけられて保存される。 このハッシュ値を使うことで、同じソフトでも違うバージョンが共存できる。 そのため、なんかのソフトがアップデートして他のソフトが死ぬことがない。
私が使い始めた経緯
ジャンクノートを大学入学時に購入した。まともにWindows10が動かないくらいの性能だ。
だが、近いうちにツヨツヨpc買うことを夢見ていたため、移植が楽そうなNixOSを選択した。
あと、shinbunbun先輩のLTを聞いて面白そうだと思ったからというのもある。
私の所属しているZliというサークルでは、NixOSを使っている人が多かった。
複数コンピュータを”楽に”管理したい
さて、サーバーのメンテナンスというのは大変なものは既知の事実だと思う。
私がNixOSを使い始めたくらいにコーディングができるLLMが出てきた。
私はサーバーを楽に管理するため、AIに任せようとした。
そのため、設定ファイルをカキカキするだけでインフラ管理ができるNixOSは、クラウドに対するterraformくらい便利だった。
NixOSでの構成は、以下のようになっている
デスクトップならば、GUI関連のソフトウェアとカスタマイズの設定
開発サーバーならば、開発用のソフトウェアや専用の環境
NASならば、データの保存・管理に向いたソフト
それぞれの設定ファイルで管理することが可能だった。
共通する設定は、moduleという単位で共有することが可能で、いちいち設定しなくて良いため楽だった。
Flakes
複数の設定ファイルを一つの場所で管理するためのツールみたいなものです。 これのおかげで、一つのレポで設定ファイルを管理できます。 ビルド時は、
sudo nixos-rebuild --flake /your-path#host-name
のように#をつけることで特定の設定ファイルでビルドできます。 深くは説明できないですが便利です。