12 Commits
Author SHA1 Message Date
jeremy 7acdb761d6 zsh: detect eza --hyperlink capability, fix 'cannot take a value' on Debian's older eza
Newer eza (clap) treats --hyperlink as taking an optional value, so the
oh-my-zsh plugin's bare --hyperlink eats the next path arg (la / ->
invalid value '/'). The previous fix glued --hyperlink=always to avoid
that. But Debian ships an older eza where --hyperlink is a pure boolean
that rejects a value, so --hyperlink=always errors with 'Flag
--hyperlink cannot take a value'.

Detect the installed eza's behavior via 'eza --help | grep <WHEN>':
- newer eza: use --hyperlink=always (glued, avoids path-eating)
- older eza: use bare --hyperlink (boolean, doesn't eat tokens so the
  original bug doesn't apply)
Apply the chosen form to every eza alias. Both paths keep hyperlinks on
and paths working.
2026-07-29 12:15:06 -04:00
jeremy 18af4de0c0 zsh: add github binary fallbacks for bat/zoxide/delta (fixes RHEL/Alma without EPEL/cargo)
On RHEL-family distros without EPEL enabled and without cargo, the PM
loop fails for bat/zoxide/git-delta and there was no fallback, so they
ended up skipped/FAIL. Now, after the PM/cargo attempts fail, download
the latest static release tarball from GitHub instead, matching the
existing pattern for eza/fastfetch/starship/lazydocker.

- Add _gh_latest_tag(): resolve latest release tag from the
  /releases/latest redirect (no GitHub API, no rate limits)
- Add _gh_install_bin(): build the asset URL from a versioned template,
  download, extract, and cp the named binary into ~/.local/bin
- Handle per-repo tag conventions: bat/zoxide tags are 'v0.x' while
  delta tags are bare '0.x'; keep the raw tag for the download path and
  strip the optional 'v' only for asset-filename substitution
- Add target_musl/target_gnu per-arch (x86_64/aarch64/armv7l)
- bat/zoxide use static musl builds (no glibc deps); delta ships gnu-only
- Verbose 'gh installing <bin> (<tag> from <repo>)' / FAIL lines
- Bump ZSHRC_BOOTSTRAP_VERSION 3 -> 4 so existing boxes re-run the
  bootstrap and pick up the new fallbacks

Verified end-to-end: bat 0.26.1, zoxide 0.10.0, delta 0.19.2 all
download, extract, install, and run from a temp HOME.
2026-07-29 12:11:31 -04:00
jeremy 9343715696 zsh: print a user-facing banner when the bootstrap fires
The bootstrap silently installs tools for ~30s+ on a version bump or
first login, which looked like an unexplained hang. Now prints a
banner explaining what is happening, that it may take a minute, and
that subsequent runs are a no-op. The box is built dynamically so the
right edge stays aligned regardless of the version string length.
Also clarifies the trigger comment in zshrc.
2026-07-29 11:35:43 -04:00
jeremy 10caebad29 zsh: add zoxide/bat/delta, starship prompt config, extra history options; rewrite README
Bootstrap (zshrc-bootstrap.zsh):
- Add bat and zoxide to the cross-distro install loop
- Add git-delta install block (package is 'git-delta' on every PM but
  binary is 'delta', mirroring the starship/lazydocker pattern)
- Debian/Ubuntu compat: symlink batcat->bat and fdfind->fd into
  ~/.local/bin so zshrc integrations work under both names
- Bump ZSHRC_BOOTSTRAP_VERSION 2 -> 3 so existing machines re-run the
  bootstrap and auto-install the new tools

zshrc:
- Add setopts HIST_VERIFY, EXTENDED_HISTORY, AUTO_PUSHD,
  PUSHD_IGNORE_DUPS, PUSHD_SILENT
- Self-configuring tool integrations (all behind command -v guards):
  - zoxide: eval $(zoxide init zsh) for frecent 'z'/'zi' dir jumping
  - bat: alias cat->bat, BAT_THEME, colored MANPAGER via bat
  - delta: GIT_PAGER=delta for prettier git diff/log/show
- Extend the interactive auto-update block to also sync starship.toml
  to ~/.config/starship.toml (overwrite-if-changed, validated the
  same way as zshrc); keep the reproducible/self-configuring design
- Inverted hyperlink fix already landed in prior commit; no change
  here

starship.toml (new):
- Two-line prompt: directory + git status + cmd duration on line 1,
  arrow (red on error) on line 2; Nerd Font symbols, SSH host/user,
  Python/Node/Rust/Go/Java/Docker context blocks
- Validated clean with starship 1.21.1 (uses [nodejs], not [node])

README.md:
- Full rewrite: documents the design philosophy, all files, deps,
  integrations, history options, aliases, keybindings, the eza
  hyperlink workaround rationale, auto-update behavior, per-machine
  overrides, env vars, and helper functions
2026-07-29 11:30:49 -04:00
jeremy c4a804e760 zsh: fix eza --hyperlink eating path argument (e.g. 'la /')
The oh-my-zsh eza plugin adds a bare --hyperlink flag as the last tail
option. eza's --hyperlink takes an optional value, so clap swallows the
next token (the path) -> 'la /' fails with 'invalid value /'.

- Drop the 'hyperlink' zstyle so the plugin stops adding the bare flag
- After oh-my-zsh loads, append the glued --hyperlink=always form to
  each eza alias; the glued form cannot eat the next token, so paths
  work and hyperlinks stay on
2026-07-29 11:09:12 -04:00
jeremy e01bb35043 zsh: add --fail to curl calls, fix tmux config re-download every startup
- Add -f/--fail to all curl calls so HTTP error pages (502/404) are not
  written to temp files and mistaken for valid config/scripts
- Fix tmux check at line 49: was testing the directory path with -f
  (always true when dir exists) causing tmux.conf to re-download on
  every shell start; now checks for the actual conf files in both
  tmux and byobu config dirs
2026-07-29 10:52:52 -04:00
jeremy 52bca5ce38 zsh: add --max-time to curl calls to prevent hanging on slow connections 2026-07-29 10:35:18 -04:00
jeremy aeb58d45b6 added opencode install function 2026-07-13 00:21:47 -04:00
jeremy e0598477da validate downloaded zshrc with zsh -n before replacing
Adds syntax validation via zsh -n to both update_zshrc() and the
auto-update on shell start. Prevents error pages or corrupted content
from overwriting ~/.zshrc and breaking the shell.
2026-07-13 00:18:38 -04:00
jeremy 9d4c2d392c add opencode path if installed via script 2026-07-12 19:21:17 -04:00
jeremy 6acbe02fad change script update location 2026-07-12 02:40:19 -04:00
jeremy 449f5f2565 Added chaotic AUR install script and terminal customization script 2026-07-12 02:37:04 -04:00