Skip to content

Dotfiles

Rui edited this page Nov 3, 2026 · 1 revision

Dotfiles

The system role's dotfiles tag installs the dotfiles the same way the dotfiles' own dotfiles-sync does:

  1. clones dotfiles_repo to ~/dotfiles (dotfiles_dest)
  2. syncs .config/ to ~/.config/, git_hooks/ to ~/git_hooks/, claude/ to ~/.claude/ (rsync never deletes: the dotfiles' obsolete list does)
  3. adds Include ~/.config/ssh/*.conf at the top of ~/.ssh/config (the rest of that file stays per machine)
  4. copies the files the dotfiles' .config/dotfiles/home-files lists (.zshrc, .p10k.zsh, the git configs), overwriting them: the list is the dotfiles', so a file added there needs nothing here. ~/.gitconfig-work is only seeded when missing (the repo holds a placeholder)
  5. installs Go and runs the dotfiles' .config/dotfiles/install.sh: builds the Go tools, downloads the SketchyBar icon map, installs the VS Code extensions and links its settings, copies the LaunchAgents, applies Rex's Settings, removes obsolete files. A new step goes in that script, in the dotfiles, not here
  6. reloads tmux, Rex, AeroSpace, borders and SketchyBar when something changed

Reference: roles/system/README.md. Using the dotfiles: the dotfiles wiki.

What a run never touches

  • ~/.zshrc is overwritten on every run: what is specific to one machine goes in ~/.zshrc.local, which .zshrc sources last.
  • The per-machine files are never overwritten: ~/.zshrc.local, ~/.gitconfig-work, ~/.config/tmux/sessions.local, ~/.config/sketchybar/aws_profiles and the others in the dotfiles wiki. --tags local-restore brings them back from Bitwarden on a new Mac.
  • Tokens and API keys are in no file: tools fetch them from Bitwarden when they start (dotfiles: Secrets).

The shell's plugins

The zsh tag (terminal role) installs Oh My Zsh, Powerlevel10k and the plugins the dotfiles' .zshrc loads (zsh-autosuggestions, zsh-syntax-highlighting, fzf-tab), cloned at pinned commits into ~/.oh-my-zsh/custom/plugins (zsh_plugins). The tmux plugins are pinned the same way (tmux_plugins). Renovate moves the pins; plugins-outdated in the dotfiles shows the same from a shell.

Without Ansible

Day to day, dotfiles-sync (a dotfiles shell function) updates a machine without the playbook: it pulls ~/dotfiles, installs the same files and runs the same install.sh.

Clone this wiki locally