Skip to content

Get mac nest working: clean zsh, add bun/rust/claude-code/codex#8

Merged
tylerthecoder merged 2 commits into
mainfrom
claude/trusting-hellman-d749dd
May 4, 2026
Merged

Get mac nest working: clean zsh, add bun/rust/claude-code/codex#8
tylerthecoder merged 2 commits into
mainfrom
claude/trusting-hellman-d749dd

Conversation

@tylerthecoder
Copy link
Copy Markdown
Owner

@tylerthecoder tylerthecoder commented May 4, 2026

Summary

The mac nest was broken — fresh zsh -i printed errors (missing ~/.shenv, missing oh-my-zsh, hardcoded /Users/tylertracy/... paths, kubectl completion failing on a machine without kubectl). The owl binary was being linked from target/debug instead of using the owl setup, which also meant omni-menu was never linked. This PR cleans all of that up and adds the requested tooling.

Mac nest

  • nests/mac/setup.json: depend on owl instead of manually linking target/debug/owl (gets release build + omni-menu); add bun, rust, claude-code, codex; add common:claude.sh rc.
  • nests/mac/.shenv: trim to mac-specific bits — OWL_PATH=$HOME/owl, EDITOR=nvim, conditional Homebrew shellenv. XDG vars / ~/.local/bin PATH / rc-loop are now handled by owl-start.sh. Fixed hardcoded /Users/tylertracy/... paths.

