Currently, I use GNU Stow to manage my dotfiles.
A clone of this repo lives at ~/.dotfiles. Each top-level folder represents one application, and contains any config files that that application requires.
To install (for instance) my dunst configs, I enter ~/.dotfiles and run stow dunst. To uninstall them, I run stow -D dunst from the same place. For more information, see the GNU Stow docs.
There are things this simple system can't handle, like:
- installing configs that don't live under
~ - ensuring that dependencies exist before installing configs that require them
- maintaining slightly divergent versions of configs used by separate machines
If/when I need more power, maybe I'll look into something like
- ChezMoi (found via a HN comment)
- Nix