From a3b60718defc395ebbb9876139417d4042e96d5f Mon Sep 17 00:00:00 2001 From: rootiest Date: Thu, 11 Jun 2026 23:28:33 -0400 Subject: [PATCH 1/4] fix(deps): demote uv to recommended, remove dead pipx installer code MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit uv is only used in the fish-deps fish-from-source build path (uv run --no-managed-python cargo install --path .) and is not required by the config at runtime. All consumers degrade gracefully without it. pipx appeared in the installer's method-building and execution switch blocks but no catalog entry ever sets special=pipx, making both branches permanently unreachable dead code. The docs listed pipx as install priority #6 which was equally misleading. - _fish_deps_catalog: change uv tier from req → rec - _fish_deps_install: remove case pipx method-builder and special-pipx / special-pip execution cases - docs/fish-config.md: move uv from Required to Recommended catalog entry with accurate description; drop pipx from install priority list and tier summary --- docs/fish-config.md | 10 +++++----- functions/_fish_deps_catalog.fish | 2 +- functions/_fish_deps_install.fish | 12 ------------ 3 files changed, 6 insertions(+), 18 deletions(-) diff --git a/docs/fish-config.md b/docs/fish-config.md index c739c25..fdd4f6f 100644 --- a/docs/fish-config.md +++ b/docs/fish-config.md @@ -845,16 +845,15 @@ Add -i (interactive confirmation) to destructive commands: 3. system PM (paru/apt/brew/etc.) 4. git clone (fzf) 5. curl installer (starship, fisher, uv) - 6. pipx (Python tools) When multiple methods are available you are prompted to choose. Dependencies are grouped into three tiers: - Required uv, cargo, fish, fisher, starship, fzf, zoxide, + Required cargo, fish, fisher, starship, fzf, zoxide, direnv, paru/yay Integrations wakatime, tailscale - Recommended eza, lsd, bat, btop, dust, duf, prettyping, ov, + Recommended uv, eza, lsd, bat, btop, dust, duf, prettyping, ov, ripgrep, lazygit, lazydocker, trash, kitty, wezterm, python3 @@ -1349,7 +1348,6 @@ fish-deps manages these tools. Run `fish-deps` to check status, or ## Required - uv Python package manager (Astral) cargo Rust toolchain (via rustup) fish Fish shell >= 4.0 fisher Fish plugin manager @@ -1367,6 +1365,9 @@ fish-deps manages these tools. Run `fish-deps` to check status, or ## Recommended + uv Python package and project manager (Astral); used by the + fish-from-source build path in fish-deps. All consumers + degrade gracefully without it. eza Modern ls replacement lsd ls replacement (fallback to eza) bat Syntax-highlighted cat @@ -1396,7 +1397,6 @@ The install priority for each tool: system PM paru / apt / brew / dnf / etc. — for tools without a crate git clone fzf — installed from GitHub to ~/.fzf/ curl starship installer, fisher bootstrap, uv installer - pipx Python-based tools --- diff --git a/functions/_fish_deps_catalog.fish b/functions/_fish_deps_catalog.fish index 17c2946..78a9467 100644 --- a/functions/_fish_deps_catalog.fish +++ b/functions/_fish_deps_catalog.fish @@ -19,7 +19,7 @@ function _fish_deps_catalog eza lsd bat btop dust duf prettyping ov rg lazygit lazydocker trash kitty wezterm python3 set -g _fdc_tiers \ - req req req req req req req req rec rec \ + rec req req req req req req req rec rec \ int int \ rec rec rec rec rec rec rec rec rec rec rec rec rec rec rec diff --git a/functions/_fish_deps_install.fish b/functions/_fish_deps_install.fish index 928ec81..00a9d2c 100644 --- a/functions/_fish_deps_install.fish +++ b/functions/_fish_deps_install.fish @@ -117,14 +117,6 @@ function _fish_deps_install set -a methods special-yay set -a method_labels "build from AUR (makepkg)" end - case pipx - if type -q pipx - set -a methods special-pipx - set -a method_labels "pipx ($bin)" - else if type -q pip - set -a methods special-pip - set -a method_labels "pip install --user ($bin)" - end end if test (count $methods) -eq 0 @@ -264,10 +256,6 @@ function _fish_deps_install popd 2>/dev/null rm -rf "$_tmpdir" test $_build_ok -eq 1 - case special-pipx - pipx install $bin - case special-pip - pip install --user $bin end if test $status -eq 0 From bc0b67a498a6b5f0c41ca5dbad2759a9d1e52ad1 Mon Sep 17 00:00:00 2001 From: rootiest Date: Thu, 11 Jun 2026 23:30:12 -0400 Subject: [PATCH 2/4] =?UTF-8?q?fix(docs):=20correct=20paru/yay=20tier=20?= =?UTF-8?q?=E2=80=94=20catalog=20already=20has=20them=20as=20rec?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit paru and yay were already classified as rec in _fish_deps_catalog.fish (they've always been position 9-10 in the tiers array with rec values) but docs/fish-config.md still listed them under Required. Non-Arch systems have had silent guards throughout, so they were never truly required. This syncs the docs with what the catalog already says. --- docs/fish-config.md | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/docs/fish-config.md b/docs/fish-config.md index fdd4f6f..b9b7086 100644 --- a/docs/fish-config.md +++ b/docs/fish-config.md @@ -850,12 +850,11 @@ Add -i (interactive confirmation) to destructive commands: Dependencies are grouped into three tiers: - Required cargo, fish, fisher, starship, fzf, zoxide, - direnv, paru/yay + Required cargo, fish, fisher, starship, fzf, zoxide, direnv Integrations wakatime, tailscale - Recommended uv, eza, lsd, bat, btop, dust, duf, prettyping, ov, - ripgrep, lazygit, lazydocker, trash, kitty, wezterm, - python3 + Recommended uv, paru, yay, eza, lsd, bat, btop, dust, duf, + prettyping, ov, ripgrep, lazygit, lazydocker, trash, + kitty, wezterm, python3 fish-deps fish-deps install @@ -1355,8 +1354,6 @@ fish-deps manages these tools. Run `fish-deps` to check status, or fzf Fuzzy finder zoxide Smart cd with frecency direnv Per-directory environment loading - paru AUR helper (Arch only; preferred) - yay AUR helper (Arch only; fallback) ## Integrations @@ -1368,6 +1365,9 @@ fish-deps manages these tools. Run `fish-deps` to check status, or uv Python package and project manager (Astral); used by the fish-from-source build path in fish-deps. All consumers degrade gracefully without it. + paru AUR helper (Arch only; preferred); guarded throughout — + non-Arch systems silently skip AUR-specific paths. + yay AUR helper (Arch only; fallback to paru); same guards apply. eza Modern ls replacement lsd ls replacement (fallback to eza) bat Syntax-highlighted cat From 5c224694ec0ab0c47140ff2f4edf8598a982ed4d Mon Sep 17 00:00:00 2001 From: rootiest Date: Thu, 11 Jun 2026 23:36:50 -0400 Subject: [PATCH 3/4] fix(deps): demote direnv to recommended direnv integration is fully guarded with type -q direnv in config.fish. The auto-venv script checks $DIRENV_DIR (set at runtime), not the binary. Without direnv installed the hook simply never loads and venv activation fires normally. No functionality breaks. --- docs/fish-config.md | 8 +++++--- functions/_fish_deps_catalog.fish | 2 +- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/docs/fish-config.md b/docs/fish-config.md index b9b7086..b0aac91 100644 --- a/docs/fish-config.md +++ b/docs/fish-config.md @@ -850,9 +850,9 @@ Add -i (interactive confirmation) to destructive commands: Dependencies are grouped into three tiers: - Required cargo, fish, fisher, starship, fzf, zoxide, direnv + Required cargo, fish, fisher, starship, fzf, zoxide Integrations wakatime, tailscale - Recommended uv, paru, yay, eza, lsd, bat, btop, dust, duf, + Recommended uv, direnv, paru, yay, eza, lsd, bat, btop, dust, duf, prettyping, ov, ripgrep, lazygit, lazydocker, trash, kitty, wezterm, python3 @@ -1353,7 +1353,6 @@ fish-deps manages these tools. Run `fish-deps` to check status, or starship Cross-shell prompt fzf Fuzzy finder zoxide Smart cd with frecency - direnv Per-directory environment loading ## Integrations @@ -1365,6 +1364,9 @@ fish-deps manages these tools. Run `fish-deps` to check status, or uv Python package and project manager (Astral); used by the fish-from-source build path in fish-deps. All consumers degrade gracefully without it. + direnv Per-directory environment loading; integration is fully + guarded with type -q direnv. Without it the direnv hook + is simply not loaded and auto-venv activates normally. paru AUR helper (Arch only; preferred); guarded throughout — non-Arch systems silently skip AUR-specific paths. yay AUR helper (Arch only; fallback to paru); same guards apply. diff --git a/functions/_fish_deps_catalog.fish b/functions/_fish_deps_catalog.fish index 78a9467..9af2637 100644 --- a/functions/_fish_deps_catalog.fish +++ b/functions/_fish_deps_catalog.fish @@ -19,7 +19,7 @@ function _fish_deps_catalog eza lsd bat btop dust duf prettyping ov rg lazygit lazydocker trash kitty wezterm python3 set -g _fdc_tiers \ - rec req req req req req req req rec rec \ + rec req req req req req req rec rec rec \ int int \ rec rec rec rec rec rec rec rec rec rec rec rec rec rec rec From 36a303f7d4969dbce4d047aabc980fbf475ba41d Mon Sep 17 00:00:00 2001 From: rootiest Date: Thu, 11 Jun 2026 23:50:37 -0400 Subject: [PATCH 4/4] fix(deps): demote cargo/starship to rec, remove fisher from catalog MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Required tier is now fish, fzf, and zoxide only — the tools the config meaningfully can't function without. Everything else degrades gracefully. - cargo: only used by fish-deps to install Rust tools or build fish from source; all paths are already gated on type -q cargo - starship: type -q guard in conf.d/starship.fish; shell falls back to fish's built-in prompt without it - fisher: auto-bootstrapped by first_run.fish; no need for users or fish-deps to manage it. Remove from catalog and clean up the now-dead fisher-bootstrap/special-fisher installer cases. Catalog arrays verified aligned at 26 entries each. --- docs/fish-config.md | 16 +++++++++------- functions/_fish_deps_catalog.fish | 10 +++++----- functions/_fish_deps_install.fish | 6 ------ 3 files changed, 14 insertions(+), 18 deletions(-) diff --git a/docs/fish-config.md b/docs/fish-config.md index b0aac91..01b88bf 100644 --- a/docs/fish-config.md +++ b/docs/fish-config.md @@ -850,11 +850,11 @@ Add -i (interactive confirmation) to destructive commands: Dependencies are grouped into three tiers: - Required cargo, fish, fisher, starship, fzf, zoxide + Required fish, fzf, zoxide Integrations wakatime, tailscale - Recommended uv, direnv, paru, yay, eza, lsd, bat, btop, dust, duf, - prettyping, ov, ripgrep, lazygit, lazydocker, trash, - kitty, wezterm, python3 + Recommended cargo, starship, uv, direnv, paru, yay, eza, lsd, bat, + btop, dust, duf, prettyping, ov, ripgrep, lazygit, + lazydocker, trash, kitty, wezterm, python3 fish-deps fish-deps install @@ -1347,10 +1347,7 @@ fish-deps manages these tools. Run `fish-deps` to check status, or ## Required - cargo Rust toolchain (via rustup) fish Fish shell >= 4.0 - fisher Fish plugin manager - starship Cross-shell prompt fzf Fuzzy finder zoxide Smart cd with frecency @@ -1361,6 +1358,11 @@ fish-deps manages these tools. Run `fish-deps` to check status, or ## Recommended + cargo Rust toolchain (via rustup); used by fish-deps to install + Rust-based tools and to build fish from source. All paths + are gated on type -q cargo and degrade gracefully. + starship Cross-shell prompt; loaded via type -q starship guard. + Without it fish falls back to its built-in default prompt. uv Python package and project manager (Astral); used by the fish-from-source build path in fish-deps. All consumers degrade gracefully without it. diff --git a/functions/_fish_deps_catalog.fish b/functions/_fish_deps_catalog.fish index 9af2637..4af1fc9 100644 --- a/functions/_fish_deps_catalog.fish +++ b/functions/_fish_deps_catalog.fish @@ -14,27 +14,27 @@ # echo $_fdc_bins function _fish_deps_catalog set -g _fdc_bins \ - uv cargo fish fisher starship fzf zoxide direnv paru yay \ + uv cargo fish starship fzf zoxide direnv paru yay \ wakatime tailscale \ eza lsd bat btop dust duf prettyping ov rg lazygit lazydocker trash kitty wezterm python3 set -g _fdc_tiers \ - rec req req req req req req rec rec rec \ + rec rec req rec req req rec rec rec \ int int \ rec rec rec rec rec rec rec rec rec rec rec rec rec rec rec set -g _fdc_cargo \ - "" "" "" "" starship "" zoxide "" "" "" \ + "" "" "" starship "" zoxide "" "" "" \ "" "" \ eza lsd bat "" du-dust "" "" ov ripgrep "" "" trashy "" "" "" set -g _fdc_pm \ - uv cargo fish "" starship fzf zoxide direnv "" yay \ + uv cargo fish starship fzf zoxide direnv "" yay \ wakatime tailscale \ eza lsd bat btop dust duf prettyping ov ripgrep lazygit lazydocker trash kitty wezterm python set -g _fdc_special \ - curl-uv rustup-installer git-cargo-fish fisher-bootstrap curl-installer fzf-update "" "" paru-build yay-build \ + curl-uv rustup-installer git-cargo-fish curl-installer fzf-update "" "" paru-build yay-build \ wakatime-binary "" \ "" "" "" "" "" "" "" "" "" "" curl-lazydocker "" "" "" "" end diff --git a/functions/_fish_deps_install.fish b/functions/_fish_deps_install.fish index 00a9d2c..1af829d 100644 --- a/functions/_fish_deps_install.fish +++ b/functions/_fish_deps_install.fish @@ -92,9 +92,6 @@ function _fish_deps_install case fzf-update set -a methods special-fzf set -a method_labels "git clone (~/.fzf)" - case fisher-bootstrap - set -a methods special-fisher - set -a method_labels "curl bootstrap (fisher)" case curl-installer set -a methods special-curl set -a method_labels "curl installer" @@ -202,9 +199,6 @@ function _fish_deps_install rm -rf "$_tmpdir" case special-fzf fzf-update - case special-fisher - curl -sL https://raw.githubusercontent.com/jorgebucaran/fisher/main/functions/fisher.fish | source - fisher update case special-curl if test "$bin" = starship curl -sS https://starship.rs/install.sh | sh