How to organise and deploy dotfiles using GNU stow.
Does anyone have experience using GNU Stow for managing dot files? I'm especially interested in using it to build a git repo to include my .vimrc file so I can sync it between hosts.
I know I've seen other methods, such as making your home directory a bare git repo, so you can check-in your config files without moving them. There is also the chezmoi golang project.
I agree with @[email protected], all of these are just different ways to skin the cat. Whatever gets the files in the proper directories. Once you pick one (even arbitrarily, to a degree), you'll very likely find no reason to push you toward another solution. I myself use symlinks with GNU cp -s
I've never heard of cp -faTs before. I did some experimenting and was surprised that it was recursive. I thought you needed an -R for that, but you don't. So, cp -faRTs appears to do the same thing, but is funnier.
In any case, thanks for sharing your repo. I take it, that after the initial install, you can just repeatedly git pull https://git.sr.ht/~igemnace/vim-config and then run vim-config/scripts/install-cfg to keep your config files up-to-date.
Yep. There's a single ./install script in project root that calls install-cfg and install-plugins. I only really need to run it once (first time I set up on a machine), and every time I add a new file. If all I've done is update existing files, a simple git pull will update my dotfiles' content automatically, as everything is symlinked already.
Worth noting that this is GNU-specific! For macOS for example, you'd have to install GNU userland (e.g. from homebrew) to get the flag. There's still value in using other solutions (such as ln), portability-wise.
As an aside: I mostly think of the ln param orders as exactly the same as cp and mv: