A fast, practical terminal setup for zsh, tmux, and Neovim. It is designed to be easy to install on a new machine, safe to publish, and boring in the places where dotfiles should be boring.
The installer installs Homebrew when needed on macOS and Linux. It installs the
common dependencies with Homebrew on macOS, with apt plus user-local Go installs
for a few CLI tools on Ubuntu/Debian, and Multipass through the official macOS
cask or Linux snap path. Multipass is asked about separately because it is only
needed for the vm* helpers. Dependency setup also sets your login shell to
zsh when needed. Core tools include:
zsh git curl tmux nvim fzf ripgrep lsof zoxide eza starship antidote glow lazygit go fastAI proc-man n node multipass
The installer also installs
ericwooley/proc-man for local process
management.
AI helpers use ericwooley/fastAI and
OpenRouter. To have aiCommit and zshow work automatically, put your key in
~/.zshrc_local before or after installing:
export OPENROUTER_API_KEY='<openrouter key>'
~/.zshrc_local is loaded automatically by this setup and stays outside git.
The older ~/.zsh_local filename is still supported as a fallback.
curl -fsSL https://raw.githubusercontent.com/ericwooley/zshrc_config/main/bootstrap.sh | shThe bootstrap installer clones this repo directly into ~/.zshrc_config, then
runs install.sh. The installer asks whether to add the optional 10-minute zsh
config update cron job. If ~/.zshrc_config already exists, it is moved to:
~/.zsh_config.bak
If that backup already exists, a dated backup name is used instead.
- zsh: Antidote-managed plugins, fast completions, flexible aliases, and one-function-per-file helpers.
- Starship: versioned prompt config symlinked into
~/.config/starship.toml. - Codex instructions: global planning, incremental checkpoint review,
a relevance-sized group of one to three final specialists, incremental
follow-ups, and explicit
AQM/LQM/MQM/HQMreview modes, symlinked from this repo into~/.codex/AGENTS.md. New conversations default to AQM, which selects no-review, final-only, or full-review behavior from the task's risk, uncertainty, blast radius, and novelty. - tmux: mouse support, clipboard-friendly copy mode, current-directory windows/panes, and simple window movement.
- Neovim: lazy.nvim, Telescope, LSP, completion, file tree, statusline, Git signs, LazyGit, formatting, linting, sessions, and which-key. Linux installs use the official stable tarball.
- Multipass VMs:
vmcreate,vmconnect,vmls, andvmrmcreate and manage disposable VMs with~/vms/sharedmounted at~/shared. - AI helpers:
aiCommitfor short commit messages,zshpushfor publishing dotfile changes, andzshowfor asking questions about this setup. - Remote setup:
zshsetup <host>clones or updates this repo on an SSH host and runs the same installer there. - Updates:
zshupdatepulls the managed config repo and reloads the current shell;install.shoffers to runzsh_install_hourly_update_cronso config updates can be checked every 10 minutes;nvim_install_stable_update_croncan keep the Linux Neovim tarball current. - Timezone setup:
install.shcan interactively set the system timezone on macOS and Linux. - Safety: no Neovim project-open hooks that run repo-local scripts just because a file was opened.
- Docs: quick references and maintenance notes live in
./docs.
The installer keeps ~/.zshrc tiny:
# zshsetup-managed source "${ZSHRC_CONFIG_DIR:-$HOME/.zshrc_config}/init.zsh"
The zsh config repo lives at:
~/.zshrc_config
These paths are linked from that repo when present:
~/.tmux.conf -> ~/.zshrc_config/.tmux.conf
~/.config/starship.toml -> ~/.zshrc_config/.config/starship.toml
~/.codex/AGENTS.md -> ~/.zshrc_config/.codex/AGENTS.md
~/.config/nvim -> ~/.zshrc_config/.config/nvim
Machine-local secrets and overrides belong in ~/.zshrc_local, which is not part
of this repo.
- plugin management through Antidote
~/.local/binand~/.zshrc_config/binonPATH- npm, pnpm, yarn, and bun completion setup
- Ctrl-Left/Ctrl-Right word movement in the shell
- directory jumping with zoxide
- Starship prompt support
mkcd,tmr,resetmouse,zshsetup,zshupdate,zshpush,zsh_install_hourly_update_cron,nvim_install_stable_update_cron, Multipass VM helpers, Docker cleanup helpers, and utility aliases
Read more in docs/ZSH.md and docs/HELPERS.md.
- leader key:
Space - fuzzy finding with Telescope
- file creation, deletion, rename, and browsing with nvim-tree
- LSP for TypeScript, Python, and Go
- formatting on save through conform.nvim
- linting through nvim-lint
- LazyGit inside Neovim with
<leader>lg - session restore through persistence.nvim
- key discovery through which-key.nvim
Read more in docs/NEOVIM.md. The quick reference is at
docs/nvim-quick-reference.md.
- prefix:
Ctrl-b Ctrl-b ccreates a windowCtrl-b ,renames a windowCtrl-b nandCtrl-b mmove left/right between windows- new windows and panes keep the current directory
- mouse and copy-mode bindings are enabled
Read more in docs/TMUX.md.
After installing locally:
zshsetup user@host
zshsetup uses ZSHSETUP_REPO_URL or the local git origin, normalizes GitHub
SSH remotes to HTTPS, and falls back to
https://github.com/ericwooley/zshrc_config.git. On the remote it clones into
~/.zshrc_config, pulls on later runs, and runs install.sh.
Read more in docs/REMOTE_SYNC.md.
- Install: bootstrap flow, local install, backups, dependencies, and uninstall
- Zsh: load order, plugins, completions, aliases, functions, and local overrides
- Neovim: plugins, safety model, keymaps, formatting, linting, and sessions
- Tmux: prefix, windows, panes, mouse, copy mode, and clipboard behavior
- Remote Sync:
zshsetup <host>and remote clone installs - Helper Commands: executable helpers in
.zshrc_config/bin - Maintenance: docs policy, validation, gitleaks, and release checks
bootstrap.sh one-line installer target
install.sh local installer
init.zsh zsh config entrypoint
aliases.zsh shared aliases
keybindings.zsh shell keybindings
bin/ executable helper commands
docs/ full documentation and quick references
functions/ sourced zsh functions
scripts/ executable support scripts
plugins*.txt Antidote plugin lists
.config/nvim/ Neovim config
.config/starship.toml Starship prompt config
.codex/AGENTS.md global Codex instructions
.codex/prompts/ reusable adversarial-review and UI design prompts
.codex/prompts/reviewers/ role-specific specialist review prompts
.tmux.conf tmux config
.githooks/pre-commit gitleaks pre-commit hook
This repo is intended to be public. Keep secrets in ~/.zshrc_local, not in git.
Before publishing or after sensitive edits, run:
gitleaks git . --redact --no-color --no-banner gitleaks dir . --redact --no-color --no-banner
Enable the versioned pre-commit hook in a clone with:
git config core.hooksPath .githooks