For years my "dotfiles" lived in three places: a half-forgotten gist, a tarball on the NAS, and whatever happened to be on the machine I last used. Setting up a new box meant reconstructing my shell from memory and getting it slightly wrong every time. Working from home for a month finally gave me the patience to fix it.
The whole thing is now a single git repo with stow doing the symlinking. One directory per tool, stow vim drops the symlinks where they belong, and nothing is copied so editing the real file edits the repo. .zshrc, .vimrc, .gitconfig, .tmux.conf, the lot.
The part I'd resisted for ages was splitting machine-specific bits out. A ~/.zshrc.local that's sourced if it exists and .gitignored keeps the work proxy and the homelab aliases off GitHub, whilst the shared config stays shared.
Bootstrapping a new machine is now git clone, stow */, done. It took an afternoon to build the thing I'd been not-building for ten years. Predictably, it's the afternoon I'll save back within a month.