Switch out dotfiles between multiple Linux distributions sharing a ~ directory.
To save space when dual-booting multiple Linux distros (or Linux and MacOS), you might want to let your systems share a home partition. But sharing directories like .config or .local will result in overwriting/loss of configuration files.
This repo lets you put system-specific dotfiles in their own hidden directory and then expose them to the correct distro at boot. Unlike conventional dotfile managers, dotfile_switcher doesn't automatically create backups or a Git repository of your files. This makes it very lightweight compared to solutions like yadm.
dotfile_switcher requires zsh, and setup requires root privileges to enable the startup/shutdown systemd services.
Clone the repository:
git clone https://github.com/pcarrin2/dotfile_switcher
Then run install.sh:
cd dotfile_switcher
./install.sh
Now you'll need to move system-specific dotfiles into ~/.dotfile_switcher/$(hostname)/ and then symlink them back to ~. You can do this manually, or you can write a newline-delimited list of files in ~ to ~/.dotfile_switcher/$(hostname)/dot_list.conf. Then run ~/.dotfile_switcher/move_into_managed_dir.sh.
Finally, for each other system that shares ~, clone this repo, run ./install.sh, and add relevant dotfiles.
To add a new dotfile, run:
mv ~/.my_dotfile ~/.dotfile_switcher/$(hostname)/ && ln -s ~/.dotfile_switcher/$(hostname)/.my_dotfile ~
It is not necessary to add this file to dot_list.conf.
To create a backup of a system's dotfiles, a quick-and-dirty solution is
cd ~/.dotfile_switcher/$(hostname)/
tar -czvf backup.tar.gz ./.*
And to restore from this backup, simply unpack it into ~/.dotfile_switcher/$(hostname)/ with tar -xzf backup.tar.gz.