Compact Zsh setup that wires in Antidote for plugins and Starship for the prompt. Everything is driven by a single zshrc.sh so you can drop it into any machine quickly.
-
Clone the repo (defaults to
~/.zdotfiles):git clone git@github.com:jcyamacho/zdotfiles.git "$HOME/.zdotfiles" -
Source the main file from your
~/.zshrc:source "${ZDOTFILES_DIR:-$HOME/.zdotfiles}/zshrc.sh"
- Keep the repo elsewhere by setting
ZDOTFILES_DIRbefore sourcing. - Change the editor used by helper commands by exporting
EDITOR. - Adjust where tools like Starship install by overriding
CUSTOM_TOOLS_DIR. - Set
GIT_WORKTREE_BASEto change wheregwt-newcreates worktrees (see git-worktree).
Antidote reads .zsh_plugins.txt and builds a static .zsh_plugins.zsh. The default setup enables:
- Always-on shell UX: Starship prompt,
zsh-autosuggestions, syntax highlighting (F-Sy-H), and “you-should-use”. - Oh My Zsh helpers + curated plugins: pulls in OMZ core helpers plus plugins like
gitandbrew. - Local plugin helpers: small
plugins/*scripts that addinstall-*,update-*,uninstall-*, and*-confighelpers.
Many integrations are conditional (they only activate when the underlying binary exists) to keep startup fast and avoid errors.
These are the install-* helpers (run the command to install; integrations load on reload/next shell start). Tools are grouped by how useful they are for the default shell experience.
install-fzf– fzf fuzzy finder (enablesfzf-tabif present)install-zoxide(orinstall-z) – zoxide smartercdinstall-atuin– Atuin synced, searchable historyinstall-carapace– Carapace completionsinstall-direnv– direnv + hook
install-bat– batcatcloneinstall-bun– Bun runtimeinstall-claude-code– Claude Code CLIinstall-code– VS Codeinstall-codex– OpenAI Codex CLIinstall-cursor– Cursorinstall-deno– Deno runtimeinstall-docker– Docker CLIinstall-fabric– Fabricinstall-flutter– Flutter SDKinstall-fnm(orinstall-node) – fnm + LTS activationinstall-gemini– Gemini CLIinstall-ghostty– Ghostty terminal + config restoreinstall-wezterm– WezTerm terminal + config restoreinstall-gh– GitHub CLIinstall-go– Go + golangci-lintinstall-jq– jqinstall-lsd– lsd + config/themeinstall-mise– miseinstall-ollama– Ollamainstall-opencode– OpenCodeinstall-rbenv(orinstall-ruby) – rbenvinstall-rust– rustupinstall-uv(orinstall-python) – uv + Python tooling (python)install-zed– Zedinstall-zellij– Zellij terminal workspaceinstall-zig– Ziginstall-antigravity– Antigravityinstall-fonts– Homebrew font casks
Additional helper functions (no external tool required):
- git-utils –
git-pull,git-pull-allwith hook support - git-worktree –
gwt-*helpers for managing Git worktrees
Shell helpers from _utils.zsh:
mkcd <dir>– create a directory and cd into itedit <file>– open a file in$EDITOR(defaults to vim)home– cd to$HOMEzsh-config– edit~/.zshrcand reloadkill-port <port>– kill the process listening on a given portcls– alias forclearrmf– alias forrm -rfcd..– alias forcd ..
Sync files and directories to/from private GitHub Gists. See github-cli for details on save-file-to-gist, load-file-from-gist, and related functions.
reload– reload the configuration.update-zdotfiles– pull the latest repo changes and reload.update-antidote– update Antidote and reload.update-all– run all registered updaters and reload.clear-all-cached-init– remove all cached tool init files (regenerate on next reload).
update-all iterates over the updates array and calls each registered function. Plugins register their updaters like this:
_update_mytool() {
info "Updating mytool..."
# update logic here
clear-cached-init mytool # if using cached init
}
updates+=(_update_mytool)Use an internal _update_* function (no reload) so update-all can batch updates and reload once at the end. Tools installed via Homebrew don't need individual updaters since update-brew runs brew upgrade --greedy.
- Benchmark before/after changes with
zsh-startup-bench. - Use
zsh-startup-profilefor a quick zprof-enabled timing run. - Quick sanity check without launching an interactive shell:
zsh -lic exit.