@sebastienrousseau/dotfiles 0.2.520 → 0.2.522

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (323) hide show
  1. package/CHANGELOG.md +52 -0
  2. package/LICENSE-APACHE +190 -0
  3. package/LICENSE-MIT +21 -0
  4. package/README.md +43 -37
  5. package/install.sh +76 -10
  6. package/package.json +7 -7
  7. package/tools/README.md +49 -0
  8. package/tools/ci/install-chezmoi-verified.sh +68 -0
  9. package/docs/.vitepress/reports/localization-readability-audit.md +0 -73
  10. package/docs/AI.md +0 -179
  11. package/docs/ARCHITECTURE.md +0 -117
  12. package/docs/CNAME +0 -1
  13. package/docs/CONFIG_STRATEGY.md +0 -124
  14. package/docs/COPYRIGHT +0 -7
  15. package/docs/ECOSYSTEM.md +0 -220
  16. package/docs/GOLD-STANDARD-AUDIT.md +0 -352
  17. package/docs/GOVERNANCE.md +0 -98
  18. package/docs/MAINTAINERS.md +0 -41
  19. package/docs/MINIMUM-TOOLCHAIN.md +0 -100
  20. package/docs/NAMING_CONVENTIONS.md +0 -102
  21. package/docs/OPENCODE.md +0 -127
  22. package/docs/README.md +0 -84
  23. package/docs/STRUCTURE.md +0 -102
  24. package/docs/adr/ADR-001-ci-cd-pipeline.md +0 -118
  25. package/docs/adr/ADR-002-shell-performance.md +0 -130
  26. package/docs/adr/ADR-003-security-first.md +0 -158
  27. package/docs/adr/ADR-004-cli-architecture.md +0 -171
  28. package/docs/adr/ADR-005-chezmoi-choice.md +0 -99
  29. package/docs/adr/ADR-006-shell-selection.md +0 -124
  30. package/docs/adr/ADR-007-multi-shell-parity.md +0 -62
  31. package/docs/adr/ADR-008-alias-system-architecture.md +0 -95
  32. package/docs/adr/ADR-009-wallpaper-driven-theming.md +0 -131
  33. package/docs/adr/ADR-010-starship-transient-prompt.md +0 -144
  34. package/docs/adr/ADR-011-nushell-tier3-keep.md +0 -144
  35. package/docs/adr/ADR-012-ai-fleet-local-proxy.md +0 -79
  36. package/docs/adr/README.md +0 -40
  37. package/docs/architecture/AI_COST_OPTIMIZATION.md +0 -144
  38. package/docs/architecture/ARCHITECTURE.md +0 -20
  39. package/docs/architecture/INTEROP.md +0 -44
  40. package/docs/architecture/REPO_LAYOUT.md +0 -241
  41. package/docs/architecture/WALKTHROUGH.md +0 -86
  42. package/docs/architecture/fleet-deployment.md +0 -77
  43. package/docs/archive/EUXIS_2026_REVIEW.md +0 -127
  44. package/docs/archive/LEGACY_ROADMAP.md +0 -6
  45. package/docs/archive/MILESTONE_v0.2.493.md +0 -47
  46. package/docs/archive/PLAN.md +0 -199
  47. package/docs/archive/REPO_AUDIT.md +0 -31
  48. package/docs/articles/.pages +0 -6
  49. package/docs/articles/2026-07-05-custom-mkdocs-material-dark-theme.md +0 -216
  50. package/docs/articles/2026-07-05-fish-startup-abbr.md +0 -153
  51. package/docs/articles/2026-07-05-master-to-main-rename-runbook.md +0 -128
  52. package/docs/articles/index.md +0 -36
  53. package/docs/guides/INSTALL.md +0 -144
  54. package/docs/guides/MACOS_ICLOUD_SYMLINKS.md +0 -121
  55. package/docs/guides/NEOVIM_IDE_GUIDE.md +0 -61
  56. package/docs/guides/THEMING.md +0 -230
  57. package/docs/guides/TROUBLESHOOTING.md +0 -176
  58. package/docs/guides/WSL2_NIX_TROUBLESHOOTING.md +0 -792
  59. package/docs/index.md +0 -132
  60. package/docs/interop/A2A.md +0 -39
  61. package/docs/interop/POWERSHELL.md +0 -102
  62. package/docs/manual/00-introduction.md +0 -89
  63. package/docs/manual/01-concepts/01-architecture.md +0 -138
  64. package/docs/manual/01-concepts/02-trust-model.md +0 -183
  65. package/docs/manual/01-concepts/03-theme-engine.md +0 -186
  66. package/docs/manual/01-concepts/04-fleet.md +0 -148
  67. package/docs/manual/01-concepts/05-self-healing.md +0 -204
  68. package/docs/manual/02-tutorials/01-first-install.md +0 -197
  69. package/docs/manual/02-tutorials/02-add-wallpaper.md +0 -216
  70. package/docs/manual/02-tutorials/03-create-profile.md +0 -244
  71. package/docs/manual/02-tutorials/04-encrypt-secret.md +0 -281
  72. package/docs/manual/02-tutorials/05-deploy-fleet.md +0 -283
  73. package/docs/manual/03-reference/01-dot-cli.md +0 -475
  74. package/docs/manual/03-reference/02-config-files.md +0 -265
  75. package/docs/manual/03-reference/03-environment.md +0 -124
  76. package/docs/manual/03-reference/04-templates.md +0 -190
  77. package/docs/manual/03-reference/05-feature-flags.md +0 -187
  78. package/docs/manual/04-cookbook/01-recipes.md +0 -285
  79. package/docs/manual/04-cookbook/02-troubleshooting.md +0 -351
  80. package/docs/manual/04-cookbook/03-faq.md +0 -175
  81. package/docs/manual/05-appendices/A-platform-matrix.md +0 -101
  82. package/docs/manual/05-appendices/B-security-checklist.md +0 -85
  83. package/docs/manual/05-appendices/C-glossary.md +0 -40
  84. package/docs/manual/05-appendices/D-bibliography.md +0 -58
  85. package/docs/manual/05-appendices/E-license.md +0 -38
  86. package/docs/manual/_toc.yml +0 -58
  87. package/docs/manual/command-index.md +0 -175
  88. package/docs/manual/concept-index.md +0 -170
  89. package/docs/manual/index.md +0 -66
  90. package/docs/migration/README.md +0 -81
  91. package/docs/migration/from-bare-git-repo.md +0 -156
  92. package/docs/migration/from-gnu-stow.md +0 -165
  93. package/docs/migration/from-plain-chezmoi.md +0 -148
  94. package/docs/migration/from-yadm.md +0 -187
  95. package/docs/operations/ARCHITECTURE_ROADMAP.md +0 -7
  96. package/docs/operations/ATTESTATION.md +0 -44
  97. package/docs/operations/CI_CADENCE.md +0 -107
  98. package/docs/operations/CI_COMPOSITES.md +0 -156
  99. package/docs/operations/COMPLETIONS.md +0 -123
  100. package/docs/operations/COVERAGE.md +0 -204
  101. package/docs/operations/DRIFT.md +0 -107
  102. package/docs/operations/HARD_AUDIT_2026.md +0 -631
  103. package/docs/operations/MAINTENANCE.md +0 -63
  104. package/docs/operations/MANIFEST.md +0 -127
  105. package/docs/operations/MIGRATION.md +0 -109
  106. package/docs/operations/OPERATIONS.md +0 -188
  107. package/docs/operations/PERFORMANCE.md +0 -133
  108. package/docs/operations/PERFORMANCE_BUDGETS.md +0 -196
  109. package/docs/operations/REGISTRY.md +0 -90
  110. package/docs/operations/RELEASE_PIPELINE.md +0 -128
  111. package/docs/operations/RELIABILITY.md +0 -122
  112. package/docs/operations/RFC_v0_2_503_reorganization.md +0 -280
  113. package/docs/operations/ROADMAP.md +0 -10
  114. package/docs/operations/ROADMAP_2026.md +0 -7
  115. package/docs/operations/ROADMAP_V0_2_503.md +0 -10
  116. package/docs/operations/TESTING.md +0 -216
  117. package/docs/operations/TRACEABILITY.md +0 -44
  118. package/docs/operations/TRUSTED_AGENT_WORKSTATION.md +0 -65
  119. package/docs/operations/VERSION_SYNC.md +0 -393
  120. package/docs/packaging.md +0 -222
  121. package/docs/reference/ALIASES.md +0 -131
  122. package/docs/reference/ALIASES_CHEATSHEET.md +0 -32
  123. package/docs/reference/ALIASES_DEPRECATIONS.md +0 -13
  124. package/docs/reference/FEATURE-MATRIX.md +0 -646
  125. package/docs/reference/FEATURES.md +0 -66
  126. package/docs/reference/FONTS.md +0 -112
  127. package/docs/reference/POWERSHELL_PARITY.md +0 -82
  128. package/docs/reference/PROFILES.md +0 -69
  129. package/docs/reference/SCREENSHOTS.md +0 -121
  130. package/docs/reference/SCRIPTS.md +0 -71
  131. package/docs/reference/SUPPORT_MATRIX.md +0 -80
  132. package/docs/reference/THEMES.md +0 -117
  133. package/docs/reference/TOOLS.md +0 -110
  134. package/docs/reference/UTILS.md +0 -243
  135. package/docs/registry.json +0 -6
  136. package/docs/schema/dot-env-v1.json +0 -110
  137. package/docs/schema/dot-registry-v1.json +0 -33
  138. package/docs/security/AI_ACT_COMPLIANCE.md +0 -94
  139. package/docs/security/AUDIT_BYPASS.md +0 -103
  140. package/docs/security/AUTOMATION_SECRETS.md +0 -26
  141. package/docs/security/CI_EGRESS_ALLOWLIST.md +0 -127
  142. package/docs/security/CI_PINNING.md +0 -129
  143. package/docs/security/COMMIT_SIGNING.md +0 -138
  144. package/docs/security/COMPLIANCE.md +0 -458
  145. package/docs/security/DEPS_DEV_EXCEPTIONS.md +0 -86
  146. package/docs/security/DISCLOSURE.md +0 -130
  147. package/docs/security/ENCRYPTION.md +0 -57
  148. package/docs/security/FMEA.md +0 -159
  149. package/docs/security/FUZZING.md +0 -209
  150. package/docs/security/HISTORY_FILTERING.md +0 -132
  151. package/docs/security/INCIDENT_RESPONSE.md +0 -579
  152. package/docs/security/INSTALL_VERIFICATION.md +0 -122
  153. package/docs/security/KEYS.md +0 -49
  154. package/docs/security/KEY_ROTATION.md +0 -303
  155. package/docs/security/MCP_POLICY.md +0 -78
  156. package/docs/security/POLICY_RELEASES.md +0 -37
  157. package/docs/security/README.md +0 -28
  158. package/docs/security/SCORECARD.md +0 -195
  159. package/docs/security/SECRETS.md +0 -158
  160. package/docs/security/SECURITY.md +0 -45
  161. package/docs/security/SECURITY_CHECKLIST.md +0 -55
  162. package/docs/security/SHELL_EXEMPTIONS.md +0 -145
  163. package/docs/security/SOUP_REGISTER.md +0 -36
  164. package/docs/security/THREAT_MODEL.md +0 -130
  165. package/docs/security/VERIFICATION_VALIDATION.md +0 -228
  166. package/docs/security/VERIFY_RELEASE.md +0 -201
  167. package/docs/security/security-pubkey.asc +0 -15
  168. package/docs/stylesheets/extra.css +0 -444
  169. package/docs/themes/README.md +0 -10
  170. package/docs/themes/VISUAL_INTEGRITY_REPORT.md +0 -30
  171. package/docs/themes/hero-shot.svg +0 -78
  172. package/scripts/README.md +0 -123
  173. package/scripts/ci/check-copyright-headers.sh +0 -8
  174. package/scripts/ci/check-shell-preamble.sh +0 -8
  175. package/scripts/ci/guard-gitleaks-checkout.sh +0 -8
  176. package/scripts/demo/record.sh +0 -43
  177. package/scripts/diagnostics/a2a-conformance.sh +0 -163
  178. package/scripts/diagnostics/alias-governance.sh +0 -165
  179. package/scripts/diagnostics/aliases-cheatsheet.sh +0 -74
  180. package/scripts/diagnostics/aliases-manifest.sh +0 -77
  181. package/scripts/diagnostics/attest-verify.sh +0 -147
  182. package/scripts/diagnostics/benchmark.sh +0 -408
  183. package/scripts/diagnostics/conflicts.sh +0 -73
  184. package/scripts/diagnostics/doctor-unified.sh +0 -43
  185. package/scripts/diagnostics/doctor.sh +0 -797
  186. package/scripts/diagnostics/drift-dashboard.sh +0 -203
  187. package/scripts/diagnostics/health.sh +0 -656
  188. package/scripts/diagnostics/history-analysis.sh +0 -86
  189. package/scripts/diagnostics/mcp-doctor.sh +0 -582
  190. package/scripts/diagnostics/perf.sh +0 -453
  191. package/scripts/diagnostics/scorecard.sh +0 -120
  192. package/scripts/diagnostics/secret-governance.sh +0 -65
  193. package/scripts/diagnostics/security-score.sh +0 -467
  194. package/scripts/diagnostics/smoke-test.sh +0 -88
  195. package/scripts/diagnostics/snapshot.sh +0 -90
  196. package/scripts/diagnostics/verify.sh +0 -108
  197. package/scripts/diagnostics/verify_state.sh +0 -73
  198. package/scripts/diagnostics/version-locks.sh +0 -94
  199. package/scripts/diagnostics/workstation-attestation.sh +0 -212
  200. package/scripts/dot/commands/agent.sh +0 -535
  201. package/scripts/dot/commands/agents.sh +0 -352
  202. package/scripts/dot/commands/ai.sh +0 -600
  203. package/scripts/dot/commands/aliases.sh +0 -277
  204. package/scripts/dot/commands/appearance.sh +0 -110
  205. package/scripts/dot/commands/completion.sh +0 -171
  206. package/scripts/dot/commands/core.sh +0 -217
  207. package/scripts/dot/commands/diagnostics.sh +0 -265
  208. package/scripts/dot/commands/env-emit.sh +0 -203
  209. package/scripts/dot/commands/fleet.sh +0 -711
  210. package/scripts/dot/commands/init.sh +0 -185
  211. package/scripts/dot/commands/lint.sh +0 -208
  212. package/scripts/dot/commands/manual.sh +0 -169
  213. package/scripts/dot/commands/meta.sh +0 -438
  214. package/scripts/dot/commands/patterns.sh +0 -55
  215. package/scripts/dot/commands/registry.sh +0 -455
  216. package/scripts/dot/commands/restore.sh +0 -232
  217. package/scripts/dot/commands/secrets.sh +0 -296
  218. package/scripts/dot/commands/security.sh +0 -102
  219. package/scripts/dot/commands/tools.sh +0 -570
  220. package/scripts/dot/data/alias-deprecations.tsv +0 -2
  221. package/scripts/dot/powershell/Dot.psm1 +0 -319
  222. package/scripts/fonts/install-nerd-fonts.sh +0 -75
  223. package/scripts/fonts/patch-fonts.sh +0 -36
  224. package/scripts/git-hooks/install.sh +0 -12
  225. package/scripts/git-hooks/pre-commit +0 -12
  226. package/scripts/git-hooks/pre-commit-audit.sh +0 -146
  227. package/scripts/git-hooks/pre-push +0 -105
  228. package/scripts/git-hooks/prepare-commit-msg +0 -29
  229. package/scripts/lib/secrets_provider.sh +0 -200
  230. package/scripts/nvim/headless-upgrade.lua +0 -81
  231. package/scripts/ops/ai-setup.sh +0 -71
  232. package/scripts/ops/bundle.sh +0 -104
  233. package/scripts/ops/chaos.sh +0 -50
  234. package/scripts/ops/chezmoi-apply.sh +0 -333
  235. package/scripts/ops/chezmoi-diff.sh +0 -16
  236. package/scripts/ops/chezmoi-remove.sh +0 -46
  237. package/scripts/ops/chezmoi-update.sh +0 -67
  238. package/scripts/ops/heal-chezmoi.sh +0 -87
  239. package/scripts/ops/heal-system.sh +0 -129
  240. package/scripts/ops/heal-tools.sh +0 -297
  241. package/scripts/ops/heal.sh +0 -223
  242. package/scripts/ops/post-apply-repair.sh +0 -107
  243. package/scripts/ops/prewarm.sh +0 -128
  244. package/scripts/ops/release.sh +0 -262
  245. package/scripts/ops/rollback.sh +0 -613
  246. package/scripts/ops/setup.sh +0 -138
  247. package/scripts/ops/teleport.sh +0 -34
  248. package/scripts/qa/check-feature-matrix.sh +0 -296
  249. package/scripts/qa/check-version-consistency.sh +0 -12
  250. package/scripts/qa/coverage-baseline.sh +0 -61
  251. package/scripts/qa/docs-coverage.sh +0 -118
  252. package/scripts/qa/examples-coverage.sh +0 -94
  253. package/scripts/qa/powershell-contract.ps1 +0 -95
  254. package/scripts/qa/reliability-audit.sh +0 -139
  255. package/scripts/qa/scorecard-snapshot.sh +0 -128
  256. package/scripts/qa/traceability-coverage.sh +0 -124
  257. package/scripts/qa/validate-examples.sh +0 -90
  258. package/scripts/qa/wsl-contract.sh +0 -12
  259. package/scripts/secrets/age-init.sh +0 -82
  260. package/scripts/secrets/create-secrets-file.sh +0 -46
  261. package/scripts/secrets/encrypt-ssh-key.sh +0 -44
  262. package/scripts/security/backup.sh +0 -58
  263. package/scripts/security/check-disclosure-key-expiry.sh +0 -111
  264. package/scripts/security/dns-doh.sh +0 -52
  265. package/scripts/security/encryption-check.sh +0 -55
  266. package/scripts/security/enforce-policies.sh +0 -552
  267. package/scripts/security/firewall.sh +0 -91
  268. package/scripts/security/lock-configs.sh +0 -67
  269. package/scripts/security/lock-screen.sh +0 -56
  270. package/scripts/security/manage-secrets.sh +0 -429
  271. package/scripts/security/ssh-cert.sh +0 -204
  272. package/scripts/security/telemetry-kill.sh +0 -51
  273. package/scripts/security/usb-safety.sh +0 -52
  274. package/scripts/theme/apply-gnome-theme.sh +0 -333
  275. package/scripts/theme/extract-heic-frames.sh +0 -115
  276. package/scripts/theme/extract-theme.py +0 -1020
  277. package/scripts/theme/install-boot-logo.sh +0 -63
  278. package/scripts/theme/install-catppuccin-themes.sh +0 -371
  279. package/scripts/theme/install-cursors.sh +0 -26
  280. package/scripts/theme/install-file-icons.sh +0 -27
  281. package/scripts/theme/install-grub-theme.sh +0 -62
  282. package/scripts/theme/install-lock-icon.sh +0 -31
  283. package/scripts/theme/merge-wallpaper.sh +0 -146
  284. package/scripts/theme/rebuild-themes.sh +0 -603
  285. package/scripts/theme/switch.sh +0 -476
  286. package/scripts/theme/wallpaper-rotate.sh +0 -137
  287. package/scripts/theme/wallpaper-sync.sh +0 -690
  288. package/scripts/tools/cmatrix.sh +0 -22
  289. package/scripts/tools/detect-collisions.py +0 -103
  290. package/scripts/tools/emoji-picker.sh +0 -49
  291. package/scripts/tools/figlet-banner.sh +0 -19
  292. package/scripts/tools/log-rotate.sh +0 -31
  293. package/scripts/tools/lolcat-wrap.sh +0 -20
  294. package/scripts/tools/pipes.sh +0 -49
  295. package/scripts/tuning/linux.sh +0 -186
  296. package/scripts/tuning/macos.sh +0 -56
  297. package/scripts/uninstall.sh +0 -86
  298. package/scripts/verify-release-versions +0 -156
  299. package/scripts/version-sync.sh +0 -714
  300. package/templates/chezmoi-data/geekom-a9.toml.example +0 -21
  301. package/templates/chezmoi-data/mac-m1.toml.example +0 -16
  302. package/templates/chezmoi-data/mac-t2-linux.toml.example +0 -21
  303. package/templates/chezmoi-data/surface-pro-7p.toml.example +0 -21
  304. package/templates/projects/go/.github/workflows/ci.yml +0 -31
  305. package/templates/projects/go/README.md +0 -7
  306. package/templates/projects/go/cmd/__PROJECT_NAME__/main.go +0 -8
  307. package/templates/projects/go/go.mod +0 -3
  308. package/templates/projects/go/go.sum +0 -0
  309. package/templates/projects/molecule/README.md +0 -7
  310. package/templates/projects/molecule/converge.yml +0 -7
  311. package/templates/projects/molecule/molecule.yml +0 -16
  312. package/templates/projects/node/.github/workflows/ci.yml +0 -30
  313. package/templates/projects/node/README.md +0 -7
  314. package/templates/projects/node/package-lock.json +0 -12
  315. package/templates/projects/node/package.json +0 -10
  316. package/templates/projects/node/src/index.js +0 -3
  317. package/templates/projects/packer/README.md +0 -15
  318. package/templates/projects/packer/main.pkr.hcl +0 -15
  319. package/templates/projects/python/.github/workflows/ci.yml +0 -34
  320. package/templates/projects/python/README.md +0 -7
  321. package/templates/projects/python/pyproject.toml +0 -25
  322. package/templates/projects/python/src/__PROJECT_NAME__/__init__.py +0 -2
  323. package/templates/projects/python/tests/test_basic.py +0 -3
