Linux-first dotfiles managed with Dotbot, organized around install destinations and explicit install profiles.
home/maps to$HOMExdg_config/maps to~/.configxdg_data/maps to~/.local/sharexdg_bin/maps to~/.local/binstateful/holds tracked sensitive or machine-tied filesprofiles/contains explicit install overlaysbootstrap/contains install helper scriptsvendor/dotbot/is the Dotbot submodule
Base install:
./installProfile install:
DOTFILES_PROFILE=personal ./install
DOTFILES_PROFILE=work ./install
DOTFILES_PROFILE=fedora ./install
DOTFILES_PROFILE=simba ./installSupported profiles are personal, work, work-mac, fedora, simba, nala, mba2020, and work-vm.
There is no hostname-based install or runtime selection. If you need machine- or context-specific behavior, add it under profiles/<name>/... and install it explicitly with DOTFILES_PROFILE=<name>.
profiles/agent-vm/ is the exception: it holds the agent-vm guest's Claude config but has no install.d/profiles/agent-vm.yaml and is not installable with DOTFILES_PROFILE. The guest never runs ./install — it symlinks a curated subset of this repo from vm/provision.sh, because the dotbot base is desktop-shaped and several of its base links break that guest. See vm/README.md.
A profile YAML may declare a parent on its first line as a YAML comment:
# parent: work
- link:
...The installer resolves the chain (oldest ancestor first, child last), appends each YAML to the Dotbot config in order, and lets the child override any duplicate target via Dotbot's force: true default. work-mac inherits from work so all OS-portable work content lives in the work profile and only macOS-specific overrides (signing key path, brew tmux path, Alt-arrow word-motion bindings) live in work-mac.
./install runs three bootstrap phases through Dotbot shell steps:
bootstrap/profile-setupbootstrap/external-assetsbootstrap/post-install
bootstrap/external-assets installs external tools such as tmuxinator, fetches non-repo assets such as Antidote and betterlockscreen, and pins tmux plugins to fixed upstream commits.
Tmuxinator projects are managed under xdg_config/tmuxinator and install to ~/.config/tmuxinator.
After install:
tmuxinator start dotfilesFor a general-purpose session to open after signing in, use:
$ tmuxinator start defaultTmux plugins are cloned directly into ~/.tmux/plugins and checked out to fixed commits during bootstrap.
Configured plugins:
tmux-resurrectatcff343cf9e81983d3da0c8562b01616f12e8d548tmux-continuumat0698e8f4b17d6454c71bf5212895ec055c578da0
The fedora and simba profiles use ssh-tpm-agent as SSH_AUTH_SOCK at $XDG_RUNTIME_DIR/ssh-tpm-agent.sock.
Their profile installs link the systemd user units and enable ssh-tpm-agent.socket.
Create or inspect TPM-backed SSH keys locally on the TPM host:
ssh-tpm-keygen
ssh-tpm-keygen --print-pubkey ~/.ssh/id_ecdsa.tpmTPM sealed private key files are machine-bound and should remain local; do not add .tpm keys to this repo.