home-manager


dotfiles といわれるような home ディレクトリの管理を少しづつ home-manager (w/ Nix Flake)での管理に移行している.


https://github.com/tars0x9752/home


これまでの感想を書く.


良いところ


home-manager のよいところは, 部分的に移行できること. 一気に全部 home-manager 管理にしなくてもよいのでわりと気軽にできる.

また, Nix 管理してないものとファイル名が被ってたりしたら自動で別名つけてコピーしたりもできるので割と気軽に試せる.


これはNix全般に当てはまることだけど, Nix で管理してるものは全て immutable という安心感がよい.

たとえばなにかの設定ファイルを管理してたとして, それは readonly なので勝手に書き換わることはないし消えたり移動することもない.


そしてやはり, nixpkgs にあるものはシュッと宣言的に管理できるところ.

例えばgitとdeltaが欲しいと宣言すれば, どれをどういう手順でインストールするかとか細かいことは伝えなくても使える環境ができる.

(ただし, nixpkgs にないとかで自分で derivation 書かないといけない場合はそうでもない)


あとは環境がぶっ壊れても generation 戻したり switch しなおせばよいという安心感もよい.


イマイチなところ


Nix, 動的型付けなのかyo...というところ. これにつきる.

lspの補完が全く期待できない. 正直とてもつらい. Lazy eval なのも関係しているかもしれない.


home-manager の膨大なオプションなどを頑張って公式みながらgrepして書く必要があり, grep 力が求められる.


またドキュメントだけでなく, 結局ソースコードみないとわからないことが多い.


また, Nix のエコシステム自体やっぱり学習コストが高いなと. まだまだわからんことが無限にある.

ドキュメントもあまり見やすいとはいえず, 欲しい情報を探すのに結構苦労する.


まとめ


ちょっとした derivation だったりは書けるようになってきて, home-manager の勘どころとかもわかってきた.

あんまり複雑なものはわからんけど, すくなくともミニマムな dotfiles に求められるくらいの内容であればなんとかなるかなという感じ.

とりあえずもう少し使ってみようと思う.


最小限で始める home-manager の使い方の記事とかをブログに書いても良いかもしれないとちょっと思っているところ. 気が向いたらやるかも.



/gemlog/