fish-deps
Synopsis
Section titled “Synopsis”fish-deps [status|install|update|sync|help] [--optional] [--terminals] [--all]Description
Section titled “Description”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):
- git+cargo source build (fish shell itself)
cargo(Rust tools — gets latest crate version)- system PM (paru/apt/brew/etc.)
- git clone (
fzf) curlinstaller (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 |
Arguments
Section titled “Arguments”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 |
Exit Status
Section titled “Exit Status”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 |
Example
Section titled “Example”fish-deps syncfish-depsfish-deps installfish-deps install --optionalfish-deps install --terminalsfish-deps install --allfish-deps updateDependencies: _fish_deps_status, _fish_deps_install, _fish_deps_update