# 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 ```bash 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 ` — install optional add-ons (comma-separated, repeatable). Each name runs `install_.sh` (currently: `fnm`, `pyenv`, `nvm`). Interactive installs (without `-n` and without `--with`) prompt for the same list. ```bash ./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): ```bash ./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. ```bash # ~/.config/zsh/local.zsh . "$HOME/.cargo/env" # ~/.config/zshrc/prefs.zsh plugins+=(docker) ``` Tool fragments from this repo: ```bash # always-on (sourced from ~/.zshenv) curl -fsSL https://git.miomio.moe/mio/easyzsh/raw/branch/master/patch.sh | bash -s -- zsh/fnm zsh/pyenv ```