d5afd25bbef5f4099e56a5c27340d8f06aec8001
Login shells source the fragment twice to restore shim precedence after the system profile. Reapplying PATH does not require repeating shell integration or rebuilding shims.
Easy Zsh Setup
One-command zsh environment: oh-my-zsh, powerlevel10k, and a curated plugin set (autosuggestions, syntax-highlighting, completions, history-substring-search, fzf-tab, k), plus eza, zoxide, fzf, and Nerd Fonts.
Install
curl -fsSL https://git.miomio.moe/mio/easyzsh/raw/branch/master/install.sh | bash
Options:
--cp-hist/-c— import bash history--non-interactive/-n— skip default-shell change and optional prompts--with <names>— install optional add-ons (comma-separated, repeatable). Each name runsinstall_<name>.sh(currently:fnm,pyenv,nvm). Interactive installs (without-nand without--with) prompt for the same list.
./install.sh --with fnm
./install.sh --with fnm,pyenv -n
curl -fsSL …/install.sh | bash -s -- --with fnm
From a git checkout (shell stubs only):
./deploy.sh
Layout
| Path | Role | Reinstall |
|---|---|---|
~/.zshenv |
Always-on: Homebrew, ~/.local/bin, ~/.config/zsh/*.zsh, then local.zsh |
Overwritten |
~/.zshrc |
Interactive: omz, plugins, aliases, fzf, zoxide | Overwritten |
~/.config/zsh/*.zsh |
Always-on tool fragments (e.g. fnm.zsh) |
Left alone (via patch.sh) |
~/.config/zsh/local.zsh |
Machine-local overrides (every zsh, including agents) | Never overwritten |
~/.config/zshrc/*.zsh |
Personal/tool overlays before oh-my-zsh (interactive) | Left alone |
~/.local/bin/ |
User tools + shims (grok → Grok CLI; agent → Cursor when installed) |
Left alone except those two shims |
Core deploy does not manage ~/.zprofile. The pyenv add-on appends one login
hook so macOS path_helper cannot outrank pyenv shims. Put other machine hooks
in local.zsh.
Do not put ~/.grok/bin on PATH. That tree ships an agent that shadows
Cursor. Grok is the grok command (~/.local/bin/grok). Cursor is agent
and cursor-agent. Deploy and .zshenv retarget a Grok-stolen
~/.local/bin/agent; .zshrc drops ~/.grok/bin again if a Grok upgrade
prepends it.
# ~/.config/zsh/local.zsh
. "$HOME/.cargo/env"
# ~/.config/zshrc/prefs.zsh
plugins+=(docker)
Tool fragments from this repo:
# always-on (sourced from ~/.zshenv)
curl -fsSL https://git.miomio.moe/mio/easyzsh/raw/branch/master/patch.sh | bash -s -- zsh/fnm zsh/pyenv
Languages
Shell
100%