Publishing My Dotfiles
End of last week I finally gave up on using the HP mini PC I’d been using for work since my MacBook Pro started crashing under work loads. So now I’m using the gaming PC my family gifted me for my last birthday. Not necessarily ideal, but still good fun since it’s a beefy machine!
Thankfully I had previously already switched the PC to running Debian and I’ve been storing my local repositories on an external hard drive, so making the switch hasn’t been too painful. But while I was at it I decided to work toward making it even less painful next time I switch machines.
Enter my new dotfiles repository.
I’ve tinkered around with storing computer configurations on GitHub before. But it never stuck that well, probably because the friction to keeping the repo up-to-date to the point where it was useful when I switched computers was just too great.
This time I’m taking a different approach (maybe the approach most people who use dotfiles repos have already been using): I’ve initialized my home directory itself as a git repository.
Doing this made me a bit nervous since I didn’t want to accidentally commit sensitive information. To avoid this I git-ignored everything in my home directory (`*`) and have been only unignoring specific files as I see value in adding them to the repo.
If you’re into using Beeminder or are generally interested in quantified self stuff, there are already some fun goodies in the setup:
The main toolbar displays my next due Beeminder goal using `buzz next`.
There’s a script that queries my ActivityWatch data for work time.
There’s another script that syncs that data to Beeminder (again using Buzz).
And it includes a crontab file to ensure that sync happens regularly.
I’m quite enjoying using git to track my computer setup. I feel like so far it’s encouraging me to be more thoughtful about how I set up my machine.


Have you come across Gnu Stow (https://www.gnu.org/software/stow/) ? It's a tool to help with this exact problem. It's described as a "symlink farm manager": basically you move your existing dotfiles - or any other file/directory in your home director - to (say) ~/dotfiles, and then use Stow to create all the symlinks from where they normally live. If you have ~/dotfiles/randomdir/foo.sh then it will create a symlink from ~/randomdir/foo.sh.
Good explanation here: https://tamerlan.dev/how-i-manage-my-dotfiles-using-gnu-stow/
Then you can put ~/dotfiles in a Git repo, and off you go. I used it a week ago to set up the dotfiles and my standard scripts on my new Framework laptop and it worked perfectly. (Very pleased with the Framework laptop btw, in case that was still on your mind)