❄️

NixOSデビューしてdotfilesを整備してみた感想

2025/02/27に公開

挨拶

こんにちは、T4D4です。
今年はLinuxデスクトップ元年らしい?のと、元々WSL2上で動かしていたUbuntuではaptやHomebrewなど複数のパッケージマネージャーを使っており、雑然としていてパッケージの管理が面倒だったので、以前からTLで話題になっていて気になっていたNixOSを試してみました。そして、NixOSを使うにあたってdotfilesを整備してみたのでその感想を書いてみます。

NixOSとは?

NixOSは、Nixという独自のパッケージマネージャーをOSレベルに拡張してシステム環境を管理するLinuxディストリビューションです。Nixの特徴は、以下のようなものがあります:

  • 再現可能性: Nixはパッケージを互いに隔離してビルドするため、パッケージが再現可能であり、未宣言の依存関係を持たないことが保証されます。
  • 宣言的: Nix言語を使い、システムの状態を宣言的に記述します。これにより、システムの状態を簡単に共有したり、変更したりできます。
  • 信頼性: Nixは他のパッケージを壊すことなく、パッケージをインストールしたり、アップグレードしたりできます。

今回NixOSを選んだ理由は、NixOSにはこれらの特徴があり、複数のパッケージマネージャーを併用して乱雑になった環境を整理し、ひとつの強力なパッケージマネージャーで依存関係を一元管理したいという僕のニーズに合致しているからです。

Home-managerの設定

Home-managerはnix-community製のユーザー環境構築ツールで、NixOSの設定をユーザーレベルで管理できます。Home-managerはroot権限が要求されるような領域までは設定できませんが、Home-managerを有効化すれば他のディストリビューションやOSでも同じ環境を構築できます。
Home-managerを利用して、適当に良さげなパッケージを導入してみました。

https://github.com/T4D4-IU/dotfiles/blob/master/home-manager/home.nix#L59-L90

さらに、以下の設定ファイルを分割して管理しています:

実際にセットアップしてみた感想

UbuntuしかLinuxを使ったことが無かったので、Nix言語の文法やNixOSの設定方法に頭を抱えることは多かったです(なんなら今も頭を抱えています)がとりあえずだいたい自分の設定したいように設定することができたので良かったです。まだNix流のやり方を理解しきれていないし、知らない機能も多いので、これからもNixについて学ばなければならないと思います。ですが、すでにNixの強力さの一端を体感できているので、Nixを使うという選択は悪くないなと思っています。

参考

Asahiさんの以下の記事には非常にお世話になりました。
NixやNixOSについて詳細に知りたい方は本当に詳しく書かれているので是非読んでみてください。
https://zenn.dev/asa1984/articles/nixos-is-the-best
https://zenn.dev/asa1984/books/nix-introduction
https://zenn.dev/asa1984/books/nix-hands-on

Discussion