Managed with GNU Stow. There's a helper
script at bin/dotfiles that wraps the common operations.
./bin/dotfiles add ~/.config/fooThis moves the file/directory into the repo and symlinks it back. Done.
It works for anything under $HOME:
./bin/dotfiles add ~/.config/nvim # whole directory
./bin/dotfiles add ~/.config/foo/bar.toml # single file
./bin/dotfiles add ~/.somerc # dotfile in $HOMEFor provisioning Linux workspaces (apt-based), there's a one-liner:
git clone --recursive <repo-url> ~/dev/dotfiles
cd ~/dev/dotfiles
./install.shThis installs all dependencies (stow, tmux, neovim, starship, fzf, oh-my-zsh,
etc.), symlinks everything into $HOME, and sets up tmux/zsh plugins.
brew install stow
git clone --recursive <repo-url> ~/dev/dotfiles
cd ~/dev/dotfiles
./bin/dotfiles stow # symlink all configs into $HOME
./bin/dotfiles stow nvim git # or just specific onesInstall other tools with brew as needed (tmux, neovim, starship, fzf, etc.).
./bin/dotfiles list # show all packages
./bin/dotfiles unstow <pkg> # remove symlinks for a packageFiles with secrets are excluded via .gitignore. If you add a config that
contains credentials, add it to .gitignore before committing.