Skip to content

Navigation Menu

Sign in
Sign up

Repository files navigation

Eric's Dotfiles

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.

Dependencies

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.

OpenRouter Key

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.

Copy/Paste Install

curl -fsSL https://raw.githubusercontent.com/ericwooley/zshrc_config/main/bootstrap.sh | sh

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

What You Get

  • 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/HQM review 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, and vmrm create and manage disposable VMs with ~/vms/shared mounted at ~/shared.
  • AI helpers: aiCommit for short commit messages, zshpush for publishing dotfile changes, and zshow for 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: zshupdate pulls the managed config repo and reloads the current shell; install.sh offers to run zsh_install_hourly_update_cron so config updates can be checked every 10 minutes; nvim_install_stable_update_cron can keep the Linux Neovim tarball current.
  • Timezone setup: install.sh can 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.

Managed Paths

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.

Feature Tour

Zsh

  • plugin management through Antidote
  • ~/.local/bin and ~/.zshrc_config/bin on PATH
  • 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.

Neovim

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

Tmux

  • prefix: Ctrl-b
  • Ctrl-b c creates a window
  • Ctrl-b , renames a window
  • Ctrl-b n and Ctrl-b m move 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.

Remote Machines

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.

Docs

  • 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

Repo Layout

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

Publishing Safety

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

About

My zsh config files.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Used by

Contributors

Languages

AltStyle によって変換されたページ (->オリジナル) /