This morning was spent cleaning up my dotfiles. I’ve often had issues with the ~/.config directory when using plugin managers with both vim-plug for NeoVim and fisher for fish shell. These plugins self update, and using them on multiple systems often requires checking in changes from upgrading to the latest versions when they do.

Adding the files to .gitignore might be a solution, but that would still require me to do the installation on every system I want to use them on. The solution I came up with was to move the nvim and fish directories outside of the config directory and create a Makefile (or in the case of fish recursive Makefiles) to manage the linking.

Using this system, I should be able to remove config from my dotfiles repository and have the Makefiles create the required links. The ultimate goal is each “service” will have their own Makefile, with a dotfiles Makefile that will execute each by name. Then a simple playbook for my Ansible Workspace workflow to execute them based on host variables.