Personal dotfiles, organized by topic (inspired by holman/dotfiles).
Everything is grouped by topic — zsh/, git/, and so on. Add a new
topic just by adding a directory; the loaders below pick things up
automatically based on file naming, not a hardcoded list.
bin/— anything in here is added to your$PATHand available everywhere.topic/*.zsh— automatically sourced into your shell.topic/path.zsh— loaded first, before other.zshfiles. Use it to set up$PATH.topic/completion.zsh— loaded last. Use it for shell autocomplete setup.topic/*.symlink— symlinked into$HOME(extension dropped) when you runscript/bootstrap. E.g.zsh/zshrc.symlinkbecomes~/.zshrc.topic/install.sh— run once viascript/install(orbin/doton macOS). Not auto-loaded, so it won't run every time you open a shell.
git clone git@github.com:yourusername/dotfiles.git ~/.dotfiles
cd ~/.dotfiles
script/bootstrapThis symlinks every *.symlink file into $HOME, prompting you if a
file already exists (skip / overwrite / back up).
Before or after bootstrapping, edit the placeholder values —
particularly git/gitconfig.symlink (name/email).
cd ~/.dotfiles
git add -A
git commit -m "update zsh aliases"
git pushOn another machine:
cd ~/.dotfiles
git pullSince everything is symlinked, git pull is all you need — no
re-copying files.
Don't commit API keys or machine-specific secrets. zsh/zshrc.symlink
sources ~/.zshrc.local at the end if it exists — put anything
sensitive or machine-only there. It's outside the repo, so it never
gets pushed.
mkdir mytool
touch mytool/aliases.zsh # auto-sourced
touch mytool/path.zsh # auto-sourced first
touch mytool/config.symlink # symlinked to ~/.config on bootstrap