Skip to content

feat(installer): enrich brew deps for fish on Arch - #179

Open
AdrianLinares wants to merge 2 commits into
Gentleman-Programming:mainfrom
AdrianLinares:feat/fish-brew-full-deps
Open

feat(installer): enrich brew deps for fish on Arch#179
AdrianLinares wants to merge 2 commits into
Gentleman-Programming:mainfrom
AdrianLinares:feat/fish-brew-full-deps

Conversation

@AdrianLinares

Copy link
Copy Markdown

Depends on #178 (stacked). Once #178 merges, GitHub will auto-resolve this PR to show only the Fish-block Brew enrichment + Arch-empty change. Until then the diff appears to include the carapace removal from Fish/Zsh/Nushell Arch — that is intentional (this branch is built on top of #178) and will disappear automatically.

Problem

Two coupled issues for the Fish shell installation path:

  1. The README documents brew install fish fisher starship zoxide atuin fzf carapace nvm rustup-init coreutils as the full set of fish dependencies on macOS/Linux (README.md §2.3). The installer's Brew field only listed fish carapace zoxide atuin starship, so fisher, fzf, coreutils, nvm, and rustup-init were silently skipped — users had to install them manually post-install to get the documented fish experience.
  2. On Arch, the fish-shell path is meant to go through Homebrew (README.md §2.3 — .tmux.conf hard-codes /home/linuxbrew/.linuxbrew/bin/fish as the default shell), but the installer still tried pacman -S fish …, producing a partial install that doesn't match what the README describes.

Root cause

installer/internal/tui/installer.go (Fish block):

Termux: "fish starship zoxide",
Brew:   "fish carapace zoxide atuin starship",   // ← README lists more
Arch:   "fish zoxide atuin starship",             // ← should let brew fall through
Fedora: "fish carapace zoxide atuin starship",

The Brew field is missing five packages from the README's documented list (fisher, fzf, coreutils, nvm, rustup-init). The Arch field non-empty value makes runNativeWithBrewFallback run pacman first and treat the native install as success, never reaching brew.

Fix

Two field changes, Fish shell block only:

Field Before After
Brew fish carapace zoxide atuin starship fish fisher starship zoxide atuin fzf carapace nvm rustup-init coreutils (matches README)
Arch fish zoxide atuin starship "" (empty → brew fallback)

Zsh and Nushell blocks are untouched. Their Brew fields (which already include carapace) and their Arch fields (which already exclude carapace after #178) remain unchanged.

Verification

$ cd installer && go build ./...      # ok
$ cd installer && go vet ./internal/tui/   # ok
$ cd installer && go test ./...
ok      github.com/Gentleman-Programming/Gentleman.Dots/installer/internal/tui/trainer
FAIL    github.com/Gentleman-Programming/Gentleman.Dots/installer/internal/tui

The single failing test (internal/tui) is an environmental golden-file mismatch — the golden expects Detected: macOS but this machine runs Arch Linux. It fails identically on pristine main and on the base of #178 (without either patch). Unrelated to this PR.

Stacking note

The Gentlemen.Dots installer declares `carapace` as a pacman package for
Arch Linux in the Fish/Zsh/Nushell shell-install steps, but `carapace`
is not available in the official Arch repositories. It only exists in
the AUR as `carapace` (source build) or `carapace-bin` (prebuilt), and
`carapace-bin` Provides: carapace.

As a result `pacman -S --needed --noconfirm fish carapace zoxide atuin
starship` fails with `target not found: carapace`, aborting the whole
shell install step before starship.toml or the fish config are copied.

Removing `carapace` from the Arch field makes pacman proceed. The
carapace binary can still be provided via the AUR (carapace-bin) or
Homebrew fallback. Brew/Fedora/Debian fields keep carapace where it is
actually installable.
The README documents `brew install fish fisher starship zoxide atuin
fzf carapace nvm rustup-init coreutils` as the full set of fish
dependencies on macOS/Linux. The installer's Brew field only listed
`fish carapace zoxide atuin starship`, leaving fisher, fzf, coreutils,
nvm and rustup-init to be installed manually.

This enriches the Brew field to match the README, and sets the Arch
field to empty so `runNativeWithBrewFallback` falls through cleanly
to Homebrew on Arch. carapace, starship, atuin and zoxide are
available on both pacman and AUR for users who prefer pacman, but
going through brew keeps the fish-shell path consistent (per README
§2.3, `.tmux.conf` hard-codes `/home/linuxbrew/.linuxbrew/bin/fish`
as default-shell).

Applies only to the Fish shell path. Zsh and Nushell paths are unchanged.
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