MacOS向けタイル型ウィンドウマネージャAerospaceをhome-manager
で。
Home Manager Options を使う
有り難いことに、home-manager の options だけで設定できます。本来なら。
https://github.com/nix-community/home-manager/blob/master/modules%2Fprograms%2Faerospace.nix
aerospace.toml が正しく生成されない
本来であれば nix で書いた設定が toml に変換されて然るべき場所に配置されるのですが、正しく toml が生成できませんでした。
例えば、以下のような設定をしたいとします。
[gaps] outer.left = 10 outer.bottom = 10 outer.top = 10 outer.right = 10
これを nix で書くと
{ gaps = { outer.left = 8; outer.bottom = 8; outer.top = 8; outer.right = 8; };}
このようになります。home-manager options の example にもこのように書かれていますが、 この nix からは以下のような toml が生成されてしまいました。
[gaps.outer] left = 10 bottom = 10 top = 10 right = 10
これではうまく動きません。
はじめからtomlで書く
そうだ、始めから toml を書いてしまおう!
- tomlの生成ミスがない
- ドキュメントや他所からのコピペが効く
- ハイライトを始めとしたエディタの恩恵が受けられる
nix-storeのパス等の埋め込みやすさが若干下がりますが、今回は特にそんな用事もないので、これで行きます。
どのように配置・認識させるか
home-manager options で提供されているオプションはtomlファイルをコンフィグとして渡すことは想定されておらず、 tomlファイルの生成からコンフィグパスとしての指定までnixの中で完結されてしまっています。
他にもいくつか方法があると思うのですが、結論から言うと私は以下のようにしました。
home.file.".config/aerospace/aerospace.toml".source = lib.mkForce ./aerospace.toml; programs.aerospace = { enable = true; launchd.enable = true; };
このnixファイルと同じ階層にaerospace.tomlを置いています。
programs.aerospace.userSettings
を設定しなければ、
aerospaceはデフォルトの優先順位でコンフィグファイルを探しに行きます。そして、それを想定して
~/.config/aerospace/aerospace.toml
に配置するよう書くのですが、どうやら別の設定と干渉するようなので mkForce
で上書きしてあげます。
これでいい感じに動くようになりました!
まとめ
flake.lock
更新したら壊れて慌てたけど、丸く収まったぞよ!