Skip to content

feat: senior-grade dotfiles with chezmoi + sops/age#1

Merged
haongo138 merged 1 commit into
mainfrom
feat/senior-dotfiles-chezmoi
Jul 10, 2026
Merged

feat: senior-grade dotfiles with chezmoi + sops/age#1
haongo138 merged 1 commit into
mainfrom
feat/senior-dotfiles-chezmoi

Conversation

@haongo138

Copy link
Copy Markdown
Owner

Summary

Bootstrap a reproducible, secret-safe macOS dev environment for an AI-native fullstack stack (React/TS · Go · Postgres · devbox + colima · Claude Code).

  • chezmoi as source of truth (source dir = this repo); machine vars prompted via .chezmoi.toml.tmpl
  • sops/age secret pipeline — secrets encrypted in-repo, private key never committed; npm auth injected at apply time via dot_npmrc.tmpl
  • git identity templated; the previously-exposed GitHub token was removed in favor of the gh credential helper
  • Migrated configs: zsh, git, tmux, starship, ghostty, yazi, htop, gh, and Claude Code settings + go/ts/common rules
  • Reproducible packages: packages/Brewfile (59 brews / 3 casks) + devbox.global.json
  • Idempotent bootstrap: run_onchange script (Homebrew, oh-my-zsh, devbox global, nvm, tmux TPM)
  • Quality gates: gitleaks CI + pre-commit, chezmoi apply --dry-run job, justfile task runner

Security

  • No plaintext secrets in the repo (verified: gitleaks-clean working tree + staged content)
  • age private key lives only at ~/.config/sops/age/keys.txt, git-ignored
  • .chezmoiignore keeps secrets/, packages/, and repo-meta files out of $HOME

Test plan

  • chezmoi status clean except intentional (run_onchange script, sops-rendered .npmrc)
  • sops encrypt/decrypt roundtrip verified with zero plaintext leak
  • chezmoi apply succeeds (only file-mode normalization on this machine)
  • secret gate: 0 hits in repo and staged content
  • Reviewer: add repo secret SOPS_AGE_KEY to enable the CI apply-dry-run job

Follow-ups (owner action)

  • Revoke the previously-exposed gho_ GitHub token, then store a fresh one via just secrets
  • Back up ~/.config/sops/age/keys.txt to a password manager

Bootstrap a reproducible, secret-safe macOS dev environment.

- chezmoi source = this repo; machine vars via .chezmoi.toml.tmpl
- secrets sops-encrypted to age key (never committed); npm auth via template
- git identity templated, GitHub token removed (gh credential helper)
- migrated: zsh, git, tmux, starship, ghostty, yazi, htop, gh, claude config+rules
- reproducible packages: Brewfile (59 brews/3 casks) + devbox global
- idempotent run_onchange bootstrap (brew, oh-my-zsh, devbox, nvm, tmux TPM)
- quality gates: gitleaks CI + pre-commit, chezmoi apply dry-run, justfile
@haongo138
haongo138 merged commit b630a6b into main Jul 10, 2026
@haongo138
haongo138 deleted the feat/senior-dotfiles-chezmoi branch July 10, 2026 21:06
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant