Almost entirely with you on that, actually. But OS and other environment differences frequently demand some sort of tweaking, which I absolutely do not want to do by hand if I've done it before.

Chezmoi can do conditional templating on config files, which is super nice.

But it's always better when the application itself is cross platform and uses just a single config file.

(Just setting all of the knobs on macOS is a massive hassle and only part of them can be automated in a deterministic way...)

It's about time I started using a dotfile manager that I didn't make entirely myself - thanks for the recommendation.

For more and more of the cross-platform headaches, I've actually found myself treating the OS as more of a virtual host, and spending the plurality of my time configuring layers that run in it (modify .zshrc where it can do the work of iterm/wezterm, if it can be done in .emacs then do it there).

I get the feeling that I'm not far off shipping personal nix containers around, but there's still a little too much friction between having containers work and working on the OS itself.