zsh-ohmy

  • .zshrc: source ~/owl/owl-start.sh instead of bare ~/.shenv; conditional kubectl completion; drop hardcoded user paths and Rancher Desktop block; remove git-trim from plugins (it's a CLI tool, not an oh-my-zsh plugin).
  • New install.sh: installs oh-my-zsh + zsh-autosuggestions + zsh-syntax-highlighting. Uses KEEP_ZSHRC=yes so the upstream installer doesn't clobber the owl-managed ~/.zshrc symlink (it does by default).

Cross-platform install fixes

  • setups/nvim/install.sh: was Linux-only and would overwrite ~/.local/bin/nvim with a Linux AppImage on macOS. Now branches on uname -s, prefers Homebrew on Darwin, falls back to the official macOS tarball, and skips when nvim is already installed.
  • setups/rust/install.sh: add Darwin branch using the official rustup curl installer.
  • setups/owl/install.sh: skip when owl is already at ~/.local/bin or /usr/local/bin; install to ~/.local/bin (no sudo) on first install instead of /usr/local/bin. The previous check only looked at command -v owl, which fails inside the install script's bash subshell because ~/.local/bin isn't on PATH there.
  • setups/claude-code/install.sh + new setups/codex/install.sh: source ../bun/bun-rc.sh so bun is on PATH inside the install script. run_script spawns a fresh bash without rc files loaded, so bun install -g would fail with command not found even though bun was installed by a prior step in the same nest install run.

New codex setup

  • setups/codex/: depends on bun, runs bun install -g @openai/codex.

Test plan

  • zsh -i -c 'exit' returns 0 with no stderr noise (was printing 3 errors before).
  • In a fresh zsh: owl, claude, codex, bun, cargo, nvim all resolve via command -v.
  • owl setups-validate — mac validates clean.
  • owl nest install runs claude-code and codex installs successfully (previously failed with bun: command not found).
  • omni-menu build (deferred — needs brew install pkgconf gtk4 then cargo build --release).
  • Other nests not touched, but setups-validate shows the same pre-existing failures (missing secrets setup) on framework-arch / dell-xps-desktop / framework-sway as before — not introduced by this PR.

🤖 Generated with Claude Code


Note

Medium Risk
Moderate risk due to changes in shell initialization and installer scripts (zsh/oh-my-zsh, PATH handling) that can affect developer environments; changes are localized to setup/CI automation and are largely guarded/conditional.

Overview
Fixes the mac nest bootstrap by simplifying nests/mac/.shenv, removing hardcoded user paths, and updating nests/mac/setup.json to depend on the released owl setup while adding new dependencies (bun, rust, claude-code, codex) and an extra rc script.

Hardens and expands install automation: setups/nvim/install.sh is now OS-aware (Linux AppImage vs macOS brew/tarball) and skips if already installed; setups/rust/install.sh adds macOS rustup support; setups/owl/install.sh installs to ~/.local/bin without sudo and improves “already installed” detection; setups/claude-code/install.sh ensures bun is on PATH and a new setups/codex setup installs Codex CLI via bun.

Cleans zsh integration by sourcing owl-start.sh, making kubectl/bun completions conditional, and adding an oh-my-zsh installer plus plugin installation via a new setups/zsh-ohmy/install.sh. CI release upload now only runs on push (not PRs).

Reviewed by Cursor Bugbot for commit 79a8506. Bugbot is set up for automated code reviews on this repo. Configure here.

tylerthecoder and others added 2 commits May 3, 2026 20:33
- nests/mac: use owl setup as a dependency (was manually linking debug build,
  which skipped omni-menu and clashed with the release symlink); add bun, rust,
  claude-code, codex; trim .shenv down to mac-specific bits since owl-start.sh
  now handles XDG/PATH/rc-loading; fix hardcoded /Users/tylertracy paths.
- zsh-ohmy: source ~/owl/owl-start.sh instead of bare ~/.shenv; make kubectl
  completion conditional; drop hardcoded paths; add install.sh that installs
  oh-my-zsh + the autosuggestions/syntax-highlighting plugins (KEEP_ZSHRC=yes
  so the installer doesn't clobber the owl-managed symlink); drop git-trim
  from plugins (it's a CLI tool, not an oh-my-zsh plugin).
- nvim install: add macOS support (Homebrew or direct tarball) and skip when
  nvim is already installed; the script was Linux-only and would overwrite
  ~/.local/bin/nvim with a Linux AppImage on macOS.
- rust install: add macOS branch using the official rustup curl installer.
- owl install: skip when owl is already at ~/.local/bin or /usr/local/bin and
  install to ~/.local/bin (no sudo) on first install.
- claude-code/codex install: source ../bun/bun-rc.sh so bun is on PATH inside
  the install script (run_script spawns a fresh bash without rc files loaded).
- New codex setup: installs @openai/codex globally via bun.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
On PRs, github.ref is refs/pull/N/merge — not a valid release tag, so the
upload step has been failing on every PR since this workflow was added.
Gate it to push events only; PRs still run the Build step, which is what
verifies the code compiles.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Copy link
Copy Markdown

@cursor cursor Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Cursor Bugbot has reviewed your changes and found 1 potential issue.

Fix All in Cursor

❌ Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, enable autofix in the Cursor dashboard.

Reviewed by Cursor Bugbot for commit 79a8506. Configure here.

Comment thread setups/zsh-ohmy/.zshrc

### MANAGED BY RANCHER DESKTOP START (DO NOT EDIT)
export PATH="/Users/tylertracy/.rd/bin:$PATH"
[ -s "$HOME/.bun/_bun" ] && source "$HOME/.bun/_bun"
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Bun completions path doesn't match install location

Low Severity

The bun completions path $HOME/.bun/_bun doesn't match the actual bun install location. bun-rc.sh sets BUN_INSTALL to ${HOME}/.local/share/bun, meaning the completions file lives at $HOME/.local/share/bun/_bun, not $HOME/.bun/_bun. The [ -s ... ] guard silently prevents errors, but bun shell completions will never load.

Fix in Cursor Fix in Web

Reviewed by Cursor Bugbot for commit 79a8506. Configure here.

@tylerthecoder tylerthecoder merged commit 1706aa7 into main May 4, 2026
3 checks passed
@tylerthecoder tylerthecoder deleted the claude/trusting-hellman-d749dd branch May 4, 2026 03:53
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant