Recipe: personal workstation (Jarvy as dotfiles bootstrap)¶
Problem¶
You get a new laptop — or reset the one you have — and lose an afternoon
reinstalling Homebrew, nvim, tmux, your shell, gh, language runtimes,
and setting git config user.email again. You want one command to bring a
fresh machine back to the exact tools + git identity you use daily.
Jarvy's team-onboarding flow works just as well for a team of one. Keep
a jarvy.toml in your dotfiles repo; jarvy setup reconciles the machine
against it.
Config¶
Full file at examples/personal-workstation/jarvy.toml.
Excerpt:
~/dotfiles/jarvy.toml
[privileges]
use_sudo = false
[provisioner]
zsh = "latest"
starship = "latest"
tmux = "latest" # default_hook installs TPM
nvim = "latest" # default_hook seeds ~/.config/nvim/init.lua
fzf = "latest"
zoxide = "latest"
atuin = "latest"
git = "latest"
gh = "latest"
ripgrep = "latest"
bat = "latest"
eza = "latest"
delta = "latest"
jq = "latest"
rust = { version = "stable", version_manager = true }
node = { version = "22", version_manager = true }
python = "3.12"
go = "latest"
docker = "latest"
kubectl = "latest"
k9s = "latest"
[git]
user_name = { env = "GIT_USER_NAME", default = "Your Name" }
user_email = { env = "GIT_USER_EMAIL", default = "[email protected]" }
default_branch = "main"
pull_rebase = true
[git.aliases]
st = "status -sb"
lg = "log --graph --oneline --decorate --all"
amend = "commit --amend --no-edit"
[commands]
reload = "jarvy setup"
drift = "jarvy drift check"
update = "jarvy update"
Usage¶
# One-time on a fresh machine
curl -fsSL https://raw.githubusercontent.com/Cliftonz/jarvy/main/dist/scripts/install.sh | sh
git clone <your-dotfiles-repo> ~/dotfiles
cd ~/dotfiles
export GIT_USER_NAME="Jane Doe"
export GIT_USER_EMAIL="[email protected]"
jarvy setup
Later, after editing jarvy.toml:
Why this shape works¶
envwithdefaultin[git]— you can commit this file to a public dotfiles repo without leaking your email. The env vars fill in at setup time; the default is a placeholder.version_manager = trueonrust/node— installs viarustup/nvminstead of the OS package, so you can switch versions per-project later without fighting the system installer.tmuxandnvimshipdefault_hooks that seed a minimal config (TPM for tmux, a starterinit.luafor nvim) only if none exists. They never overwrite your dotfiles.[commands]turns muscle-memory ops intojarvy run reload/jarvy run driftso you don't memorize a second CLI.
Extending¶
- Add AI hooks so Claude / Cursor share the same guardrails across every repo you open on this machine.
- Add MCP registration to auto-register the Jarvy MCP server with every AI agent CLI you install.
- If you juggle work + personal identities, use roles:
role = "personal"by default,jarvy setup --role workwhen you need the work git identity + tools.
Related¶
- Quickstart — the 5-minute version
- Roles guide — split work vs personal
- Drift — detect when a hook or another tool changed your machine behind Jarvy's back