Files
dotfiles/bombadil.toml
T
daniel e884e4a88f Manage Claude Code config + add Justfile via bombadil
Bring ~/.claude config under bombadil management across both machines:
- claude/shared/: converged settings.json (union of both hosts) and a single
  Catppuccin-powerline statusline merged from the two machines' versions
- claude/xps, claude/desktop: per-host agents/skills behind [profiles.xps]/
  [profiles.desktop]; each host links only its own via `bombadil link -p <theme> <host>`

Linked at file granularity because bombadil 4.2.0 can't create directory
symlinks for new targets, and to keep ~/.claude/{agents,skills} real dirs.

Add a Justfile (symlinked to ~/.justfile, usable via `just -g`) with link/
dark/light/watch/unlink/update/status/edit recipes; host auto-detected from
hostname. Recipes use exported shell vars to avoid bombadil's Tera engine
mis-parsing just's double-brace interpolation.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-20 17:17:17 -05:00

86 lines
3.5 KiB
TOML

# Path to your dotfiles relative to your $HOME directory
dotfiles_dir = "src/dotfiles"
[settings]
# An array of toml files paths containing the variables to inject in your templatized dotfiles
# You can have multiple var files as long as variable names does not colide.
vars = [ "dark.toml", "vars.toml" ]
# An array of post install shell commands
# hooks = [ "" ]
[profiles.light]
vars = [ "light.toml" ]
[profiles.dark]
vars = [ "dark.toml" ]
[settings.dots]
# A dot entry representing a symlink, `source` is relative to `dotfiles_dir`
# and `target` shall be relative to $HOME directory or absolute.
# You can have as many dot entry as you want, linking files or directories
# alacritty
alacritty = { source = "alacritty", target = ".config/alacritty" }
# bat
bat = { source = "bat", target = ".config/bat" }
# broot
broot = { source = "broot", target = ".config/broot" }
# git
git_template = { source = "git_template", target = ".git_template" }
gitconfig = { source = "gitconfig", target = ".gitconfig" }
gitignore = { source = "gitignore", target = ".gitignore" }
gitui = { source = "gitui", target = ".config/gitui" }
# gpg
gpg_agent = { source = "gnupg/gpg-agent.conf", target = ".gnupg/gpg-agent.conf" }
# helix
helix = { source = "helix", target = ".config/helix" }
# file handlers
mimeapps = { source = "mimeapps.list", target = ".config/mimeapps.list" }
# navi
navi = { source = "navi", target = ".config/navi" }
# starship
starship = { source = "starship.toml", target = ".config/starship.toml"}
# zellij
zellij = { source = "zellij", target = ".config/zellij" }
# zsh
zshconfigs = { source = "zsh.d", target = ".config/zsh.d" }
zshaliases = { source = "aliases.d", target = ".config/aliases.d" }
zshenv = { source = "zshenv.zsh", target = ".zshenv" }
zshrc = { source = "zshrc.zsh", target = ".zshrc" }
# justfile — task runner, usable from anywhere via `just -g`
justfile = { source = "Justfile", target = ".justfile" }
# claude code (shared across hosts; agents/skills are host-specific, see profiles below)
claude_settings = { source = "claude/shared/settings.json", target = ".claude/settings.json" }
claude_statusline = { source = "claude/shared/statusline-command.sh", target = ".claude/statusline-command.sh" }
# Host profiles — select one per machine alongside the theme profile (space-separated), e.g.
# daniel-xps: bombadil link -f -p dark xps
# daniel-desktop: bombadil link -f -p dark desktop
# (or just `just -g link`, which auto-detects the host)
# Each links the host's own Claude agents/skills (the GPU box drives the local
# model; the laptop is the orchestrator that delegates to it over SSH).
# Linked at the file level (not as directory dots): bombadil 4.2.0 only symlinks
# regular files, and this keeps the live ~/.claude/{agents,skills} as real dirs so
# Claude's own agents/skills coexist with these dotfile-managed ones.
[profiles.xps.dots]
claude_agent_desktop_coder = { source = "claude/xps/agents/desktop-coder.md", target = ".claude/agents/desktop-coder.md" }
claude_skill_desktop_delegate = { source = "claude/xps/skills/desktop-delegate/SKILL.md", target = ".claude/skills/desktop-delegate/SKILL.md" }
[profiles.desktop.dots]
claude_agent_local_coder = { source = "claude/desktop/agents/local-coder.md", target = ".claude/agents/local-coder.md" }
claude_skill_local_delegate = { source = "claude/desktop/skills/local-delegate/SKILL.md", target = ".claude/skills/local-delegate/SKILL.md" }
claude_skill_unload_local_model = { source = "claude/desktop/skills/unload-local-model/SKILL.md", target = ".claude/skills/unload-local-model/SKILL.md" }