dots

Personal dotfiles: bash + GNU stow + gum. Everything on the machine is managed from this repo — packages, configs, theming, and the CLI that ties it together.

The CLI

Machine setup (rare):     dots install · dots stow · dots list · dots sync
Packages (auto-commit):   dots add · dots remove
Components:               dots stow · dots stow-add · dots stow-remove
Per-machine:              dots setup · dots calendar
Daily:                    dots edit · dots theme
Git:                      dots git   (lazygit — pull = p, push = Shift+P)

New machine: run bootstrap.sh (see below), then this README’s checklist.

Layout

packages/<category>/packages.txt   one package per line, aur: prefix → yay
packages/<category>/install/       idempotent install scripts (yay, neovim, ly, claude, pi)
setup/<name>/                      interactive per-machine steps for `dots setup` (calendar)
stow/<component>/                  one stow package per config area
dots-cli/                          the CLI (see dots-cli/AGENTS.md for internals)
dots-cli/theming/                  theme engine + per-app adapters

Fresh machine after bootstrap

bootstrap.sh covers packages, configs and the first theme. Manual follow-ups:

  1. SSH key for GitHub: ssh-keygen -t ed25519 → add at github.com/settings/keys
  2. Switch the dots remote to SSH (push access): git -C ~/dots remote set-url origin git@github.com:FjedorGaede/dots.git
  3. gh auth login (for my-repos and GitHub CLI usage)
  4. brave-search skill deps: cd ~/.config/pi/agent/skills/brave-search && npm ci
  5. hostname: sudo hostnamectl set-hostname <name>
  6. dots setup — calendar login

That’s it — no special cases. Every config (including neovim) lives in stow/, is edited via dots edit and committed via dots git.