Personal dotfiles managed as a git repository in ~/.config.
Installs Xcode CLT and Homebrew if needed:
curl -fsSL https://raw.githubusercontent.com/dededecline/dotfiles/main/setup.sh | bash./setup.sh # Run full setup (auto-detects from hostname)
./setup.sh --hostname athena # Override hostname
./setup.sh --brew # Sync Homebrew packages only
./setup.sh --macos # Apply macOS preferences only
./setup.sh --help # Show all optionsThe setup script is fully idempotent. Run it anytime to ensure everything is configured correctly.
The setup supports multiple machines with hostname-based configuration.
Hostname is auto-detected. Override with --hostname <name>.
Packages are organized under .system/profiles/:
.system/profiles/
├── profiles.toml # Machine-to-group membership (sole source of truth)
├── labels/
│ ├── all/Brewfile # All machines
│ ├── ...
└── machines/
├── ...
Secrets are managed using 1Password CLI with template injection:
secrets # Inject all secrets from 1Password
secrets check # Check which secrets are configured- Templates (
.system/templates/*.tpl) contain{{ op://Vault/Item/Field }}references - secrets.sh processes templates via
op inject - Output goes to
.system/sensitive/(gitignored)
Reload configured processes after making config changes:
refresh # Reload all configured processes (fish, aerospace, sketchybar, tmux)
refresh fish # Reload Fish shell config only
refresh aerospace # Reload Aerospace window manager only
refresh sketchybar # Reload Sketchybar status bar only
refresh tmux # Reload Tmux config only (if in tmux session)The refresh command is useful after editing dotfiles to apply changes immediately without restarting applications.

