晴れときどき崩壊ブログ

Aerospace with Home Manager

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 を書いてしまおう!

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 更新したら壊れて慌てたけど、丸く収まったぞよ!


Previous Post
home-managerの設定をある程度Nixと分離しておきたい
Next Post
Arch Linux + Home Manager で pinentry が正しく動作しない