Skip to content

Repository files navigation

ZDOTFILES

Compact Zsh setup that wires in Antidote for plugins and Starship as the prompt. Everything is driven by a single zshrc.sh so you can drop it into any machine quickly.

ZDOTFILES avatar

Install

  1. Clone the repo (defaults to ~/.zdotfiles):

    git clone git@github.com:jcyamacho/zdotfiles.git "$HOME/.zdotfiles"
  2. Source the main file from your ~/.zshrc:

    source "${ZDOTFILES_DIR:-$HOME/.zdotfiles}/zshrc.sh"

Customizing

  • Keep the repo elsewhere by setting ZDOTFILES_DIR before sourcing.
  • Change the editor used by helper commands by exporting EDITOR.
  • Adjust where self-managed tools install by overriding CUSTOM_TOOLS_DIR.
  • Set GIT_WORKTREE_BASE to change where gwt-new creates worktrees (see git-worktree).

Starship

Starship is the required prompt and installs automatically on first load. Set STARSHIP_CONFIG before sourcing zshrc.sh to override the default ~/.config/starship.toml.

  • update-starship updates Starship and reloads the shell.
  • starship-config edits the active configuration and reloads the shell.
  • starship-preset-custom applies the custom starship.toml.
  • starship-preset-nerd-fonts, starship-preset-no-nerd-font, and starship-preset-plain-text apply built-in Starship presets.

Disable alias suggestions (ZSH_DISABLE_YOU_SHOULD_USE)

By default, zsh-you-should-use reminds you when you type a command that has an alias. To disable these suggestions:

# In ~/.zshrc, before the source line:
export ZSH_DISABLE_YOU_SHOULD_USE=1
source "${ZDOTFILES_DIR:-$HOME/.zdotfiles}/zshrc.sh"

Plugins

Antidote reads .zsh_plugins.txt and builds a static .zsh_plugins.zsh. The default setup enables:

  • Always-on shell UX: prompt theme (see above), zsh-autosuggestions, syntax highlighting (F-Sy-H), and “you-should-use”.
  • Local plugin helpers: small plugins/* scripts that add install-*, update-*, uninstall-*, and *-config helpers.

Many integrations are conditional (they only activate when the underlying binary exists) to keep startup fast and avoid errors.

Installable Tools

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.

Recommended (not installed by default)

Run install-recommended to install every missing tool in this group.

  • install-fzffzf fuzzy finder (enables fzf-tab if present)
  • install-zoxide (or install-z) – zoxide smarter cd
  • install-atuinAtuin synced, searchable history
  • install-carapaceCarapace completions
  • install-jqjq
  • install-yaziyazi terminal file manager (Ctrl+o, and y to cd on exit)

Optional

  • install-aspire - Aspire CLI for distributed apps
  • install-batbat cat clone
  • install-btop - btop resource monitor
  • install-bunBun runtime
  • install-claude-codeClaude Code CLI
  • install-codeVS Code
  • install-codexOpenAI Codex CLI
  • install-cmuxcmux native macOS terminal for AI agents
  • install-cursorCursor
  • install-denoDeno runtime
  • install-direnvdirenv + hook
  • install-dockerDocker CLI
  • install-dotnet - .NET SDK developer platform (dotnet)
  • install-dotenvxdotenvx a secure dotenv
  • install-varlockvarlock AI-safe .env files
  • install-fabricFabric
  • install-flutterFlutter SDK
  • install-fnm (or install-node) – fnm + LTS activation
  • install-geminiGemini CLI
  • install-ghosttyGhostty terminal + config restore
  • install-weztermWezTerm terminal + config restore
  • install-ghGitHub CLI
  • install-goGo + golangci-lint
  • install-herdr - Herdr agent multiplexer that lives in your terminal
  • install-justjust command runner
  • install-lsdlsd + config/theme
  • install-memo - memo durable memory CLI; includes Claude and Codex memo context hook helpers
  • install-misemise
  • install-nub - Nub all-in-one toolkit for Node.js
  • install-ollamaOllama
  • install-openspecOpenSpec workflow CLI (openspec)
  • install-opencodeOpenCode
  • install-orbstack - OrbStack Docker Desktop alternative
  • install-pi - Pi minimal terminal coding harness
  • install-televisionTelevision fuzzy finder; binds Ctrl+T to channel-aware completion (Ctrl+R goes to Atuin when present). Also installs fd and bat, which its channels shell out to
  • install-rbenv (or install-ruby) – rbenv
  • install-rustrustup
  • install-uv (or install-python) – uv + Python tooling (python)
  • install-viteplusVite+ unified web toolchain
  • install-worktrunkWorktrunk git worktree management
  • install-zedZed
  • install-zsh-benchzsh-bench benchmark for interactive zsh
  • install-zellijZellij terminal workspace (zellij)
  • install-zigZig
  • install-antigravityAntigravity
  • install-agent-browseragent-browser browser automation CLI
  • install-fontsHomebrew font casks

Utility Plugins

Additional helper functions (no external tool required):

  • gitg, gaa, gf, gcb, gcmsg, gc!, ggl, ggp shorthands plus git-pull-all and git-hook
  • git-worktreegwt-* helpers for managing Git worktrees

Utility Functions

Shell helpers from _utils.zsh:

  • mkcd <dir> – create a directory and cd into it
  • edit <file> – open a file in $EDITOR (defaults to vim)
  • home – cd to $HOME
  • zsh-config – edit ~/.zshrc and reload
  • kill-port <port> – kill the process listening on a given port
  • zdotfiles-cache-clean – remove all zdotfiles caches and reload
  • cls – alias for clear
  • rmf – alias for rm -rf
  • cd.. – alias for cd ..

Gist Sync

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.

Updating

  • 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.

The updates Array

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
}

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.

Performance

  • Benchmark before/after changes with zsh-startup-bench.
  • Use zsh-startup-profile for a quick zprof-enabled timing run.
  • Quick sanity check without launching an interactive shell: zsh -lic exit.

About

No description, website, or topics provided.

Resources

Stars

4 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages