@sebastienrousseau/dotfiles 0.2.481 → 0.2.500

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 (546) hide show
  1. package/CHANGELOG.md +122 -32
  2. package/LICENSE +1 -1
  3. package/README.md +211 -242
  4. package/docs/.vitepress/reports/localization-readability-audit.md +69 -0
  5. package/docs/AI.md +102 -0
  6. package/docs/COPYRIGHT +2 -2
  7. package/docs/NAMING_CONVENTIONS.md +95 -0
  8. package/docs/README.md +58 -249
  9. package/docs/adr/ADR-004-cli-architecture.md +2 -2
  10. package/docs/adr/ADR-006-shell-selection.md +2 -2
  11. package/docs/adr/ADR-007-multi-shell-parity.md +53 -0
  12. package/docs/adr/ADR-008-alias-system-architecture.md +85 -0
  13. package/docs/adr/README.md +2 -3
  14. package/docs/architecture/ARCHITECTURE.md +113 -0
  15. package/docs/architecture/INTEROP.md +36 -0
  16. package/docs/architecture/REPO_LAYOUT.md +237 -0
  17. package/docs/architecture/WALKTHROUGH.md +82 -0
  18. package/docs/architecture/fleet-deployment.md +73 -0
  19. package/docs/archive/EUXIS_2026_REVIEW.md +119 -0
  20. package/docs/archive/MILESTONE_v0.2.493.md +43 -0
  21. package/docs/{PLAN.md → archive/PLAN.md} +1 -1
  22. package/docs/guides/INSTALL.md +140 -0
  23. package/docs/{NEOVIM_IDE_GUIDE.md → guides/NEOVIM_IDE_GUIDE.md} +12 -12
  24. package/docs/guides/THEMING.md +222 -0
  25. package/docs/{TROUBLESHOOTING.md → guides/TROUBLESHOOTING.md} +36 -0
  26. package/docs/{WSL2_NIX_TROUBLESHOOTING.md → guides/WSL2_NIX_TROUBLESHOOTING.md} +8 -8
  27. package/docs/index.md +39 -0
  28. package/docs/interop/A2A.md +32 -0
  29. package/docs/manual/00-introduction.md +85 -0
  30. package/docs/manual/01-concepts/01-architecture.md +134 -0
  31. package/docs/manual/01-concepts/02-trust-model.md +178 -0
  32. package/docs/manual/01-concepts/03-theme-engine.md +182 -0
  33. package/docs/manual/01-concepts/04-fleet.md +142 -0
  34. package/docs/manual/01-concepts/05-self-healing.md +197 -0
  35. package/docs/manual/02-tutorials/01-first-install.md +192 -0
  36. package/docs/manual/02-tutorials/02-add-wallpaper.md +211 -0
  37. package/docs/manual/02-tutorials/03-create-profile.md +238 -0
  38. package/docs/manual/02-tutorials/04-encrypt-secret.md +275 -0
  39. package/docs/manual/02-tutorials/05-deploy-fleet.md +279 -0
  40. package/docs/manual/03-reference/01-dot-cli.md +413 -0
  41. package/docs/manual/03-reference/02-config-files.md +259 -0
  42. package/docs/manual/03-reference/03-environment.md +120 -0
  43. package/docs/manual/03-reference/04-templates.md +184 -0
  44. package/docs/manual/03-reference/05-feature-flags.md +118 -0
  45. package/docs/manual/04-cookbook/01-recipes.md +281 -0
  46. package/docs/manual/04-cookbook/02-troubleshooting.md +319 -0
  47. package/docs/manual/04-cookbook/03-faq.md +167 -0
  48. package/docs/manual/05-appendices/A-platform-matrix.md +97 -0
  49. package/docs/manual/05-appendices/B-security-checklist.md +78 -0
  50. package/docs/manual/05-appendices/C-glossary.md +36 -0
  51. package/docs/manual/05-appendices/D-bibliography.md +54 -0
  52. package/docs/manual/05-appendices/E-license.md +34 -0
  53. package/docs/manual/_toc.yml +58 -0
  54. package/docs/manual/command-index.md +58 -0
  55. package/docs/manual/concept-index.md +164 -0
  56. package/docs/operations/ATTESTATION.md +39 -0
  57. package/docs/operations/MAINTENANCE.md +59 -0
  58. package/docs/operations/MIGRATION.md +101 -0
  59. package/docs/operations/OPERATIONS.md +164 -0
  60. package/docs/operations/RELIABILITY.md +116 -0
  61. package/docs/{ROADMAP.md → operations/ROADMAP.md} +11 -11
  62. package/docs/operations/TESTING.md +195 -0
  63. package/docs/operations/TRACEABILITY.md +31 -0
  64. package/docs/operations/TRUSTED_AGENT_WORKSTATION.md +61 -0
  65. package/docs/operations/VERSION_SYNC.md +344 -0
  66. package/docs/{ALIASES.md → reference/ALIASES.md} +2 -6
  67. package/docs/reference/ALIASES_CHEATSHEET.md +28 -0
  68. package/docs/reference/ALIASES_DEPRECATIONS.md +9 -0
  69. package/docs/reference/FEATURES.md +62 -0
  70. package/docs/reference/FONTS.md +108 -0
  71. package/docs/reference/PROFILES.md +65 -0
  72. package/docs/{SCREENSHOTS.md → reference/SCREENSHOTS.md} +26 -25
  73. package/docs/reference/SCRIPTS.md +67 -0
  74. package/docs/reference/SUPPORT_MATRIX.md +74 -0
  75. package/docs/reference/THEMES.md +113 -0
  76. package/docs/reference/TOOLS.md +105 -0
  77. package/docs/reference/UTILS.md +151 -0
  78. package/docs/security/AI_ACT_COMPLIANCE.md +90 -0
  79. package/docs/security/AUTOMATION_SECRETS.md +22 -0
  80. package/docs/security/COMPLIANCE.md +453 -0
  81. package/docs/security/ENCRYPTION.md +52 -0
  82. package/docs/security/FMEA.md +155 -0
  83. package/docs/security/INCIDENT_RESPONSE.md +575 -0
  84. package/docs/security/KEYS.md +45 -0
  85. package/docs/security/MCP_POLICY.md +69 -0
  86. package/docs/security/POLICY_RELEASES.md +33 -0
  87. package/docs/security/README.md +24 -0
  88. package/docs/security/SECRETS.md +146 -0
  89. package/docs/security/SECURITY.md +41 -0
  90. package/docs/security/SECURITY_CHECKLIST.md +44 -0
  91. package/docs/security/SOUP_REGISTER.md +32 -0
  92. package/docs/security/THREAT_MODEL.md +120 -0
  93. package/docs/security/VERIFICATION_VALIDATION.md +224 -0
  94. package/docs/themes/README.md +3 -17
  95. package/docs/themes/VISUAL_INTEGRITY_REPORT.md +26 -0
  96. package/docs/themes/hero-shot.svg +78 -0
  97. package/dot_config/.module-manifest.json +69 -0
  98. package/dot_config/ai/identity.md +20 -0
  99. package/dot_config/ai/patterns/architect.md +14 -0
  100. package/dot_config/ai/patterns/hardener.md +13 -0
  101. package/dot_config/ai/patterns/refactor.md +13 -0
  102. package/dot_config/aider/aider.conf.yml +1 -1
  103. package/dot_config/alacritty/alacritty.toml.tmpl +41 -469
  104. package/dot_config/atuin/config.toml +18 -1
  105. package/dot_config/bat/config +16 -1
  106. package/dot_config/claude/mcp_servers.json +3 -32
  107. package/dot_config/dotfiles/agent-card.json +29 -0
  108. package/dot_config/dotfiles/agent-profiles.json +92 -0
  109. package/dot_config/dotfiles/boot/README.md +1 -1
  110. package/dot_config/dotfiles/grub/README.md +1 -1
  111. package/dot_config/dotfiles/lock/README.md +1 -1
  112. package/dot_config/dotfiles/mcp-lock.json +33 -0
  113. package/dot_config/dotfiles/mcp-policy.json +52 -0
  114. package/dot_config/dotfiles/mcp-registry.json +47 -0
  115. package/dot_config/dotfiles/model-registry.json +20 -0
  116. package/dot_config/dotfiles/policy-bundles.json +38 -0
  117. package/dot_config/dotfiles/prompt-registry.json +16 -0
  118. package/dot_config/dotfiles/versions.env +18 -0
  119. package/dot_config/environment.d/50-ssh-agent.conf +2 -0
  120. package/dot_config/environment.d/90-wayland.conf +19 -0
  121. package/dot_config/firefox/user.js.tmpl +58 -0
  122. package/dot_config/fish/completions/dot-theme-sync.fish.tmpl +9 -0
  123. package/dot_config/fish/completions/dot.fish.tmpl +115 -0
  124. package/dot_config/fish/conf.d/000-perf-cache.fish +56 -0
  125. package/dot_config/fish/conf.d/aliases.fish.tmpl +77 -0
  126. package/dot_config/fish/conf.d/env.fish.tmpl +48 -0
  127. package/dot_config/fish/conf.d/functions.fish.tmpl +22 -0
  128. package/dot_config/fish/conf.d/init.fish.tmpl +151 -0
  129. package/dot_config/fish/config.fish.tmpl +44 -0
  130. package/dot_config/fish/fish_plugins +1 -0
  131. package/dot_config/fish/functions/_.fish +3 -0
  132. package/dot_config/fish/functions/_cached_eval.fish +58 -0
  133. package/dot_config/fish/functions/als.fish +46 -0
  134. package/dot_config/fish/functions/bg-upgrade.fish +7 -0
  135. package/dot_config/fish/functions/c.fish +3 -0
  136. package/dot_config/fish/functions/cat.fish +9 -0
  137. package/dot_config/fish/functions/d.fish +7 -0
  138. package/dot_config/fish/functions/dot.fish +34 -0
  139. package/dot_config/fish/functions/h.fish +3 -0
  140. package/dot_config/fish/functions/l.fish +7 -0
  141. package/dot_config/fish/functions/la.fish +7 -0
  142. package/dot_config/fish/functions/ll.fish +7 -0
  143. package/dot_config/fish/functions/log_error.fish +13 -0
  144. package/dot_config/fish/functions/log_info.fish +13 -0
  145. package/dot_config/fish/functions/lr.fish +7 -0
  146. package/dot_config/fish/functions/lra.fish +7 -0
  147. package/dot_config/fish/functions/ls.fish +7 -0
  148. package/dot_config/fish/functions/lt.fish +7 -0
  149. package/dot_config/fish/functions/lta.fish +7 -0
  150. package/dot_config/fish/functions/notify-run.fish +11 -0
  151. package/dot_config/fish/functions/q.fish +3 -0
  152. package/dot_config/fish/functions/silent-run.fish +7 -0
  153. package/dot_config/fish/functions/yy.fish +8 -0
  154. package/dot_config/fontconfig/fonts.conf.tmpl +13 -0
  155. package/dot_config/foot/foot.ini.tmpl +33 -0
  156. package/dot_config/fuzzel/fuzzel.ini.tmpl +18 -0
  157. package/dot_config/fzf/fzf.zsh +48 -0
  158. package/dot_config/ghostty/config.tmpl +69 -565
  159. package/dot_config/git/allowed_signers.tmpl +18 -0
  160. package/dot_config/git/commit-template +10 -0
  161. package/dot_config/gnupg/{gpg-agent.conf.tmpl → gpg-agent.conf} +3 -3
  162. package/dot_config/goose/config.yaml +2 -2
  163. package/dot_config/gtk-3.0/gtk.css.tmpl +59 -180
  164. package/dot_config/gtk-3.0/settings.ini.tmpl +5 -44
  165. package/dot_config/gtk-4.0/gtk.css.tmpl +79 -136
  166. package/dot_config/gtk-4.0/settings.ini.tmpl +5 -8
  167. package/dot_config/ipython/profile_default/ipython_config.py +19 -0
  168. package/dot_config/just/justfile +18 -0
  169. package/dot_config/kanshi/config.tmpl +22 -0
  170. package/dot_config/kitty/kitty.conf.tmpl +44 -508
  171. package/dot_config/lazygit/config.yml +18 -6
  172. package/dot_config/mako/config +47 -0
  173. package/dot_config/micro/settings.json +3 -0
  174. package/dot_config/mimeapps.list +77 -0
  175. package/dot_config/mise/config.toml +63 -5
  176. package/dot_config/mongosh/mongoshrc.js +1 -0
  177. package/dot_config/mpv/input.conf +47 -0
  178. package/dot_config/mpv/mpv.conf +47 -0
  179. package/dot_config/niri/config.kdl.tmpl +327 -0
  180. package/dot_config/nushell/aliases.nu +18 -0
  181. package/dot_config/nushell/completions.nu.tmpl +52 -0
  182. package/dot_config/nushell/config.nu.tmpl +86 -0
  183. package/dot_config/nushell/env.nu.tmpl +94 -0
  184. package/dot_config/nushell/functions.nu.tmpl +17 -0
  185. package/dot_config/nvim/init.lua +14 -0
  186. package/dot_config/nvim/lazy-lock.json +45 -14
  187. package/dot_config/nvim/lua/config/autocmds.lua +45 -1
  188. package/dot_config/nvim/lua/config/keymaps.lua +13 -8
  189. package/dot_config/nvim/lua/config/lazy.lua +22 -12
  190. package/dot_config/nvim/lua/config/options.lua +1 -0
  191. package/dot_config/nvim/lua/plugins/ai.lua +75 -0
  192. package/dot_config/nvim/lua/plugins/coding.lua +11 -29
  193. package/dot_config/nvim/lua/plugins/completion.lua +60 -0
  194. package/dot_config/nvim/lua/plugins/dap.lua +215 -4
  195. package/dot_config/nvim/lua/plugins/editor.lua +6 -10
  196. package/dot_config/nvim/lua/plugins/git.lua +1 -0
  197. package/dot_config/nvim/lua/plugins/lsp.lua +16 -81
  198. package/dot_config/nvim/lua/plugins/markdown.lua +1 -0
  199. package/dot_config/nvim/lua/plugins/rust.lua +1 -0
  200. package/dot_config/nvim/lua/plugins/sessions.lua +1 -0
  201. package/dot_config/nvim/lua/plugins/ui.lua +23 -51
  202. package/dot_config/paru/paru.conf +10 -0
  203. package/dot_config/powershell/Microsoft.PowerShell_profile.ps1.tmpl +81 -0
  204. package/dot_config/pueue/pueue.yml +34 -0
  205. package/dot_config/raycast/README.md +1 -1
  206. package/dot_config/ripgrep/ripgreprc +21 -0
  207. package/dot_config/shell/00-core-paths.sh.tmpl +62 -24
  208. package/dot_config/shell/05-core-safety.sh +47 -0
  209. package/dot_config/shell/10-secrets.sh +40 -0
  210. package/dot_config/shell/40-fzf-defaults.sh.tmpl +16 -0
  211. package/dot_config/shell/40-ls-colors.sh +48 -0
  212. package/dot_config/shell/50-logic-functions-core.sh.tmpl +10 -0
  213. package/dot_config/shell/51-logic-functions-extra.sh.tmpl +64 -0
  214. package/dot_config/shell/90-ux-aliases.sh.tmpl +90 -5
  215. package/dot_config/shell/91-ux-aliases-lazy.sh.tmpl +33 -2
  216. package/dot_config/shell/Brewfile.cli +8 -0
  217. package/dot_config/shell/README.md +9 -9
  218. package/dot_config/shell/als_data.txt.tmpl +65 -0
  219. package/dot_config/shell/custom/auto_ls.zsh +20 -0
  220. package/dot_config/shell/custom/context_suggest.zsh +50 -50
  221. package/dot_config/shell/custom/error_analysis.zsh +29 -29
  222. package/dot_config/starship.toml.tmpl +85 -7
  223. package/dot_config/swaylock/config +43 -0
  224. package/dot_config/systemd/user/dotfiles-maintenance.service +8 -0
  225. package/dot_config/systemd/user/dotfiles-maintenance.timer +11 -0
  226. package/dot_config/systemd/user/pueued.service +12 -0
  227. package/dot_config/systemd/user/ssh-agent.service +12 -0
  228. package/dot_config/tmux/tmux.conf.tmpl +80 -38
  229. package/dot_config/topgrade.toml.tmpl +54 -0
  230. package/dot_config/user-dirs.dirs +9 -0
  231. package/dot_config/vscode/settings.json.tmpl +9 -50
  232. package/dot_config/waybar/config.jsonc.tmpl +90 -0
  233. package/dot_config/waybar/style.css.tmpl +211 -0
  234. package/dot_config/wezterm/wezterm.lua.tmpl +31 -203
  235. package/dot_config/xdg-desktop-portal/niri-portals.conf +5 -0
  236. package/dot_config/yazi/keymap.toml +67 -0
  237. package/dot_config/yazi/theme.toml +102 -0
  238. package/dot_config/zathura/zathurarc +52 -0
  239. package/dot_config/zellij/{config.kdl → config.kdl.tmpl} +1 -1
  240. package/dot_config/zsh/dot_zprofile +1 -7
  241. package/dot_config/zsh/dot_zshenv +2 -3
  242. package/dot_config/zsh/dot_zshrc.tmpl +368 -69
  243. package/dot_config/zsh/rc.d/00-alias-shims.zsh +77 -0
  244. package/dot_config/zsh/rc.d/05-ssh-agent.zsh +17 -4
  245. package/dot_config/zsh/rc.d/10-env.zsh.tmpl +4 -4
  246. package/dot_config/zsh/rc.d/20-zinit.zsh +65 -0
  247. package/dot_config/zsh/rc.d/30-options.zsh.tmpl +101 -30
  248. package/dot_config/zsh/rc.d/99-alias-wrapper.zsh +32 -0
  249. package/dot_local/bin/__pycache__/executable_dot-load-benchmark-ptycpython-312.pyc +0 -0
  250. package/dot_local/bin/executable_ai-update +195 -0
  251. package/dot_local/bin/executable_ai_core +113 -91
  252. package/dot_local/bin/executable_antigravity +11 -0
  253. package/dot_local/bin/executable_b64 +61 -36
  254. package/dot_local/bin/executable_bm +77 -0
  255. package/dot_local/bin/executable_cb +39 -0
  256. package/dot_local/bin/executable_dot +543 -132
  257. package/dot_local/bin/executable_dot-ai +36 -0
  258. package/dot_local/bin/executable_dot-bootstrap +77 -0
  259. package/dot_local/bin/executable_dot-launch-or-focus +52 -0
  260. package/dot_local/bin/executable_dot-load-benchmark +31 -0
  261. package/dot_local/bin/executable_dot-load-benchmark-pty +77 -0
  262. package/dot_local/bin/executable_dot-theme-sync +952 -0
  263. package/dot_local/bin/executable_dot_completion +2 -0
  264. package/dot_local/bin/executable_dtags +28 -0
  265. package/dot_local/bin/executable_epoch +43 -38
  266. package/dot_local/bin/executable_extract +32 -99
  267. package/dot_local/bin/executable_gbd +52 -0
  268. package/dot_local/bin/executable_gd +42 -0
  269. package/dot_local/bin/executable_git-ai-commit +35 -20
  270. package/dot_local/bin/executable_git-ai-diff +33 -18
  271. package/dot_local/bin/executable_gl +101 -0
  272. package/dot_local/bin/executable_hash +56 -18
  273. package/dot_local/bin/executable_hashsum +160 -0
  274. package/dot_local/bin/executable_hex +44 -8
  275. package/dot_local/bin/executable_jsonv +34 -10
  276. package/dot_local/bin/executable_jwt +22 -6
  277. package/dot_local/bin/executable_kill-port +18 -2
  278. package/dot_local/bin/executable_lorem +21 -6
  279. package/dot_local/bin/executable_mkscript +35 -0
  280. package/dot_local/bin/executable_monitor +56 -0
  281. package/dot_local/bin/{executable_ip → executable_myip} +16 -2
  282. package/dot_local/bin/executable_notify +22 -0
  283. package/dot_local/bin/executable_open +36 -0
  284. package/dot_local/bin/executable_pw +27 -0
  285. package/dot_local/bin/executable_rec-start +46 -0
  286. package/dot_local/bin/executable_rec-stop +35 -0
  287. package/dot_local/bin/executable_regex +49 -13
  288. package/dot_local/bin/executable_start-niri +8 -0
  289. package/dot_local/bin/executable_tmux-sessionizer +276 -149
  290. package/dot_local/bin/executable_tour +112 -74
  291. package/dot_local/bin/executable_up +21 -0
  292. package/dot_local/bin/executable_update +45 -11
  293. package/dot_local/bin/executable_uuid +37 -7
  294. package/dot_local/bin/executable_win +32 -0
  295. package/dot_local/bin/executable_yamlv +25 -7
  296. package/dot_local/share/bash-completion/completions/dot +62 -44
  297. package/dot_local/share/icons/hicolor/128x128/apps/rousseau.png +0 -0
  298. package/dot_local/share/icons/hicolor/16x16/apps/rousseau.png +0 -0
  299. package/dot_local/share/icons/hicolor/24x24/apps/rousseau.png +0 -0
  300. package/dot_local/share/icons/hicolor/256x256/apps/rousseau.png +0 -0
  301. package/dot_local/share/icons/hicolor/32x32/apps/rousseau.png +0 -0
  302. package/dot_local/share/icons/hicolor/48x48/apps/rousseau.png +0 -0
  303. package/dot_local/share/icons/hicolor/512x512/apps/rousseau.png +0 -0
  304. package/dot_local/share/icons/hicolor/64x64/apps/rousseau.png +0 -0
  305. package/dot_local/share/icons/hicolor/96x96/apps/rousseau.png +0 -0
  306. package/dot_local/share/icons/hicolor/scalable/apps/rousseau.png +0 -0
  307. package/dot_local/share/man/man1/dot.1 +149 -0
  308. package/dot_local/share/mise/plugins/kiro-cli/bin/executable_download +64 -0
  309. package/dot_local/share/mise/plugins/kiro-cli/bin/executable_install +18 -0
  310. package/dot_local/share/mise/plugins/kiro-cli/bin/executable_list-all +13 -0
  311. package/dot_local/share/wayland-sessions/niri.desktop.tmpl +6 -0
  312. package/dot_local/share/zsh/completions/_dot +283 -0
  313. package/install.sh +297 -210
  314. package/package.json +17 -5
  315. package/scripts/ci/check-copyright-headers.sh +96 -0
  316. package/scripts/ci/guard-gitleaks-checkout.sh +57 -0
  317. package/scripts/ci/install-chezmoi-verified.sh +64 -0
  318. package/scripts/ci/validate-ci-config.sh +41 -39
  319. package/scripts/demo/record.sh +3 -2
  320. package/scripts/diagnostics/a2a-conformance.sh +162 -0
  321. package/scripts/diagnostics/alias-governance.sh +137 -0
  322. package/scripts/diagnostics/aliases-cheatsheet.sh +73 -0
  323. package/scripts/diagnostics/aliases-manifest.sh +31 -0
  324. package/scripts/diagnostics/benchmark.sh +209 -29
  325. package/scripts/diagnostics/conflicts.sh +72 -0
  326. package/scripts/diagnostics/doctor-unified.sh +38 -0
  327. package/scripts/diagnostics/doctor.sh +491 -65
  328. package/scripts/diagnostics/drift-dashboard.sh +17 -6
  329. package/scripts/diagnostics/health.sh +351 -110
  330. package/scripts/diagnostics/history-analysis.sh +12 -4
  331. package/scripts/diagnostics/mcp-doctor.sh +575 -0
  332. package/scripts/diagnostics/perf.sh +225 -0
  333. package/scripts/diagnostics/scorecard.sh +118 -0
  334. package/scripts/diagnostics/secret-governance.sh +58 -0
  335. package/scripts/diagnostics/security-score.sh +139 -93
  336. package/scripts/diagnostics/smoke-test.sh +87 -0
  337. package/scripts/diagnostics/snapshot.sh +89 -0
  338. package/scripts/diagnostics/verify.sh +107 -0
  339. package/scripts/diagnostics/verify_state.sh +2 -2
  340. package/scripts/diagnostics/version-locks.sh +79 -0
  341. package/scripts/diagnostics/workstation-attestation.sh +181 -0
  342. package/scripts/docs/build-manual.sh +883 -0
  343. package/scripts/docs/check-manual.sh +213 -0
  344. package/scripts/dot/commands/agent.sh +465 -0
  345. package/scripts/dot/commands/ai.sh +416 -0
  346. package/scripts/dot/commands/aliases.sh +250 -0
  347. package/scripts/dot/commands/appearance.sh +21 -4
  348. package/scripts/dot/commands/core.sh +59 -4
  349. package/scripts/dot/commands/diagnostics.sh +132 -3
  350. package/scripts/dot/commands/fleet.sh +399 -0
  351. package/scripts/dot/commands/lint.sh +177 -0
  352. package/scripts/dot/commands/manual.sh +168 -0
  353. package/scripts/dot/commands/meta.sh +148 -17
  354. package/scripts/dot/commands/patterns.sh +54 -0
  355. package/scripts/dot/commands/restore.sh +57 -35
  356. package/scripts/dot/commands/secrets.sh +151 -9
  357. package/scripts/dot/commands/security.sh +3 -0
  358. package/scripts/dot/commands/tools.sh +268 -27
  359. package/scripts/dot/data/alias-deprecations.tsv +2 -0
  360. package/scripts/dot/lib/bento.sh +49 -0
  361. package/scripts/dot/lib/log.sh +194 -0
  362. package/scripts/dot/lib/platform.sh +98 -0
  363. package/scripts/dot/lib/ui.sh +507 -0
  364. package/scripts/dot/lib/utils.sh +318 -18
  365. package/scripts/fonts/install-nerd-fonts.sh +19 -10
  366. package/scripts/fonts/patch-fonts.sh +1 -0
  367. package/scripts/git-hooks/install.sh +11 -0
  368. package/scripts/git-hooks/pre-commit +12 -0
  369. package/scripts/git-hooks/pre-commit-audit.sh +145 -0
  370. package/scripts/git-hooks/pre-push +29 -0
  371. package/scripts/git-hooks/prepare-commit-msg +29 -0
  372. package/scripts/lib/secrets_provider.sh +158 -0
  373. package/scripts/maintenance/check-updates.sh +131 -0
  374. package/scripts/ops/ai-setup.sh +55 -0
  375. package/scripts/ops/bundle.sh +77 -0
  376. package/scripts/ops/chaos.sh +49 -0
  377. package/scripts/ops/chezmoi-apply.sh +245 -17
  378. package/scripts/ops/chezmoi-diff.sh +1 -0
  379. package/scripts/ops/chezmoi-remove.sh +2 -0
  380. package/scripts/ops/chezmoi-update.sh +34 -2
  381. package/scripts/ops/heal-chezmoi.sh +51 -0
  382. package/scripts/ops/heal-system.sh +128 -0
  383. package/scripts/ops/heal-tools.sh +340 -0
  384. package/scripts/ops/heal.sh +98 -342
  385. package/scripts/ops/post-apply-repair.sh +106 -0
  386. package/scripts/ops/prewarm.sh +127 -0
  387. package/scripts/ops/release.sh +252 -0
  388. package/scripts/ops/rollback.sh +86 -28
  389. package/scripts/ops/setup.sh +137 -0
  390. package/scripts/ops/teleport.sh +2 -1
  391. package/scripts/qa/coverage-baseline.sh +60 -0
  392. package/scripts/qa/docs-coverage.sh +111 -0
  393. package/scripts/qa/reliability-audit.sh +138 -0
  394. package/scripts/qa/traceability-coverage.sh +116 -0
  395. package/scripts/qa/validate-examples.sh +26 -0
  396. package/scripts/qa/wsl-contract.sh +11 -0
  397. package/scripts/release/package-policy-bundles.sh +125 -0
  398. package/scripts/secrets/age-init.sh +1 -0
  399. package/scripts/secrets/create-secrets-file.sh +1 -0
  400. package/scripts/secrets/encrypt-ssh-key.sh +1 -0
  401. package/scripts/security/backup.sh +44 -4
  402. package/scripts/security/dns-doh.sh +36 -14
  403. package/scripts/security/encryption-check.sh +27 -12
  404. package/scripts/security/enforce-policies.sh +11 -16
  405. package/scripts/security/firewall.sh +76 -20
  406. package/scripts/security/lock-configs.sh +2 -2
  407. package/scripts/security/lock-screen.sh +40 -18
  408. package/scripts/security/manage-secrets.sh +42 -29
  409. package/scripts/security/ssh-cert.sh +203 -0
  410. package/scripts/security/telemetry-kill.sh +40 -18
  411. package/scripts/security/usb-safety.sh +37 -15
  412. package/scripts/theme/apply-gnome-theme.sh +87 -56
  413. package/scripts/theme/extract-theme.py +677 -0
  414. package/scripts/theme/install-boot-logo.sh +1 -0
  415. package/scripts/theme/install-catppuccin-themes.sh +57 -33
  416. package/scripts/theme/install-cursors.sh +1 -0
  417. package/scripts/theme/install-file-icons.sh +1 -0
  418. package/scripts/theme/install-grub-theme.sh +11 -1
  419. package/scripts/theme/install-lock-icon.sh +1 -0
  420. package/scripts/theme/merge-wallpaper.sh +141 -0
  421. package/scripts/theme/rebuild-themes.sh +309 -0
  422. package/scripts/theme/switch.sh +308 -137
  423. package/scripts/theme/wallpaper-rotate.sh +66 -12
  424. package/scripts/theme/wallpaper-sync.sh +386 -31
  425. package/scripts/tools/cmatrix.sh +1 -0
  426. package/scripts/tools/detect-collisions.py +1 -1
  427. package/scripts/tools/emoji-picker.sh +4 -1
  428. package/scripts/tools/figlet-banner.sh +1 -0
  429. package/scripts/tools/log-rotate.sh +2 -1
  430. package/scripts/tools/lolcat-wrap.sh +1 -0
  431. package/scripts/tools/pipes.sh +1 -0
  432. package/scripts/tuning/linux.sh +23 -13
  433. package/scripts/tuning/macos.sh +13 -4
  434. package/scripts/uninstall.sh +85 -0
  435. package/scripts/version-sync.sh +487 -0
  436. package/templates/chezmoi-data/geekom-a9.toml.example +21 -0
  437. package/templates/chezmoi-data/mac-m1.toml.example +16 -0
  438. package/templates/chezmoi-data/mac-t2-linux.toml.example +21 -0
  439. package/templates/chezmoi-data/surface-pro-7p.toml.example +21 -0
  440. package/templates/projects/go/.github/workflows/ci.yml +31 -0
  441. package/templates/projects/go/README.md +1 -1
  442. package/templates/projects/go/cmd/__PROJECT_NAME__/main.go +1 -0
  443. package/templates/projects/go/go.sum +0 -0
  444. package/templates/projects/molecule/README.md +1 -1
  445. package/templates/projects/node/.github/workflows/ci.yml +30 -0
  446. package/templates/projects/node/README.md +1 -1
  447. package/templates/projects/node/package-lock.json +12 -0
  448. package/templates/projects/node/src/index.js +1 -0
  449. package/templates/projects/packer/README.md +1 -1
  450. package/templates/projects/python/.github/workflows/ci.yml +34 -0
  451. package/templates/projects/python/README.md +1 -1
  452. package/templates/projects/python/src/__PROJECT_NAME__/__init__.py +1 -0
  453. package/templates/projects/python/tests/test_basic.py +1 -0
  454. package/docs/ARCHITECTURE.md +0 -229
  455. package/docs/COMPLIANCE.md +0 -47
  456. package/docs/FEATURES.md +0 -166
  457. package/docs/FONTS.md +0 -147
  458. package/docs/INSTALL.md +0 -119
  459. package/docs/KEYS.md +0 -40
  460. package/docs/OPERATIONS.md +0 -130
  461. package/docs/PR_DESCRIPTION.md +0 -149
  462. package/docs/SECRETS.md +0 -76
  463. package/docs/SECURITY.md +0 -30
  464. package/docs/SECURITY_CHECKLIST.md +0 -25
  465. package/docs/TASK.md +0 -99
  466. package/docs/TESTING.md +0 -190
  467. package/docs/TOOLS.md +0 -146
  468. package/docs/UTILS.md +0 -105
  469. package/docs/WALKTHROUGH.md +0 -165
  470. package/dot_config/clippy.toml +0 -55
  471. package/dot_config/dotfiles/versions.env.tmpl +0 -19
  472. package/dot_config/firefox/user.js +0 -8
  473. package/dot_config/git/config.tmpl +0 -77
  474. package/dot_config/go/aliases.sh +0 -61
  475. package/dot_config/go/env.sh +0 -24
  476. package/dot_config/ice/README.md +0 -13
  477. package/dot_config/ipython/profile_default/ipython_config.py.tmpl +0 -5
  478. package/dot_config/lsd/config.yaml +0 -19
  479. package/dot_config/nvim/snippets/all.lua +0 -9
  480. package/dot_config/nvim/snippets/python.lua +0 -16
  481. package/dot_config/shell/00-container-detect.sh +0 -53
  482. package/dot_config/shell/05-core-safety.sh.tmpl +0 -13
  483. package/dot_config/shell/40-ls-colors.sh.tmpl +0 -31
  484. package/dot_config/shell/90-theme-switch.sh +0 -70
  485. package/dot_config/topgrade/topgrade.toml.tmpl +0 -42
  486. package/dot_config/waybar/style.css +0 -8
  487. package/dot_config/zsh/rc.d/20-zinit.zsh.tmpl +0 -22
  488. package/dot_local/bin/executable_zig-install +0 -89
  489. package/dot_local/bin/voice_ops +0 -7
  490. package/scripts/ops/health-check.sh +0 -380
  491. package/scripts/tests/README.md +0 -241
  492. package/scripts/tests/benchmark.sh +0 -91
  493. package/scripts/tests/framework/assertions.sh +0 -283
  494. package/scripts/tests/framework/mocks.sh +0 -201
  495. package/scripts/tests/framework/test_runner.sh +0 -189
  496. package/scripts/tests/integration/test_install.sh +0 -237
  497. package/scripts/tests/performance/benchmark_runner.sh +0 -156
  498. package/scripts/tests/performance/regression_check.sh +0 -73
  499. package/scripts/tests/performance/stress_test.sh +0 -65
  500. package/scripts/tests/test-aliases.sh +0 -25
  501. package/scripts/tests/test-docker.sh +0 -48
  502. package/scripts/tests/unit/test_ai_aliases.sh +0 -158
  503. package/scripts/tests/unit/test_ai_cli_checks.sh +0 -47
  504. package/scripts/tests/unit/test_backup.sh +0 -227
  505. package/scripts/tests/unit/test_case_functions.sh +0 -238
  506. package/scripts/tests/unit/test_cd_aliases.sh +0 -367
  507. package/scripts/tests/unit/test_dot_cli.sh +0 -217
  508. package/scripts/tests/unit/test_encode64.sh +0 -67
  509. package/scripts/tests/unit/test_environment.sh +0 -78
  510. package/scripts/tests/unit/test_extract.sh +0 -163
  511. package/scripts/tests/unit/test_framework_edge_cases.sh +0 -113
  512. package/scripts/tests/unit/test_genpass.sh +0 -298
  513. package/scripts/tests/unit/test_install_edge_cases.sh +0 -167
  514. package/scripts/tests/unit/test_installers.sh +0 -172
  515. package/scripts/tests/unit/test_keygen.sh +0 -68
  516. package/scripts/tests/unit/test_logging.sh +0 -96
  517. package/scripts/tests/unit/test_os_detection_comprehensive.sh +0 -388
  518. package/scripts/tests/unit/test_package_managers_comprehensive.sh +0 -321
  519. package/scripts/tests/unit/test_prependpath.sh +0 -66
  520. package/scripts/tests/unit/test_prependpath_refactored.sh +0 -89
  521. package/scripts/tests/unit/test_rd.sh +0 -230
  522. package/scripts/tests/unit/test_security_fixes.sh +0 -130
  523. package/scripts/tests/unit/test_security_scripts.sh +0 -87
  524. package/scripts/tests/unit/test_template_validation.sh +0 -238
  525. package/scripts/tests/unit/test_utility_functions.sh +0 -144
  526. package/scripts/tests/unit/test_wave1_alias_split.sh +0 -132
  527. package/scripts/tests/unit/test_wave1_ci_pinning.sh +0 -61
  528. package/scripts/tests/unit/test_wave1_gitleaks_config.sh +0 -52
  529. package/scripts/tests/unit/test_wave1_heal_fixes.sh +0 -97
  530. package/scripts/tests/unit/test_wave1_install_gpg.sh +0 -35
  531. package/scripts/tests/unit/test_wave1_zshenv_path.sh +0 -89
  532. package/scripts/tests/unit/test_wave1_zshrc_lazy_hook.sh +0 -115
  533. package/scripts/tests/unit/test_wave2_dot_new_guard.sh +0 -75
  534. package/scripts/tests/unit/test_zipf.sh +0 -76
  535. /package/docs/{LEGACY_ROADMAP.md → archive/LEGACY_ROADMAP.md} +0 -0
  536. /package/docs/{REPO_AUDIT.md → archive/REPO_AUDIT.md} +0 -0
  537. /package/docs/{KEY_ROTATION.md → security/KEY_ROTATION.md} +0 -0
  538. /package/dot_config/ansible/{ansible.cfg.tmpl → ansible.cfg} +0 -0
  539. /package/dot_config/docker/{config.json.tmpl → config.json} +0 -0
  540. /package/dot_config/k9s/{config.yaml.tmpl → config.yaml} +0 -0
  541. /package/dot_config/pypoetry/{config.toml.tmpl → config.toml} +0 -0
  542. /package/dot_config/{pyrightconfig.json.tmpl → pyrightconfig.json} +0 -0
  543. /package/dot_config/tflint/{tflint.hcl.tmpl → tflint.hcl} +0 -0
  544. /package/dot_config/yarn/{yarnrc.yml.tmpl → yarnrc.yml} +0 -0
  545. /package/dot_config/zsh/rc.d/{40-bell.zsh.tmpl → 40-bell.zsh} +0 -0
  546. /package/dot_config/zsh/rc.d/{50-login-fortune.zsh.tmpl → 50-login-fortune.zsh} +0 -0
@@ -43,8 +43,8 @@ ls -la ~/.dotfiles/
43
43
  2. **Use WSL2 native filesystem**:
44
44
  ```bash
45
45
  # Move dotfiles to WSL2 filesystem
46
- cd /home/$USER
47
- git clone https://github.com/yourusername/dotfiles.git .dotfiles
46
+ cd ~
47
+ git clone https://github.com/sebastienrousseau/dotfiles.git .dotfiles
48
48
  ```
49
49
 
50
50
  3. **Configure Git for WSL2**:
@@ -60,7 +60,7 @@ time ls -la /mnt/c/Users/
60
60
  time ls -la ~/
61
61
  ```
62
62
 
63
- **Solution:** Always work within WSL2 filesystem (`/home/`) for performance-critical operations.
63
+ **Solution:** Always work within WSL2 filesystem (`~/`) for performance-critical operations.
64
64
 
65
65
  #### Problem: Permission denied errors on mounted Windows drives
66
66
  ```bash
@@ -344,7 +344,7 @@ rm -rf ~/.config/chezmoi/
344
344
 
345
345
  # 4. Reinstall from scratch
346
346
  cd /tmp
347
- curl -fsSL https://raw.githubusercontent.com/yourusername/dotfiles/main/install.sh | bash
347
+ curl -fsSL https://raw.githubusercontent.com/sebastienrousseau/dotfiles/main/install.sh | bash
348
348
  ```
349
349
 
350
350
  #### Scenario: WSL2 completely broken
@@ -361,7 +361,7 @@ wsl --unregister Ubuntu
361
361
  wsl --import Ubuntu C:\WSL\Ubuntu Ubuntu-backup.tar
362
362
 
363
363
  # 4. Reinstall dotfiles
364
- wsl -d Ubuntu -u root -- curl -fsSL https://raw.githubusercontent.com/yourusername/dotfiles/main/install.sh | bash
364
+ wsl -d Ubuntu -u root -- curl -fsSL https://raw.githubusercontent.com/sebastienrousseau/dotfiles/main/install.sh | bash
365
365
  ```
366
366
 
367
367
  ### Partial Recovery
@@ -455,8 +455,8 @@ git config --get core.editor
455
455
  #### Optimize filesystem performance
456
456
  ```bash
457
457
  # 1. Move frequently accessed files to WSL2 filesystem
458
- mkdir -p /home/$USER/workspace
459
- ln -s /home/$USER/workspace ~/workspace
458
+ mkdir -p ~/workspace
459
+ ln -s ~/workspace ~/workspace
460
460
 
461
461
  # 2. Configure Git for performance
462
462
  git config --global core.preloadindex true
@@ -652,7 +652,7 @@ echo "Diagnostic report saved to ~/diagnostic-report.txt"
652
652
  ```
653
653
 
654
654
  #### Support channels
655
- - GitHub Issues: [Repository Issues](https://github.com/yourusername/dotfiles/issues)
655
+ - GitHub Issues: [Repository Issues](https://github.com/sebastienrousseau/dotfiles/issues)
656
656
  - WSL2 Documentation: [Microsoft WSL Docs](https://docs.microsoft.com/en-us/windows/wsl/)
657
657
  - Nix Documentation: [Nix Manual](https://nixos.org/manual/nix/stable/)
658
658
  - Community Support: Stack Overflow, NixOS Discourse
package/docs/index.md ADDED
@@ -0,0 +1,39 @@
1
+ # .dotfiles
2
+
3
+ Cross-platform, signed, local-first dotfiles for macOS, Linux, and WSL.
4
+
5
+ [![Build](https://img.shields.io/github/actions/workflow/status/sebastienrousseau/dotfiles/ci.yml?style=for-the-badge&logo=github)](https://github.com/sebastienrousseau/dotfiles/actions)
6
+ [![Version](https://img.shields.io/badge/Version-v0.2.500-blue?style=for-the-badge)](https://github.com/sebastienrousseau/dotfiles/releases/tag/v0.2.500)
7
+ [![Downloads](https://img.shields.io/github/downloads/sebastienrousseau/dotfiles/total?style=for-the-badge)](https://github.com/sebastienrousseau/dotfiles/releases)
8
+
9
+ This site is published from the `docs/` directory on `master` and tracks the current workstation baseline, operational guidance, and security material for the repository.
10
+
11
+ ## Start Here
12
+
13
+ - [Repository README](https://github.com/sebastienrousseau/dotfiles#readme)
14
+ - [Install guide](guides/INSTALL.md)
15
+ - [Troubleshooting](guides/TROUBLESHOOTING.md)
16
+ - [Support matrix](reference/SUPPORT_MATRIX.md)
17
+
18
+ ## Workstation Operations
19
+
20
+ - [Utilities and `dot` CLI](reference/UTILS.md)
21
+ - [Trusted agent workstation](operations/TRUSTED_AGENT_WORKSTATION.md)
22
+ - [Workstation attestation](operations/ATTESTATION.md)
23
+ - [Operations runbooks](operations/OPERATIONS.md)
24
+ - [Architecture overview](architecture/ARCHITECTURE.md)
25
+ - [Repository layout](architecture/REPO_LAYOUT.md)
26
+
27
+ ## Security and Governance
28
+
29
+ - [Security overview](security/SECURITY.md)
30
+ - [Security checklist](security/SECURITY_CHECKLIST.md)
31
+ - [Compliance](security/COMPLIANCE.md)
32
+ - [Policy bundle releases](security/POLICY_RELEASES.md)
33
+ - [Threat model](security/THREAT_MODEL.md)
34
+
35
+ ## Current Release
36
+
37
+ - Current tagged release: [`v0.2.500`](https://github.com/sebastienrousseau/dotfiles/releases/tag/v0.2.500)
38
+ - Latest release feed: [GitHub releases](https://github.com/sebastienrousseau/dotfiles/releases/latest)
39
+ - Source repository: [sebastienrousseau/dotfiles](https://github.com/sebastienrousseau/dotfiles)
@@ -0,0 +1,32 @@
1
+ # Agent Interop
2
+
3
+ The repository now ships an agent card and an A2A-ready discovery document.
4
+
5
+ Artifacts:
6
+ - [agent-card.json](/home/seb/.dotfiles/dot_config/dotfiles/agent-card.json)
7
+ - [agent.json](/home/seb/.dotfiles/.well-known/agent.json)
8
+
9
+ Core properties:
10
+ - bounded profiles: `ask`, `plan`, `apply`, `audit`
11
+ - MCP-governed execution
12
+ - workstation attestation export
13
+ - persistent agent session logs
14
+ - replayable checkpoints
15
+ - fleet attestation export
16
+
17
+ Tracked governance artifacts:
18
+ - policy bundles
19
+ - prompt registry
20
+ - model registry
21
+
22
+ Session logs are stored in `~/.local/state/dotfiles/agent-sessions.jsonl`.
23
+ Checkpoints are stored in `~/.local/state/dotfiles/checkpoints/`.
24
+
25
+ Validate conformance with:
26
+
27
+ ```bash
28
+ dot agent conformance
29
+ dot agent conformance --strict --json
30
+ ```
31
+
32
+ The current posture is A2A-ready with tracked conformance checks. It exposes identity, governance, checkpoints, and local evidence.
@@ -0,0 +1,85 @@
1
+ # Introduction
2
+
3
+ This manual describes `.dotfiles` v0.2.500 — a trusted agent workstation baseline for macOS, Linux, and WSL.
4
+
5
+ The repository is more than a personal dotfiles collection. It ships as workstation infrastructure: signed, attested, multi-platform, AI-aware, and self-healing. Chezmoi handles templating and platform differences. The `dot` CLI sits on top and coordinates lifecycle operations.
6
+
7
+ ## Who This Manual Is For
8
+
9
+ - **Developers** who want a reproducible, signed development environment across machines
10
+ - **Security engineers** who require cryptographic attestation, SBOM, and policy gates
11
+ - **AI agent operators** running Claude Code, Codex, GitHub Copilot, or MCP-aware tooling
12
+ - **Team leads** deploying standardized workstations across a fleet
13
+
14
+ The content assumes basic familiarity with Git, shell environments, and chezmoi. No prior knowledge of the specific tools used (Mise, Nix, Age, SOPS, MCP) is required.
15
+
16
+ ## What the Manual Covers
17
+
18
+ - **Concepts** — the mental model behind the theme engine, trust model, fleet architecture, and self-healing
19
+ - **Tutorials** — step-by-step walkthroughs for common tasks
20
+ - **Reference** — every `dot` command, every config file, every template variable, every feature flag
21
+ - **Cookbook** — 30+ specific recipes for day-to-day tasks and troubleshooting
22
+ - **Appendices** — platform support matrix, security checklist, glossary, bibliography
23
+
24
+ ## Getting the Manual
25
+
26
+ The manual is published in nine formats — all generated from the same Markdown source on every release:
27
+
28
+ | Format | Size | Use case |
29
+ |:---|---:|:---|
30
+ | HTML (single page) | ~200K | Offline browsing |
31
+ | HTML (multi-page) | — | Web reading |
32
+ | HTML gzipped (single) | ~50K | Fast download |
33
+ | EPUB | ~150K | E-readers |
34
+ | PDF | ~400K | Printing |
35
+ | ASCII text | ~120K | Terminal pagers |
36
+ | Markdown source | ~80K | Re-processing |
37
+
38
+ Published at: `https://sebastienrousseau.github.io/dotfiles/manual/`
39
+
40
+ Fetch from the CLI:
41
+
42
+ ```sh
43
+ dot manual # open in browser
44
+ dot manual pdf # download and open PDF
45
+ dot manual text # pipe plain text to pager
46
+ ```
47
+
48
+ ## Quick Install
49
+
50
+ ```sh
51
+ bash -c "$(curl -fsSL https://raw.githubusercontent.com/sebastienrousseau/dotfiles/master/install.sh)"
52
+ dot doctor
53
+ ```
54
+
55
+ Requires `git` and `curl`. Supported on macOS 14+, Ubuntu/Debian, Arch, Fedora, openSUSE, and WSL2.
56
+
57
+ ## Conventions Used in This Manual
58
+
59
+ | Convention | Meaning |
60
+ |:---|:---|
61
+ | `fixed-width` | Commands, file paths, environment variables |
62
+ | **Bold** | Important terms introduced for the first time |
63
+ | > Note: | Supplementary information |
64
+ | > Warning: | Actions with potentially destructive effects |
65
+
66
+ Command placeholders use `<angle-brackets>`. Optional arguments use `[brackets]`. Repeated arguments end with `...`.
67
+
68
+ ## How to Read This Manual
69
+
70
+ - **First-time users** — read [Introduction](#introduction), [First Install](02-tutorials/01-first-install.md), then browse the [Cookbook](04-cookbook/01-recipes.md).
71
+ - **Upgrading** — read the [Migration section](../operations/MIGRATION.md) for your version delta.
72
+ - **Deep diving** — the [Concepts](01-concepts/) chapters explain the architecture and rationale.
73
+ - **Looking something up** — use the [Command Index](command-index.md) or [Concept Index](concept-index.md).
74
+
75
+ ## Licensing
76
+
77
+ The `.dotfiles` repository is licensed under the MIT License. See [Appendix E](05-appendices/E-license.md) for the full text.
78
+
79
+ Individual tools packaged, referenced, or templated by this repository retain their original licenses.
80
+
81
+ ## Reporting Issues
82
+
83
+ - **Bugs and feature requests** — <https://github.com/sebastienrousseau/dotfiles/issues>
84
+ - **Security vulnerabilities** — see [Security Policy](../security/SECURITY.md); do not open public issues for unpatched vulnerabilities
85
+ - **Documentation corrections** — open a pull request against `docs/manual/` on the `master` branch
@@ -0,0 +1,134 @@
1
+ # Architecture
2
+
3
+ `.dotfiles` is composed of four loosely coupled subsystems, coordinated by a single command-line interface.
4
+
5
+ ## The Four Subsystems
6
+
7
+ ### 1. Templating Engine — Chezmoi
8
+
9
+ [Chezmoi](https://chezmoi.io) reads the source directory (`~/.dotfiles/` or `~/.local/share/chezmoi/`), renders templates using data from `.chezmoidata.toml`, and writes the results to the target paths in `$HOME`.
10
+
11
+ Every file in the source directory follows chezmoi naming conventions:
12
+
13
+ | Prefix / Suffix | Effect |
14
+ |:---|:---|
15
+ | `dot_` | Deployed with leading `.` (`dot_zshrc` → `~/.zshrc`) |
16
+ | `executable_` | Sets `+x` permission on the destination |
17
+ | `private_` | Sets `0600` permission on the destination |
18
+ | `.tmpl` | Processed as a Go template with chezmoi data |
19
+ | `run_onchange_` | Script runs when the target changes |
20
+ | `run_before_` | Script runs before apply |
21
+ | `run_after_` | Script runs after apply |
22
+
23
+ ### 2. Runtime Management — Mise and Nix
24
+
25
+ **Mise** ([mise.jdx.dev](https://mise.jdx.dev)) manages per-user language runtimes and CLI tools. All entries in `~/.config/mise/config.toml` are installed to `~/.local/share/mise/installs/`, activated by PATH shimming. No system-level packages are touched.
26
+
27
+ **Nix Flakes** (`nix/flake.nix`) provide strictly reproducible builds when Mise's approximate semver-pinning is insufficient — for example, for declaring an entire system via Home Manager.
28
+
29
+ ### 3. The `dot` CLI
30
+
31
+ `dot` is the entry point for all lifecycle operations. It is a pure Bash script (no runtime dependencies) that dispatches to command handlers in `scripts/dot/commands/`.
32
+
33
+ Each command is self-contained — any command can be invoked directly as a script if needed:
34
+
35
+ ```sh
36
+ bash ~/.dotfiles/scripts/dot/commands/diagnostics.sh doctor
37
+ # equivalent to:
38
+ dot doctor
39
+ ```
40
+
41
+ The CLI follows a grouping convention (see [dot CLI Reference](../03-reference/01-dot-cli.md)):
42
+
43
+ - **Lifecycle** — `sync`, `apply`, `rollback`, `heal`, `bundle`
44
+ - **Diagnostics** — `doctor`, `drift`, `benchmark`, `score`, `metrics`
45
+ - **AI & Agents** — `ai`, `mcp`, `agent`, `mode`
46
+ - **Configuration** — `theme`, `env`, `profile`, `secrets`
47
+ - **Fleet** — `fleet`, `attest`
48
+ - **Reference** — `help`, `search`, `version`, `manual`
49
+
50
+ ### 4. Secrets and Attestation
51
+
52
+ Secrets are encrypted at rest using **Age** (modern file encryption) with **SOPS** (YAML-aware envelope) or `chezmoi encrypt`. The private key never leaves `~/.config/age/keys.txt` (or the user's password manager).
53
+
54
+ Attestation produces signed, machine-readable JSON recording:
55
+
56
+ - Host identity (kernel, arch, hostname hash)
57
+ - Policy hash (MCP policy, agent profiles)
58
+ - Tool versions (mise, nix, key binaries)
59
+ - Git HEAD and signature status
60
+ - Timestamp and verification hash
61
+
62
+ See [Trust Model](02-trust-model.md) for the full threat model.
63
+
64
+ ## Data Flow
65
+
66
+ ```mermaid
67
+ graph TD
68
+ User[User Shell] --> CLI{dot CLI}
69
+
70
+ CLI --> L[Lifecycle Commands]
71
+ CLI --> D[Diagnostics Commands]
72
+ CLI --> A[AI Commands]
73
+ CLI --> C[Config Commands]
74
+ CLI --> F[Fleet Commands]
75
+
76
+ L --> Chezmoi[Chezmoi Engine]
77
+ C --> Chezmoi
78
+
79
+ Chezmoi --> Source[~/.dotfiles source]
80
+ Source --> Data[.chezmoidata.toml + themes.toml]
81
+ Source --> Tmpl[.tmpl files]
82
+
83
+ Data --> Render[Template render]
84
+ Tmpl --> Render
85
+ Render --> Target[~ target paths]
86
+
87
+ Target --> Shells[Zsh / Fish / Bash / Nushell]
88
+ Target --> Apps[Ghostty / Neovim / VS Code / etc.]
89
+
90
+ Wallpapers[~/Pictures/Wallpapers/ + System] --> KMeans[K-Means CIELAB engine]
91
+ KMeans --> ThemesT[themes.toml generated]
92
+ ThemesT --> Data
93
+
94
+ A --> MCP[MCP Policy + Registry]
95
+ F --> Attest[Signed Attestation Logs]
96
+ ```
97
+
98
+ ## Startup Performance Model
99
+
100
+ Shell startup is optimized via a three-tier caching strategy:
101
+
102
+ 1. **Bake-at-apply-time** — values computed once during `chezmoi apply` (HOSTNAME, platform, OS version) are written directly into config files, avoiding subshells at startup.
103
+ 2. **`_cached_eval` pattern** — slow initializers (mise, zoxide, atuin, starship) write their output to `~/.cache/shell/<tool>-init.sh`. Subsequent shells `source` the cache. Cache is invalidated when the binary's mtime changes.
104
+ 3. **Lazy loading** — heavy layers (nvm, rbenv, direnv) are loaded on first invocation via shell function stubs.
105
+
106
+ Target: ≤500ms cold shell startup, ≤100ms per component. Enforced by CI benchmark (see [Performance Reference](../03-reference/01-dot-cli.md#benchmark)).
107
+
108
+ ## Per-Machine Profiles
109
+
110
+ The `machine` key in `.chezmoidata.toml` (or the per-host override in `~/.config/chezmoi/chezmoi.toml`) selects a hardware preset from `.chezmoidata/hardware.toml`. Presets define:
111
+
112
+ - Display scale (1.0, 1.5, 2.0)
113
+ - Keyboard modifier hierarchy
114
+ - Performance profile (desktop, laptop, low-power)
115
+ - Feature flags (e.g. `features.dms = true` for Niri on Wayland)
116
+
117
+ A single source tree deploys correctly to a MacBook, a Surface, a Linux desktop, and a WSL2 session — each rendering a platform-appropriate config.
118
+
119
+ ## Trust Boundaries
120
+
121
+ | Boundary | Trusted | Untrusted |
122
+ |:---|:---|:---|
123
+ | Source tree | Your Git history, signed commits | Unverified pull requests |
124
+ | Secret store | `~/.config/age/keys.txt` | Environment variables, cloud storage |
125
+ | Attestation logs | Signed by SSH ED25519 key | Unsigned JSON reports |
126
+ | Template data | `.chezmoidata.toml` | User-provided template input |
127
+
128
+ Every boundary is enforced: unsigned commits fail CI gates, secrets never appear in plaintext git history, attestation logs are hash-chained.
129
+
130
+ ## Next
131
+
132
+ - [Trust Model](02-trust-model.md) — detailed threat model and verification procedures
133
+ - [Theme Engine](03-theme-engine.md) — K-Means CIELAB pipeline
134
+ - [Fleet Architecture](04-fleet.md) — multi-host deployment model
@@ -0,0 +1,178 @@
1
+ # Trust Model
2
+
3
+ The trust model combines cryptographic signing, local-first secrets, policy-gated agent operations, and machine-verifiable attestation.
4
+
5
+ ## Threat Model Summary
6
+
7
+ | Threat | Mitigation |
8
+ |:---|:---|
9
+ | Unauthorized code execution on the workstation | Signed commits, shellcheck gates, no `curl | sh` in install path |
10
+ | Secret leakage into Git history | Age/SOPS encryption, gitleaks in CI, `detect-secrets` baseline |
11
+ | Tampered upstream tool | SHA256-pinned chezmoi installer, SBOM + Grype CVE scan |
12
+ | Malicious agent behavior | MCP policy enforcement, agent profile allowlists, attestation logs |
13
+ | Compromised fleet host | Per-host signing keys, attestation comparison, `dot chaos` self-tests |
14
+ | Downgrade attacks | Version-sync enforcement, signed release tags |
15
+
16
+ ## Identity and Signing
17
+
18
+ ### SSH ED25519 for Git
19
+
20
+ Every commit on `master` is signed with SSH ED25519:
21
+
22
+ ```sh
23
+ git verify-commit HEAD
24
+ # Good "git" signature for you@example.com with ED25519 key SHA256:...
25
+ ```
26
+
27
+ The trust anchor is the signer's public key published in `~/.ssh/allowed_signers`. CI enforces signature verification on every PR.
28
+
29
+ ### Verified Chezmoi Installer
30
+
31
+ The `install.sh` script prefers `scripts/ci/install-chezmoi-verified.sh`, which:
32
+
33
+ 1. Downloads chezmoi from the upstream release URL
34
+ 2. Verifies the SHA256 checksum against a hardcoded, version-pinned value
35
+ 3. Falls back to `get.chezmoi.io` only if the verified path is unavailable
36
+
37
+ No unverified binary is ever executed.
38
+
39
+ ## Secrets
40
+
41
+ ### Three Layers
42
+
43
+ 1. **Repository-managed config** (`dot_config/**/*.tmpl`) — checked into Git, no secrets
44
+ 2. **Local-only config** (`~/.config/*.local`) — gitignored, user-edited
45
+ 3. **Encrypted secrets** (Age-encrypted `private_*` files, SOPS YAML) — checked in, decrypted on apply
46
+
47
+ Example encrypted file:
48
+
49
+ ```
50
+ dot_config/api-keys.yaml.sops.yaml # SOPS-encrypted, safe to commit
51
+ ```
52
+
53
+ Decryption uses the user's Age private key at `~/.config/age/keys.txt`. Chezmoi invokes `age` or `sops` automatically during apply.
54
+
55
+ ### Secret Scanning
56
+
57
+ CI runs three independent scanners:
58
+
59
+ | Scanner | Purpose | Threshold |
60
+ |:---|:---|:---|
61
+ | `gitleaks` | Pattern-based secret detection | Zero leaks on `master` |
62
+ | `detect-secrets` | Baseline-comparing scanner | Zero new secrets vs `.secrets.baseline` |
63
+ | `trufflehog` | Verified-secret scanner (API-tested) | Zero verified secrets |
64
+
65
+ All three must pass for a commit to be merged.
66
+
67
+ ## Agent Policy Enforcement
68
+
69
+ AI agent operations (Claude Code, Codex, Copilot, Gemini, etc.) are governed by the **Model Context Protocol (MCP)** policy in `dot_config/dotfiles/mcp.json` and validated by `dot mcp`.
70
+
71
+ ### Policy Structure
72
+
73
+ ```json
74
+ {
75
+ "policy_version": "2026-01",
76
+ "allowed_servers": ["fs", "shell", "github"],
77
+ "denied_tools": ["network.raw", "fs.write:/etc"],
78
+ "attestation_required": true,
79
+ "signature": "<ed25519-signature>"
80
+ }
81
+ ```
82
+
83
+ ### Enforcement Points
84
+
85
+ 1. **On agent start** — `dot mcp --strict` validates the registry matches the policy hash
86
+ 2. **Per-tool call** — MCP-aware agents check the policy before invoking a tool
87
+ 3. **On commit** — `dot attest` records the active policy hash in the attestation log
88
+
89
+ Violations are logged to `~/.local/state/dotfiles/mcp-violations.log` and reported by `dot doctor`.
90
+
91
+ ## Attestation
92
+
93
+ `dot attest` generates a signed JSON document containing:
94
+
95
+ ```json
96
+ {
97
+ "version": "0.2.500",
98
+ "timestamp": "2026-04-16T09:00:00Z",
99
+ "host": {
100
+ "hostname_sha256": "...",
101
+ "kernel": "Darwin 25.4.0",
102
+ "arch": "arm64"
103
+ },
104
+ "identity": {
105
+ "ssh_key_sha256": "...",
106
+ "git_signer": "you@example.com"
107
+ },
108
+ "policy": {
109
+ "mcp_policy_sha256": "...",
110
+ "agent_profile": "architect"
111
+ },
112
+ "tools": {
113
+ "chezmoi": "2.47.1",
114
+ "mise": "2026.4.0"
115
+ },
116
+ "git": {
117
+ "head": "abc123...",
118
+ "branch": "master",
119
+ "signed": true,
120
+ "verified": true
121
+ }
122
+ }
123
+ ```
124
+
125
+ The document is:
126
+
127
+ - Signed with the user's SSH ED25519 key
128
+ - Stored at `~/.local/state/dotfiles/attestation/YYYY-MM-DD-HHMMSS.json`
129
+ - Optionally published to `~/.dotfiles/docs/attestations/` for team review
130
+
131
+ ### Verifying Someone Else's Attestation
132
+
133
+ ```sh
134
+ dot verify --attestation <path>
135
+ # ✓ Signature valid (ED25519)
136
+ # ✓ Policy hash matches repository
137
+ # ✓ Tool versions within supported range
138
+ ```
139
+
140
+ ## Fleet Trust Propagation
141
+
142
+ Across multiple hosts, trust is established by:
143
+
144
+ 1. Each host generates its own SSH key pair
145
+ 2. Each host's public key is added to `~/.ssh/allowed_signers` on every other host
146
+ 3. Attestations from any host can be verified by any other host
147
+ 4. `dot fleet` compares attestations across the fleet and flags drift
148
+
149
+ See [Fleet Architecture](04-fleet.md) for the full model.
150
+
151
+ ## CI-Level Gates
152
+
153
+ | Gate | Workflow | Blocks Merge |
154
+ |:---|:---|:---|
155
+ | Signed commits | `ci-enforced.yml` | Yes |
156
+ | Shellcheck zero-warnings | `ci.yml` | Yes |
157
+ | Gitleaks scan | `ci.yml` | Yes |
158
+ | Copyright headers | `ci-enforced.yml` | Yes |
159
+ | 100% unit test coverage | `ci-enforced.yml` | Yes |
160
+ | Reliability (macOS + Linux) | `ci-enforced.yml` | Yes |
161
+ | Checkov infrastructure scan | `ci-enforced.yml` | On severity MEDIUM+ |
162
+ | SBOM (CycloneDX) | `ci.yml` | No (informational) |
163
+ | Grype CVE scan | `ci.yml` | On severity CRITICAL |
164
+ | Lychee link check | `ci.yml` (nightly) | No |
165
+
166
+ ## Principles
167
+
168
+ - **Local-first** — nothing leaves the workstation unless the user opts in
169
+ - **Zero trust in transit** — every network-fetched artifact is checksum-verified
170
+ - **Machine-readable evidence** — human-readable summaries are backed by signed JSON
171
+ - **Reversible** — `dot rollback` undoes any change with a single command
172
+
173
+ ## See Also
174
+
175
+ - [Security Policy](../../security/SECURITY.md)
176
+ - [Threat Model](../../security/THREAT_MODEL.md)
177
+ - [MCP Policy Reference](../../security/MCP_POLICY.md)
178
+ - [Attestation Operations](../../operations/ATTESTATION.md)