@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
@@ -0,0 +1,90 @@
1
+ # EU AI Act Compliance Assessment
2
+
3
+ This document maps the dotfiles project against the EU Artificial Intelligence Act (Regulation (EU) 2024/1689) to confirm compliance posture and applicable obligations.
4
+
5
+ ---
6
+
7
+ ## Risk Classification (Annex III Assessment)
8
+
9
+ | Criterion | Assessment | Result |
10
+ |-----------|-----------|--------|
11
+ | Biometric identification | Not applicable | N/A |
12
+ | Critical infrastructure | Not applicable | N/A |
13
+ | Education / employment | Not applicable | N/A |
14
+ | Essential services | Not applicable | N/A |
15
+ | Law enforcement | Not applicable | N/A |
16
+ | Migration / border control | Not applicable | N/A |
17
+
18
+ **Classification: Minimal Risk**
19
+
20
+ This project is a workstation configuration management tool. It does not deploy, train, or host AI models. It integrates with external AI CLI tools (Claude, Gemini, Ollama) as a consumer, not a provider.
21
+
22
+ ---
23
+
24
+ ## Open-Source Exemption (Article 2(12))
25
+
26
+ | Requirement | Status |
27
+ |-------------|--------|
28
+ | License type | MIT (permissive, open-source) |
29
+ | Model weights distributed | No — no model training or distribution |
30
+ | Free and open-source | Yes — publicly available source code |
31
+ | No prohibited practices (Article 5) | Confirmed — no subliminal, exploitative, or social scoring use |
32
+
33
+ **Result:** This project qualifies for the open-source exemption under Article 2(12). Open-source AI components released under free licenses are exempt from most AI Act obligations, provided they do not fall under prohibited practices or high-risk classifications.
34
+
35
+ ---
36
+
37
+ ## Transparency Obligations
38
+
39
+ Even for minimal-risk and exempt systems, the AI Act encourages transparency. This project voluntarily implements the following:
40
+
41
+ | Obligation | Implementation | Evidence |
42
+ |-----------|----------------|----------|
43
+ | AI interaction disclosure | Agent session logging | `agent-sessions.jsonl` via `dot_agent_session_log()` |
44
+ | Model identification | Model registry | `dot_config/dotfiles/model-registry.json` |
45
+ | Configuration transparency | Agent profiles | `dot_config/dotfiles/agent-profiles.json` |
46
+ | Audit trail | Structured logging | `~/.local/share/dotfiles.log`, `~/.local/state/dotfiles/` |
47
+ | Workstation attestation | Attestation export | `dot attest --json` |
48
+
49
+ ---
50
+
51
+ ## GPAI Provisions (Chapter V)
52
+
53
+ | Criterion | Assessment |
54
+ |-----------|-----------|
55
+ | General-purpose AI model provider | **No** — this project does not train, fine-tune, or distribute AI models |
56
+ | Systemic risk model | **No** — no model hosting or inference serving |
57
+ | Downstream provider obligations | **No** — consumer of external AI APIs only |
58
+
59
+ **Result:** GPAI provisions are not applicable. This project consumes AI services but does not provide them.
60
+
61
+ ---
62
+
63
+ ## Enforcement Timeline
64
+
65
+ | Milestone | Date | Relevance |
66
+ |-----------|------|-----------|
67
+ | AI Act entered into force | August 1, 2024 | Awareness |
68
+ | Prohibited practices apply | February 2, 2025 | Confirmed no prohibited use |
69
+ | GPAI rules apply | August 2, 2025 | Not applicable |
70
+ | High-risk obligations apply | **August 2, 2026** | Not applicable (minimal risk) |
71
+ | Full enforcement | August 2, 2027 | Maintain compliance posture |
72
+
73
+ **Next review:** Before August 2026 enforcement date — reassess if project scope changes to include model hosting or high-risk use cases.
74
+
75
+ ---
76
+
77
+ ## Cross-References
78
+
79
+ | Document | Relevance |
80
+ |----------|-----------|
81
+ | [COMPLIANCE.md](COMPLIANCE.md) | SOC 2, ISO 27001, GDPR framework mapping |
82
+ | [THREAT_MODEL.md](THREAT_MODEL.md) | Trust boundaries and attack surface |
83
+ | [MCP_POLICY.md](MCP_POLICY.md) | MCP governance and supply-chain controls |
84
+ | [SECURITY.md](SECURITY.md) | Core security model |
85
+
86
+ ---
87
+
88
+ ## Summary
89
+
90
+ This project is classified as **minimal risk** under the EU AI Act and qualifies for the **open-source exemption** under Article 2(12). No mandatory obligations apply. Transparency measures are voluntarily implemented through agent session logging, model registry, and workstation attestation.
@@ -0,0 +1,22 @@
1
+ # Automation Secrets
2
+
3
+ ## Required secrets
4
+
5
+ | Secret | Scope | Purpose |
6
+ | :--- | :--- | :--- |
7
+ | `ACTIONS_BOT_SIGNING_KEY` | GitHub Actions | SSH private key used for signed automation commits |
8
+ | `GITHUB_TOKEN` | GitHub Actions | GitHub API access for PRs, attestations, and scans |
9
+
10
+ ## Required local variables
11
+
12
+ | Variable | Scope | Purpose |
13
+ | :--- | :--- | :--- |
14
+ | `HOMEBREW_INSTALLER_SHA256` | macOS bootstrap | Verifies the Homebrew installer before execution |
15
+ | `CHEZMOI_INSTALLER_SHA256` | Installer | Verifies the Chezmoi installer before execution |
16
+
17
+ ## Provisioning notes
18
+
19
+ 1. Store the SSH signing private key in GitHub Actions as `ACTIONS_BOT_SIGNING_KEY`.
20
+ 2. Store the matching public key in [allowed_signers](/home/seb/.dotfiles/dot_config/git/allowed_signers).
21
+ 3. Rotate the key on personnel or workstation change.
22
+ 4. Fail closed when secrets are absent.
@@ -0,0 +1,453 @@
1
+ # Compliance Architecture
2
+
3
+ This document describes the compliance, security, and cross-platform compatibility controls implemented in this repository, mapped to standard regulatory frameworks (SOC 2, ISO 27001, GDPR).
4
+
5
+ ## Overview
6
+
7
+ | Framework | Status | Description |
8
+ |-----------|--------|-------------|
9
+ | SOC 2 Type II | Aligned | Security, availability, and confidentiality |
10
+ | ISO 27001 | Aligned | Information security management controls |
11
+ | GDPR/HIPAA | Aligned | Privacy and data protection |
12
+ | ISO 13485 | Aligned | Risk management (FMEA), verification & validation |
13
+ | ALCOA | Implemented | Audit trail integrity |
14
+ | EU AI Act | Exempt | Minimal risk, open-source exemption (Article 2(12)) |
15
+
16
+ ---
17
+
18
+ ## EU AI Act (Regulation (EU) 2024/1689)
19
+
20
+ | Requirement | Status | Implementation |
21
+ |-------------|--------|----------------|
22
+ | **Risk classification** | Minimal risk | No high-risk use cases (Annex III) |
23
+ | **Open-source exemption** | Applicable | MIT license, no model weights distributed (Article 2(12)) |
24
+ | **Prohibited practices** | Confirmed none | No subliminal, exploitative, or social scoring use (Article 5) |
25
+ | **Transparency** | Voluntary | Agent session logging, model registry, attestation |
26
+ | **GPAI provisions** | Not applicable | Consumer of AI APIs, not a provider |
27
+
28
+ See [AI_ACT_COMPLIANCE.md](AI_ACT_COMPLIANCE.md) for full assessment.
29
+
30
+ ---
31
+
32
+ ## Regulatory Mapping
33
+
34
+ ### SOC 2 Type II
35
+
36
+ | Control | Description | Implementation |
37
+ |---------|-------------|----------------|
38
+ | **CC6.1** | Logical Access Security | `zsh` restricted permissions, SSH key management via `1Password`/Agents |
39
+ | **CC6.8** | Unauthorized Code Protection | GPG/SSH signed commits, `slsa-framework` workflow |
40
+ | **CC7.1** | System Operations | `compliance-guard.yml` blocks insecure patterns |
41
+ | **CC7.2** | Change Detection | Pre-commit hooks detect security violations |
42
+ | **CC8.1** | Change Management | Git-based IaC, PR templates, CODEOWNERS |
43
+ | **A1.2** | Audit Logs | `~/.local/share/dotfiles.log` tracks operations |
44
+
45
+ ### ISO 27001
46
+
47
+ | Control | Description | Implementation |
48
+ |---------|-------------|----------------|
49
+ | **A.9.1.1** | Access Control Policy | Principle of Least Privilege (umask 022/077) |
50
+ | **A.9.4.1** | Information Access Restriction | `chmod 777/666` blocked by CI |
51
+ | **A.12.1.2** | Change Management | Git version control with CI/CD verification |
52
+ | **A.12.6.1** | Technical Vulnerability Management | Gitleaks, TruffleHog secrets scanning |
53
+ | **A.13.1.1** | Network Controls | TLS enforcement (no `curl -k`) |
54
+ | **A.14.2.5** | Secure Engineering | ShellCheck, cross-platform testing |
55
+ | **A.14.2.8** | System Security Testing | Module coverage gate (>=95%, currently 100%), weekly scans |
56
+
57
+ ### GDPR / HIPAA (Privacy)
58
+
59
+ | Requirement | Description | Implementation |
60
+ |-------------|-------------|----------------|
61
+ | **Data Minimization** | Limit data collection | `privacy-mode` disables CLI telemetry |
62
+ | **Integrity** | Protect against tampering | `lock-configs` prevents modification |
63
+ | **Encryption** | Protect data at rest | Age encryption for sensitive dotfiles |
64
+
65
+ ---
66
+
67
+ ## Security Controls
68
+
69
+ ### TLS Enforcement
70
+
71
+ All network operations require valid TLS certificates:
72
+
73
+ | Control | Pattern Blocked | Enforcement |
74
+ |---------|-----------------|-------------|
75
+ | Insecure curl | `curl -k`, `--insecure` | Pre-commit + CI |
76
+ | Certificate bypass | `wget --no-check-certificate` | Pre-commit + CI |
77
+ | Plaintext HTTP | `http://` URLs | CI warning |
78
+
79
+ **Files:**
80
+ - Pre-commit: `config/pre-commit-config.yaml`
81
+ - CI: `.github/workflows/compliance-guard.yml`
82
+
83
+ ### Secrets Management
84
+
85
+ | Tool | Purpose | Configuration |
86
+ |------|---------|---------------|
87
+ | Gitleaks | Prevent secrets in commits | `config/gitleaks.toml` |
88
+ | TruffleHog | Deep secrets scanning | CI workflow |
89
+ | detect-secrets | Baseline secrets detection | `.secrets.baseline` |
90
+ | Age | Encrypt sensitive dotfiles | Chezmoi integration |
91
+
92
+ ### Permission Controls
93
+
94
+ | Control | Implementation |
95
+ |---------|----------------|
96
+ | Least privilege CI | `permissions: contents: read` default |
97
+ | No world-writable | `chmod 777/666` blocked by CI |
98
+ | CODEOWNERS | All paths mapped to reviewers |
99
+ | Signed commits | GPG signing enforced |
100
+
101
+ ### Dangerous Pattern Blocking
102
+
103
+ Patterns automatically blocked by CI and pre-commit hooks:
104
+
105
+ ```bash
106
+ # Blocked - insecure TLS
107
+ curl -k https://...
108
+ wget --no-check-certificate https://...
109
+
110
+ # Blocked - world-writable permissions
111
+ chmod 777 /path
112
+ chmod -R 666 /files
113
+
114
+ # Blocked - hardcoded credentials
115
+ password="literal_value"
116
+ ```
117
+
118
+ ---
119
+
120
+ ## Cross-Platform Compatibility
121
+
122
+ ### Supported Platforms
123
+
124
+ | Platform | Tools | Default Shell | Bash Version |
125
+ |----------|-------|---------------|--------------|
126
+ | Linux | GNU | Bash | 5.x |
127
+ | macOS | BSD | Zsh | 3.2 (system) |
128
+ | WSL | GNU | Bash | 5.x |
129
+
130
+ ### Line Ending Normalization
131
+
132
+ Configured in `.gitattributes`:
133
+
134
+ | Pattern | Line Ending | Reason |
135
+ |---------|-------------|--------|
136
+ | `*.sh` | LF | Unix scripts |
137
+ | `*.bash` | LF | Unix scripts |
138
+ | `*.zsh` | LF | Unix scripts |
139
+ | `*.bat` | CRLF | Windows batch |
140
+ | `*.ps1` | CRLF | PowerShell |
141
+
142
+ ### BSD vs GNU Compatibility
143
+
144
+ The `cross-platform-test.yml` workflow validates scripts on both platforms:
145
+
146
+ | Pattern | Issue | Portable Alternative |
147
+ |---------|-------|---------------------|
148
+ | `sed -i ''` | BSD requires backup ext | Check `$OSTYPE` |
149
+ | `sed -i` | GNU style | Check `$OSTYPE` |
150
+ | `grep -P` | GNU-only PCRE | Use `grep -E` |
151
+ | `date -d` | GNU-only | Use `date +%s` |
152
+ | `readarray` | Bash 4+ only | Use `while read` |
153
+ | `declare -A` | Bash 4+ only | Use indexed arrays |
154
+
155
+ ### Path Handling
156
+
157
+ | Requirement | Implementation |
158
+ |-------------|----------------|
159
+ | No hardcoded user paths | Use `$HOME` or `~` |
160
+ | Case-insensitive safe | No filename collisions |
161
+ | Cross-platform paths | No platform-specific path literals |
162
+
163
+ ---
164
+
165
+ ## CI/CD Pipeline
166
+
167
+ ### Workflow Matrix
168
+
169
+ | Workflow | Trigger | Purpose |
170
+ |----------|---------|---------|
171
+ | `ci.yml` | Push/PR | Full CI pipeline, ShellCheck, tests |
172
+ | `compliance-guard.yml` | Push/PR | Security pattern scanning |
173
+ | `cross-platform-test.yml` | Push/PR + weekly | BSD/GNU compatibility |
174
+ | `security-enhanced.yml` | Push/PR | Deep security analysis, SBOM |
175
+ | `codeql.yml` | Push/PR + weekly | Static code analysis |
176
+ | `sbom-diff.yml` | Pull request | SBOM diff and CVE correlation |
177
+ | `nightly.yml` | Daily 2 AM UTC | Dependency version checks |
178
+
179
+ ### Compliance Guard Jobs
180
+
181
+ ```text
182
+ compliance-guard.yml
183
+ ├── insecure-patterns # TLS, credentials, chmod
184
+ ├── portability # ShellCheck, paths, .gitattributes
185
+ ├── dockerfile-lint # Hadolint
186
+ └── compliance-summary # Report generation
187
+ ```
188
+
189
+ ### Cross-Platform Test Jobs
190
+
191
+ ```text
192
+ cross-platform-test.yml
193
+ ├── ubuntu-latest (GNU) # Linux compatibility
194
+ ├── macos-latest (BSD) # macOS compatibility
195
+ └── compatibility-report # Summary
196
+ ```
197
+
198
+ ### GitHub Actions Security
199
+
200
+ | Control | Implementation |
201
+ |---------|----------------|
202
+ | Pinned versions | All actions pinned to SHA or version |
203
+ | Minimal permissions | `contents: read` by default |
204
+ | Concurrency control | Cancel in-progress duplicates |
205
+ | Timeout limits | All jobs have explicit timeouts |
206
+
207
+ ---
208
+
209
+ ## Pre-Commit Hooks
210
+
211
+ ### Configuration
212
+
213
+ File: `config/pre-commit-config.yaml`
214
+
215
+ ### Hook Matrix
216
+
217
+ | Hook | Stage | Purpose |
218
+ |------|-------|---------|
219
+ | `shellcheck` | commit | Shell script linting |
220
+ | `shfmt` | commit | Shell script formatting |
221
+ | `gitleaks` | commit | Secrets detection |
222
+ | `detect-secrets` | commit | Credential scanning |
223
+ | `checkov` | commit | Infrastructure security |
224
+ | `hadolint` | commit | Dockerfile linting |
225
+ | `insecure-tls-check` | commit | Block `curl -k` |
226
+ | `dangerous-chmod-check` | commit | Block `chmod 777/666` |
227
+ | `security-policy-enforcement` | pre-push | Policy validation |
228
+
229
+ ### Installation
230
+
231
+ ```bash
232
+ pip install pre-commit
233
+ pre-commit install
234
+ pre-commit install --hook-type pre-push
235
+ ```
236
+
237
+ ---
238
+
239
+ ## Change Management
240
+
241
+ ### Pull Request Requirements
242
+
243
+ | Requirement | Implementation |
244
+ |-------------|----------------|
245
+ | PR template | `.github/PULL_REQUEST_TEMPLATE.md` |
246
+ | Code owners | `.github/CODEOWNERS` |
247
+ | CI checks | Required to pass |
248
+ | Review required | Auto-assigned via CODEOWNERS |
249
+
250
+ ### PR Template Checklist
251
+
252
+ ```markdown
253
+ - [ ] `chezmoi apply --dry-run` verified
254
+ - [ ] Manual testing on macOS
255
+ - [ ] Manual testing on Linux
256
+ - [ ] CI checks pass
257
+ ```
258
+
259
+ ### Commit Requirements
260
+
261
+ | Requirement | Implementation |
262
+ |-------------|----------------|
263
+ | Signed commits | GPG/SSH signing (cryptographically verified) |
264
+ | Conventional format | `feat:`, `fix:`, `docs:` prefixes |
265
+ | Co-author attribution | AI contributions attributed |
266
+
267
+ ### Cryptographic Identity Verification (ALCOA: Attributable)
268
+
269
+ For SOC 2 compliance, the "Attributable" principle requires that all changes are linked to a **verified cryptographic identity**, not just a username.
270
+
271
+ **Enforcement layers:**
272
+
273
+ | Layer | Mechanism | Status |
274
+ |-------|-----------|--------|
275
+ | Local | Pre-push hook blocks unsigned commits | Enforced |
276
+ | CI | `compliance-guard.yml` verifies signatures | Advisory |
277
+ | GitHub | Branch protection (optional) | Configurable |
278
+
279
+ **Pre-push hook location:** `scripts/git-hooks/pre-push`
280
+
281
+ ```bash
282
+ # The hook verifies each commit before push:
283
+ for c in $(git rev-list "$range"); do
284
+ if ! git verify-commit "$c" >/dev/null 2>&1; then
285
+ echo "Blocked: unsigned commit $c"
286
+ exit 1
287
+ fi
288
+ done
289
+ ```
290
+
291
+ **Setup signing:**
292
+
293
+ ```bash
294
+ # SSH signing (recommended)
295
+ git config --global gpg.format ssh
296
+ git config --global user.signingkey ~/.ssh/id_ed25519.pub
297
+ git config --global commit.gpgsign true
298
+
299
+ # GPG signing (alternative)
300
+ git config --global user.signingkey <YOUR_GPG_KEY_ID>
301
+ git config --global commit.gpgsign true
302
+
303
+ # Or use the dotfiles alias:
304
+ enable-signing ssh # or: enable-signing gpg
305
+ ```
306
+
307
+ **Install pre-push hook:**
308
+
309
+ ```bash
310
+ cp scripts/git-hooks/pre-push .git/hooks/pre-push
311
+ chmod +x .git/hooks/pre-push
312
+ ```
313
+
314
+ **GitHub Branch Protection (recommended):**
315
+
316
+ Enable "Require signed commits" in repository settings:
317
+ `Settings > Branches > Branch protection rules > Require signed commits`
318
+
319
+ ---
320
+
321
+ ## Test Coverage
322
+
323
+ ### Current Metrics
324
+
325
+ | Category | Count | Coverage |
326
+ |----------|-------|----------|
327
+ | Documentation files | 63 | Audited |
328
+ | Executable shell surfaces | 205 | Audited |
329
+ | Unit test files | 425 | Tested |
330
+ | Integration test files | 11 | Tested |
331
+ | **Total test files** | **436** | **Module coverage: 100% (threshold >=95%)** |
332
+ | **Named tests (`test_start`)** | **2149** | **Pass rate: 100%** |
333
+
334
+ ### Test Framework
335
+
336
+ ```text
337
+ tests/
338
+ ├── framework/
339
+ │ ├── assertions.sh # 16 assertion functions
340
+ │ ├── mocks.sh # Mock utilities
341
+ │ └── test_runner.sh # Test executor
342
+ ├── unit/
343
+ │ └── test_*.sh # 378 unit test files
344
+ ├── integration/
345
+ │ └── test_*.sh # 9 integration test files
346
+ └── performance/
347
+ └── benchmark_runner.sh
348
+ ```
349
+
350
+ ### Running Tests
351
+
352
+ ```bash
353
+ # Run all tests
354
+ ./tests/framework/test_runner.sh
355
+
356
+ # Run specific test
357
+ bash tests/unit/test_dot_commands_apply.sh
358
+ ```
359
+
360
+ ---
361
+
362
+ ## Security Documentation
363
+
364
+ ### Required Files
365
+
366
+ | File | Purpose | Location |
367
+ |------|---------|----------|
368
+ | SECURITY.md | Vulnerability reporting | `.github/SECURITY.md` |
369
+ | CONTRIBUTING.md | Contribution guidelines | `.github/CONTRIBUTING.md` |
370
+ | CODEOWNERS | Code ownership | `.github/CODEOWNERS` |
371
+ | INCIDENT_RESPONSE.md | Incident response plan | `docs/security/` |
372
+ | FMEA.md | Failure Mode & Effects Analysis | `docs/security/` |
373
+ | VERIFICATION_VALIDATION.md | ISO 13485-style V&V report | `docs/security/` |
374
+ | .editorconfig | Editor settings | Root |
375
+ | .gitattributes | Git attributes | Root |
376
+
377
+ ### Vulnerability Response SLA
378
+
379
+ | Severity | Initial Response | Resolution Target |
380
+ |----------|------------------|-------------------|
381
+ | Critical | 24 hours | 48 hours |
382
+ | High | 72 hours | 7 days |
383
+ | Medium | 5 business days | 30 days |
384
+ | Low | 10 business days | 90 days |
385
+
386
+ ---
387
+
388
+ ## Audit & Forensics
389
+
390
+ ### Immutability
391
+
392
+ Lock critical configuration files:
393
+
394
+ ```bash
395
+ lock-configs # Sets chflags uchg (macOS) or chattr +i (Linux)
396
+ ```
397
+
398
+ ### Audit Trail
399
+
400
+ ```bash
401
+ # View dotfiles operations log
402
+ dot audit
403
+
404
+ # Log location
405
+ ~/.local/share/dotfiles.log
406
+ ```
407
+
408
+ ### Supply Chain Security
409
+
410
+ | Control | Implementation |
411
+ |---------|----------------|
412
+ | SBOM | Generated for every release (SPDX) |
413
+ | Provenance | SLSA Level 3 build attestation |
414
+ | Dependencies | Pinned versions, weekly updates |
415
+
416
+ ---
417
+
418
+ ## Verification Commands
419
+
420
+ ### Manual Verification
421
+
422
+ ```bash
423
+ # Run all pre-commit hooks
424
+ pre-commit run --all-files
425
+
426
+ # Run unit tests
427
+ ./tests/framework/test_runner.sh
428
+
429
+ # Check for insecure patterns
430
+ grep -rn --include="*.sh" -E 'curl.*-k|wget.*--no-check' .
431
+
432
+ # Validate .gitattributes
433
+ grep "text=auto" .gitattributes && echo "OK"
434
+ ```
435
+
436
+ ### Automated Verification
437
+
438
+ | Schedule | Check |
439
+ |----------|-------|
440
+ | Every PR | compliance-guard, cross-platform-test |
441
+ | Weekly | Full security scan, CodeQL |
442
+ | Nightly | Tool version checks |
443
+
444
+ ---
445
+
446
+ ## References
447
+
448
+ - [SOC 2 Type II](https://www.aicpa.org/soc2)
449
+ - [ISO 27001:2022](https://www.iso.org/standard/27001)
450
+ - [OWASP Top 10](https://owasp.org/Top10/)
451
+ - [Google Shell Style Guide](https://google.github.io/styleguide/shellguide.html)
452
+ - [ShellCheck Wiki](https://www.shellcheck.net/wiki/)
453
+ - [SLSA Framework](https://slsa.dev/)
@@ -0,0 +1,52 @@
1
+ # Secrets Encryption with SOPS and age
2
+
3
+ ## Quick Start
4
+
5
+ ```bash
6
+ # 1. Generate an age key (one-time)
7
+ mkdir -p ~/.config/sops/age
8
+ age-keygen -o ~/.config/sops/age/keys.txt
9
+
10
+ # 2. Get your public key
11
+ age-keygen -y ~/.config/sops/age/keys.txt
12
+ # Output: age1abc123...
13
+
14
+ # 3. Update .sops.yaml with your public key
15
+ # Replace the placeholder key in .sops.yaml with your actual public key
16
+
17
+ # 4. Encrypt a file
18
+ sops --encrypt --age $(age-keygen -y ~/.config/sops/age/keys.txt) secrets.yaml > secrets.sops.yaml
19
+
20
+ # 5. Edit encrypted files
21
+ sops secrets.sops.yaml
22
+ ```
23
+
24
+ ## Key Management
25
+
26
+ - **Private key**: `~/.config/sops/age/keys.txt` — never commit this file.
27
+ - **Public key**: Safe to share. It lives in `.sops.yaml`.
28
+ - **Backup**: Keep your private key in a password manager or a hardware security module.
29
+
30
+ ## Recovery
31
+
32
+ If you lose your age private key, follow these steps:
33
+ 1. Create a new key: `age-keygen -o ~/.config/sops/age/keys.txt`
34
+ 2. Re-encrypt all secrets with the new public key.
35
+ 3. Update `.sops.yaml` with the new public key.
36
+
37
+ ## Integration with Chezmoi
38
+
39
+ Chezmoi has built-in support for age encryption.
40
+
41
+ ```bash
42
+ chezmoi add --encrypt ~/.ssh/config
43
+ ```
44
+
45
+ This encrypts the file in the source state. It uses the age key set in `~/.config/chezmoi/chezmoi.toml`:
46
+
47
+ ```toml
48
+ encryption = "age"
49
+ [age]
50
+ identity = "~/.config/sops/age/keys.txt"
51
+ recipient = "age1abc123..."
52
+ ```