Small personal shell setup, currently centered around zsh.
zsh/.zshrcMain entrypoint for the zsh config.zsh/utils.zshrcSmall helper functions and shell startup behavior.zsh/.zshenvEnvironment exports and shell-wide variables.zsh/tooling.zshrcToolchain setup shell integrations.zsh/aliases.zshrcAliases and small conveniences.BrewfileHomebrew-managed dependencies used by the shell setup.scripts/ensure-deps.shInstalls and updates the tracked dependencies.secrets.envLocal-only secrets loaded by the shell startup flow.
The shell startup is staged so the prompt appears instantly while the rest of the environment gets wired up behind the scenes.
In zsh/.zshrc:
- Cue the (starship) prompt.
- Environment exports are loaded from
zsh/.zshenv. - Helpers are loaded.
- Secrets, tooling setup and aliases are staged in the background in interactive shells with
ease.
ease lives in zsh/utils.zshrc.
- In interactive shells, it uses
zsh-deferso non-essential setup loads behind the scenes after the prompt is visible. - In non-interactive shells, it falls back to synchronous
sourceso agents can use the terminal.
This keeps startup feeling fast without causing issues with agents, scripts or other non-interactive shell usage.
- The repo assumes
~/.zshrcsources~/.dotfiles/zsh/.zshrc. add_aliasappends new aliases tozsh/aliases.zshrc.
Selected non-standard command-line dependencies are tracked in Brewfile.
To install or update them:
./scripts/ensure-deps.shThat script:
- installs anything listed in
Brewfilethrough Homebrew - updates or clones
zsh-deferinto~/zsh-defer - leaves the shell config usable even before
ezais installed by falling back tols -lahG
Right now that tracked set covers shell-facing tools such as starship, eza, micro, nvm, and Java.
Link the shell entrypoint with:
./scripts/link.shThat script only manages one thing:
- creates
~/.zshrcas a symlink to~/.dotfiles/zsh/.zshrc - does nothing if that symlink is already correct
- stops instead of overwriting an existing
~/.zshrc