Operations
Operations
Core workflows for keeping your dotfiles running across platforms.
Platforms
macOS
Primary manager: Homebrew
-
Update:
This runs
brew bundle installbehind the scenes to reconcile against the declared Brewfiles. -
Permission issues:
sudo chown -R $(whoami) $(brew --prefix)/* -
Drift: Run
brew bundle cleanupto remove unmanaged packages.
Linux (Debian, Ubuntu, Kali)
Primary manager: apt-get / snap
-
Update:
&&On Linux,
chezmoifocuses on configuration. Package updates work best through the OS package manager to avoidsudoconflicts. -
Font issues: If icons are missing, run
./install/provision/run_onchange_50-install-fonts.sh.tmplmanually viachezmoi applyor source directly withbash.
Windows (WSL2)
Primary manager: apt-get (inside WSL)
- Update: Same as Linux.
- Clipboard: Dotfiles configures
win32yank.exeautomatically for clipboard sharing. - Performance: Keep project files inside the Linux filesystem (
~/projects), not in/mnt/c/, for dramatically better IO.
Workflows
Apply changes
After editing any config file:
Triggers dot_zshrc reload and audit logging.
Upgrade-safe apply (recommended)
DOTFILES_NONINTERACTIVE=1
dot apply includes post-apply checks that:
- Remove stale read-only zsh cache files (
~/.config/shell/*.zwc,~/.config/zsh/**/*.zwc) - Validate that
dotresolves to~/.local/bin/dotin a fresh login shell
Finish by reloading your session (exec zsh) or restarting the terminal.
Async updates
Run updates in the background; you'll get a status banner on the next shell launch:
Roll back
If an update breaks your setup:
Offline / air-gapped mode
# 1. On a connected machine, bundle your setup:
# 2. Transfer the archive to the offline machine, then:
Pre-warm caches
Regenerate all tool caches to eliminate shell startup latency:
Debug
If something's slow or broken:
-
Check health:
-
Smoke test:
-
Scorecard:
-
Chaos testing (self-healing):
-
Startup profiling:
-
Post-merge verification:
-
Inspect alias behavior:
DOTFILES_ALIAS_POLICY=strict -
Verbose mode:
DOTFILES_DEBUG=1
Safety flags
Destructive aliases are disabled by default. Enable only when needed:
Tiered alias loading
Core aliases load eagerly. Ecosystem aliases are lazy-loaded and can be filtered:
Valid ecosystem tags: python, node, rust, network, legacy.