@@ -1,197 +0,0 @@
1
- ---
2
- render_with_liquid: false
3
- ---
4
-
5
- # Tutorial: First Install
6
-
7
- End-to-end installation and verification, from zero to a fully-working environment in under 5 minutes.
8
-
9
- ## Prerequisites
10
-
11
- - macOS 14+, Ubuntu/Debian 20.04+, Arch (rolling), Fedora 39+, or WSL2 on Windows 11
12
- - `git` and `curl` installed
13
- - Shell access (Zsh, Fish, or Bash)
14
- - Optional but recommended: SSH key for signing commits
15
-
16
- ## Step 1: Run the Installer
17
-
18
- ```sh
19
- bash -c "$(curl -fsSL https://raw.githubusercontent.com/sebastienrousseau/dotfiles/main/install.sh)"
20
- ```
21
-
22
- The installer:
23
-
24
- 1. Verifies prerequisites (`git`, `curl`, write access to `~`)
25
- 2. Downloads chezmoi via the SHA256-verified installer
26
- 3. Clones the dotfiles source to `~/.dotfiles`
27
- 4. Runs `chezmoi init` to prompt for per-machine settings
28
- 5. Runs `chezmoi apply` with progress output
29
-
30
- Expected output:
31
-
32
- ```
33
- [install] Verifying prerequisites
34
- [install] Installing chezmoi (verified SHA256)
35
- [install] Cloning source to ~/.dotfiles
36
- [install] Running chezmoi init (interactive)
37
- Git email: you@example.com
38
- Machine preset [macbook-t2]:
39
- Default theme [tahoe-dark]:
40
- Default shell [fish]:
41
- [install] Applying configuration (180 files)
42
- [install] ✓ Installation complete
43
- ```
44
-
45
- ## Step 2: Verify
46
-
47
- Open a new shell and run:
48
-
49
- ```sh
50
- dot doctor
51
- ```
52
-
53
- Expected output:
54
-
55
- ```
56
- ◈ DOTFILES
57
- Dot • Diagnostics
58
-
59
- --- Health Check ---
60
- ✓ Paths ~/.local/bin, mise shims present
61
- ✓ Tools git, chezmoi, mise installed
62
- ✓ Chezmoi clean (no drift)
63
- ✓ Shell fish (500ms startup)
64
- ✓ Security SSH key present, Age key present
65
- ✓ Portability LC_ALL=en_US.UTF-8, TERM=xterm-256color
66
-
67
- Score: 98/100
68
- ```
69
-
70
- Any warnings will be accompanied by a suggested fix.
71
-
72
- ## Step 3: Take the Tour
73
-
74
- ```sh
75
- dot learn
76
- ```
77
-
78
- An interactive walkthrough covering:
79
-
80
- - Shell basics and aliases
81
- - Secrets workflow
82
- - Theme switching
83
- - Performance tuning
84
- - Security hardening
85
-
86
- Each section takes 30-60 seconds. You can skip sections or exit at any time.
87
-
88
- ## Step 4: Customize
89
-
90
- ### Per-Machine Settings
91
-
92
- Edit `~/.config/chezmoi/chezmoi.toml`:
93
-
94
- ```toml
95
- [data]
96
- machine = "macbook-t2" # see .chezmoidata/hardware.toml for presets
97
- theme = "tahoe-dark" # see `dot theme list`
98
- default_shell = "fish" # fish, zsh, bash
99
- terminal_font_family = "JetBrainsMono Nerd Font"
100
- terminal_font_size = 12
101
- ```
102
-
103
- ### Feature Flags
104
-
105
- Edit `.chezmoidata.toml` in the source directory (`~/.dotfiles/.chezmoidata.toml`):
106
-
107
- ```toml
108
- [features]
109
- dms = false # Dank Material Shell (Niri)
110
- linux_desktop = false # Linux-specific desktop configs
111
- waybar = false # Waybar status bar
112
- ```
113
-
114
- After editing, apply:
115
-
116
- ```sh
117
- dot apply
118
- ```
119
-
120
- ## Step 5: Add Your Identity
121
-
122
- If you have an SSH key, configure signed commits:
123
-
124
- ```sh
125
- git config --global user.signingkey ~/.ssh/id_ed25519.pub
126
- git config --global commit.gpgsign true
127
- git config --global gpg.format ssh
128
- git config --global gpg.ssh.allowedSignersFile ~/.ssh/allowed_signers
129
- ```
130
-
131
- Add your own key to `~/.ssh/allowed_signers`:
132
-
133
- ```
134
- you@example.com ssh-ed25519 AAAA...
135
- ```
136
-
137
- Test:
138
-
139
- ```sh
140
- cd ~/.dotfiles
141
- git commit --allow-empty -m "test: signature"
142
- git verify-commit HEAD
143
- # Good "git" signature for you@example.com
144
- ```
145
-
146
- ## Step 6: First Theme Switch
147
-
148
- ```sh
149
- dot theme
150
- ```
151
-
152
- A picker opens showing all paired wallpaper themes on your system. Select one and press Enter. The terminal, editor, desktop wallpaper, and macOS accent color update in about 3 seconds.
153
-
154
- ## Troubleshooting
155
-
156
- If `dot doctor` shows failures:
157
-
158
- ```sh
159
- dot heal # auto-fix common issues
160
- dot heal -n # dry-run first to see what would change
161
- ```
162
-
163
- If the installation is broken beyond repair:
164
-
165
- ```sh
166
- dot rollback # restore the previous known-good state
167
- ```
168
-
169
- If `dot doctor` still fails after heal + rollback, check:
170
-
171
- - `~/.local/state/dotfiles/install.log` — installer log
172
- - `~/.local/state/dotfiles/heal.log` — heal attempts
173
- - `chezmoi doctor` — chezmoi-specific diagnostics
174
-
175
- Still stuck? See [Cookbook: Troubleshooting](../04-cookbook/02-troubleshooting.md).
176
-
177
- ## What Got Installed
178
-
179
- After `dot doctor` reports a healthy score, you have:
180
-
181
- | Surface | What's There |
182
- |:---|:---|
183
- | **Shell** | Fish (default), Zsh, Nushell, Bash all configured with cached init |
184
- | **Editor** | Neovim with lazy.nvim + LSP + theme-synced colorscheme |
185
- | **Terminal** | Ghostty/Alacritty/Kitty/WezTerm configs (pick whichever is installed) |
186
- | **Git** | Signed commits, delta diff, conventional commit template |
187
- | **AI tooling** | Codex, Copilot CLI, Antigravity CLI (`agy`) via native installer; Claude Code via Anthropic's native installer |
188
- | **Secret store** | Age key, SOPS config, `dot secrets` command ready |
189
- | **Security** | Gitleaks, detect-secrets baseline, signed attestation log |
190
- | **Theme engine** | K-Means wallpaper extractor, system + custom wallpaper discovery |
191
-
192
- ## Next
193
-
194
- - [Tutorial: Add a Wallpaper → Theme](02-add-wallpaper.md)
195
- - [Tutorial: Create a Machine Profile](03-create-profile.md)
196
- - [Tutorial: Encrypt a Secret](04-encrypt-secret.md)
197
- - [Cookbook: 30+ recipes](../04-cookbook/01-recipes.md)
@@ -1,216 +0,0 @@
1
- ---
2
- render_with_liquid: false
3
- ---
4
-
5
- # Tutorial: Add a Wallpaper → Theme
6
-
7
- Drop an image. Get a fully-WCAG-AAA terminal theme.
8
-
9
- ## Prerequisites
10
-
11
- - Dotfiles installed (see [First Install](01-first-install.md))
12
- - `magick` (ImageMagick) and `python3` available (installed by default)
13
- - Optional: `heif-enc` for creating dynamic HEIC (`brew install libheif`)
14
-
15
- ## Option A: Drop a Static Image
16
-
17
- The simplest path: place a wallpaper in `~/Pictures/Wallpapers/` and rebuild.
18
-
19
- ```sh
20
- cp ~/Downloads/my-wallpaper.jpg ~/Pictures/Wallpapers/mytheme-dark.jpg
21
- cp ~/Downloads/my-wallpaper-light.jpg ~/Pictures/Wallpapers/mytheme-light.jpg
22
-
23
- dot theme rebuild
24
- ```
25
-
26
- Expected output:
27
-
28
- ```
29
- Discovering wallpapers...
30
- Found: 126 system, 26 custom (152 total)
31
-
32
- Generating themes...
33
- Processing 2 wallpapers (4 parallel jobs)...
34
- mytheme-dark [custom] ✓
35
- mytheme-light [custom] ✓
36
-
37
- Results: 2 processed, 150 cached, 0 failed
38
-
39
- Assembling themes.toml...
40
- Written: ~/.dotfiles/.chezmoidata/themes.toml (608 theme sections)
41
-
42
- Done. Run 'dot theme list' to see available themes.
43
- ```
44
-
45
- Switch to the new theme:
46
-
47
- ```sh
48
- dot theme mytheme-dark
49
- ```
50
-
51
- ## Option B: Dynamic HEIC (Recommended)
52
-
53
- Apple's dynamic HEIC format stores both dark and light variants in a single file with metadata that macOS uses to auto-switch appearance. This is the native format for Apple system wallpapers.
54
-
55
- ### Create a Dynamic HEIC From a Pair
56
-
57
- If you have `mytheme-dark.jpg` + `mytheme-light.jpg`:
58
-
59
- ```sh
60
- bash scripts/theme/merge-wallpaper.sh mytheme
61
- ```
62
-
63
- This:
64
-
65
- 1. Resizes both to 6016×6016 (preserving aspect ratio, center-cropped)
66
- 2. Encodes both into a single `.heic` via `heif-enc`
67
- 3. Injects `apple_desktop:apr` XMP metadata (image 0 = light, image 1 = dark)
68
- 4. Writes to `~/Pictures/Wallpapers/mytheme.heic`
69
- 5. Removes the two source files
70
-
71
- Verify:
72
-
73
- ```sh
74
- heif-info ~/Pictures/Wallpapers/mytheme.heic
75
- # image: 6016x6016 (id=1), primary ← light
76
- # image: 6016x6016 (id=4) ← dark
77
- # metadata:
78
- # XMP: 2473 bytes ← appearance mapping
79
- ```
80
-
81
- ### Rebuild Themes
82
-
83
- ```sh
84
- dot theme rebuild
85
- # mytheme-light [custom] ✓
86
- # mytheme-dark [custom] ✓
87
- ```
88
-
89
- The engine extracts each frame independently and generates paired themes.
90
-
91
- ## Option C: Golden Ratio Brightness (Advanced)
92
-
93
- For best perceived contrast between your dark and light themes, target a brightness ratio of ~1.6× (the golden ratio, approximately 1.618).
94
-
95
- Measure:
96
-
97
- ```sh
98
- magick ~/Pictures/Wallpapers/mytheme-dark.jpg -resize 1x1\! -format '%[fx:mean]' info:
99
- # 0.30
100
-
101
- magick ~/Pictures/Wallpapers/mytheme-light.jpg -resize 1x1\! -format '%[fx:mean]' info:
102
- # 0.48
103
- # Ratio: 0.48 / 0.30 = 1.6 ← ideal
104
- ```
105
-
106
- Adjust a pair if the ratio is off:
107
-
108
- ```sh
109
- # Darken light to 0.485 brightness
110
- mod=$(python3 -c "print(int((0.485 / 0.60) * 100))") # current mean = 0.60
111
- magick input.jpg -modulate ${mod},100,100 output.jpg
112
- ```
113
-
114
- ## Option D: Install System Wallpapers (Already-Available)
115
-
116
- macOS ships dozens of wallpapers you can use directly — no download needed.
117
-
118
- List what's available:
119
-
120
- ```sh
121
- dot theme rebuild --list
122
- ```
123
-
124
- Output:
125
-
126
- ```
127
- NAME SOURCE PATH
128
- ---- ------ ----
129
- monterey-dark system /System/Library/Desktop Pictures/.thumbnails/Monterey Dark.heic
130
- monterey-light system /System/Library/Desktop Pictures/.thumbnails/Monterey Light.heic
131
- tahoe-dark system /System/Library/Desktop Pictures/.thumbnails/Tahoe Dark.heic
132
- tahoe-light system /System/Library/Desktop Pictures/.thumbnails/Tahoe Light.heic
133
- sonoma-dark system /System/Library/Desktop Pictures/.thumbnails/Sonoma Dark.heic
134
- ...
135
- Total: 152 wallpapers
136
- ```
137
-
138
- Switch to any system wallpaper:
139
-
140
- ```sh
141
- dot theme monterey-dark
142
- ```
143
-
144
- The engine extracts Monterey Dark's dominant colors, generates a palette, and applies it to every surface.
145
-
146
- ## Verifying the Result
147
-
148
- After a switch, check the applied colors:
149
-
150
- ```sh
151
- # See the current theme's palette
152
- grep -A30 "^\[themes.mytheme-dark\]" ~/.dotfiles/.chezmoidata/themes.toml
153
- ```
154
-
155
- Check WCAG compliance (always passes for generated themes):
156
-
157
- ```sh
158
- bash tests/unit/theme/test_themes_toml.sh
159
- # RESULTS: 11:11:0 (11 tests, 11 passed, 0 failed)
160
- ```
161
-
162
- Verify the applied wallpaper:
163
-
164
- ```sh
165
- # macOS
166
- osascript -e 'tell application "System Events" to get picture of every desktop'
167
-
168
- # Linux (GNOME)
169
- gsettings get org.gnome.desktop.background picture-uri
170
- gsettings get org.gnome.desktop.background picture-uri-dark
171
- ```
172
-
173
- ## Troubleshooting
174
-
175
- ### Low Contrast on Both Variants
176
-
177
- Your wallpaper pair doesn't have enough brightness difference. The theme will still generate but `dot theme list` may filter it from the picker. Adjust the source images to increase separation (brighter light variant, darker dark variant).
178
-
179
- ### K-Means Failed to Converge
180
-
181
- Rare, but possible with images that are nearly solid color. The engine uses a seeded RNG and 3 runs — if all 3 fail, the output theme is skipped. Fix: use a more chromatic source image.
182
-
183
- ### Wallpaper Doesn't Apply on Linux
184
-
185
- Check your desktop environment:
186
-
187
- - **GNOME** — uses `gsettings picture-uri` (HEIC auto-converted to PNG)
188
- - **KDE** — uses `plasma-apply-wallpaperimage`
189
- - **Niri** — uses DMS IPC or `swaybg`
190
- - **i3/sway (no DE)** — falls back to `feh`
191
-
192
- If none are detected, set `$WALLPAPER_COMMAND` in `~/.config/dotfiles/config`.
193
-
194
- ### The Dark/Light Auto-Switch Isn't Working on macOS
195
-
196
- The `apple_desktop:apr` metadata may be missing. Verify:
197
-
198
- ```sh
199
- magick ~/Pictures/Wallpapers/mytheme.heic -format '%[XMP]' info: | grep apple_desktop
200
- ```
201
-
202
- If empty, re-run `merge-wallpaper.sh` — the XMP injection step may have failed due to missing `exiftool`.
203
-
204
- ## Summary
205
-
206
- You've added a custom wallpaper, generated a WCAG AAA theme from it, and verified cross-surface application. You can now:
207
-
208
- - Add more wallpapers to build a library
209
- - Share your wallpaper directory across fleet hosts (it's gitignored by default)
210
- - Use `dot theme toggle` to swap dark↔light of your current family
211
-
212
- ## Next
213
-
214
- - [Concept: The Theme Engine](../01-concepts/03-theme-engine.md) — deep dive
215
- - [Tutorial: Create a Profile](03-create-profile.md)
216
- - [Cookbook: Theming Recipes](../04-cookbook/01-recipes.md)
@@ -1,244 +0,0 @@
1
- ---
2
- render_with_liquid: false
3
- ---
4
- {% raw %}
5
-
6
- # Tutorial: Create a Machine Profile
7
-
8
- Machine profiles tell chezmoi how to render templates differently on each host — display scale, keyboard layout, performance preset, available features.
9
-
10
- ## When to Use a Profile
11
-
12
- - You have more than one host (laptop + desktop, work + personal)
13
- - Your hardware differs materially (HiDPI laptop vs 1080p external, ARM vs x86)
14
- - Certain features only apply to specific setups (Niri on Wayland, AeroSpace on macOS)
15
-
16
- ## Step 1: Choose or Create a Preset
17
-
18
- Presets live in `.chezmoidata/hardware.toml`:
19
-
20
- ```toml
21
- [hardware.macbook-t2]
22
- display_scale = 2.0
23
- kbd_layout = "qwerty"
24
- modifier_mode = "left-cmd-control"
25
- perf_profile = "laptop"
26
- wm = "aerospace"
27
- [hardware.macbook-t2.features]
28
- retina = true
29
- touchid = true
30
-
31
- [hardware.surface-pro]
32
- display_scale = 1.5
33
- kbd_layout = "colemak-dh"
34
- modifier_mode = "standard"
35
- perf_profile = "laptop"
36
- wm = "niri"
37
- [hardware.surface-pro.features]
38
- touch = true
39
- pen = true
40
- ```
41
-
42
- If an existing preset fits: use its name. Otherwise, add a new one.
43
-
44
- ## Step 2: Select the Preset for This Host
45
-
46
- Edit `~/.config/chezmoi/chezmoi.toml`:
47
-
48
- ```toml
49
- [data]
50
- machine = "surface-pro" # choose from .chezmoidata/hardware.toml
51
- theme = "monterey-dark"
52
- default_shell = "fish"
53
- terminal_font_family = "JetBrainsMono Nerd Font"
54
- terminal_font_size = 11 # larger for HiDPI, smaller for dense screens
55
- ```
56
-
57
- `chezmoi.toml` is **not** in the repository — each host has its own. Generated by `chezmoi init` on first install.
58
-
59
- ## Step 3: Reference the Preset in Templates
60
-
61
- Inside any `.tmpl` file:
62
-
63
- ```go
64
- {{- $hw := index .hardware .machine }}
65
-
66
- # Ghostty config — uses machine-specific font size
67
- font-family = "{{ .terminal_font_family }}"
68
- font-size = {{ .terminal_font_size }}
69
-
70
- # DPI-aware settings
71
- {{ if eq $hw.display_scale 2.0 }}
72
- window-decoration = false
73
- {{ else }}
74
- window-decoration = true
75
- {{ end }}
76
-
77
- # Feature-gated config
78
- {{ if $hw.features.touch }}
79
- mouse-scroll-multiplier = 3
80
- {{ end }}
81
- ```
82
-
83
- After editing the template, run `chezmoi apply` or `dot apply`.
84
-
85
- ## Step 4: Add a New Preset
86
-
87
- Suppose you have a new mini PC. Add to `.chezmoidata/hardware.toml`:
88
-
89
- ```toml
90
- [hardware.my-nuc]
91
- display_scale = 1.0 # external 1440p
92
- kbd_layout = "qwerty"
93
- modifier_mode = "standard"
94
- perf_profile = "desktop"
95
- wm = "gnome"
96
- [hardware.my-nuc.features]
97
- multi-monitor = true
98
- gaming = true
99
- ```
100
-
101
- Then on that host:
102
-
103
- ```toml
104
- # ~/.config/chezmoi/chezmoi.toml
105
- [data]
106
- machine = "my-nuc"
107
- ```
108
-
109
- Apply:
110
-
111
- ```sh
112
- dot apply
113
- ```
114
-
115
- Templates automatically pick up the new preset data.
116
-
117
- ## Step 5: Per-Preset Feature Flags
118
-
119
- Feature flags in `.chezmoidata.toml` can be gated by preset:
120
-
121
- ```toml
122
- # .chezmoidata.toml — defaults for all hosts
123
- [features]
124
- dms = false
125
- linux_desktop = false
126
- waybar = false
127
- ```
128
-
129
- Override per-preset in `.chezmoidata/hardware.toml`:
130
-
131
- ```toml
132
- [hardware.surface-pro.features]
133
- touch = true
134
- pen = true
135
- dms = true # override feature default
136
- waybar = true
137
- ```
138
-
139
- In templates:
140
-
141
- ```go
142
- {{- $hw := index .hardware .machine }}
143
- {{- $features := mergeOverwrite .features $hw.features }}
144
-
145
- {{ if $features.waybar }}
146
- # ... waybar-specific config ...
147
- {{ end }}
148
- ```
149
-
150
- ## Example: Font Size by Preset
151
-
152
- A single Ghostty config that renders correctly on every host:
153
-
154
- ```go
155
- # dot_config/ghostty/config.tmpl
156
- {{- $hw := index .hardware .machine }}
157
-
158
- theme = {{ .theme }}
159
- font-family = "{{ .terminal_font_family }}"
160
-
161
- # DPI-aware font sizing
162
- {{ if eq $hw.display_scale 2.0 }}
163
- font-size = 12 # Retina MacBook
164
- {{ else if eq $hw.display_scale 1.5 }}
165
- font-size = 11 # Surface Pro
166
- {{ else }}
167
- font-size = 14 # External 1440p/4K
168
- {{ end }}
169
- ```
170
-
171
- On the MacBook: 12pt. On the Surface: 11pt. On the NUC: 14pt. One template.
172
-
173
- ## Example: Platform × Preset
174
-
175
- Combine `.chezmoi.os` with the preset:
176
-
177
- ```go
178
- {{- $hw := index .hardware .machine }}
179
-
180
- {{ if and (eq .chezmoi.os "darwin") (eq $hw.wm "aerospace") }}
181
- # macOS + AeroSpace specifics
182
- {{ else if and (eq .chezmoi.os "linux") (eq $hw.wm "niri") }}
183
- # Linux + Niri specifics
184
- {{ end }}
185
- ```
186
-
187
- ## Listing Known Presets
188
-
189
- ```sh
190
- chezmoi execute-template '{{- range $name, $_ := .hardware }}{{ $name }}{{ "\n" }}{{ end }}'
191
- # macbook-t2
192
- # surface-pro
193
- # geekom-a9
194
- # my-nuc
195
- ```
196
-
197
- ## Changing Presets on an Existing Host
198
-
199
- If you reassign a host to a different preset:
200
-
201
- ```sh
202
- # Edit ~/.config/chezmoi/chezmoi.toml
203
- # machine = "my-nuc" (was "surface-pro")
204
-
205
- dot apply --dry-run # preview changes
206
- dot apply # apply
207
- ```
208
-
209
- Chezmoi re-renders every template with the new preset data. No reboot needed.
210
-
211
- ## Troubleshooting
212
-
213
- ### "Machine preset 'foo' not found"
214
-
215
- The `machine` value in `~/.config/chezmoi/chezmoi.toml` doesn't match any key under `[hardware.*]` in `.chezmoidata/hardware.toml`. Check spelling.
216
-
217
- ### Templates Silently Use Defaults
218
-
219
- Make sure you're using `{{- $hw := index .hardware .machine }}` at the top of templates. If `machine` is empty, `index` returns `nil` — reference with `{{- with $hw }}...{{- end }}` guards.
220
-
221
- ### Feature Flag Not Taking Effect
222
-
223
- Verify the merge order:
224
-
225
- ```sh
226
- chezmoi execute-template '{{- $hw := index .hardware .machine -}}{{- $f := mergeOverwrite .features $hw.features -}}{{ $f | toToml }}'
227
- ```
228
-
229
- Per-preset features must override global defaults. If the output doesn't reflect that, check template syntax.
230
-
231
- ## Summary
232
-
233
- Profiles let one source tree produce correctly-configured output on every host you own. The machinery:
234
-
235
- 1. `.chezmoidata/hardware.toml` defines presets (declarative)
236
- 2. `~/.config/chezmoi/chezmoi.toml` selects a preset per host (per-host override)
237
- 3. `.tmpl` files read `.hardware` + `.machine` (template-time)
238
-
239
- ## Next
240
-
241
- - [Concept: Fleet Architecture](../01-concepts/04-fleet.md)
242
- - [Reference: Templates](../03-reference/04-templates.md)
243
- - [Reference: Feature Flags](../03-reference/05-feature-flags.md)
244
- {% endraw %}