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.
68 lines
2.3 KiB
Markdown
68 lines
2.3 KiB
Markdown
# 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 <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.
|
|
|
|
```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
|
|
```
|