This version control repository contains a selection of my system
configuration files. The word dotfile is a colloquialism referring to
the leading .
character used to hide a file on most Unix-like systems.
Initially, a single repository was sufficient for managing all of my settings and configuration files, however I have since extracted certain sections to independently versioned submodules:
- Wayland (Sway) (main)
- X11 (BSPWM) (62c6aa1)
For quick deployment on new machines, the files in this repository are organised in the fashion of GNU Stow, a symlink farm manager. Less convenient ways to manage deployment would involve either a messy deployment script or a lot of manual copying and symlinking. Stow, on the other hand, can automatically make and remove symlinks for both files and directories.
I have organised this project so that each top-level subdirectory acts
as a reference to ~/
. Files positioned at a given point relative to
each of these directories will be placed in the same position relative
to ~/
when stowed. An example of stow -t ~/ shell
invocation:
./shell/ -> ~/
|--.bashrc -> ~/.bashrc
|--.zshnenv -> ~/.zshenv
`--.config/ -> ~/.config/
`--zsh/ -> ~/.config/zsh/
|--rc.sh -> ~/.config/zsh/rc.sh
`--...
Having cloned the repository and navigated into it, initialise the submodules and stow desired subdirectories to deploy the configuration.
git submodule update --init --remote --recursive
stow -t ~/ apps shell wm bin X11 submodules