@sebastienrousseau/dotfiles 0.2.499 → 0.2.501

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 (567) hide show
  1. package/CHANGELOG.md +452 -0
  2. package/LICENSE +1283 -0
  3. package/README.md +322 -0
  4. package/docs/.vitepress/reports/localization-readability-audit.md +73 -0
  5. package/docs/AI.md +108 -0
  6. package/docs/CNAME +1 -0
  7. package/docs/COPYRIGHT +4 -3
  8. package/docs/NAMING_CONVENTIONS.md +102 -0
  9. package/docs/README.md +82 -0
  10. package/docs/_config.yml +59 -0
  11. package/docs/adr/ADR-001-ci-cd-pipeline.md +118 -0
  12. package/docs/adr/ADR-002-shell-performance.md +130 -0
  13. package/docs/adr/ADR-003-security-first.md +158 -0
  14. package/docs/adr/ADR-004-cli-architecture.md +171 -0
  15. package/docs/adr/ADR-005-chezmoi-choice.md +99 -0
  16. package/docs/adr/ADR-006-shell-selection.md +124 -0
  17. package/docs/adr/ADR-007-multi-shell-parity.md +62 -0
  18. package/docs/adr/ADR-008-alias-system-architecture.md +95 -0
  19. package/docs/adr/ADR-009-wallpaper-driven-theming.md +131 -0
  20. package/docs/adr/ADR-010-starship-transient-prompt.md +144 -0
  21. package/docs/adr/ADR-011-nushell-tier3-keep.md +144 -0
  22. package/docs/adr/README.md +39 -0
  23. package/docs/architecture/ARCHITECTURE.md +117 -0
  24. package/docs/architecture/INTEROP.md +44 -0
  25. package/docs/architecture/REPO_LAYOUT.md +241 -0
  26. package/docs/architecture/WALKTHROUGH.md +86 -0
  27. package/docs/architecture/fleet-deployment.md +77 -0
  28. package/docs/archive/EUXIS_2026_REVIEW.md +127 -0
  29. package/docs/archive/LEGACY_ROADMAP.md +160 -0
  30. package/docs/archive/MILESTONE_v0.2.493.md +47 -0
  31. package/docs/{PLAN.md → archive/PLAN.md} +50 -12
  32. package/docs/archive/REPO_AUDIT.md +31 -0
  33. package/docs/guides/INSTALL.md +144 -0
  34. package/docs/guides/NEOVIM_IDE_GUIDE.md +61 -0
  35. package/docs/guides/THEMING.md +230 -0
  36. package/docs/guides/TROUBLESHOOTING.md +176 -0
  37. package/docs/guides/WSL2_NIX_TROUBLESHOOTING.md +792 -0
  38. package/docs/index.md +43 -0
  39. package/docs/interop/A2A.md +39 -0
  40. package/docs/interop/POWERSHELL.md +102 -0
  41. package/docs/manual/00-introduction.md +89 -0
  42. package/docs/manual/01-concepts/01-architecture.md +138 -0
  43. package/docs/manual/01-concepts/02-trust-model.md +182 -0
  44. package/docs/manual/01-concepts/03-theme-engine.md +186 -0
  45. package/docs/manual/01-concepts/04-fleet.md +148 -0
  46. package/docs/manual/01-concepts/05-self-healing.md +204 -0
  47. package/docs/manual/02-tutorials/01-first-install.md +197 -0
  48. package/docs/manual/02-tutorials/02-add-wallpaper.md +216 -0
  49. package/docs/manual/02-tutorials/03-create-profile.md +244 -0
  50. package/docs/manual/02-tutorials/04-encrypt-secret.md +281 -0
  51. package/docs/manual/02-tutorials/05-deploy-fleet.md +283 -0
  52. package/docs/manual/03-reference/01-dot-cli.md +417 -0
  53. package/docs/manual/03-reference/02-config-files.md +265 -0
  54. package/docs/manual/03-reference/03-environment.md +124 -0
  55. package/docs/manual/03-reference/04-templates.md +190 -0
  56. package/docs/manual/03-reference/05-feature-flags.md +128 -0
  57. package/docs/manual/04-cookbook/01-recipes.md +285 -0
  58. package/docs/manual/04-cookbook/02-troubleshooting.md +351 -0
  59. package/docs/manual/04-cookbook/03-faq.md +175 -0
  60. package/docs/manual/05-appendices/A-platform-matrix.md +101 -0
  61. package/docs/manual/05-appendices/B-security-checklist.md +84 -0
  62. package/docs/manual/05-appendices/C-glossary.md +40 -0
  63. package/docs/manual/05-appendices/D-bibliography.md +58 -0
  64. package/docs/manual/05-appendices/E-license.md +38 -0
  65. package/docs/manual/_toc.yml +58 -0
  66. package/docs/manual/command-index.md +62 -0
  67. package/docs/manual/concept-index.md +168 -0
  68. package/docs/operations/ATTESTATION.md +44 -0
  69. package/docs/operations/CI_CADENCE.md +107 -0
  70. package/docs/operations/CI_COMPOSITES.md +156 -0
  71. package/docs/operations/COMPLETIONS.md +123 -0
  72. package/docs/operations/COVERAGE.md +148 -0
  73. package/docs/operations/DRIFT.md +107 -0
  74. package/docs/operations/MAINTENANCE.md +63 -0
  75. package/docs/operations/MIGRATION.md +109 -0
  76. package/docs/operations/OPERATIONS.md +188 -0
  77. package/docs/operations/PERFORMANCE.md +133 -0
  78. package/docs/operations/RELIABILITY.md +122 -0
  79. package/docs/{ROADMAP.md → operations/ROADMAP.md} +57 -39
  80. package/docs/operations/TESTING.md +199 -0
  81. package/docs/operations/TRACEABILITY.md +35 -0
  82. package/docs/operations/TRUSTED_AGENT_WORKSTATION.md +65 -0
  83. package/docs/operations/VERSION_SYNC.md +393 -0
  84. package/docs/reference/ALIASES.md +131 -0
  85. package/docs/reference/ALIASES_CHEATSHEET.md +32 -0
  86. package/docs/reference/ALIASES_DEPRECATIONS.md +13 -0
  87. package/docs/reference/FEATURES.md +66 -0
  88. package/docs/reference/FONTS.md +112 -0
  89. package/docs/reference/PROFILES.md +69 -0
  90. package/docs/reference/SCREENSHOTS.md +121 -0
  91. package/docs/reference/SCRIPTS.md +71 -0
  92. package/docs/reference/SUPPORT_MATRIX.md +80 -0
  93. package/docs/reference/THEMES.md +117 -0
  94. package/docs/reference/TOOLS.md +109 -0
  95. package/docs/reference/UTILS.md +155 -0
  96. package/docs/security/AI_ACT_COMPLIANCE.md +94 -0
  97. package/docs/security/AUDIT_BYPASS.md +103 -0
  98. package/docs/security/AUTOMATION_SECRETS.md +26 -0
  99. package/docs/security/CI_EGRESS_ALLOWLIST.md +127 -0
  100. package/docs/security/COMPLIANCE.md +458 -0
  101. package/docs/security/DEPS_DEV_EXCEPTIONS.md +86 -0
  102. package/docs/security/ENCRYPTION.md +57 -0
  103. package/docs/security/FMEA.md +159 -0
  104. package/docs/security/HISTORY_FILTERING.md +132 -0
  105. package/docs/security/INCIDENT_RESPONSE.md +579 -0
  106. package/docs/security/INSTALL_VERIFICATION.md +122 -0
  107. package/docs/security/KEYS.md +49 -0
  108. package/docs/security/KEY_ROTATION.md +223 -0
  109. package/docs/security/MCP_POLICY.md +78 -0
  110. package/docs/security/POLICY_RELEASES.md +37 -0
  111. package/docs/security/README.md +28 -0
  112. package/docs/security/SCORECARD.md +80 -0
  113. package/docs/security/SECRETS.md +158 -0
  114. package/docs/security/SECURITY.md +45 -0
  115. package/docs/security/SECURITY_CHECKLIST.md +55 -0
  116. package/docs/security/SHELL_EXEMPTIONS.md +145 -0
  117. package/docs/security/SOUP_REGISTER.md +36 -0
  118. package/docs/security/THREAT_MODEL.md +130 -0
  119. package/docs/security/VERIFICATION_VALIDATION.md +228 -0
  120. package/docs/themes/README.md +10 -0
  121. package/docs/themes/VISUAL_INTEGRITY_REPORT.md +30 -0
  122. package/docs/themes/hero-shot.svg +78 -0
  123. package/dot_config/.module-manifest.json +69 -0
  124. package/dot_config/ai/identity.md +23 -0
  125. package/dot_config/ai/patterns/architect.md +16 -0
  126. package/dot_config/ai/patterns/hardener.md +15 -0
  127. package/dot_config/ai/patterns/refactor.md +15 -0
  128. package/dot_config/aider/aider.conf.yml +32 -0
  129. package/dot_config/alacritty/alacritty.toml.tmpl +55 -0
  130. package/dot_config/ansible/ansible.cfg +11 -0
  131. package/dot_config/atuin/config.toml.tmpl +47 -0
  132. package/dot_config/bat/config +23 -0
  133. package/dot_config/brave-flags.conf.tmpl +7 -0
  134. package/dot_config/btop/btop.conf +16 -0
  135. package/dot_config/btop/themes/tokyonight.theme +34 -0
  136. package/dot_config/bun/bunfig.toml.tmpl +33 -0
  137. package/dot_config/claude/mcp_servers.json +20 -0
  138. package/dot_config/containers/containers.conf +14 -0
  139. package/dot_config/curl/dot_curlrc +18 -0
  140. package/dot_config/dlv/config.yml +39 -0
  141. package/dot_config/docker/config.json +15 -0
  142. package/dot_config/dotfiles/agent-card.json +29 -0
  143. package/dot_config/dotfiles/agent-profiles.json +92 -0
  144. package/dot_config/dotfiles/boot/README.md +13 -0
  145. package/dot_config/dotfiles/grub/README.md +13 -0
  146. package/dot_config/dotfiles/lock/README.md +13 -0
  147. package/dot_config/dotfiles/mcp-lock.json +33 -0
  148. package/dot_config/dotfiles/mcp-policy.json +52 -0
  149. package/dot_config/dotfiles/mcp-registry.json +47 -0
  150. package/dot_config/dotfiles/model-registry.json +20 -0
  151. package/dot_config/dotfiles/policy-bundles.json +38 -0
  152. package/dot_config/dotfiles/prompt-registry.json +16 -0
  153. package/dot_config/dotfiles/versions.env +18 -0
  154. package/dot_config/duf/duf.conf +6 -0
  155. package/dot_config/duti/defaults.duti +5 -0
  156. package/dot_config/emoji/emoji.txt +34 -0
  157. package/dot_config/environment.d/50-ssh-agent.conf +2 -0
  158. package/dot_config/environment.d/90-wayland.conf +19 -0
  159. package/dot_config/fastfetch/config.jsonc +28 -0
  160. package/dot_config/firefox/user.js.tmpl +58 -0
  161. package/dot_config/fish/completions/dot-theme-sync.fish.tmpl +9 -0
  162. package/dot_config/fish/completions/dot.fish.tmpl +115 -0
  163. package/dot_config/fish/conf.d/000-perf-cache.fish +56 -0
  164. package/dot_config/fish/conf.d/aliases.fish.tmpl +77 -0
  165. package/dot_config/fish/conf.d/env.fish.tmpl +48 -0
  166. package/dot_config/fish/conf.d/functions.fish.tmpl +22 -0
  167. package/dot_config/fish/conf.d/init.fish.tmpl +172 -0
  168. package/dot_config/fish/config.fish.tmpl +44 -0
  169. package/dot_config/fish/fish_plugins +1 -0
  170. package/dot_config/fish/functions/_.fish +3 -0
  171. package/dot_config/fish/functions/_cached_eval.fish +131 -0
  172. package/dot_config/fish/functions/_cached_eval_clear.fish +17 -0
  173. package/dot_config/fish/functions/als.fish +46 -0
  174. package/dot_config/fish/functions/bg-upgrade.fish +7 -0
  175. package/dot_config/fish/functions/c.fish +3 -0
  176. package/dot_config/fish/functions/cat.fish +9 -0
  177. package/dot_config/fish/functions/d.fish +7 -0
  178. package/dot_config/fish/functions/dot.fish +34 -0
  179. package/dot_config/fish/functions/h.fish +3 -0
  180. package/dot_config/fish/functions/l.fish +7 -0
  181. package/dot_config/fish/functions/la.fish +7 -0
  182. package/dot_config/fish/functions/ll.fish +7 -0
  183. package/dot_config/fish/functions/log_error.fish +13 -0
  184. package/dot_config/fish/functions/log_info.fish +13 -0
  185. package/dot_config/fish/functions/lr.fish +7 -0
  186. package/dot_config/fish/functions/lra.fish +7 -0
  187. package/dot_config/fish/functions/ls.fish +7 -0
  188. package/dot_config/fish/functions/lt.fish +7 -0
  189. package/dot_config/fish/functions/lta.fish +7 -0
  190. package/dot_config/fish/functions/notify-run.fish +11 -0
  191. package/dot_config/fish/functions/q.fish +3 -0
  192. package/dot_config/fish/functions/silent-run.fish +7 -0
  193. package/dot_config/fish/functions/yy.fish +8 -0
  194. package/dot_config/flatpak/flatpak.list +4 -0
  195. package/dot_config/fontconfig/fonts.conf.tmpl +57 -0
  196. package/dot_config/foot/foot.ini.tmpl +33 -0
  197. package/dot_config/fuzzel/fuzzel.ini.tmpl +18 -0
  198. package/dot_config/fzf/fzf.zsh +48 -0
  199. package/dot_config/gem/gemrc +9 -0
  200. package/dot_config/gh/config.yml +12 -0
  201. package/dot_config/ghostty/config.tmpl +165 -0
  202. package/dot_config/git/allowed_signers.tmpl +18 -0
  203. package/dot_config/git/attributes +12 -0
  204. package/dot_config/git/commit-template +10 -0
  205. package/dot_config/git/hooks/executable_commit-msg +146 -0
  206. package/dot_config/git/ignore +27 -0
  207. package/dot_config/gnupg/gpg-agent.conf +11 -0
  208. package/dot_config/go/golangci.yml +118 -0
  209. package/dot_config/go/gopls.json +30 -0
  210. package/dot_config/goose/config.yaml +29 -0
  211. package/dot_config/gtk-3.0/gtk.css.tmpl +184 -0
  212. package/dot_config/gtk-3.0/settings.ini.tmpl +27 -0
  213. package/dot_config/gtk-4.0/gtk.css.tmpl +252 -0
  214. package/dot_config/gtk-4.0/settings.ini.tmpl +18 -0
  215. package/dot_config/htop/htoprc +20 -0
  216. package/dot_config/inputrc +2 -0
  217. package/dot_config/ipython/profile_default/ipython_config.py +19 -0
  218. package/dot_config/just/justfile +122 -0
  219. package/dot_config/k9s/config.yaml +65 -0
  220. package/dot_config/k9s/skins/catppuccin-mocha.yaml +116 -0
  221. package/dot_config/kanshi/config.tmpl +22 -0
  222. package/dot_config/karabiner/karabiner.json +14 -0
  223. package/dot_config/kitty/kitty.conf.tmpl +53 -0
  224. package/dot_config/lazydocker/config.yml +186 -0
  225. package/dot_config/lazygit/config.yml +35 -0
  226. package/dot_config/mako/config +47 -0
  227. package/dot_config/mas/masapps.txt +5 -0
  228. package/dot_config/micro/settings.json +3 -0
  229. package/dot_config/mimeapps.list +77 -0
  230. package/dot_config/minikube/config.json +13 -0
  231. package/dot_config/mise/config.toml +99 -0
  232. package/dot_config/mongosh/mongoshrc.js +68 -0
  233. package/dot_config/mpv/input.conf +47 -0
  234. package/dot_config/mpv/mpv.conf +47 -0
  235. package/dot_config/mycli/myclirc +67 -0
  236. package/dot_config/nano/nanorc +28 -0
  237. package/dot_config/ncdu/config +12 -0
  238. package/dot_config/niri/config.kdl.tmpl +327 -0
  239. package/dot_config/nushell/aliases.nu +18 -0
  240. package/dot_config/nushell/cached_eval.nu +80 -0
  241. package/dot_config/nushell/completions.nu.tmpl +52 -0
  242. package/dot_config/nushell/config.nu.tmpl +86 -0
  243. package/dot_config/nushell/env.nu.tmpl +102 -0
  244. package/dot_config/nushell/functions.nu.tmpl +17 -0
  245. package/dot_config/nvim/init.lua +18 -0
  246. package/dot_config/nvim/lazy-lock.json +58 -0
  247. package/dot_config/nvim/lua/config/autocmds.lua +107 -0
  248. package/dot_config/nvim/lua/config/keymaps.lua +92 -0
  249. package/dot_config/nvim/lua/config/lazy.lua +44 -0
  250. package/dot_config/nvim/lua/config/options.lua +49 -0
  251. package/dot_config/nvim/lua/plugins/ai.lua +75 -0
  252. package/dot_config/nvim/lua/plugins/coding.lua +216 -0
  253. package/dot_config/nvim/lua/plugins/completion.lua +60 -0
  254. package/dot_config/nvim/lua/plugins/dap.lua +412 -0
  255. package/dot_config/nvim/lua/plugins/editor.lua +55 -0
  256. package/dot_config/nvim/lua/plugins/git.lua +10 -0
  257. package/dot_config/nvim/lua/plugins/lsp.lua +156 -0
  258. package/dot_config/nvim/lua/plugins/markdown.lua +18 -0
  259. package/dot_config/nvim/lua/plugins/rust.lua +34 -0
  260. package/dot_config/nvim/lua/plugins/sessions.lua +33 -0
  261. package/dot_config/nvim/lua/plugins/ui.lua +509 -0
  262. package/dot_config/paru/paru.conf +10 -0
  263. package/dot_config/pip/pip.conf.tmpl +32 -0
  264. package/dot_config/powershell/Microsoft.PowerShell_profile.ps1.tmpl +81 -0
  265. package/dot_config/pueue/pueue.yml +34 -0
  266. package/dot_config/pypoetry/config.toml +6 -0
  267. package/dot_config/pyrightconfig.json +5 -0
  268. package/dot_config/raycast/README.md +13 -0
  269. package/dot_config/redis/redisclirc +41 -0
  270. package/dot_config/ripgrep/ripgreprc +21 -0
  271. package/dot_config/shell/00-core-paths.sh.tmpl +134 -0
  272. package/dot_config/shell/05-core-safety.sh +48 -0
  273. package/dot_config/shell/10-secrets.sh +41 -0
  274. package/dot_config/shell/40-fzf-defaults.sh.tmpl +17 -0
  275. package/dot_config/shell/40-ls-colors.sh +49 -0
  276. package/dot_config/shell/50-logic-functions-core.sh.tmpl +11 -0
  277. package/dot_config/shell/50-logic-functions.sh.tmpl +11 -0
  278. package/dot_config/shell/51-logic-functions-extra.sh.tmpl +65 -0
  279. package/dot_config/shell/90-ux-aliases.sh.tmpl +121 -0
  280. package/dot_config/shell/91-ux-aliases-lazy.sh.tmpl +55 -0
  281. package/dot_config/shell/Brewfile +207 -0
  282. package/dot_config/shell/Brewfile.cask +92 -0
  283. package/dot_config/shell/Brewfile.cli +127 -0
  284. package/dot_config/shell/README.md +284 -0
  285. package/dot_config/shell/als_data.txt.tmpl +65 -0
  286. package/dot_config/shell/custom/auto_ls.zsh +20 -0
  287. package/dot_config/shell/custom/context_suggest.zsh +68 -0
  288. package/dot_config/shell/custom/error_analysis.zsh +45 -0
  289. package/dot_config/sops/dot_sops.yaml +23 -0
  290. package/dot_config/starship.toml.tmpl +202 -0
  291. package/dot_config/swaylock/config +43 -0
  292. package/dot_config/systemd/user/dotfiles-maintenance.service +8 -0
  293. package/dot_config/systemd/user/dotfiles-maintenance.timer +11 -0
  294. package/dot_config/systemd/user/pueued.service +12 -0
  295. package/dot_config/systemd/user/ssh-agent.service +12 -0
  296. package/dot_config/task/Taskfile.yml +86 -0
  297. package/dot_config/tflint/tflint.hcl +9 -0
  298. package/dot_config/tmux/tmux.conf.tmpl +223 -0
  299. package/dot_config/topgrade.toml.tmpl +54 -0
  300. package/dot_config/user-dirs.dirs +10 -0
  301. package/dot_config/vscode/extensions.txt +11 -0
  302. package/dot_config/vscode/settings.json.tmpl +82 -0
  303. package/dot_config/waybar/config.jsonc.tmpl +90 -0
  304. package/dot_config/waybar/style.css.tmpl +211 -0
  305. package/dot_config/wezterm/wezterm.lua.tmpl +64 -0
  306. package/dot_config/wget/wgetrc +12 -0
  307. package/dot_config/xdg-desktop-portal/niri-portals.conf +5 -0
  308. package/dot_config/yarn/yarnrc.yml +36 -0
  309. package/dot_config/yazi/keymap.toml +67 -0
  310. package/dot_config/yazi/theme.toml +102 -0
  311. package/dot_config/yazi/yazi.toml +40 -0
  312. package/dot_config/zathura/zathurarc +52 -0
  313. package/dot_config/zellij/config.kdl.tmpl +79 -0
  314. package/dot_config/zsh/dot_zprofile +7 -0
  315. package/dot_config/zsh/dot_zshenv +5 -0
  316. package/dot_config/zsh/dot_zshrc.tmpl +635 -0
  317. package/dot_config/zsh/rc.d/00-alias-shims.zsh +99 -0
  318. package/dot_config/zsh/rc.d/05-ssh-agent.zsh +18 -0
  319. package/dot_config/zsh/rc.d/10-env.zsh.tmpl +28 -0
  320. package/dot_config/zsh/rc.d/20-zinit.zsh +65 -0
  321. package/dot_config/zsh/rc.d/30-options.zsh.tmpl +214 -0
  322. package/dot_config/zsh/rc.d/40-bell.zsh +20 -0
  323. package/dot_config/zsh/rc.d/50-login-fortune.zsh +9 -0
  324. package/dot_config/zsh/rc.d/99-alias-wrapper.zsh +32 -0
  325. package/dot_local/bin/executable_ai-update +195 -0
  326. package/dot_local/bin/executable_ai_core +152 -0
  327. package/dot_local/bin/executable_antigravity +11 -0
  328. package/dot_local/bin/executable_b64 +84 -0
  329. package/dot_local/bin/executable_bm +79 -0
  330. package/dot_local/bin/executable_cb +39 -0
  331. package/dot_local/bin/executable_dot +596 -0
  332. package/dot_local/bin/executable_dot-ai +36 -0
  333. package/dot_local/bin/executable_dot-bootstrap +77 -0
  334. package/dot_local/bin/executable_dot-launch-or-focus +52 -0
  335. package/dot_local/bin/executable_dot-load-benchmark +31 -0
  336. package/dot_local/bin/executable_dot-load-benchmark-pty +77 -0
  337. package/dot_local/bin/executable_dot-theme-sync +952 -0
  338. package/dot_local/bin/executable_dot_completion +57 -0
  339. package/dot_local/bin/executable_dtags +28 -0
  340. package/dot_local/bin/executable_epoch +67 -0
  341. package/dot_local/bin/executable_extract +41 -0
  342. package/dot_local/bin/executable_gbd +52 -0
  343. package/dot_local/bin/executable_gd +42 -0
  344. package/dot_local/bin/executable_git-ai-commit +175 -0
  345. package/dot_local/bin/executable_git-ai-diff +169 -0
  346. package/dot_local/bin/executable_gl +101 -0
  347. package/dot_local/bin/executable_hash +161 -0
  348. package/dot_local/bin/executable_hashsum +160 -0
  349. package/dot_local/bin/executable_hex +115 -0
  350. package/dot_local/bin/executable_jsonv +78 -0
  351. package/dot_local/bin/executable_jwt +94 -0
  352. package/dot_local/bin/executable_kill-port +75 -0
  353. package/dot_local/bin/executable_lorem +118 -0
  354. package/dot_local/bin/executable_mkscript +35 -0
  355. package/dot_local/bin/executable_monitor +56 -0
  356. package/dot_local/bin/executable_myip +51 -0
  357. package/dot_local/bin/executable_notify +24 -0
  358. package/dot_local/bin/executable_open +38 -0
  359. package/dot_local/bin/executable_pw +27 -0
  360. package/dot_local/bin/executable_rec-start +46 -0
  361. package/dot_local/bin/executable_rec-stop +35 -0
  362. package/dot_local/bin/executable_regex +132 -0
  363. package/dot_local/bin/executable_start-niri +8 -0
  364. package/dot_local/bin/executable_tmux-sessionizer +314 -0
  365. package/dot_local/bin/executable_tour +177 -0
  366. package/dot_local/bin/executable_up +23 -0
  367. package/dot_local/bin/executable_update +142 -0
  368. package/dot_local/bin/executable_uuid +87 -0
  369. package/dot_local/bin/executable_win +32 -0
  370. package/dot_local/bin/executable_yamlv +57 -0
  371. package/dot_local/share/bash-completion/completions/dot +72 -0
  372. package/dot_local/share/icons/hicolor/128x128/apps/rousseau.png +0 -0
  373. package/dot_local/share/icons/hicolor/16x16/apps/rousseau.png +0 -0
  374. package/dot_local/share/icons/hicolor/24x24/apps/rousseau.png +0 -0
  375. package/dot_local/share/icons/hicolor/256x256/apps/rousseau.png +0 -0
  376. package/dot_local/share/icons/hicolor/32x32/apps/rousseau.png +0 -0
  377. package/dot_local/share/icons/hicolor/48x48/apps/rousseau.png +0 -0
  378. package/dot_local/share/icons/hicolor/512x512/apps/rousseau.png +0 -0
  379. package/dot_local/share/icons/hicolor/64x64/apps/rousseau.png +0 -0
  380. package/dot_local/share/icons/hicolor/96x96/apps/rousseau.png +0 -0
  381. package/dot_local/share/icons/hicolor/scalable/apps/rousseau.png +0 -0
  382. package/dot_local/share/man/man1/dot.1 +149 -0
  383. package/dot_local/share/mise/plugins/kiro-cli/bin/executable_download +64 -0
  384. package/dot_local/share/mise/plugins/kiro-cli/bin/executable_install +18 -0
  385. package/dot_local/share/mise/plugins/kiro-cli/bin/executable_list-all +13 -0
  386. package/dot_local/share/wayland-sessions/niri.desktop.tmpl +6 -0
  387. package/dot_local/share/zsh/completions/.keep +0 -0
  388. package/dot_local/share/zsh/completions/_dot +283 -0
  389. package/install.sh +350 -0
  390. package/package.json +1 -1
  391. package/scripts/ci/check-copyright-headers.sh +96 -0
  392. package/scripts/ci/check-dangerous-chmod.sh +19 -0
  393. package/scripts/ci/check-deps-dev.sh +236 -0
  394. package/scripts/ci/check-insecure-tls.sh +61 -0
  395. package/scripts/ci/check-regression-traceability.sh +67 -0
  396. package/scripts/ci/check-shell-preamble.sh +106 -0
  397. package/scripts/ci/guard-gitleaks-checkout.sh +57 -0
  398. package/scripts/ci/install-chezmoi-verified.sh +64 -0
  399. package/scripts/ci/run-coverage.sh +362 -0
  400. package/scripts/ci/validate-chezmoidata.sh +25 -0
  401. package/scripts/ci/validate-ci-config.sh +224 -0
  402. package/scripts/demo/record.sh +42 -0
  403. package/scripts/diagnostics/a2a-conformance.sh +162 -0
  404. package/scripts/diagnostics/alias-governance.sh +137 -0
  405. package/scripts/diagnostics/aliases-cheatsheet.sh +73 -0
  406. package/scripts/diagnostics/aliases-manifest.sh +31 -0
  407. package/scripts/diagnostics/benchmark.sh +381 -0
  408. package/scripts/diagnostics/conflicts.sh +72 -0
  409. package/scripts/diagnostics/doctor-unified.sh +38 -0
  410. package/scripts/diagnostics/doctor.sh +709 -0
  411. package/scripts/diagnostics/drift-dashboard.sh +201 -0
  412. package/scripts/diagnostics/health.sh +614 -0
  413. package/scripts/diagnostics/history-analysis.sh +85 -0
  414. package/scripts/diagnostics/mcp-doctor.sh +575 -0
  415. package/scripts/diagnostics/perf.sh +452 -0
  416. package/scripts/diagnostics/scorecard.sh +118 -0
  417. package/scripts/diagnostics/secret-governance.sh +58 -0
  418. package/scripts/diagnostics/security-score.sh +438 -0
  419. package/scripts/diagnostics/smoke-test.sh +87 -0
  420. package/scripts/diagnostics/snapshot.sh +89 -0
  421. package/scripts/diagnostics/verify.sh +107 -0
  422. package/scripts/{verify_state.sh → diagnostics/verify_state.sh} +22 -22
  423. package/scripts/diagnostics/version-locks.sh +79 -0
  424. package/scripts/diagnostics/workstation-attestation.sh +186 -0
  425. package/scripts/docs/build-manual.sh +883 -0
  426. package/scripts/docs/check-manual.sh +213 -0
  427. package/scripts/dot/commands/agent.sh +474 -0
  428. package/scripts/dot/commands/ai.sh +481 -0
  429. package/scripts/dot/commands/aliases.sh +250 -0
  430. package/scripts/dot/commands/appearance.sh +80 -0
  431. package/scripts/dot/commands/core.sh +185 -0
  432. package/scripts/dot/commands/diagnostics.sh +229 -0
  433. package/scripts/dot/commands/fleet.sh +399 -0
  434. package/scripts/dot/commands/lint.sh +177 -0
  435. package/scripts/dot/commands/manual.sh +168 -0
  436. package/scripts/dot/commands/meta.sh +248 -0
  437. package/scripts/dot/commands/patterns.sh +54 -0
  438. package/scripts/dot/commands/restore.sh +231 -0
  439. package/scripts/dot/commands/secrets.sh +223 -0
  440. package/scripts/dot/commands/security.sh +76 -0
  441. package/scripts/dot/commands/tools.sh +469 -0
  442. package/scripts/dot/data/alias-deprecations.tsv +2 -0
  443. package/scripts/dot/lib/bento.sh +50 -0
  444. package/scripts/dot/lib/log.sh +200 -0
  445. package/scripts/dot/lib/platform.sh +99 -0
  446. package/scripts/dot/lib/ui.sh +518 -0
  447. package/scripts/dot/lib/utils.sh +377 -0
  448. package/scripts/fonts/install-nerd-fonts.sh +68 -0
  449. package/scripts/fonts/patch-fonts.sh +35 -0
  450. package/scripts/git-hooks/install.sh +11 -0
  451. package/scripts/git-hooks/pre-commit +12 -0
  452. package/scripts/git-hooks/pre-commit-audit.sh +145 -0
  453. package/scripts/git-hooks/pre-push +92 -0
  454. package/scripts/git-hooks/prepare-commit-msg +29 -0
  455. package/scripts/lib/secrets_provider.sh +158 -0
  456. package/scripts/maintenance/check-updates.sh +131 -0
  457. package/scripts/ops/ai-setup.sh +55 -0
  458. package/scripts/ops/bundle.sh +77 -0
  459. package/scripts/ops/chaos.sh +49 -0
  460. package/scripts/ops/chezmoi-apply.sh +270 -0
  461. package/scripts/ops/chezmoi-diff.sh +15 -0
  462. package/scripts/ops/chezmoi-remove.sh +45 -0
  463. package/scripts/ops/chezmoi-update.sh +48 -0
  464. package/scripts/ops/heal-chezmoi.sh +86 -0
  465. package/scripts/ops/heal-system.sh +128 -0
  466. package/scripts/ops/heal-tools.sh +340 -0
  467. package/scripts/ops/heal.sh +222 -0
  468. package/scripts/ops/post-apply-repair.sh +106 -0
  469. package/scripts/ops/prewarm.sh +127 -0
  470. package/scripts/ops/release.sh +252 -0
  471. package/scripts/ops/rollback.sh +589 -0
  472. package/scripts/ops/setup.sh +137 -0
  473. package/scripts/ops/teleport.sh +33 -0
  474. package/scripts/qa/coverage-baseline.sh +60 -0
  475. package/scripts/qa/docs-coverage.sh +111 -0
  476. package/scripts/qa/powershell-contract.ps1 +95 -0
  477. package/scripts/qa/reliability-audit.sh +138 -0
  478. package/scripts/qa/traceability-coverage.sh +116 -0
  479. package/scripts/qa/validate-examples.sh +26 -0
  480. package/scripts/qa/wsl-contract.sh +11 -0
  481. package/scripts/release/package-policy-bundles.sh +125 -0
  482. package/scripts/secrets/age-init.sh +70 -0
  483. package/scripts/secrets/create-secrets-file.sh +45 -0
  484. package/scripts/secrets/encrypt-ssh-key.sh +43 -0
  485. package/scripts/security/backup.sh +57 -0
  486. package/scripts/security/dns-doh.sh +51 -0
  487. package/scripts/security/encryption-check.sh +54 -0
  488. package/scripts/security/enforce-policies.sh +334 -0
  489. package/scripts/security/firewall.sh +90 -0
  490. package/scripts/security/lock-configs.sh +57 -0
  491. package/scripts/security/lock-screen.sh +55 -0
  492. package/scripts/security/manage-secrets.sh +428 -0
  493. package/scripts/security/ssh-cert.sh +203 -0
  494. package/scripts/security/telemetry-kill.sh +50 -0
  495. package/scripts/security/usb-safety.sh +51 -0
  496. package/scripts/theme/apply-gnome-theme.sh +328 -0
  497. package/scripts/theme/extract-theme.py +677 -0
  498. package/scripts/theme/install-boot-logo.sh +62 -0
  499. package/scripts/theme/install-catppuccin-themes.sh +370 -0
  500. package/scripts/theme/install-cursors.sh +25 -0
  501. package/scripts/theme/install-file-icons.sh +26 -0
  502. package/scripts/theme/install-grub-theme.sh +61 -0
  503. package/scripts/theme/install-lock-icon.sh +30 -0
  504. package/scripts/theme/merge-wallpaper.sh +145 -0
  505. package/scripts/theme/rebuild-themes.sh +309 -0
  506. package/scripts/theme/switch.sh +431 -0
  507. package/scripts/theme/wallpaper-rotate.sh +136 -0
  508. package/scripts/theme/wallpaper-sync.sh +397 -0
  509. package/scripts/tools/cmatrix.sh +21 -0
  510. package/scripts/{detect-collisions.py → tools/detect-collisions.py} +2 -2
  511. package/scripts/tools/emoji-picker.sh +48 -0
  512. package/scripts/tools/figlet-banner.sh +18 -0
  513. package/scripts/tools/log-rotate.sh +30 -0
  514. package/scripts/tools/lolcat-wrap.sh +19 -0
  515. package/scripts/tools/pipes.sh +48 -0
  516. package/scripts/tuning/linux.sh +185 -0
  517. package/scripts/tuning/macos.sh +55 -0
  518. package/scripts/uninstall.sh +85 -0
  519. package/scripts/version-sync.sh +487 -0
  520. package/templates/chezmoi-data/geekom-a9.toml.example +21 -0
  521. package/templates/chezmoi-data/mac-m1.toml.example +16 -0
  522. package/templates/chezmoi-data/mac-t2-linux.toml.example +21 -0
  523. package/templates/chezmoi-data/surface-pro-7p.toml.example +21 -0
  524. package/templates/projects/go/.github/workflows/ci.yml +31 -0
  525. package/templates/projects/go/README.md +4 -0
  526. package/templates/projects/go/cmd/__PROJECT_NAME__/main.go +1 -0
  527. package/templates/projects/go/go.sum +0 -0
  528. package/templates/projects/molecule/README.md +7 -0
  529. package/templates/projects/molecule/converge.yml +7 -0
  530. package/templates/projects/molecule/molecule.yml +16 -0
  531. package/templates/projects/node/.github/workflows/ci.yml +30 -0
  532. package/templates/projects/node/README.md +4 -0
  533. package/templates/projects/node/package-lock.json +12 -0
  534. package/templates/projects/node/src/index.js +1 -0
  535. package/templates/projects/packer/README.md +15 -0
  536. package/templates/projects/packer/main.pkr.hcl +15 -0
  537. package/templates/projects/python/.github/workflows/ci.yml +34 -0
  538. package/templates/projects/python/README.md +4 -0
  539. package/templates/projects/python/pyproject.toml +15 -0
  540. package/templates/projects/python/src/__PROJECT_NAME__/__init__.py +1 -0
  541. package/templates/projects/python/tests/test_basic.py +1 -0
  542. package/docs/ARCHITECTURE.md +0 -62
  543. package/docs/COMPLIANCE.md +0 -47
  544. package/docs/OPERATIONS.md +0 -103
  545. package/docs/PR_DESCRIPTION.md +0 -150
  546. package/docs/ROADMAP_legacy.md +0 -556
  547. package/docs/SECURITY_CHECKLIST.md +0 -25
  548. package/docs/TASK.md +0 -99
  549. package/docs/WALKTHROUGH.md +0 -46
  550. package/scripts/backup.sh +0 -142
  551. package/scripts/banner.sh +0 -20
  552. package/scripts/benchmark.sh +0 -20
  553. package/scripts/build.sh +0 -41
  554. package/scripts/clean.sh +0 -31
  555. package/scripts/compile.sh +0 -54
  556. package/scripts/copy.sh +0 -108
  557. package/scripts/doctor.sh +0 -79
  558. package/scripts/dotfiles.sh +0 -63
  559. package/scripts/download.sh +0 -35
  560. package/scripts/help.sh +0 -57
  561. package/scripts/lock-configs.sh +0 -57
  562. package/scripts/package.sh +0 -46
  563. package/scripts/ssh.sh +0 -55
  564. package/scripts/teleport.sh +0 -23
  565. package/scripts/test-aliases.sh +0 -25
  566. package/scripts/test_smoke.sh +0 -88
  567. package/scripts/unpack.sh +0 -28
