Skip to content

fish-deps

Usage
fish-deps [status|install|update|sync|help] [--optional] [--terminals] [--all]

Unified command for managing all tools this configuration depends on, dispatching to subcommand handlers. Defaults to status when no subcommand is given.

Install method priority (highest to lowest):

  1. git+cargo source build (fish shell itself)
  2. cargo (Rust tools — gets latest crate version)
  3. system PM (paru/apt/brew/etc.)
  4. git clone (fzf)
  5. curl installer (starship, fisher, uv)

When multiple methods are available you are prompted to choose.

What install does: it walks the catalog and, for each tool that is missing, asks Install <tool>? [Y/n/q]. Enter or y installs it, n skips that tool, and q (or Ctrl+C or Ctrl+D) stops the whole run, so nothing further is offered. Nothing is installed without your say-so, and sudo asks for its own password where the system package manager needs it. Tools it installs are put on this shell’s PATH straight away; only fish itself needs a restart to take effect.

Prerequisites are offered only once a chosen method needs them: a C compiler for cargo builds (build-essential, base-devel or gcc), a default Rust toolchain when cargo is a bare rustup shim, unzip for the wakatime-cli download, and Go for ov on distros that do not package it. Rust tools are built with cargo install --locked, so they use the dependency versions their authors published rather than whatever is newest. paru and yay are only offered on Arch-based systems.

Dependencies are grouped into five tiers:

Required fish, fzf
Recommended cargo, starship, uv, zoxide, direnv, paru, yay, eza, lsd, bat, ov, ripgrep, trash, python3
Optional btop, dust, duf, prettyping, go, lazygit, lazydocker, docker, yt-dlp, screen — single-purpose wrapper conveniences that only matter if you already use that tool; skipped by install/sync unless --optional (or --all) is passed
Terminal Emulators kitty, wezterm — only matter if one of them is your actual terminal; skipped by install/sync unless --terminals (or --all) is passed
Integrations wakatime, tailscale
status Report installed/missing deps (default)
install Install missing deps interactively
update Update all installed deps
sync Install missing deps, then update all
--optional With install/sync: also offer Optional-tier deps
--terminals With install/sync: also offer Terminal-Emulator-tier deps
--all With install/sync: shorthand for --optional --terminals
help, -h, --help Show this help
0 Subcommand completed, or help was shown
1 install had one or more failed installs, or update (or the update half of sync) had one or more failed updates
2 Unknown subcommand
130 install (or the install half of sync) was cancelled with q, Ctrl+C or Ctrl+D; sync does not go on to update
Terminal window
fish-deps sync
fish-deps
fish-deps install
fish-deps install --optional
fish-deps install --terminals
fish-deps install --all
fish-deps update

Dependencies: _fish_deps_status, _fish_deps_install, _fish_deps_update