Files
easyzsh/README.md
T
Frank Qing 82c6a57c3a fix(shell): keep Cursor on agent and Grok on grok
Grok's installer prepends ~/.grok/bin and steals ~/.local/bin/agent.
easyzsh already shims `grok`; claim `agent` for Cursor and drop the
vendor bin from PATH so a later Grok upgrade cannot shadow it.
2026-08-13 17:36:56 +08:00

2.3 KiB

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 runs install_<name>.sh (currently: fnm, pyenv, nvm). Interactive installs (without -n and 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