@sebastienrousseau/dotfiles 0.2.499 → 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 (538) hide show
  1. package/CHANGELOG.md +375 -0
  2. package/LICENSE +1283 -0
  3. package/README.md +284 -0
  4. package/docs/.vitepress/reports/localization-readability-audit.md +69 -0
  5. package/docs/AI.md +102 -0
  6. package/docs/COPYRIGHT +4 -3
  7. package/docs/NAMING_CONVENTIONS.md +95 -0
  8. package/docs/README.md +78 -0
  9. package/docs/adr/ADR-001-ci-cd-pipeline.md +101 -0
  10. package/docs/adr/ADR-002-shell-performance.md +121 -0
  11. package/docs/adr/ADR-003-security-first.md +140 -0
  12. package/docs/adr/ADR-004-cli-architecture.md +157 -0
  13. package/docs/adr/ADR-005-chezmoi-choice.md +89 -0
  14. package/docs/adr/ADR-006-shell-selection.md +115 -0
  15. package/docs/adr/ADR-007-multi-shell-parity.md +53 -0
  16. package/docs/adr/ADR-008-alias-system-architecture.md +85 -0
  17. package/docs/adr/README.md +32 -0
  18. package/docs/architecture/ARCHITECTURE.md +113 -0
  19. package/docs/architecture/INTEROP.md +36 -0
  20. package/docs/architecture/REPO_LAYOUT.md +237 -0
  21. package/docs/architecture/WALKTHROUGH.md +82 -0
  22. package/docs/architecture/fleet-deployment.md +73 -0
  23. package/docs/archive/EUXIS_2026_REVIEW.md +119 -0
  24. package/docs/archive/LEGACY_ROADMAP.md +142 -0
  25. package/docs/archive/MILESTONE_v0.2.493.md +43 -0
  26. package/docs/{PLAN.md → archive/PLAN.md} +4 -4
  27. package/docs/archive/REPO_AUDIT.md +23 -0
  28. package/docs/guides/INSTALL.md +140 -0
  29. package/docs/guides/NEOVIM_IDE_GUIDE.md +52 -0
  30. package/docs/guides/THEMING.md +222 -0
  31. package/docs/guides/TROUBLESHOOTING.md +148 -0
  32. package/docs/guides/WSL2_NIX_TROUBLESHOOTING.md +723 -0
  33. package/docs/index.md +39 -0
  34. package/docs/interop/A2A.md +32 -0
  35. package/docs/manual/00-introduction.md +85 -0
  36. package/docs/manual/01-concepts/01-architecture.md +134 -0
  37. package/docs/manual/01-concepts/02-trust-model.md +178 -0
  38. package/docs/manual/01-concepts/03-theme-engine.md +182 -0
  39. package/docs/manual/01-concepts/04-fleet.md +142 -0
  40. package/docs/manual/01-concepts/05-self-healing.md +197 -0
  41. package/docs/manual/02-tutorials/01-first-install.md +192 -0
  42. package/docs/manual/02-tutorials/02-add-wallpaper.md +211 -0
  43. package/docs/manual/02-tutorials/03-create-profile.md +238 -0
  44. package/docs/manual/02-tutorials/04-encrypt-secret.md +275 -0
  45. package/docs/manual/02-tutorials/05-deploy-fleet.md +279 -0
  46. package/docs/manual/03-reference/01-dot-cli.md +413 -0
  47. package/docs/manual/03-reference/02-config-files.md +259 -0
  48. package/docs/manual/03-reference/03-environment.md +120 -0
  49. package/docs/manual/03-reference/04-templates.md +184 -0
  50. package/docs/manual/03-reference/05-feature-flags.md +118 -0
  51. package/docs/manual/04-cookbook/01-recipes.md +281 -0
  52. package/docs/manual/04-cookbook/02-troubleshooting.md +319 -0
  53. package/docs/manual/04-cookbook/03-faq.md +167 -0
  54. package/docs/manual/05-appendices/A-platform-matrix.md +97 -0
  55. package/docs/manual/05-appendices/B-security-checklist.md +78 -0
  56. package/docs/manual/05-appendices/C-glossary.md +36 -0
  57. package/docs/manual/05-appendices/D-bibliography.md +54 -0
  58. package/docs/manual/05-appendices/E-license.md +34 -0
  59. package/docs/manual/_toc.yml +58 -0
  60. package/docs/manual/command-index.md +58 -0
  61. package/docs/manual/concept-index.md +164 -0
  62. package/docs/operations/ATTESTATION.md +39 -0
  63. package/docs/operations/MAINTENANCE.md +59 -0
  64. package/docs/operations/MIGRATION.md +101 -0
  65. package/docs/operations/OPERATIONS.md +164 -0
  66. package/docs/operations/RELIABILITY.md +116 -0
  67. package/docs/{ROADMAP.md → operations/ROADMAP.md} +22 -22
  68. package/docs/operations/TESTING.md +195 -0
  69. package/docs/operations/TRACEABILITY.md +31 -0
  70. package/docs/operations/TRUSTED_AGENT_WORKSTATION.md +61 -0
  71. package/docs/operations/VERSION_SYNC.md +344 -0
  72. package/docs/reference/ALIASES.md +124 -0
  73. package/docs/reference/ALIASES_CHEATSHEET.md +28 -0
  74. package/docs/reference/ALIASES_DEPRECATIONS.md +9 -0
  75. package/docs/reference/FEATURES.md +62 -0
  76. package/docs/reference/FONTS.md +108 -0
  77. package/docs/reference/PROFILES.md +65 -0
  78. package/docs/reference/SCREENSHOTS.md +117 -0
  79. package/docs/reference/SCRIPTS.md +67 -0
  80. package/docs/reference/SUPPORT_MATRIX.md +74 -0
  81. package/docs/reference/THEMES.md +113 -0
  82. package/docs/reference/TOOLS.md +105 -0
  83. package/docs/reference/UTILS.md +151 -0
  84. package/docs/security/AI_ACT_COMPLIANCE.md +90 -0
  85. package/docs/security/AUTOMATION_SECRETS.md +22 -0
  86. package/docs/security/COMPLIANCE.md +453 -0
  87. package/docs/security/ENCRYPTION.md +52 -0
  88. package/docs/security/FMEA.md +155 -0
  89. package/docs/security/INCIDENT_RESPONSE.md +575 -0
  90. package/docs/security/KEYS.md +45 -0
  91. package/docs/security/KEY_ROTATION.md +219 -0
  92. package/docs/security/MCP_POLICY.md +69 -0
  93. package/docs/security/POLICY_RELEASES.md +33 -0
  94. package/docs/security/README.md +24 -0
  95. package/docs/security/SECRETS.md +146 -0
  96. package/docs/security/SECURITY.md +41 -0
  97. package/docs/security/SECURITY_CHECKLIST.md +44 -0
  98. package/docs/security/SOUP_REGISTER.md +32 -0
  99. package/docs/security/THREAT_MODEL.md +120 -0
  100. package/docs/security/VERIFICATION_VALIDATION.md +224 -0
  101. package/docs/themes/README.md +6 -0
  102. package/docs/themes/VISUAL_INTEGRITY_REPORT.md +26 -0
  103. package/docs/themes/hero-shot.svg +78 -0
  104. package/dot_config/.module-manifest.json +69 -0
  105. package/dot_config/ai/identity.md +20 -0
  106. package/dot_config/ai/patterns/architect.md +14 -0
  107. package/dot_config/ai/patterns/hardener.md +13 -0
  108. package/dot_config/ai/patterns/refactor.md +13 -0
  109. package/dot_config/aider/aider.conf.yml +32 -0
  110. package/dot_config/alacritty/alacritty.toml.tmpl +55 -0
  111. package/dot_config/ansible/ansible.cfg +11 -0
  112. package/dot_config/atuin/config.toml +40 -0
  113. package/dot_config/bat/config +23 -0
  114. package/dot_config/brave-flags.conf.tmpl +7 -0
  115. package/dot_config/btop/btop.conf +16 -0
  116. package/dot_config/btop/themes/tokyonight.theme +34 -0
  117. package/dot_config/bun/bunfig.toml.tmpl +33 -0
  118. package/dot_config/claude/mcp_servers.json +20 -0
  119. package/dot_config/containers/containers.conf +14 -0
  120. package/dot_config/curl/dot_curlrc +18 -0
  121. package/dot_config/dlv/config.yml +39 -0
  122. package/dot_config/docker/config.json +15 -0
  123. package/dot_config/dotfiles/agent-card.json +29 -0
  124. package/dot_config/dotfiles/agent-profiles.json +92 -0
  125. package/dot_config/dotfiles/boot/README.md +11 -0
  126. package/dot_config/dotfiles/grub/README.md +11 -0
  127. package/dot_config/dotfiles/lock/README.md +11 -0
  128. package/dot_config/dotfiles/mcp-lock.json +33 -0
  129. package/dot_config/dotfiles/mcp-policy.json +52 -0
  130. package/dot_config/dotfiles/mcp-registry.json +47 -0
  131. package/dot_config/dotfiles/model-registry.json +20 -0
  132. package/dot_config/dotfiles/policy-bundles.json +38 -0
  133. package/dot_config/dotfiles/prompt-registry.json +16 -0
  134. package/dot_config/dotfiles/versions.env +18 -0
  135. package/dot_config/duf/duf.conf +6 -0
  136. package/dot_config/duti/defaults.duti +5 -0
  137. package/dot_config/emoji/emoji.txt +34 -0
  138. package/dot_config/environment.d/50-ssh-agent.conf +2 -0
  139. package/dot_config/environment.d/90-wayland.conf +19 -0
  140. package/dot_config/fastfetch/config.jsonc +28 -0
  141. package/dot_config/firefox/user.js.tmpl +58 -0
  142. package/dot_config/fish/completions/dot-theme-sync.fish.tmpl +9 -0
  143. package/dot_config/fish/completions/dot.fish.tmpl +115 -0
  144. package/dot_config/fish/conf.d/000-perf-cache.fish +56 -0
  145. package/dot_config/fish/conf.d/aliases.fish.tmpl +77 -0
  146. package/dot_config/fish/conf.d/env.fish.tmpl +48 -0
  147. package/dot_config/fish/conf.d/functions.fish.tmpl +22 -0
  148. package/dot_config/fish/conf.d/init.fish.tmpl +151 -0
  149. package/dot_config/fish/config.fish.tmpl +44 -0
  150. package/dot_config/fish/fish_plugins +1 -0
  151. package/dot_config/fish/functions/_.fish +3 -0
  152. package/dot_config/fish/functions/_cached_eval.fish +58 -0
  153. package/dot_config/fish/functions/als.fish +46 -0
  154. package/dot_config/fish/functions/bg-upgrade.fish +7 -0
  155. package/dot_config/fish/functions/c.fish +3 -0
  156. package/dot_config/fish/functions/cat.fish +9 -0
  157. package/dot_config/fish/functions/d.fish +7 -0
  158. package/dot_config/fish/functions/dot.fish +34 -0
  159. package/dot_config/fish/functions/h.fish +3 -0
  160. package/dot_config/fish/functions/l.fish +7 -0
  161. package/dot_config/fish/functions/la.fish +7 -0
  162. package/dot_config/fish/functions/ll.fish +7 -0
  163. package/dot_config/fish/functions/log_error.fish +13 -0
  164. package/dot_config/fish/functions/log_info.fish +13 -0
  165. package/dot_config/fish/functions/lr.fish +7 -0
  166. package/dot_config/fish/functions/lra.fish +7 -0
  167. package/dot_config/fish/functions/ls.fish +7 -0
  168. package/dot_config/fish/functions/lt.fish +7 -0
  169. package/dot_config/fish/functions/lta.fish +7 -0
  170. package/dot_config/fish/functions/notify-run.fish +11 -0
  171. package/dot_config/fish/functions/q.fish +3 -0
  172. package/dot_config/fish/functions/silent-run.fish +7 -0
  173. package/dot_config/fish/functions/yy.fish +8 -0
  174. package/dot_config/flatpak/flatpak.list +4 -0
  175. package/dot_config/fontconfig/fonts.conf.tmpl +57 -0
  176. package/dot_config/foot/foot.ini.tmpl +33 -0
  177. package/dot_config/fuzzel/fuzzel.ini.tmpl +18 -0
  178. package/dot_config/fzf/fzf.zsh +48 -0
  179. package/dot_config/gem/gemrc +9 -0
  180. package/dot_config/gh/config.yml +12 -0
  181. package/dot_config/ghostty/config.tmpl +165 -0
  182. package/dot_config/git/allowed_signers.tmpl +18 -0
  183. package/dot_config/git/attributes +12 -0
  184. package/dot_config/git/commit-template +10 -0
  185. package/dot_config/git/ignore +27 -0
  186. package/dot_config/gnupg/gpg-agent.conf +11 -0
  187. package/dot_config/go/golangci.yml +118 -0
  188. package/dot_config/go/gopls.json +30 -0
  189. package/dot_config/goose/config.yaml +29 -0
  190. package/dot_config/gtk-3.0/gtk.css.tmpl +184 -0
  191. package/dot_config/gtk-3.0/settings.ini.tmpl +27 -0
  192. package/dot_config/gtk-4.0/gtk.css.tmpl +252 -0
  193. package/dot_config/gtk-4.0/settings.ini.tmpl +18 -0
  194. package/dot_config/htop/htoprc +20 -0
  195. package/dot_config/inputrc +2 -0
  196. package/dot_config/ipython/profile_default/ipython_config.py +19 -0
  197. package/dot_config/just/justfile +122 -0
  198. package/dot_config/k9s/config.yaml +65 -0
  199. package/dot_config/k9s/skins/catppuccin-mocha.yaml +116 -0
  200. package/dot_config/kanshi/config.tmpl +22 -0
  201. package/dot_config/karabiner/karabiner.json +14 -0
  202. package/dot_config/kitty/kitty.conf.tmpl +53 -0
  203. package/dot_config/lazydocker/config.yml +186 -0
  204. package/dot_config/lazygit/config.yml +35 -0
  205. package/dot_config/mako/config +47 -0
  206. package/dot_config/mas/masapps.txt +5 -0
  207. package/dot_config/micro/settings.json +3 -0
  208. package/dot_config/mimeapps.list +77 -0
  209. package/dot_config/minikube/config.json +13 -0
  210. package/dot_config/mise/config.toml +99 -0
  211. package/dot_config/mongosh/mongoshrc.js +68 -0
  212. package/dot_config/mpv/input.conf +47 -0
  213. package/dot_config/mpv/mpv.conf +47 -0
  214. package/dot_config/mycli/myclirc +67 -0
  215. package/dot_config/nano/nanorc +28 -0
  216. package/dot_config/ncdu/config +12 -0
  217. package/dot_config/niri/config.kdl.tmpl +327 -0
  218. package/dot_config/nushell/aliases.nu +18 -0
  219. package/dot_config/nushell/completions.nu.tmpl +52 -0
  220. package/dot_config/nushell/config.nu.tmpl +86 -0
  221. package/dot_config/nushell/env.nu.tmpl +94 -0
  222. package/dot_config/nushell/functions.nu.tmpl +17 -0
  223. package/dot_config/nvim/init.lua +18 -0
  224. package/dot_config/nvim/lazy-lock.json +58 -0
  225. package/dot_config/nvim/lua/config/autocmds.lua +107 -0
  226. package/dot_config/nvim/lua/config/keymaps.lua +92 -0
  227. package/dot_config/nvim/lua/config/lazy.lua +44 -0
  228. package/dot_config/nvim/lua/config/options.lua +49 -0
  229. package/dot_config/nvim/lua/plugins/ai.lua +75 -0
  230. package/dot_config/nvim/lua/plugins/coding.lua +216 -0
  231. package/dot_config/nvim/lua/plugins/completion.lua +60 -0
  232. package/dot_config/nvim/lua/plugins/dap.lua +412 -0
  233. package/dot_config/nvim/lua/plugins/editor.lua +55 -0
  234. package/dot_config/nvim/lua/plugins/git.lua +10 -0
  235. package/dot_config/nvim/lua/plugins/lsp.lua +156 -0
  236. package/dot_config/nvim/lua/plugins/markdown.lua +18 -0
  237. package/dot_config/nvim/lua/plugins/rust.lua +34 -0
  238. package/dot_config/nvim/lua/plugins/sessions.lua +33 -0
  239. package/dot_config/nvim/lua/plugins/ui.lua +509 -0
  240. package/dot_config/paru/paru.conf +10 -0
  241. package/dot_config/pip/pip.conf.tmpl +32 -0
  242. package/dot_config/powershell/Microsoft.PowerShell_profile.ps1.tmpl +81 -0
  243. package/dot_config/pueue/pueue.yml +34 -0
  244. package/dot_config/pypoetry/config.toml +6 -0
  245. package/dot_config/pyrightconfig.json +5 -0
  246. package/dot_config/raycast/README.md +13 -0
  247. package/dot_config/redis/redisclirc +41 -0
  248. package/dot_config/ripgrep/ripgreprc +21 -0
  249. package/dot_config/shell/00-core-paths.sh.tmpl +133 -0
  250. package/dot_config/shell/05-core-safety.sh +47 -0
  251. package/dot_config/shell/10-secrets.sh +40 -0
  252. package/dot_config/shell/40-fzf-defaults.sh.tmpl +16 -0
  253. package/dot_config/shell/40-ls-colors.sh +48 -0
  254. package/dot_config/shell/50-logic-functions-core.sh.tmpl +10 -0
  255. package/dot_config/shell/50-logic-functions.sh.tmpl +10 -0
  256. package/dot_config/shell/51-logic-functions-extra.sh.tmpl +64 -0
  257. package/dot_config/shell/90-ux-aliases.sh.tmpl +120 -0
  258. package/dot_config/shell/91-ux-aliases-lazy.sh.tmpl +54 -0
  259. package/dot_config/shell/Brewfile +207 -0
  260. package/dot_config/shell/Brewfile.cask +92 -0
  261. package/dot_config/shell/Brewfile.cli +127 -0
  262. package/dot_config/shell/README.md +267 -0
  263. package/dot_config/shell/als_data.txt.tmpl +65 -0
  264. package/dot_config/shell/custom/auto_ls.zsh +20 -0
  265. package/dot_config/shell/custom/context_suggest.zsh +68 -0
  266. package/dot_config/shell/custom/error_analysis.zsh +45 -0
  267. package/dot_config/sops/dot_sops.yaml +23 -0
  268. package/dot_config/starship.toml.tmpl +202 -0
  269. package/dot_config/swaylock/config +43 -0
  270. package/dot_config/systemd/user/dotfiles-maintenance.service +8 -0
  271. package/dot_config/systemd/user/dotfiles-maintenance.timer +11 -0
  272. package/dot_config/systemd/user/pueued.service +12 -0
  273. package/dot_config/systemd/user/ssh-agent.service +12 -0
  274. package/dot_config/task/Taskfile.yml +86 -0
  275. package/dot_config/tflint/tflint.hcl +9 -0
  276. package/dot_config/tmux/tmux.conf.tmpl +223 -0
  277. package/dot_config/topgrade.toml.tmpl +54 -0
  278. package/dot_config/user-dirs.dirs +9 -0
  279. package/dot_config/vscode/extensions.txt +11 -0
  280. package/dot_config/vscode/settings.json.tmpl +82 -0
  281. package/dot_config/waybar/config.jsonc.tmpl +90 -0
  282. package/dot_config/waybar/style.css.tmpl +211 -0
  283. package/dot_config/wezterm/wezterm.lua.tmpl +64 -0
  284. package/dot_config/wget/wgetrc +12 -0
  285. package/dot_config/xdg-desktop-portal/niri-portals.conf +5 -0
  286. package/dot_config/yarn/yarnrc.yml +36 -0
  287. package/dot_config/yazi/keymap.toml +67 -0
  288. package/dot_config/yazi/theme.toml +102 -0
  289. package/dot_config/yazi/yazi.toml +40 -0
  290. package/dot_config/zathura/zathurarc +52 -0
  291. package/dot_config/zellij/config.kdl.tmpl +79 -0
  292. package/dot_config/zsh/dot_zprofile +7 -0
  293. package/dot_config/zsh/dot_zshenv +5 -0
  294. package/dot_config/zsh/dot_zshrc.tmpl +498 -0
  295. package/dot_config/zsh/rc.d/00-alias-shims.zsh +77 -0
  296. package/dot_config/zsh/rc.d/05-ssh-agent.zsh +18 -0
  297. package/dot_config/zsh/rc.d/10-env.zsh.tmpl +28 -0
  298. package/dot_config/zsh/rc.d/20-zinit.zsh +65 -0
  299. package/dot_config/zsh/rc.d/30-options.zsh.tmpl +194 -0
  300. package/dot_config/zsh/rc.d/40-bell.zsh +20 -0
  301. package/dot_config/zsh/rc.d/50-login-fortune.zsh +9 -0
  302. package/dot_config/zsh/rc.d/99-alias-wrapper.zsh +32 -0
  303. package/dot_local/bin/__pycache__/executable_dot-load-benchmark-ptycpython-312.pyc +0 -0
  304. package/dot_local/bin/executable_ai-update +195 -0
  305. package/dot_local/bin/executable_ai_core +152 -0
  306. package/dot_local/bin/executable_antigravity +11 -0
  307. package/dot_local/bin/executable_b64 +84 -0
  308. package/dot_local/bin/executable_bm +77 -0
  309. package/dot_local/bin/executable_cb +39 -0
  310. package/dot_local/bin/executable_dot +589 -0
  311. package/dot_local/bin/executable_dot-ai +36 -0
  312. package/dot_local/bin/executable_dot-bootstrap +77 -0
  313. package/dot_local/bin/executable_dot-launch-or-focus +52 -0
  314. package/dot_local/bin/executable_dot-load-benchmark +31 -0
  315. package/dot_local/bin/executable_dot-load-benchmark-pty +77 -0
  316. package/dot_local/bin/executable_dot-theme-sync +952 -0
  317. package/dot_local/bin/executable_dot_completion +57 -0
  318. package/dot_local/bin/executable_dtags +28 -0
  319. package/dot_local/bin/executable_epoch +67 -0
  320. package/dot_local/bin/executable_extract +41 -0
  321. package/dot_local/bin/executable_gbd +52 -0
  322. package/dot_local/bin/executable_gd +42 -0
  323. package/dot_local/bin/executable_git-ai-commit +175 -0
  324. package/dot_local/bin/executable_git-ai-diff +169 -0
  325. package/dot_local/bin/executable_gl +101 -0
  326. package/dot_local/bin/executable_hash +161 -0
  327. package/dot_local/bin/executable_hashsum +160 -0
  328. package/dot_local/bin/executable_hex +115 -0
  329. package/dot_local/bin/executable_jsonv +78 -0
  330. package/dot_local/bin/executable_jwt +94 -0
  331. package/dot_local/bin/executable_kill-port +75 -0
  332. package/dot_local/bin/executable_lorem +118 -0
  333. package/dot_local/bin/executable_mkscript +35 -0
  334. package/dot_local/bin/executable_monitor +56 -0
  335. package/dot_local/bin/executable_myip +51 -0
  336. package/dot_local/bin/executable_notify +22 -0
  337. package/dot_local/bin/executable_open +36 -0
  338. package/dot_local/bin/executable_pw +27 -0
  339. package/dot_local/bin/executable_rec-start +46 -0
  340. package/dot_local/bin/executable_rec-stop +35 -0
  341. package/dot_local/bin/executable_regex +132 -0
  342. package/dot_local/bin/executable_start-niri +8 -0
  343. package/dot_local/bin/executable_tmux-sessionizer +314 -0
  344. package/dot_local/bin/executable_tour +175 -0
  345. package/dot_local/bin/executable_up +21 -0
  346. package/dot_local/bin/executable_update +142 -0
  347. package/dot_local/bin/executable_uuid +87 -0
  348. package/dot_local/bin/executable_win +32 -0
  349. package/dot_local/bin/executable_yamlv +57 -0
  350. package/dot_local/share/bash-completion/completions/dot +72 -0
  351. package/dot_local/share/icons/hicolor/128x128/apps/rousseau.png +0 -0
  352. package/dot_local/share/icons/hicolor/16x16/apps/rousseau.png +0 -0
  353. package/dot_local/share/icons/hicolor/24x24/apps/rousseau.png +0 -0
  354. package/dot_local/share/icons/hicolor/256x256/apps/rousseau.png +0 -0
  355. package/dot_local/share/icons/hicolor/32x32/apps/rousseau.png +0 -0
  356. package/dot_local/share/icons/hicolor/48x48/apps/rousseau.png +0 -0
  357. package/dot_local/share/icons/hicolor/512x512/apps/rousseau.png +0 -0
  358. package/dot_local/share/icons/hicolor/64x64/apps/rousseau.png +0 -0
  359. package/dot_local/share/icons/hicolor/96x96/apps/rousseau.png +0 -0
  360. package/dot_local/share/icons/hicolor/scalable/apps/rousseau.png +0 -0
  361. package/dot_local/share/man/man1/dot.1 +149 -0
  362. package/dot_local/share/mise/plugins/kiro-cli/bin/executable_download +64 -0
  363. package/dot_local/share/mise/plugins/kiro-cli/bin/executable_install +18 -0
  364. package/dot_local/share/mise/plugins/kiro-cli/bin/executable_list-all +13 -0
  365. package/dot_local/share/wayland-sessions/niri.desktop.tmpl +6 -0
  366. package/dot_local/share/zsh/completions/.keep +0 -0
  367. package/dot_local/share/zsh/completions/_dot +283 -0
  368. package/install.sh +342 -0
  369. package/package.json +1 -1
  370. package/scripts/ci/check-copyright-headers.sh +96 -0
  371. package/scripts/ci/guard-gitleaks-checkout.sh +57 -0
  372. package/scripts/ci/install-chezmoi-verified.sh +64 -0
  373. package/scripts/ci/validate-ci-config.sh +224 -0
  374. package/scripts/demo/record.sh +42 -0
  375. package/scripts/diagnostics/a2a-conformance.sh +162 -0
  376. package/scripts/diagnostics/alias-governance.sh +137 -0
  377. package/scripts/diagnostics/aliases-cheatsheet.sh +73 -0
  378. package/scripts/diagnostics/aliases-manifest.sh +31 -0
  379. package/scripts/diagnostics/benchmark.sh +381 -0
  380. package/scripts/diagnostics/conflicts.sh +72 -0
  381. package/scripts/diagnostics/doctor-unified.sh +38 -0
  382. package/scripts/diagnostics/doctor.sh +541 -0
  383. package/scripts/diagnostics/drift-dashboard.sh +37 -0
  384. package/scripts/diagnostics/health.sh +597 -0
  385. package/scripts/diagnostics/history-analysis.sh +85 -0
  386. package/scripts/diagnostics/mcp-doctor.sh +575 -0
  387. package/scripts/diagnostics/perf.sh +225 -0
  388. package/scripts/diagnostics/scorecard.sh +118 -0
  389. package/scripts/diagnostics/secret-governance.sh +58 -0
  390. package/scripts/diagnostics/security-score.sh +438 -0
  391. package/scripts/diagnostics/smoke-test.sh +87 -0
  392. package/scripts/diagnostics/snapshot.sh +89 -0
  393. package/scripts/diagnostics/verify.sh +107 -0
  394. package/scripts/{verify_state.sh → diagnostics/verify_state.sh} +22 -22
  395. package/scripts/diagnostics/version-locks.sh +79 -0
  396. package/scripts/diagnostics/workstation-attestation.sh +181 -0
  397. package/scripts/docs/build-manual.sh +883 -0
  398. package/scripts/docs/check-manual.sh +213 -0
  399. package/scripts/dot/commands/agent.sh +465 -0
  400. package/scripts/dot/commands/ai.sh +416 -0
  401. package/scripts/dot/commands/aliases.sh +250 -0
  402. package/scripts/dot/commands/appearance.sh +80 -0
  403. package/scripts/dot/commands/core.sh +185 -0
  404. package/scripts/dot/commands/diagnostics.sh +229 -0
  405. package/scripts/dot/commands/fleet.sh +399 -0
  406. package/scripts/dot/commands/lint.sh +177 -0
  407. package/scripts/dot/commands/manual.sh +168 -0
  408. package/scripts/dot/commands/meta.sh +248 -0
  409. package/scripts/dot/commands/patterns.sh +54 -0
  410. package/scripts/dot/commands/restore.sh +231 -0
  411. package/scripts/dot/commands/secrets.sh +223 -0
  412. package/scripts/dot/commands/security.sh +76 -0
  413. package/scripts/dot/commands/tools.sh +469 -0
  414. package/scripts/dot/data/alias-deprecations.tsv +2 -0
  415. package/scripts/dot/lib/bento.sh +49 -0
  416. package/scripts/dot/lib/log.sh +194 -0
  417. package/scripts/dot/lib/platform.sh +98 -0
  418. package/scripts/dot/lib/ui.sh +507 -0
  419. package/scripts/dot/lib/utils.sh +372 -0
  420. package/scripts/fonts/install-nerd-fonts.sh +68 -0
  421. package/scripts/fonts/patch-fonts.sh +35 -0
  422. package/scripts/git-hooks/install.sh +11 -0
  423. package/scripts/git-hooks/pre-commit +12 -0
  424. package/scripts/git-hooks/pre-commit-audit.sh +145 -0
  425. package/scripts/git-hooks/pre-push +29 -0
  426. package/scripts/git-hooks/prepare-commit-msg +29 -0
  427. package/scripts/lib/secrets_provider.sh +158 -0
  428. package/scripts/maintenance/check-updates.sh +131 -0
  429. package/scripts/ops/ai-setup.sh +55 -0
  430. package/scripts/ops/bundle.sh +77 -0
  431. package/scripts/ops/chaos.sh +49 -0
  432. package/scripts/ops/chezmoi-apply.sh +270 -0
  433. package/scripts/ops/chezmoi-diff.sh +15 -0
  434. package/scripts/ops/chezmoi-remove.sh +45 -0
  435. package/scripts/ops/chezmoi-update.sh +48 -0
  436. package/scripts/ops/heal-chezmoi.sh +51 -0
  437. package/scripts/ops/heal-system.sh +128 -0
  438. package/scripts/ops/heal-tools.sh +340 -0
  439. package/scripts/ops/heal.sh +222 -0
  440. package/scripts/ops/post-apply-repair.sh +106 -0
  441. package/scripts/ops/prewarm.sh +127 -0
  442. package/scripts/ops/release.sh +252 -0
  443. package/scripts/ops/rollback.sh +589 -0
  444. package/scripts/ops/setup.sh +137 -0
  445. package/scripts/ops/teleport.sh +33 -0
  446. package/scripts/qa/coverage-baseline.sh +60 -0
  447. package/scripts/qa/docs-coverage.sh +111 -0
  448. package/scripts/qa/reliability-audit.sh +138 -0
  449. package/scripts/qa/traceability-coverage.sh +116 -0
  450. package/scripts/qa/validate-examples.sh +26 -0
  451. package/scripts/qa/wsl-contract.sh +11 -0
  452. package/scripts/release/package-policy-bundles.sh +125 -0
  453. package/scripts/secrets/age-init.sh +70 -0
  454. package/scripts/secrets/create-secrets-file.sh +45 -0
  455. package/scripts/secrets/encrypt-ssh-key.sh +43 -0
  456. package/scripts/security/backup.sh +57 -0
  457. package/scripts/security/dns-doh.sh +51 -0
  458. package/scripts/security/encryption-check.sh +54 -0
  459. package/scripts/security/enforce-policies.sh +334 -0
  460. package/scripts/security/firewall.sh +90 -0
  461. package/scripts/security/lock-configs.sh +57 -0
  462. package/scripts/security/lock-screen.sh +55 -0
  463. package/scripts/security/manage-secrets.sh +428 -0
  464. package/scripts/security/ssh-cert.sh +203 -0
  465. package/scripts/security/telemetry-kill.sh +50 -0
  466. package/scripts/security/usb-safety.sh +51 -0
  467. package/scripts/theme/apply-gnome-theme.sh +328 -0
  468. package/scripts/theme/extract-theme.py +677 -0
  469. package/scripts/theme/install-boot-logo.sh +62 -0
  470. package/scripts/theme/install-catppuccin-themes.sh +370 -0
  471. package/scripts/theme/install-cursors.sh +25 -0
  472. package/scripts/theme/install-file-icons.sh +26 -0
  473. package/scripts/theme/install-grub-theme.sh +61 -0
  474. package/scripts/theme/install-lock-icon.sh +30 -0
  475. package/scripts/theme/merge-wallpaper.sh +141 -0
  476. package/scripts/theme/rebuild-themes.sh +309 -0
  477. package/scripts/theme/switch.sh +421 -0
  478. package/scripts/theme/wallpaper-rotate.sh +136 -0
  479. package/scripts/theme/wallpaper-sync.sh +397 -0
  480. package/scripts/tools/cmatrix.sh +21 -0
  481. package/scripts/{detect-collisions.py → tools/detect-collisions.py} +2 -2
  482. package/scripts/tools/emoji-picker.sh +48 -0
  483. package/scripts/tools/figlet-banner.sh +18 -0
  484. package/scripts/tools/log-rotate.sh +30 -0
  485. package/scripts/tools/lolcat-wrap.sh +19 -0
  486. package/scripts/tools/pipes.sh +48 -0
  487. package/scripts/tuning/linux.sh +185 -0
  488. package/scripts/tuning/macos.sh +55 -0
  489. package/scripts/uninstall.sh +85 -0
  490. package/scripts/version-sync.sh +487 -0
  491. package/templates/chezmoi-data/geekom-a9.toml.example +21 -0
  492. package/templates/chezmoi-data/mac-m1.toml.example +16 -0
  493. package/templates/chezmoi-data/mac-t2-linux.toml.example +21 -0
  494. package/templates/chezmoi-data/surface-pro-7p.toml.example +21 -0
  495. package/templates/projects/go/.github/workflows/ci.yml +31 -0
  496. package/templates/projects/go/README.md +4 -0
  497. package/templates/projects/go/cmd/__PROJECT_NAME__/main.go +1 -0
  498. package/templates/projects/go/go.sum +0 -0
  499. package/templates/projects/molecule/README.md +7 -0
  500. package/templates/projects/molecule/converge.yml +7 -0
  501. package/templates/projects/molecule/molecule.yml +16 -0
  502. package/templates/projects/node/.github/workflows/ci.yml +30 -0
  503. package/templates/projects/node/README.md +4 -0
  504. package/templates/projects/node/package-lock.json +12 -0
  505. package/templates/projects/node/src/index.js +1 -0
  506. package/templates/projects/packer/README.md +15 -0
  507. package/templates/projects/packer/main.pkr.hcl +15 -0
  508. package/templates/projects/python/.github/workflows/ci.yml +34 -0
  509. package/templates/projects/python/README.md +4 -0
  510. package/templates/projects/python/pyproject.toml +15 -0
  511. package/templates/projects/python/src/__PROJECT_NAME__/__init__.py +1 -0
  512. package/templates/projects/python/tests/test_basic.py +1 -0
  513. package/docs/ARCHITECTURE.md +0 -62
  514. package/docs/COMPLIANCE.md +0 -47
  515. package/docs/OPERATIONS.md +0 -103
  516. package/docs/PR_DESCRIPTION.md +0 -150
  517. package/docs/ROADMAP_legacy.md +0 -556
  518. package/docs/SECURITY_CHECKLIST.md +0 -25
  519. package/docs/TASK.md +0 -99
  520. package/docs/WALKTHROUGH.md +0 -46
  521. package/scripts/backup.sh +0 -142
  522. package/scripts/banner.sh +0 -20
  523. package/scripts/benchmark.sh +0 -20
  524. package/scripts/build.sh +0 -41
  525. package/scripts/clean.sh +0 -31
  526. package/scripts/compile.sh +0 -54
  527. package/scripts/copy.sh +0 -108
  528. package/scripts/doctor.sh +0 -79
  529. package/scripts/dotfiles.sh +0 -63
  530. package/scripts/download.sh +0 -35
  531. package/scripts/help.sh +0 -57
  532. package/scripts/lock-configs.sh +0 -57
  533. package/scripts/package.sh +0 -46
  534. package/scripts/ssh.sh +0 -55
  535. package/scripts/teleport.sh +0 -23
  536. package/scripts/test-aliases.sh +0 -25
  537. package/scripts/test_smoke.sh +0 -88
  538. package/scripts/unpack.sh +0 -28
@@ -0,0 +1,219 @@
1
+ # Key Rotation Guide
2
+
3
+ This guide covers rotating encryption keys for secrets managed by Age and SOPS.
4
+
5
+ ## Age Key Rotation
6
+
7
+ ### When to Rotate
8
+
9
+ - **Annually**: As a preventive measure
10
+ - **After compromise**: If you suspect key exposure
11
+ - **Personnel change**: When team members leave
12
+ - **Device loss**: If a device with the key is lost/stolen
13
+
14
+ ### Rotation Procedure
15
+
16
+ #### 1. Generate New Key
17
+
18
+ ```bash
19
+ # Create new age key
20
+ age-keygen -o ~/.config/chezmoi/key-new.txt
21
+
22
+ # Note the public key (starts with "age1...")
23
+ cat ~/.config/chezmoi/key-new.txt | grep "public key"
24
+ ```
25
+
26
+ #### 2. Re-encrypt All Secrets
27
+
28
+ ```bash
29
+ # List all encrypted files
30
+ chezmoi managed --include=encrypted
31
+
32
+ # For each encrypted file, decrypt with old key and re-encrypt with new
33
+ for file in $(chezmoi managed --include=encrypted); do
34
+ # Decrypt with old key
35
+ chezmoi cat "$file" > "/tmp/$(basename $file).dec"
36
+
37
+ # Re-encrypt with new key (update chezmoi config first)
38
+ # See step 3
39
+ done
40
+ ```
41
+
42
+ #### 3. Update Chezmoi Configuration
43
+
44
+ Edit `~/.config/chezmoi/chezmoi.toml`:
45
+
46
+ ```toml
47
+ [age]
48
+ identity = "~/.config/chezmoi/key-new.txt"
49
+ recipient = "age1your_new_public_key_here"
50
+ ```
51
+
52
+ #### 4. Re-add Encrypted Files
53
+
54
+ ```bash
55
+ # Re-add each secret with new encryption
56
+ chezmoi add --encrypt ~/.ssh/id_ed25519
57
+ chezmoi add --encrypt ~/.config/secrets/api-keys.env
58
+ ```
59
+
60
+ #### 5. Verify and Clean Up
61
+
62
+ ```bash
63
+ # Verify decryption works
64
+ chezmoi cat ~/.ssh/id_ed25519
65
+
66
+ # Archive old key (store securely offline)
67
+ mv ~/.config/chezmoi/key.txt ~/.config/chezmoi/key-$(date +%Y%m%d)-archived.txt
68
+
69
+ # Rename new key
70
+ mv ~/.config/chezmoi/key-new.txt ~/.config/chezmoi/key.txt
71
+
72
+ # Commit changes
73
+ cd ~/.dotfiles
74
+ git add -A
75
+ git commit -m "chore(secrets): rotate age encryption key"
76
+ ```
77
+
78
+ ### Emergency Rotation (Compromised Key)
79
+
80
+ ```bash
81
+ # 1. Immediately generate new key
82
+ age-keygen -o ~/.config/chezmoi/key-emergency.txt
83
+
84
+ # 2. Re-encrypt ALL secrets (prioritize most sensitive)
85
+ # 3. Revoke/rotate any API keys, tokens that were encrypted
86
+ # 4. Update any shared secrets with team members
87
+ # 5. Document the incident
88
+ ```
89
+
90
+ ---
91
+
92
+ ## SOPS Key Rotation
93
+
94
+ ### Overview
95
+
96
+ SOPS supports multiple key types. This covers Age keys (recommended) and GPG keys.
97
+
98
+ ### SOPS with Age Keys
99
+
100
+ #### Generate New Key
101
+
102
+ ```bash
103
+ age-keygen -o ~/.config/sops/age/keys-new.txt
104
+ ```
105
+
106
+ #### Update .sops.yaml
107
+
108
+ ```yaml
109
+ creation_rules:
110
+ - path_regex: \.env$
111
+ age: >-
112
+ age1new_key_here,
113
+ age1old_key_here # Keep old key temporarily for decryption
114
+ ```
115
+
116
+ #### Re-encrypt Files
117
+
118
+ ```bash
119
+ # Rotate key for a single file
120
+ sops updatekeys secrets.env
121
+
122
+ # Or re-encrypt entirely
123
+ sops -d secrets.env | sops -e /dev/stdin > secrets.env.new
124
+ mv secrets.env.new secrets.env
125
+ ```
126
+
127
+ #### Remove Old Key
128
+
129
+ After confirming all files are re-encrypted:
130
+
131
+ 1. Remove old key from `.sops.yaml`
132
+ 2. Archive old key securely
133
+ 3. Commit changes
134
+
135
+ ### SOPS with GPG Keys
136
+
137
+ ```bash
138
+ # Generate new GPG key
139
+ gpg --full-generate-key
140
+
141
+ # Export fingerprint
142
+ gpg --list-keys --keyid-format LONG
143
+
144
+ # Update .sops.yaml with new fingerprint
145
+ # Re-encrypt files
146
+ sops updatekeys <file>
147
+ ```
148
+
149
+ ---
150
+
151
+ ## Automation Scripts
152
+
153
+ ### Check Key Age
154
+
155
+ ```bash
156
+ #!/usr/bin/env bash
157
+ # check-key-age.sh - Alert if keys are older than 365 days
158
+
159
+ KEY_FILE="${HOME}/.config/chezmoi/key.txt"
160
+ MAX_AGE_DAYS=365
161
+
162
+ if [[ -f "$KEY_FILE" ]]; then
163
+ key_age=$(( ($(date +%s) - $(stat -c %Y "$KEY_FILE")) / 86400 ))
164
+
165
+ if [[ $key_age -gt $MAX_AGE_DAYS ]]; then
166
+ echo "⚠️ Age key is ${key_age} days old. Consider rotation."
167
+ exit 1
168
+ else
169
+ echo "✓ Age key is ${key_age} days old (limit: ${MAX_AGE_DAYS})"
170
+ fi
171
+ fi
172
+ ```
173
+
174
+ ### Automated Backup Before Rotation
175
+
176
+ ```bash
177
+ #!/usr/bin/env bash
178
+ # backup-before-rotation.sh
179
+
180
+ BACKUP_DIR="${HOME}/.local/share/dotfiles/key-backups"
181
+ mkdir -p "$BACKUP_DIR"
182
+
183
+ # Backup current key
184
+ cp ~/.config/chezmoi/key.txt "$BACKUP_DIR/key-$(date +%Y%m%d_%H%M%S).txt"
185
+
186
+ # Encrypt backup with passphrase
187
+ gpg --symmetric --cipher-algo AES256 "$BACKUP_DIR/key-$(date +%Y%m%d_%H%M%S).txt"
188
+
189
+ # Remove unencrypted backup
190
+ rm "$BACKUP_DIR/key-$(date +%Y%m%d_%H%M%S).txt"
191
+
192
+ echo "Key backed up to $BACKUP_DIR (encrypted)"
193
+ ```
194
+
195
+ ---
196
+
197
+ ## Best Practices
198
+
199
+ 1. **Never commit unencrypted keys** - Use `.gitignore` properly
200
+ 2. **Store backups offline** - USB drive in secure location
201
+ 3. **Use hardware keys when possible** - YubiKey with age-plugin-yubikey
202
+ 4. **Document rotation dates** - Keep a log of when keys were rotated
203
+ 5. **Test decryption** - Always verify after rotation
204
+ 6. **Notify team members** - If using shared secrets
205
+
206
+ ## Recovery Procedures
207
+
208
+ If you lose access to your key:
209
+
210
+ 1. **Check backups** - Offline storage, password manager
211
+ 2. **Check other machines** - Key may exist on another device
212
+ 3. **Re-create secrets** - As last resort, regenerate API keys, tokens, etc.
213
+
214
+ ## Related Documentation
215
+
216
+ - [SECRETS.md](SECRETS.md) - Secrets management overview
217
+ - [SECURITY.md](SECURITY.md) - Security hardening guide
218
+ - [Age documentation](https://github.com/FiloSottile/age)
219
+ - [SOPS documentation](https://github.com/getsops/sops)
@@ -0,0 +1,69 @@
1
+ # MCP Policy
2
+
3
+ MCP is treated as a controlled execution boundary.
4
+
5
+ ## Default posture
6
+
7
+ The tracked default is `strict-local`.
8
+
9
+ Properties:
10
+ - local-first
11
+ - least privilege
12
+ - no broad filesystem roots
13
+ - no wildcard or unsafe flags
14
+ - no network-facing MCP servers enabled by default
15
+ - machine-readable validation output
16
+
17
+ ## Policy artifact
18
+
19
+ The source of truth lives in [mcp-policy.json](/home/seb/.dotfiles/dot_config/dotfiles/mcp-policy.json).
20
+ Approved package pins live in [mcp-lock.json](/home/seb/.dotfiles/dot_config/dotfiles/mcp-lock.json).
21
+ Tracked server registry entries live in [mcp-registry.json](/home/seb/.dotfiles/dot_config/dotfiles/mcp-registry.json).
22
+
23
+ Current defaults:
24
+ - Allowed launchers: `npx`, `node`, `uvx`
25
+ - Trusted transports: `stdio`, `http`
26
+ - Blocked filesystem roots: `/`, `/home`, `/Users`
27
+ - Blocked argument patterns: `^--allow-.*`, `^--unsafe$`, `^\\*$`
28
+ - Network-facing servers disabled by default: `github`, `brave-search`, `fetch`, `puppeteer`, `filesystem`
29
+ - Approved packages must resolve through the tracked MCP lock manifest
30
+ - Every active server must match the tracked MCP registry
31
+ - HTTP transports must use `https://` and registry-declared OAuth2
32
+
33
+ ## Validation
34
+
35
+ Run:
36
+
37
+ ```bash
38
+ dot mcp --strict
39
+ dot mcp -s -j
40
+ dot mcp registry
41
+ ```
42
+
43
+ The JSON form is the audit artifact for CI, release validation, and workstation attestation.
44
+
45
+ ## Change control
46
+
47
+ Any change to MCP policy requires:
48
+ 1. A signed commit
49
+ 2. A matching test update
50
+ 3. A release note if the effective trust boundary changes
51
+ 4. A policy bundle review when enterprise defaults change
52
+
53
+ ## Supply-chain controls
54
+
55
+ Phase 2 adds explicit package locking for default MCP servers.
56
+
57
+ Current approved refs:
58
+ - `mcp-server-git@2025.1.14`
59
+ - `@modelcontextprotocol/server-memory@2025.8.4`
60
+ - `mcp-server-sqlite@2025.1.14`
61
+
62
+ `dot mcp --strict` and `dot mcp -s` now verify that:
63
+ - package refs are version-pinned
64
+ - the pinned refs match the tracked lock manifest
65
+ - non-approved package refs are rejected in strict mode
66
+ - active servers match the tracked registry entries
67
+ - remote HTTP transports are HTTPS and OAuth-backed
68
+
69
+ Policy bundle baselines live in [policy-bundles.json](/home/seb/.dotfiles/dot_config/dotfiles/policy-bundles.json).
@@ -0,0 +1,33 @@
1
+ # Policy Bundle Releases
2
+
3
+ Policy bundles are released as tracked governance artifacts.
4
+
5
+ They include:
6
+
7
+ - policy bundles
8
+ - model registry
9
+ - prompt registry
10
+ - agent profiles
11
+ - agent card
12
+ - MCP policy, registry, and lock
13
+ - A2A discovery metadata
14
+
15
+ ## Local packaging
16
+
17
+ ```bash
18
+ bash scripts/release/package-policy-bundles.sh --version 2026.03
19
+ bash scripts/release/package-policy-bundles.sh --json
20
+ ```
21
+
22
+ ## Release workflow
23
+
24
+ Use the `Policy Bundle Release` workflow.
25
+
26
+ Release controls:
27
+
28
+ - source ref must be signed
29
+ - governance JSON must validate with `jq`
30
+ - bundle archive gets a SHA-256 checksum
31
+ - bundle archive gets GitHub provenance attestation
32
+
33
+ Signed commits remain mandatory for any policy change.
@@ -0,0 +1,24 @@
1
+ # Security Documentation
2
+
3
+ This directory contains security documentation for the dotfiles project.
4
+
5
+ ## Index
6
+
7
+ | Document | Description |
8
+ |----------|-------------|
9
+ | [SECURITY.md](SECURITY.md) | Core security model and opt-in hardening |
10
+ | [THREAT_MODEL.md](THREAT_MODEL.md) | Threat analysis with trust boundaries |
11
+ | [SECRETS.md](SECRETS.md) | Secrets management (Age, SOPS, Keychain) |
12
+ | [KEY_ROTATION.md](KEY_ROTATION.md) | Key rotation procedures |
13
+ | [KEYS.md](KEYS.md) | Keybindings reference |
14
+ | [COMPLIANCE.md](COMPLIANCE.md) | SOC 2, ISO 27001, GDPR, HIPAA mapping |
15
+ | [AI_ACT_COMPLIANCE.md](AI_ACT_COMPLIANCE.md) | EU AI Act risk classification and exemption analysis |
16
+ | [SECURITY_CHECKLIST.md](SECURITY_CHECKLIST.md) | Pre-release security verification |
17
+
18
+ ## Quick Reference
19
+
20
+ - **Encryption:** Age + SOPS for secrets at rest
21
+ - **Signing:** SSH ED25519 commit signing enforced
22
+ - **Scanning:** Gitleaks pre-commit hook prevents credential leaks
23
+ - **Telemetry:** Disabled by default, no data leaves your machine
24
+ - **Hardening:** Opt-in firewall, DNS-over-HTTPS, lock-screen, USB safety
@@ -0,0 +1,146 @@
1
+ # Secrets Management
2
+
3
+ Provider-agnostic secrets via `dot secrets`. Supports macOS Keychain, `pass`, and age-encrypted local storage.
4
+
5
+ ## Providers
6
+
7
+ Provider selection is controlled by `.chezmoidata.toml`:
8
+
9
+ ```toml
10
+ [secrets.policy]
11
+ provider = "auto" # auto | macos-keychain | pass | plain-enc
12
+ auto_load = true
13
+
14
+ [secrets.buckets]
15
+ ai = ["GEMINI_API_KEY", "CLAUDE_API_KEY", "OPENAI_API_KEY"]
16
+ infra = ["AWS_ACCESS_KEY_ID", "AWS_SECRET_ACCESS_KEY", "GITHUB_TOKEN"]
17
+ ```
18
+
19
+ `auto` resolves in this order:
20
+ 1. `macos-keychain` on macOS
21
+ 2. `pass` when available
22
+ 3. `plain-enc` fallback (age-encrypted local store)
23
+
24
+ ## Commands
25
+
26
+ ```bash
27
+ # Bootstrap age key for chezmoi encrypted files
28
+ dot secrets-init
29
+
30
+ # Optional: create encrypted secrets file for chezmoi
31
+ dot secrets-create
32
+ dot secrets edit
33
+
34
+ # Managed secret store
35
+ dot secrets set GEMINI_API_KEY
36
+ dot secrets get GEMINI_API_KEY --raw
37
+ dot secrets list
38
+ dot secrets provider
39
+
40
+ # Emit export lines for a bucket
41
+ dot secrets load ai
42
+
43
+ # Load into current shell session
44
+ eval "$(dot env load ai)"
45
+ ```
46
+
47
+ ## Shell Auto-Load
48
+
49
+ When `auto_load = true`, shell startup can load configured buckets automatically via `dot env load <bucket>`.
50
+
51
+ Environment toggles:
52
+ - `DOTFILES_SECRETS_PROVIDER`
53
+ - `DOTFILES_SECRETS_AUTO_LOAD`
54
+ - `DOTFILES_SECRETS_BUCKET_NAMES`
55
+
56
+ ## Governance
57
+
58
+ A pre-commit hook runs:
59
+
60
+ ```bash
61
+ scripts/diagnostics/secret-governance.sh
62
+ ```
63
+
64
+ It blocks staged commits when likely secret patterns are found. In strict mode it also blocks exact matches against managed secret values.
65
+
66
+ ## SSH Key Encryption
67
+
68
+ ```bash
69
+ dot ssh-key ~/.ssh/id_ed25519
70
+ ```
71
+
72
+ This creates a local encrypted file, which you can add to chezmoi with `chezmoi add --encrypt` if needed.
73
+
74
+ ## External Secrets Backends
75
+
76
+ Chezmoi natively supports external secret managers as template functions. Configure the backend in `.chezmoidata.toml`:
77
+
78
+ ```toml
79
+ secrets_backend = "age" # age, 1password, bitwarden, pass, vault
80
+ ```
81
+
82
+ ### 1Password
83
+
84
+ Requires the [1Password CLI](https://developer.1password.com/docs/cli/) (`op`).
85
+
86
+ ```toml
87
+ # .chezmoidata.toml
88
+ secrets_backend = "1password"
89
+ ```
90
+
91
+ Use in templates:
92
+ ```text
93
+ {{ onepassword "my-secret" "vault-name" }}
94
+ {{ onepasswordRead "op://vault/item/field" }}
95
+ ```
96
+
97
+ ### Bitwarden
98
+
99
+ Requires the [Bitwarden CLI](https://bitwarden.com/help/cli/) (`bw`).
100
+
101
+ ```toml
102
+ # .chezmoidata.toml
103
+ secrets_backend = "bitwarden"
104
+ ```
105
+
106
+ Use in templates:
107
+ ```text
108
+ {{ bitwarden "item" "my-login" }}
109
+ {{ bitwardenFields "item" "my-login" }}
110
+ ```
111
+
112
+ ### HashiCorp Vault
113
+
114
+ Requires the [Vault CLI](https://developer.hashicorp.com/vault/docs/commands) (`vault`).
115
+
116
+ ```toml
117
+ # .chezmoidata.toml
118
+ secrets_backend = "vault"
119
+ ```
120
+
121
+ Use in templates:
122
+ ```text
123
+ {{ vault "secret/data/my-secret" }}
124
+ ```
125
+
126
+ ### pass (Password Store)
127
+
128
+ Requires [pass](https://www.passwordstore.org/).
129
+
130
+ ```toml
131
+ # .chezmoidata.toml
132
+ secrets_backend = "pass"
133
+ ```
134
+
135
+ Use in templates:
136
+ ```text
137
+ {{ pass "my-secret" }}
138
+ ```
139
+
140
+ See the [chezmoi documentation](https://www.chezmoi.io/user-guide/password-managers/) for full details on each backend.
141
+
142
+ ## Security Notes
143
+
144
+ - **Never commit** `~/.config/chezmoi/key.txt` to version control.
145
+ - **Avoid shell history exposure** — use `dot secrets set` which prompts securely.
146
+ - **Rotate credentials** on a regular schedule.
@@ -0,0 +1,41 @@
1
+ # Security
2
+
3
+ How dotfiles handles security and system modifications.
4
+
5
+ ## Core Principles
6
+
7
+ - **Opt-In Only** — No hardening applies unless `DOTFILES_*` variables are set to `1`.
8
+ - **Local Logging** — All actions log to `~/.local/share/dotfiles.log`. No telemetry.
9
+ - **No Hidden Sudo** — Sudo requests only for package managers. Never cached indefinitely.
10
+
11
+ ## Hardening
12
+
13
+ | Feature | Env Var | Action (macOS) | Action (Linux) |
14
+ |---|---|---|---|
15
+ | Firewall | `DOTFILES_FIREWALL` | Enables `socketfilterfw` + Stealth Mode | Configures UFW |
16
+ | Telemetry | `DOTFILES_TELEMETRY` | Disables Diagnostic plists | Disables `whoopsie`/`apport` |
17
+ | DNS-over-HTTPS | `DOTFILES_DOH` | Browser-level settings | Configures `resolvectl` |
18
+ | Idle Security | `DOTFILES_LOCK` | Sets screensaver idle time | Sets GNOME/KDE idle-delay |
19
+
20
+ ## Secrets
21
+
22
+ The dotfiles use **age** for encryption.
23
+
24
+ - **Initialization**: `dot secrets-init` creates a key at `~/.config/chezmoi/key.txt`.
25
+ - **Storage**: Secrets are stored as `.age` encrypted files.
26
+ - **Protection**: Private keys aren't committed to the repo.
27
+
28
+ ## SSH Certificates
29
+
30
+ Short-lived SSH certificates reduce the blast radius of key compromise.
31
+
32
+ - **Issue**: `dot ssh-cert issue [--ttl 16h] [--principal user]`
33
+ - **Status**: `dot ssh-cert status` — checks certificate validity and expiry
34
+ - **Revoke**: `dot ssh-cert revoke` — revokes active certificates
35
+ - **Backends**: `step-ca` (Smallstep) and local CA key (`ssh-keygen`)
36
+ - **Default TTL**: 16 hours (override via `SSH_CERT_TTL` environment variable)
37
+ - **CA URL**: Set `SSH_CERT_CA_URL` for `step-ca` integration
38
+
39
+ ## Reporting a Vulnerability
40
+
41
+ If you discover a security vulnerability, don't open a public issue. Follow the instructions in the Security Policy.
@@ -0,0 +1,44 @@
1
+ # Security Release Checklist
2
+
3
+ Use this checklist before cutting any new release (e.g., `v0.x.x`) to ensure supply-chain integrity.
4
+
5
+ ## 1. Supply Chain & Installer
6
+ - [ ] **Pinned Version**: Update `install.sh` `VERSION` variable to match the release tag.
7
+ - [ ] **Docs Sync**: Ensure `README.md` and `.github/PULL_REQUEST_TEMPLATE.md` installer URLs point to the new tag (not `main`).
8
+ - [ ] **Clean Build**: Verify `install.sh` does not curl random scripts from third parties without pinning.
9
+ - [ ] **SOUP Register**: Review [SOUP_REGISTER.md](/home/seb/.dotfiles/docs/security/SOUP_REGISTER.md) and confirm all active external components have an owner and validation path.
10
+
11
+ ## 2. Secrets & Leak Prevention
12
+ - [ ] **SSH Keys**: Scan `dot_ssh/` to ensure no private keys (`id_rsa`, `id_ed25519`) are committed.
13
+ - [ ] **Env Vars**: Check for hardcoded API tokens in `dot_config/` (use `age` encryption or environment variables instead).
14
+ - [ ] **Git History**: Run `git secrets` or similar to scan for accidental commits of credentials.
15
+
16
+ ## 3. Platform Safety
17
+ - [ ] **WSL Check**: Verify `install.sh` detects WSL and does not try to install systemd services or macOS defaults.
18
+ - [ ] **Root usage**: Ensure no script requires `sudo` unnecessarily (Principle of Least Privilege).
19
+
20
+ ## 4. Toolchain
21
+ - [ ] **Binary Integrity**: Check that `dot_local/bin/` scripts are pure shell/executable and match expected checksums (no binary blobs).
22
+ - [ ] **Dependency Scan**: Run `npm audit` / `cargo audit` if applicable (currently Node.js legacy is removed).
23
+
24
+ ## 5. MCP (Model Context Protocol) Hardening
25
+ - [ ] **Launcher Policy**: Verify `dot mcp` shows only allowlisted launchers (`npx`, `node`, `uvx`).
26
+ - [ ] **Filesystem Scope**: Ensure no MCP server has broad access (`/`, `/home`, `/Users`).
27
+ - [ ] **Default Profile**: Confirm only the `strict-local` server set is enabled by default.
28
+ - [ ] **Token Validation**: Confirm required API tokens are set (`GITHUB_TOKEN`, `BRAVE_API_KEY`).
29
+ - [ ] **Arg Policy**: No wildcard (`*`) or `--unsafe` arguments in MCP server configs.
30
+ - [ ] **Env Placeholders**: All `${VAR}` references in MCP config have corresponding environment variables.
31
+
32
+ Run `dot mcp --strict --json` to validate all MCP server configurations and capture an audit artifact.
33
+
34
+ ## 6. Release Attestation
35
+ - [ ] **SBOM Generation**: Verify `dotfiles-sbom.spdx.json` is generated in release workflow.
36
+ - [ ] **Attestation Signing**: Confirm `actions/attest-build-provenance` signs the release artifacts.
37
+ - [ ] **Attestation Verification**: Verify with `gh attestation verify <artifact> --repo sebastienrousseau/dotfiles`.
38
+ - [ ] **Branch Protection**: Ensure `security-attestation` is a required status check on master.
39
+ - [ ] **Automation Keying**: Confirm `ACTIONS_BOT_SIGNING_KEY` exists and matches the signer in `dot_config/git/allowed_signers`.
40
+
41
+ ## 7. Final Verification
42
+ - [ ] **Docker Test**: Run `docker build -f Dockerfile.test .` to verify clean install.
43
+ - [ ] **Doctor**: Run `dot doctor` locally.
44
+ - [ ] **MCP Check**: Run `dot mcp` to verify MCP configuration.
@@ -0,0 +1,32 @@
1
+ # SOUP Register
2
+
3
+ ## Purpose
4
+
5
+ Controlled inventory for software of unknown pedigree used by the dotfiles platform.
6
+
7
+ ## Active components
8
+
9
+ | Component | Source | Version control | Verification path | Owner | Status |
10
+ | :--- | :--- | :--- | :--- | :--- | :--- |
11
+ | Homebrew installer | `raw.githubusercontent.com/Homebrew/install` | Moving upstream script, gated by `HOMEBREW_INSTALLER_SHA256` | SHA-256 in [package_managers.sh](/home/seb/.dotfiles/install/lib/package_managers.sh) | Repo maintainer | Conditional |
12
+ | Chezmoi installer | `get.chezmoi.io` | Pinned by `CHEZMOI_INSTALLER_SHA256` when used | SHA-256 in `install/lib/chezmoi.sh` | Repo maintainer | Controlled |
13
+ | GitHub Actions marketplace actions | GitHub Marketplace | Full commit SHA pinning | Workflow `uses:` pins | Repo maintainer | Controlled |
14
+ | Grype container | `anchore/grype` | Pinned tag in workflow | Container tag in [security-enhanced.yml](/home/seb/.dotfiles/.github/workflows/security-enhanced.yml) | Repo maintainer | Controlled |
15
+ | Trivy container | `aquasec/trivy` | Pinned tag in workflow | Container tag in [security-enhanced.yml](/home/seb/.dotfiles/.github/workflows/security-enhanced.yml) | Repo maintainer | Controlled |
16
+ | Checkov action | GitHub Marketplace | Full commit SHA pinning | Workflow `uses:` pin | Repo maintainer | Controlled |
17
+ | Nix inputs | GitHub flakes | Locked in [flake.lock](/home/seb/.dotfiles/flake.lock) | `narHash` and revision lock | Repo maintainer | Controlled |
18
+ | GitHub release metadata queries | GitHub API | Discovery only, not release validation | `update-deps.yml` query path | Repo maintainer | Monitored |
19
+
20
+ ## Validation record
21
+
22
+ 1. Record version or commit SHA.
23
+ 2. Record checksum, signature, or attestation method.
24
+ 3. Record workflow or script that consumes the component.
25
+ 4. Record owner and review date.
26
+ 5. Reject moving inputs in production or release paths unless checksum-gated.
27
+
28
+ ## Exit criteria
29
+
30
+ - No unsigned automation commits.
31
+ - No unverified executable download in installer or release path.
32
+ - Every SOUP item has owner, version control method, and validation record.