zsh
GNU Stow package for my zsh setup. Stowed from the repo root with the
.stowrc defaults (--dotfiles --target=$HOME), i.e.:
stow zsh # stow (idempotent, safe to re-run)
stow -R zsh # re-stow after adding/removing files in this package
stow -D zsh # unstow
Layout
| In this repo | Becomes (symlink) |
|---|---|
dot-zshrc |
~/.zshrc |
.zsh/alias.zsh |
~/.zsh/alias.zsh |
Other dirs under ~/.zsh/ (e.g. local/, completions/) are not
managed by stow — they are plain host-side directories and never touch
this repo.
Host-local config: ~/.zsh/local
~/.zshrc sources every *.zsh file in ~/.zsh/local/ at the end
of the file, in alphabetical order — so anything there can override
aliases, PATH, env vars, etc. set earlier.
This is the place for host-specific, non-shared config: business/work inits, private env vars, machine-specific paths, per-host aliases and functions.
The directory is not in the repo — it exists only on each host, so after cloning + stowing on a new machine, create it once:
mkdir -p ~/.zsh/local
(The sourcing loop in .zshrc tolerates the directory being missing.)
Notes
- Editing existing files (
.zshrc,alias.zsh) needs no restow — they're symlinks. Only new/deleted files in this package requirestow -R zsh. - zinit, Powerlevel10k and the plugins auto-clone on first shell start; first launch may take a minute.