@@ -0,0 +1,49 @@
1
+ ---
2
+ render_with_liquid: false
3
+ ---
4
+
5
+ # Keybindings
6
+
7
+ This is the single source of truth for navigation and muscle-memory shortcuts
8
+ across the dotfiles stack. Keep it concise and consistent.
9
+
10
+ ## Zsh
11
+
12
+ - `Ctrl+R`: History search (`fzf`/`atuin` if enabled)
13
+ - `Ctrl+P` / `Ctrl+N`: History prefix search (up/down)
14
+
15
+ ## Tmux (prefix = `Ctrl-a`)
16
+
17
+ - `Prefix + r`: Reload config
18
+ - `Prefix + N`: New window
19
+ - `Prefix + a` / `Tab`: Last window
20
+ - `Prefix + %`: Split vertical (current path)
21
+ - `Prefix + "`: Split horizontal (current path)
22
+ - `Prefix + \`: Split vertical (alt)
23
+ - `Prefix + |`: Split horizontal (alt)
24
+ - `Prefix + h/j/k/l`: Move between panes (vim-style)
25
+ - `Prefix + z`: Toggle zoom pane
26
+ - `Prefix + H/J/K/L`: Resize pane (left/down/up/right)
27
+
28
+ ## Neovim (leader = `Space`)
29
+
30
+ - `Ctrl-h/j/k/l`: Move between splits
31
+ - `Ctrl-s`: Save file
32
+ - `Leader + ff`: Find files (Telescope)
33
+ - `Leader + fg`: Live grep (Telescope)
34
+ - `Leader + q`: Quit
35
+
36
+ ## Shell Tools
37
+
38
+ - `z <dir>`: Jump to a directory (`zoxide`)
39
+ - `lg`: Open `lazygit`
40
+
41
+ ## Terminal
42
+
43
+ - `Ctrl+Shift+C`: Copy
44
+ - `Ctrl+Shift+V`: Paste
45
+
46
+ ---
47
+
48
+ Update this file when bindings change. If you add a new tool, add its shortcuts
49
+ here and keep them aligned with the global conventions.
@@ -0,0 +1,223 @@
1
+ ---
2
+ render_with_liquid: false
3
+ ---
4
+
5
+ # Key Rotation Guide
6
+
7
+ This guide covers rotating encryption keys for secrets managed by Age and SOPS.
8
+
9
+ ## Age Key Rotation
10
+
11
+ ### When to Rotate
12
+
13
+ - **Annually**: As a preventive measure
14
+ - **After compromise**: If you suspect key exposure
15
+ - **Personnel change**: When team members leave
16
+ - **Device loss**: If a device with the key is lost/stolen
17
+
18
+ ### Rotation Procedure
19
+
20
+ #### 1. Generate New Key
21
+
22
+ ```bash
23
+ # Create new age key
24
+ age-keygen -o ~/.config/chezmoi/key-new.txt
25
+
26
+ # Note the public key (starts with "age1...")
27
+ cat ~/.config/chezmoi/key-new.txt | grep "public key"
28
+ ```
29
+
30
+ #### 2. Re-encrypt All Secrets
31
+
32
+ ```bash
33
+ # List all encrypted files
34
+ chezmoi managed --include=encrypted
35
+
36
+ # For each encrypted file, decrypt with old key and re-encrypt with new
37
+ for file in $(chezmoi managed --include=encrypted); do
38
+ # Decrypt with old key
39
+ chezmoi cat "$file" > "/tmp/$(basename $file).dec"
40
+
41
+ # Re-encrypt with new key (update chezmoi config first)
42
+ # See step 3
43
+ done
44
+ ```
45
+
46
+ #### 3. Update Chezmoi Configuration
47
+
48
+ Edit `~/.config/chezmoi/chezmoi.toml`:
49
+
50
+ ```toml
51
+ [age]
52
+ identity = "~/.config/chezmoi/key-new.txt"
53
+ recipient = "age1your_new_public_key_here"
54
+ ```
55
+
56
+ #### 4. Re-add Encrypted Files
57
+
58
+ ```bash
59
+ # Re-add each secret with new encryption
60
+ chezmoi add --encrypt ~/.ssh/id_ed25519
61
+ chezmoi add --encrypt ~/.config/secrets/api-keys.env
62
+ ```
63
+
64
+ #### 5. Verify and Clean Up
65
+
66
+ ```bash
67
+ # Verify decryption works
68
+ chezmoi cat ~/.ssh/id_ed25519
69
+
70
+ # Archive old key (store securely offline)
71
+ mv ~/.config/chezmoi/key.txt ~/.config/chezmoi/key-$(date +%Y%m%d)-archived.txt
72
+
73
+ # Rename new key
74
+ mv ~/.config/chezmoi/key-new.txt ~/.config/chezmoi/key.txt
75
+
76
+ # Commit changes
77
+ cd ~/.dotfiles
78
+ git add -A
79
+ git commit -m "chore(secrets): rotate age encryption key"
80
+ ```
81
+
82
+ ### Emergency Rotation (Compromised Key)
83
+
84
+ ```bash
85
+ # 1. Immediately generate new key
86
+ age-keygen -o ~/.config/chezmoi/key-emergency.txt
87
+
88
+ # 2. Re-encrypt ALL secrets (prioritize most sensitive)
89
+ # 3. Revoke/rotate any API keys, tokens that were encrypted
90
+ # 4. Update any shared secrets with team members
91
+ # 5. Document the incident
92
+ ```
93
+
94
+ ---
95
+
96
+ ## SOPS Key Rotation
97
+
98
+ ### Overview
99
+
100
+ SOPS supports multiple key types. This covers Age keys (recommended) and GPG keys.
101
+
102
+ ### SOPS with Age Keys
103
+
104
+ #### Generate New Key
105
+
106
+ ```bash
107
+ age-keygen -o ~/.config/sops/age/keys-new.txt
108
+ ```
109
+
110
+ #### Update .sops.yaml
111
+
112
+ ```yaml
113
+ creation_rules:
114
+ - path_regex: \.env$
115
+ age: >-
116
+ age1new_key_here,
117
+ age1old_key_here # Keep old key temporarily for decryption
118
+ ```
119
+
120
+ #### Re-encrypt Files
121
+
122
+ ```bash
123
+ # Rotate key for a single file
124
+ sops updatekeys secrets.env
125
+
126
+ # Or re-encrypt entirely
127
+ sops -d secrets.env | sops -e /dev/stdin > secrets.env.new
128
+ mv secrets.env.new secrets.env
129
+ ```
130
+
131
+ #### Remove Old Key
132
+
133
+ After confirming all files are re-encrypted:
134
+
135
+ 1. Remove old key from `.sops.yaml`
136
+ 2. Archive old key securely
137
+ 3. Commit changes
138
+
139
+ ### SOPS with GPG Keys
140
+
141
+ ```bash
142
+ # Generate new GPG key
143
+ gpg --full-generate-key
144
+
145
+ # Export fingerprint
146
+ gpg --list-keys --keyid-format LONG
147
+
148
+ # Update .sops.yaml with new fingerprint
149
+ # Re-encrypt files
150
+ sops updatekeys <file>
151
+ ```
152
+
153
+ ---
154
+
155
+ ## Automation Scripts
156
+
157
+ ### Check Key Age
158
+
159
+ ```bash
160
+ #!/usr/bin/env bash
161
+ # check-key-age.sh - Alert if keys are older than 365 days
162
+
163
+ KEY_FILE="${HOME}/.config/chezmoi/key.txt"
164
+ MAX_AGE_DAYS=365
165
+
166
+ if [[ -f "$KEY_FILE" ]]; then
167
+ key_age=$(( ($(date +%s) - $(stat -c %Y "$KEY_FILE")) / 86400 ))
168
+
169
+ if [[ $key_age -gt $MAX_AGE_DAYS ]]; then
170
+ echo "⚠️ Age key is ${key_age} days old. Consider rotation."
171
+ exit 1
172
+ else
173
+ echo "✓ Age key is ${key_age} days old (limit: ${MAX_AGE_DAYS})"
174
+ fi
175
+ fi
176
+ ```
177
+
178
+ ### Automated Backup Before Rotation
179
+
180
+ ```bash
181
+ #!/usr/bin/env bash
182
+ # backup-before-rotation.sh
183
+
184
+ BACKUP_DIR="${HOME}/.local/share/dotfiles/key-backups"
185
+ mkdir -p "$BACKUP_DIR"
186
+
187
+ # Backup current key
188
+ cp ~/.config/chezmoi/key.txt "$BACKUP_DIR/key-$(date +%Y%m%d_%H%M%S).txt"
189
+
190
+ # Encrypt backup with passphrase
191
+ gpg --symmetric --cipher-algo AES256 "$BACKUP_DIR/key-$(date +%Y%m%d_%H%M%S).txt"
192
+
193
+ # Remove unencrypted backup
194
+ rm "$BACKUP_DIR/key-$(date +%Y%m%d_%H%M%S).txt"
195
+
196
+ echo "Key backed up to $BACKUP_DIR (encrypted)"
197
+ ```
198
+
199
+ ---
200
+
201
+ ## Best Practices
202
+
203
+ 1. **Never commit unencrypted keys** - Use `.gitignore` properly
204
+ 2. **Store backups offline** - USB drive in secure location
205
+ 3. **Use hardware keys when possible** - YubiKey with age-plugin-yubikey
206
+ 4. **Document rotation dates** - Keep a log of when keys were rotated
207
+ 5. **Test decryption** - Always verify after rotation
208
+ 6. **Notify team members** - If using shared secrets
209
+
210
+ ## Recovery Procedures
211
+
212
+ If you lose access to your key:
213
+
214
+ 1. **Check backups** - Offline storage, password manager
215
+ 2. **Check other machines** - Key may exist on another device
216
+ 3. **Re-create secrets** - As last resort, regenerate API keys, tokens, etc.
217
+
218
+ ## Related Documentation
219
+
220
+ - [SECRETS.md](SECRETS.md) - Secrets management overview
221
+ - [SECURITY.md](SECURITY.md) - Security hardening guide
222
+ - [Age documentation](https://github.com/FiloSottile/age)
223
+ - [SOPS documentation](https://github.com/getsops/sops)
@@ -0,0 +1,78 @@
1
+ ---
2
+ render_with_liquid: false
3
+ ---
4
+
5
+ # MCP Policy
6
+
7
+ MCP is treated as a controlled execution boundary.
8
+
9
+ ## Default posture
10
+
11
+ The tracked default is `strict-local`.
12
+
13
+ Properties:
14
+
15
+ - local-first
16
+ - least privilege
17
+ - no broad filesystem roots
18
+ - no wildcard or unsafe flags
19
+ - no network-facing MCP servers enabled by default
20
+ - machine-readable validation output
21
+
22
+ ## Policy artifact
23
+
24
+ The source of truth lives in [mcp-policy.json](/home/seb/.dotfiles/dot_config/dotfiles/mcp-policy.json).
25
+ Approved package pins live in [mcp-lock.json](/home/seb/.dotfiles/dot_config/dotfiles/mcp-lock.json).
26
+ Tracked server registry entries live in [mcp-registry.json](/home/seb/.dotfiles/dot_config/dotfiles/mcp-registry.json).
27
+
28
+ Current defaults:
29
+
30
+ - Allowed launchers: `npx`, `node`, `uvx`
31
+ - Trusted transports: `stdio`, `http`
32
+ - Blocked filesystem roots: `/`, `/home`, `/Users`
33
+ - Blocked argument patterns: `^--allow-.*`, `^--unsafe$`, `^\\*$`
34
+ - Network-facing servers disabled by default: `github`, `brave-search`, `fetch`, `puppeteer`, `filesystem`
35
+ - Approved packages must resolve through the tracked MCP lock manifest
36
+ - Every active server must match the tracked MCP registry
37
+ - HTTP transports must use `https://` and registry-declared OAuth2
38
+
39
+ ## Validation
40
+
41
+ Run:
42
+
43
+ ```bash
44
+ dot mcp --strict
45
+ dot mcp -s -j
46
+ dot mcp registry
47
+ ```
48
+
49
+ The JSON form is the audit artifact for CI, release validation, and workstation attestation.
50
+
51
+ ## Change control
52
+
53
+ Any change to MCP policy requires:
54
+
55
+ 1. A signed commit
56
+ 2. A matching test update
57
+ 3. A release note if the effective trust boundary changes
58
+ 4. A policy bundle review when enterprise defaults change
59
+
60
+ ## Supply-chain controls
61
+
62
+ Phase 2 adds explicit package locking for default MCP servers.
63
+
64
+ Current approved refs:
65
+
66
+ - `mcp-server-git@2025.1.14`
67
+ - `@modelcontextprotocol/server-memory@2025.8.4`
68
+ - `mcp-server-sqlite@2025.1.14`
69
+
70
+ `dot mcp --strict` and `dot mcp -s` now verify that:
71
+
72
+ - package refs are version-pinned
73
+ - the pinned refs match the tracked lock manifest
74
+ - non-approved package refs are rejected in strict mode
75
+ - active servers match the tracked registry entries
76
+ - remote HTTP transports are HTTPS and OAuth-backed
77
+
78
+ Policy bundle baselines live in [policy-bundles.json](/home/seb/.dotfiles/dot_config/dotfiles/policy-bundles.json).
@@ -0,0 +1,37 @@
1
+ ---
2
+ render_with_liquid: false
3
+ ---
4
+
5
+ # Policy Bundle Releases
6
+
7
+ Policy bundles are released as tracked governance artifacts.
8
+
9
+ They include:
10
+
11
+ - policy bundles
12
+ - model registry
13
+ - prompt registry
14
+ - agent profiles
15
+ - agent card
16
+ - MCP policy, registry, and lock
17
+ - A2A discovery metadata
18
+
19
+ ## Local packaging
20
+
21
+ ```bash
22
+ bash scripts/release/package-policy-bundles.sh --version 2026.03
23
+ bash scripts/release/package-policy-bundles.sh --json
24
+ ```
25
+
26
+ ## Release workflow
27
+
28
+ Use the `Policy Bundle Release` workflow.
29
+
30
+ Release controls:
31
+
32
+ - source ref must be signed
33
+ - governance JSON must validate with `jq`
34
+ - bundle archive gets a SHA-256 checksum
35
+ - bundle archive gets GitHub provenance attestation
36
+
37
+ Signed commits remain mandatory for any policy change.
@@ -0,0 +1,28 @@
1
+ ---
2
+ render_with_liquid: false
3
+ ---
4
+
5
+ # Security Documentation
6
+
7
+ This directory contains security documentation for the dotfiles project.
8
+
9
+ ## Index
10
+
11
+ | Document | Description |
12
+ |----------|-------------|
13
+ | [SECURITY.md](SECURITY.md) | Core security model and opt-in hardening |
14
+ | [THREAT_MODEL.md](THREAT_MODEL.md) | Threat analysis with trust boundaries |
15
+ | [SECRETS.md](SECRETS.md) | Secrets management (Age, SOPS, Keychain) |
16
+ | [KEY_ROTATION.md](KEY_ROTATION.md) | Key rotation procedures |
17
+ | [KEYS.md](KEYS.md) | Keybindings reference |
18
+ | [COMPLIANCE.md](COMPLIANCE.md) | SOC 2, ISO 27001, GDPR, HIPAA mapping |
19
+ | [AI_ACT_COMPLIANCE.md](AI_ACT_COMPLIANCE.md) | EU AI Act risk classification and exemption analysis |
20
+ | [SECURITY_CHECKLIST.md](SECURITY_CHECKLIST.md) | Pre-release security verification |
21
+
22
+ ## Quick Reference
23
+
24
+ - **Encryption:** Age + SOPS for secrets at rest
25
+ - **Signing:** SSH ED25519 commit signing enforced
26
+ - **Scanning:** Gitleaks pre-commit hook prevents credential leaks
27
+ - **Telemetry:** Disabled by default, no data leaves your machine
28
+ - **Hardening:** Opt-in firewall, DNS-over-HTTPS, lock-screen, USB safety
@@ -0,0 +1,80 @@
1
+ ---
2
+ render_with_liquid: false
3
+ ---
4
+
5
+ # OpenSSF Scorecard
6
+
7
+ This page records the current OpenSSF Scorecard posture for this
8
+ repository, the known gaps, and the remediation roadmap. The badge in
9
+ the README links to the live result; this page is the maintained
10
+ narrative behind it.
11
+
12
+ ## Live score
13
+
14
+ [![OpenSSF Scorecard](https://api.securityscorecards.dev/projects/github.com/sebastienrousseau/dotfiles/badge)](https://scorecard.dev/viewer/?uri=github.com/sebastienrousseau/dotfiles)
15
+
16
+ The badge above is regenerated every Monday at 06:00 UTC and on every
17
+ push to `master` by `.github/workflows/scorecard.yml`. The SARIF
18
+ result is uploaded to GitHub Code Scanning (Security tab) and
19
+ retained as a 30-day workflow artifact.
20
+
21
+ ## Threshold policy
22
+
23
+ | Score | Action |
24
+ |---|---|
25
+ | ≥ 8.0 | Healthy. Keep doing what we're doing. |
26
+ | 7.0 – 7.9 | Acceptable. Tracked. |
27
+ | < 7.0 | Regression — the workflow auto-opens a tracking issue labelled `type:security + priority:high`. |
28
+
29
+ Regressions are triaged within one Monday cycle: identify the check
30
+ that dropped, either remediate or file an exception entry below with
31
+ a rationale and an expiry date.
32
+
33
+ ## Per-check posture (snapshot)
34
+
35
+ The checks below come from OpenSSF Scorecard's published rubric. Tick
36
+ marks reflect this repo's posture at the time of writing — the
37
+ *live* badge is authoritative if these diverge.
38
+
39
+ | Check | Status | Notes |
40
+ |---|---|---|
41
+ | Branch-Protection | ✓ | `master` requires signed commits, linear history, required checks. Codified at `.github/rulesets/master.json` and `.github/branch-protection-config.json`. |
42
+ | Code-Review | ✓ | Every PR requires at least one approval; CODEOWNERS in place. |
43
+ | Signed-Commits | ✓ | Enforced by pre-push hook (`scripts/git-hooks/pre-push`) and at-push by branch protection (#853 + #857). |
44
+ | Dependency-Update-Tool | ✓ | Dependabot configured for github-actions / npm / docker / devcontainers / uv. |
45
+ | Fuzzing | ⚠ | `install.sh` fuzz harness lives under `tests/fuzz/` (closes #881). Coverage is the script's CLI surface plus chaos input fixtures — not full corpus fuzzing yet. |
46
+ | License | ✓ | Apache-2.0 at repo root. |
47
+ | Maintained | ✓ | Active commit cadence; the [README](../../README.md) lists the current `dotfiles_version` (v0.2.501). |
48
+ | Pinned-Dependencies | ✓ | Every workflow action is pinned to a 40-char commit SHA; the lint rule under `actionlint` enforces this on PR. |
49
+ | SAST | ✓ | CodeQL (`.github/workflows/codeql.yml`) + Checkov + Grype. |
50
+ | SBOM | ✓ | Generated per PR by `sbom-diff.yml` and per release by `security-release.yml`. |
51
+ | Security-Policy | ✓ | `.github/SECURITY.md` + this page + `docs/security/THREAT_MODEL.md`. |
52
+ | Token-Permissions | ✓ | Workflows use least-privilege `permissions:` blocks. `harden-runner` adoption (#878) tightens this further. |
53
+ | Vulnerabilities | ✓ | Grype gate hard-fails on `high` / `critical` on `master` (#852). |
54
+ | Webhooks | n/a | No external webhooks configured. |
55
+ | CI-Tests | ✓ | Comprehensive CI matrix (Linux + macOS Intel + Apple Silicon, optional Windows). |
56
+ | CII-Best-Practices | ☐ | Not applied yet — see "Open work" below. |
57
+ | Dangerous-Workflow | ✓ | No `pull_request_target` with checkout-PR-code anti-pattern. |
58
+ | Packaging | ✓ | `npm publish --provenance` via OIDC (`.github/workflows/npm-publish.yml`); `policy-bundle-release.yml` for the policy artifact. |
59
+
60
+ ## Open work
61
+
62
+ - Apply for the [OpenSSF Best Practices badge (CII)](https://www.bestpractices.dev/) and embed it next to the Scorecard badge. (Maintainer action — needs the project to register with the BestPractices.dev site.)
63
+ - Once `harden-runner` is in `block` mode across all jobs (#878), the **Token-Permissions** check should hit its maximum.
64
+ - Once Cosign keyless signing is wired into the release pipeline (#876), the **Signed-Releases** check should hit its maximum.
65
+
66
+ ## Exceptions
67
+
68
+ | Check | Expiry | Rationale |
69
+ |---|---|---|
70
+ | *(none currently)* | *—* | *—* |
71
+
72
+ If you add an exception, include the check name, an expiry date
73
+ (don't allow indefinite), and the rationale. Re-evaluate every quarter.
74
+
75
+ ## References
76
+
77
+ - `.github/workflows/scorecard.yml` — the scanner.
78
+ - [Scorecard project](https://github.com/ossf/scorecard).
79
+ - [Scorecard checks reference](https://github.com/ossf/scorecard/blob/main/docs/checks.md).
80
+ - Issue [#869](https://github.com/sebastienrousseau/dotfiles/issues/869).
@@ -0,0 +1,158 @@
1
+ ---
2
+ render_with_liquid: false
3
+ ---
4
+ {% raw %}
5
+
6
+ # Secrets Management
7
+
8
+ Provider-agnostic secrets via `dot secrets`. Supports macOS Keychain, `pass`, and age-encrypted local storage.
9
+
10
+ ## Providers
11
+
12
+ Provider selection is controlled by `.chezmoidata.toml`:
13
+
14
+ ```toml
15
+ [secrets.policy]
16
+ provider = "auto" # auto | macos-keychain | pass | plain-enc
17
+ auto_load = true
18
+
19
+ [secrets.buckets]
20
+ ai = ["GEMINI_API_KEY", "CLAUDE_API_KEY", "OPENAI_API_KEY"]
21
+ infra = ["AWS_ACCESS_KEY_ID", "AWS_SECRET_ACCESS_KEY", "GITHUB_TOKEN"]
22
+ ```
23
+
24
+ `auto` resolves in this order:
25
+
26
+ 1. `macos-keychain` on macOS
27
+ 2. `pass` when available
28
+ 3. `plain-enc` fallback (age-encrypted local store)
29
+
30
+ ## Commands
31
+
32
+ ```bash
33
+ # Bootstrap age key for chezmoi encrypted files
34
+ dot secrets-init
35
+
36
+ # Optional: create encrypted secrets file for chezmoi
37
+ dot secrets-create
38
+ dot secrets edit
39
+
40
+ # Managed secret store
41
+ dot secrets set GEMINI_API_KEY
42
+ dot secrets get GEMINI_API_KEY --raw
43
+ dot secrets list
44
+ dot secrets provider
45
+
46
+ # Emit export lines for a bucket
47
+ dot secrets load ai
48
+
49
+ # Load into current shell session
50
+ eval "$(dot env load ai)"
51
+ ```
52
+
53
+ ## Shell Auto-Load
54
+
55
+ When `auto_load = true`, shell startup can load configured buckets automatically via `dot env load <bucket>`.
56
+
57
+ Environment toggles:
58
+
59
+ - `DOTFILES_SECRETS_PROVIDER`
60
+ - `DOTFILES_SECRETS_AUTO_LOAD`
61
+ - `DOTFILES_SECRETS_BUCKET_NAMES`
62
+
63
+ ## Governance
64
+
65
+ A pre-commit hook runs:
66
+
67
+ ```bash
68
+ scripts/diagnostics/secret-governance.sh
69
+ ```
70
+
71
+ It blocks staged commits when likely secret patterns are found. In strict mode it also blocks exact matches against managed secret values.
72
+
73
+ ## SSH Key Encryption
74
+
75
+ ```bash
76
+ dot ssh-key ~/.ssh/id_ed25519
77
+ ```
78
+
79
+ This creates a local encrypted file, which you can add to chezmoi with `chezmoi add --encrypt` if needed.
80
+
81
+ ## External Secrets Backends
82
+
83
+ Chezmoi natively supports external secret managers as template functions. Configure the backend in `.chezmoidata.toml`:
84
+
85
+ ```toml
86
+ secrets_backend = "age" # age, 1password, bitwarden, pass, vault
87
+ ```
88
+
89
+ ### 1Password
90
+
91
+ Requires the [1Password CLI](https://developer.1password.com/docs/cli/) (`op`).
92
+
93
+ ```toml
94
+ # .chezmoidata.toml
95
+ secrets_backend = "1password"
96
+ ```
97
+
98
+ Use in templates:
99
+
100
+ ```text
101
+ {{ onepassword "my-secret" "vault-name" }}
102
+ {{ onepasswordRead "op://vault/item/field" }}
103
+ ```
104
+
105
+ ### Bitwarden
106
+
107
+ Requires the [Bitwarden CLI](https://bitwarden.com/help/cli/) (`bw`).
108
+
109
+ ```toml
110
+ # .chezmoidata.toml
111
+ secrets_backend = "bitwarden"
112
+ ```
113
+
114
+ Use in templates:
115
+
116
+ ```text
117
+ {{ bitwarden "item" "my-login" }}
118
+ {{ bitwardenFields "item" "my-login" }}
119
+ ```
120
+
121
+ ### HashiCorp Vault
122
+
123
+ Requires the [Vault CLI](https://developer.hashicorp.com/vault/docs/commands) (`vault`).
124
+
125
+ ```toml
126
+ # .chezmoidata.toml
127
+ secrets_backend = "vault"
128
+ ```
129
+
130
+ Use in templates:
131
+
132
+ ```text
133
+ {{ vault "secret/data/my-secret" }}
134
+ ```
135
+
136
+ ### pass (Password Store)
137
+
138
+ Requires [pass](https://www.passwordstore.org/).
139
+
140
+ ```toml
141
+ # .chezmoidata.toml
142
+ secrets_backend = "pass"
143
+ ```
144
+
145
+ Use in templates:
146
+
147
+ ```text
148
+ {{ pass "my-secret" }}
149
+ ```
150
+
151
+ See the [chezmoi documentation](https://www.chezmoi.io/user-guide/password-managers/) for full details on each backend.
152
+
153
+ ## Security Notes
154
+
155
+ - **Never commit** `~/.config/chezmoi/key.txt` to version control.
156
+ - **Avoid shell history exposure** — use `dot secrets set` which prompts securely.
157
+ - **Rotate credentials** on a regular schedule.
158
+ {% endraw %}
@@ -0,0 +1,45 @@
1
+ ---
2
+ render_with_liquid: false
3
+ ---
4
+
5
+ # Security
6
+
7
+ How dotfiles handles security and system modifications.
8
+
9
+ ## Core Principles
10
+
11
+ - **Opt-In Only** — No hardening applies unless `DOTFILES_*` variables are set to `1`.
12
+ - **Local Logging** — All actions log to `~/.local/share/dotfiles.log`. No telemetry.
13
+ - **No Hidden Sudo** — Sudo requests only for package managers. Never cached indefinitely.
14
+
15
+ ## Hardening
16
+
17
+ | Feature | Env Var | Action (macOS) | Action (Linux) |
18
+ |---|---|---|---|
19
+ | Firewall | `DOTFILES_FIREWALL` | Enables `socketfilterfw` + Stealth Mode | Configures UFW |
20
+ | Telemetry | `DOTFILES_TELEMETRY` | Disables Diagnostic plists | Disables `whoopsie`/`apport` |
21
+ | DNS-over-HTTPS | `DOTFILES_DOH` | Browser-level settings | Configures `resolvectl` |
22
+ | Idle Security | `DOTFILES_LOCK` | Sets screensaver idle time | Sets GNOME/KDE idle-delay |
23
+
24
+ ## Secrets
25
+
26
+ The dotfiles use **age** for encryption.
27
+
28
+ - **Initialization**: `dot secrets-init` creates a key at `~/.config/chezmoi/key.txt`.
29
+ - **Storage**: Secrets are stored as `.age` encrypted files.
30
+ - **Protection**: Private keys aren't committed to the repo.
31
+
32
+ ## SSH Certificates
33
+
34
+ Short-lived SSH certificates reduce the blast radius of key compromise.
35
+
36
+ - **Issue**: `dot ssh-cert issue [--ttl 16h] [--principal user]`
37
+ - **Status**: `dot ssh-cert status` — checks certificate validity and expiry
38
+ - **Revoke**: `dot ssh-cert revoke` — revokes active certificates
39
+ - **Backends**: `step-ca` (Smallstep) and local CA key (`ssh-keygen`)
40
+ - **Default TTL**: 16 hours (override via `SSH_CERT_TTL` environment variable)
41
+ - **CA URL**: Set `SSH_CERT_CA_URL` for `step-ca` integration
42
+
43
+ ## Reporting a Vulnerability
44
+
45
+ If you discover a security vulnerability, don't open a public issue. Follow the instructions in the Security Policy.