Skip to content
ianhattendorfPublic

About

No description, website, or topics provided.

Resources

Stars

1 star

Watchers

1 watching

Forks

Repository files navigation

Dotfiles

Linux-first dotfiles managed with Dotbot, organized around install destinations and explicit install profiles.

Layout

  • home/ maps to $HOME
  • xdg_config/ maps to ~/.config
  • xdg_data/ maps to ~/.local/share
  • xdg_bin/ maps to ~/.local/bin
  • stateful/ holds tracked sensitive or machine-tied files
  • profiles/ contains explicit install overlays
  • bootstrap/ contains install helper scripts
  • vendor/dotbot/ is the Dotbot submodule

Install

Base install:

./install

Profile install:

DOTFILES_PROFILE=personal ./install
DOTFILES_PROFILE=work ./install
DOTFILES_PROFILE=fedora ./install
DOTFILES_PROFILE=simba ./install

Supported 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.

Profile Inheritance

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.

Bootstrap Phases

./install runs three bootstrap phases through Dotbot shell steps:

  • bootstrap/profile-setup
  • bootstrap/external-assets
  • bootstrap/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

Tmuxinator projects are managed under xdg_config/tmuxinator and install to ~/.config/tmuxinator.

After install:

tmuxinator start dotfiles

For a general-purpose session to open after signing in, use:

$ tmuxinator start default

Tmux Plugins

Tmux plugins are cloned directly into ~/.tmux/plugins and checked out to fixed commits during bootstrap.

Configured plugins:

  • tmux-resurrect at cff343cf9e81983d3da0c8562b01616f12e8d548
  • tmux-continuum at 0698e8f4b17d6454c71bf5212895ec055c578da0

TPM SSH Agent

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.tpm

TPM sealed private key files are machine-bound and should remain local; do not add .tpm keys to this repo.

About

No description, website, or topics provided.

Resources

Stars

1 star

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages