I recently started uses dotbot for managing dot files across my systems. It sounds very similar, in terms of the simplicity of the implementation, to yadm. You define a config file in yaml or json and run the “install” script which calls the dotbot utility, passing in your config file. With a simple change to the install script, I’ve been able to create multiple config files, one per environment (work, home, linux, mac, etc.) and I’ve been thinking about how I could automatically sync changes to git whenever I edit a config file. Leaning towards setting up an autocmd in neovim to automatically commit and push changes on save when I have one of the config files open. Just not yet sure how to do this in a way that would only run the sync for the configs and not every json or yaml file on my system. I’ve only ever set up autocmds for specific file extensions but the syntax leads me to believe it’s flexible enough that any arbitrarily specific file name or path could work the same.
Good article. I learned long ago that, at least the case of your development environment, it’s best to install the latest upstream release instead of just relying on the system provided version. Go makes doing this extremely easy relative to some other languages out there.