Skip to content

Install CLI tools on Linux via cargo install#15

Merged
chagui merged 2 commits into
mainfrom
chagui/chezmoi/linux-tools-bootstrap
Apr 22, 2026
Merged

Install CLI tools on Linux via cargo install#15
chagui merged 2 commits into
mainfrom
chagui/chezmoi/linux-tools-bootstrap

Conversation

@chagui
Copy link
Copy Markdown
Owner

@chagui chagui commented Apr 22, 2026

Summary

  • On macOS the Brewfile already covers these tools; on Linux there's no brew, so run_once_before_00_init.sh.tmpl now bootstraps rustup and cargo install --lockeds the Rust CLIs that mirror the Brewfile (bat, broot, dust, eza, fd, delta, ripgrep, tealdeer, zoxide).
  • dog (DNS client) isn't on crates.io — the dog crate there is unrelated and has no binaries. It's fetched from ogham/dog's single v0.1.0 release zip instead. fzf (Go) is also a GitHub release.
  • brew "dog" added to the macOS Brewfile so both platforms provide it.
  • run_once_after_99_misc.sh now emits $ZDOTDIR/fzf-completion.zsh via fzf --zsh so the zshrc's conditional source has something to read regardless of how fzf got installed.

Test plan

  • Linux workspace: fresh chezmoi init --apply https://github.com/chagui/dotfiles succeeds end-to-end; bat, broot, dog, dust, eza, fd, delta, rg, tldr, zoxide, fzf all resolve on PATH after apply.
  • Linux: fzf keybindings (ctrl-r, ctrl-t) work in a new zsh — confirms fzf-completion.zsh was generated.
  • macOS: brew bundle still succeeds with the added dog entry; no regression on the existing tools.
  • Re-apply is a no-op (cargo skips already-installed crates; command -v guards on fzf/dog).

🤖 Generated with Claude Code

chagui and others added 2 commits April 22, 2026 22:43
On macOS the Brewfile already covers these; on Linux there's no brew, so
bootstrap rustup and `cargo install --locked` the Rust CLIs that mirror the
Brewfile (bat, broot, dog, dust, eza, fd, delta, ripgrep, tealdeer, zoxide).
fzf is Go, fetched from the upstream GitHub release into ~/.local/bin.

Also add `brew "dog"` to the macOS Brewfile for parity (only tool from the
Linux set that wasn't already there), and generate $ZDOTDIR/fzf-completion.zsh
in run_once_after_99_misc.sh so the zshrc's conditional source has something
to read, regardless of how fzf got installed.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
The `dog` crate on crates.io is an unrelated/empty library; `cargo install
dog` fails with "there is nothing to install... because it has no binaries".
The DNS client lives at ogham/dog on GitHub and has a single v0.1.0 release
(the project has been dormant since 2020). Drop it from the cargo install
list and fetch the prebuilt release instead, matching the fzf pattern.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
@chagui chagui merged commit a1149d4 into main Apr 22, 2026
1 check passed
@chagui chagui deleted the chagui/chezmoi/linux-tools-bootstrap branch April 22, 2026 20:51
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