@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,92 @@
1
+ #!/usr/bin/env bash
2
+ # Copyright (c) 2015-2026 Dotfiles. All rights reserved.
3
+ # =============================================================================
4
+ # pre-push hook
5
+ #
6
+ # 1. Refuses to push any commit that is not GPG/SSH-signed.
7
+ # 2. Runs `scripts/qa/reliability-audit.sh --quick`. The audit is mandatory
8
+ # by default; explicit per-push bypass requires `DOTFILES_ALLOW_UNSKIPPED_PUSH=1`,
9
+ # and every bypass is logged to `~/.local/share/dotfiles/audit-bypass.log`.
10
+ #
11
+ # The legacy `DOTFILES_SKIP_PRE_PUSH_AUDIT=1` env var (opt-out) is rejected
12
+ # with a migration message. The new variable is intentionally awkwardly
13
+ # named so that setting it requires deliberate intent. See
14
+ # `docs/security/AUDIT_BYPASS.md`.
15
+ # =============================================================================
16
+
17
+ set -euo pipefail
18
+
19
+ repo_root="$(git rev-parse --show-toplevel)"
20
+
21
+ # -----------------------------------------------------------------------------
22
+ # Step 1 — signed-commit enforcement (unchanged)
23
+ # -----------------------------------------------------------------------------
24
+ while read -r local_ref local_sha remote_ref remote_sha; do
25
+ [ "$local_sha" = "0000000000000000000000000000000000000000" ] && continue
26
+
27
+ if [ "$remote_sha" = "0000000000000000000000000000000000000000" ]; then
28
+ range="$local_sha"
29
+ elif git cat-file -e "${remote_sha}^{commit}" 2>/dev/null; then
30
+ range="$remote_sha..$local_sha"
31
+ else
32
+ # Remote tip is not in the local object store yet (push without prior fetch).
33
+ # Fall back to checking commits reachable from local tip.
34
+ range="$local_sha"
35
+ fi
36
+
37
+ for c in $(git rev-list "$range"); do
38
+ if ! git verify-commit "$c" >/dev/null 2>&1; then
39
+ echo "Blocked: unsigned commit $c" >&2
40
+ exit 1
41
+ fi
42
+ done
43
+ done
44
+
45
+ # -----------------------------------------------------------------------------
46
+ # Step 2 — reject the legacy opt-out variable
47
+ # -----------------------------------------------------------------------------
48
+ if [ "${DOTFILES_SKIP_PRE_PUSH_AUDIT:-}" = "1" ]; then
49
+ cat >&2 <<'EOF'
50
+ ERROR: DOTFILES_SKIP_PRE_PUSH_AUDIT is no longer honored.
51
+
52
+ The pre-push audit was previously opt-out — setting one env var was enough
53
+ to skip it. That made bypass invisible and routine. Effective with #871,
54
+ the policy is fail-closed: the audit always runs unless you explicitly
55
+ authorize a bypass for this single push.
56
+
57
+ To bypass for one push:
58
+ DOTFILES_ALLOW_UNSKIPPED_PUSH=1 git push
59
+
60
+ Every bypass is recorded to ~/.local/share/dotfiles/audit-bypass.log
61
+ and surfaced by `dot doctor` if any are recent.
62
+
63
+ See: docs/security/AUDIT_BYPASS.md
64
+ EOF
65
+ exit 1
66
+ fi
67
+
68
+ # -----------------------------------------------------------------------------
69
+ # Step 3 — run the audit (or log + skip if explicitly bypassed)
70
+ # -----------------------------------------------------------------------------
71
+ if [ "${DOTFILES_ALLOW_UNSKIPPED_PUSH:-}" = "1" ]; then
72
+ bypass_log_dir="${XDG_STATE_HOME:-$HOME/.local/state}/dotfiles"
73
+ # The audit-bypass log lives under XDG_STATE_HOME (user state — never
74
+ # checked in, never deployed by chezmoi to other locations).
75
+ mkdir -p "$bypass_log_dir"
76
+ bypass_log="$bypass_log_dir/audit-bypass.log"
77
+
78
+ ts="$(date -u +%Y-%m-%dT%H:%M:%SZ)"
79
+ branch="$(git rev-parse --abbrev-ref HEAD 2>/dev/null || echo unknown)"
80
+ remote="$(git remote get-url --push @{upstream} 2>/dev/null ||
81
+ git config --get remote.origin.url 2>/dev/null ||
82
+ echo unknown)"
83
+ reason="${DOTFILES_BYPASS_REASON:-no reason given}"
84
+
85
+ printf '%s\tbranch=%s\tremote=%s\treason=%s\n' \
86
+ "$ts" "$branch" "$remote" "$reason" >>"$bypass_log"
87
+
88
+ echo "WARN: pre-push audit bypassed (logged to $bypass_log)" >&2
89
+ exit 0
90
+ fi
91
+
92
+ bash "$repo_root/scripts/qa/reliability-audit.sh" --quick
@@ -0,0 +1,29 @@
1
+ #!/usr/bin/env bash
2
+ # Copyright (c) 2015-2026 Dotfiles. All rights reserved.
3
+ # Appends the EUXIS branding signature to every commit message.
4
+ # Signature source: ~/.euxis/data/config/branding/signature.txt
5
+
6
+ set -euo pipefail
7
+
8
+ # R5: validate commit message file argument
9
+ if [[ -z "${1:-}" || ! -f "${1:-}" ]]; then
10
+ exit 0 # No file provided — git will handle the error
11
+ fi
12
+
13
+ COMMIT_MSG_FILE="$1"
14
+ COMMIT_SOURCE="${2:-}"
15
+
16
+ # Skip merge commits, amends with existing signature, and squash
17
+ case "$COMMIT_SOURCE" in
18
+ merge | squash) exit 0 ;;
19
+ esac
20
+
21
+ SIGNATURE_FILE="$HOME/.euxis/data/config/branding/signature.txt"
22
+
23
+ # Only append if the signature file exists and message doesn't already have it
24
+ if [[ -f "$SIGNATURE_FILE" ]]; then
25
+ signature=$(cat "$SIGNATURE_FILE")
26
+ if ! grep -qF "THE ARCHITECT" "$COMMIT_MSG_FILE" 2>/dev/null; then
27
+ printf '\n%s\n' "$signature" >>"$COMMIT_MSG_FILE"
28
+ fi
29
+ fi
@@ -0,0 +1,158 @@
1
+ #!/usr/bin/env bash
2
+ # Copyright (c) 2015-2026 Dotfiles. All rights reserved.
3
+ # Provider-agnostic secrets bridge for dotfiles.
4
+
5
+ set -euo pipefail
6
+
7
+ DOT_SECRETS_HOME="${DOT_SECRETS_HOME:-$HOME/.config/dotfiles/secrets}"
8
+ DOT_SECRETS_STORE_DIR="${DOT_SECRETS_STORE_DIR:-$DOT_SECRETS_HOME/store}"
9
+ DOT_SECRETS_INDEX_FILE="${DOT_SECRETS_INDEX_FILE:-$DOT_SECRETS_HOME/index.txt}"
10
+ DOT_SECRETS_AGE_KEY="${DOT_SECRETS_AGE_KEY:-$HOME/.config/chezmoi/key.txt}"
11
+ DOT_SECRETS_SERVICE_PREFIX="${DOT_SECRETS_SERVICE_PREFIX:-dotfiles.secret}"
12
+
13
+ dot_secrets_ensure_layout() {
14
+ mkdir -p "$DOT_SECRETS_STORE_DIR"
15
+ touch "$DOT_SECRETS_INDEX_FILE"
16
+ chmod 700 "$DOT_SECRETS_HOME" 2>/dev/null || true
17
+ chmod 700 "$DOT_SECRETS_STORE_DIR" 2>/dev/null || true
18
+ chmod 600 "$DOT_SECRETS_INDEX_FILE" 2>/dev/null || true
19
+ }
20
+
21
+ dot_secrets_provider() {
22
+ local provider="${DOTFILES_SECRETS_PROVIDER:-auto}"
23
+ if [[ "$provider" != "auto" ]]; then
24
+ printf "%s\n" "$provider"
25
+ return 0
26
+ fi
27
+
28
+ if [[ "${OSTYPE:-}" == darwin* ]] && command -v security >/dev/null 2>&1; then
29
+ printf "macos-keychain\n"
30
+ return 0
31
+ fi
32
+ if command -v pass >/dev/null 2>&1; then
33
+ printf "pass\n"
34
+ return 0
35
+ fi
36
+ if command -v age >/dev/null 2>&1 && [[ -f "$DOT_SECRETS_AGE_KEY" ]]; then
37
+ printf "plain-enc\n"
38
+ return 0
39
+ fi
40
+ printf "none\n"
41
+ }
42
+
43
+ dot_secrets_index_add() {
44
+ local key="${1:-}"
45
+ [[ -n "$key" ]] || return 1
46
+ dot_secrets_ensure_layout
47
+ if ! grep -qxF "$key" "$DOT_SECRETS_INDEX_FILE" 2>/dev/null; then
48
+ printf "%s\n" "$key" >>"$DOT_SECRETS_INDEX_FILE"
49
+ fi
50
+ }
51
+
52
+ dot_secrets_index_list() {
53
+ dot_secrets_ensure_layout
54
+ awk 'NF > 0' "$DOT_SECRETS_INDEX_FILE" | sort -u
55
+ }
56
+
57
+ dot_secrets_store_macos() {
58
+ local key="$1"
59
+ local value="$2"
60
+ local service="${DOT_SECRETS_SERVICE_PREFIX}.${key}"
61
+ security add-generic-password -U -a "${USER:-dotfiles}" -s "$service" -w "$value" >/dev/null
62
+ }
63
+
64
+ dot_secrets_get_macos() {
65
+ local key="$1"
66
+ local service="${DOT_SECRETS_SERVICE_PREFIX}.${key}"
67
+ security find-generic-password -a "${USER:-dotfiles}" -s "$service" -w 2>/dev/null || return 1
68
+ }
69
+
70
+ dot_secrets_store_pass() {
71
+ local key="$1" value="$2"
72
+ printf "%s\n" "$value" | pass insert -m -f "dotfiles/${key}" >/dev/null
73
+ }
74
+
75
+ dot_secrets_get_pass() {
76
+ local key="$1"
77
+ pass show "dotfiles/${key}" 2>/dev/null | head -n1
78
+ }
79
+
80
+ dot_secrets_store_plain_enc() {
81
+ local key="$1" value="$2"
82
+ local tmp_rec file
83
+ [[ -f "$DOT_SECRETS_AGE_KEY" ]] || {
84
+ echo "age key not found: $DOT_SECRETS_AGE_KEY" >&2
85
+ return 1
86
+ }
87
+ command -v age >/dev/null 2>&1 || {
88
+ echo "age not installed" >&2
89
+ return 1
90
+ }
91
+ command -v age-keygen >/dev/null 2>&1 || {
92
+ echo "age-keygen not installed" >&2
93
+ return 1
94
+ }
95
+ dot_secrets_ensure_layout
96
+ tmp_rec="$(umask 077 && mktemp)"
97
+ file="$DOT_SECRETS_STORE_DIR/${key}.age"
98
+ trap 'rm -f "$tmp_rec"' RETURN
99
+ age-keygen -y "$DOT_SECRETS_AGE_KEY" >"$tmp_rec"
100
+ printf "%s" "$value" | age -R "$tmp_rec" -o "$file"
101
+ chmod 600 "$file" 2>/dev/null || true
102
+ }
103
+
104
+ dot_secrets_get_plain_enc() {
105
+ local key="$1"
106
+ local file="$DOT_SECRETS_STORE_DIR/${key}.age"
107
+ [[ -f "$DOT_SECRETS_AGE_KEY" ]] || return 1
108
+ [[ -f "$file" ]] || return 1
109
+ age -d -i "$DOT_SECRETS_AGE_KEY" "$file" 2>/dev/null || return 1
110
+ }
111
+
112
+ dot_secrets_set() {
113
+ local key="${1:-}" value="${2:-}" provider
114
+ [[ -n "$key" ]] || return 1
115
+ provider="$(dot_secrets_provider)"
116
+ case "$provider" in
117
+ macos-keychain) dot_secrets_store_macos "$key" "$value" ;;
118
+ pass) dot_secrets_store_pass "$key" "$value" ;;
119
+ plain-enc) dot_secrets_store_plain_enc "$key" "$value" ;;
120
+ *)
121
+ echo "No supported secrets provider detected." >&2
122
+ return 1
123
+ ;;
124
+ esac
125
+ dot_secrets_index_add "$key"
126
+ }
127
+
128
+ dot_secrets_get() {
129
+ local key="${1:-}" provider
130
+ [[ -n "$key" ]] || return 1
131
+ provider="$(dot_secrets_provider)"
132
+ case "$provider" in
133
+ macos-keychain) dot_secrets_get_macos "$key" ;;
134
+ pass) dot_secrets_get_pass "$key" ;;
135
+ plain-enc) dot_secrets_get_plain_enc "$key" ;;
136
+ *) return 1 ;;
137
+ esac
138
+ }
139
+
140
+ dot_secrets_bucket_keys() {
141
+ local data_file="${1:-}" bucket="${2:-}"
142
+ [[ -f "$data_file" ]] || return 1
143
+ [[ -n "$bucket" ]] || return 1
144
+ awk -v b="$bucket" '
145
+ $0 ~ "^[[:space:]]*" b "[[:space:]]*=" {
146
+ line=$0
147
+ gsub(/^.*\[/, "", line)
148
+ gsub(/\].*$/, "", line)
149
+ gsub(/"/, "", line)
150
+ n=split(line, arr, ",")
151
+ for (i=1; i<=n; i++) {
152
+ gsub(/^[[:space:]]+|[[:space:]]+$/, "", arr[i])
153
+ if (arr[i] != "") print arr[i]
154
+ }
155
+ exit
156
+ }
157
+ ' "$data_file"
158
+ }
@@ -0,0 +1,131 @@
1
+ #!/usr/bin/env bash
2
+ # Copyright (c) 2015-2026 Dotfiles. All rights reserved.
3
+ # Dependency update checker for nightly CI
4
+ # Reports available updates for all project dependencies
5
+
6
+ set -euo pipefail
7
+
8
+ SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
9
+ REPO_ROOT="$(cd "$SCRIPT_DIR/../.." && pwd)"
10
+ REPORT_DIR="$REPO_ROOT/nightly-reports"
11
+
12
+ mkdir -p "$REPORT_DIR"
13
+
14
+ check_github_actions_updates() {
15
+ echo "=== GitHub Actions Updates ===" >>"$REPORT_DIR/updates.txt"
16
+
17
+ # Extract all GitHub Actions from workflow files
18
+ find "$REPO_ROOT/.github/workflows" -name "*.yml" -o -name "*.yaml" | while read -r workflow; do
19
+ echo "Checking $(basename "$workflow")..." >&2
20
+ grep -E "uses: [^@]+@v[0-9]+" "$workflow" | sed 's/.*uses: //' | sort -u >>"$REPORT_DIR/actions-current.txt" 2>/dev/null || true
21
+ done
22
+
23
+ if [[ -f "$REPORT_DIR/actions-current.txt" ]]; then
24
+ # For each action, check if newer version exists (simplified check)
25
+ while read -r action_version; do
26
+ if [[ -n "$action_version" ]]; then
27
+ action_name=$(echo "$action_version" | cut -d'@' -f1)
28
+ current_version=$(echo "$action_version" | cut -d'@' -f2)
29
+ echo " $action_name: $current_version (check manually)" >>"$REPORT_DIR/updates.txt"
30
+ fi
31
+ done <"$REPORT_DIR/actions-current.txt"
32
+ fi
33
+
34
+ echo "" >>"$REPORT_DIR/updates.txt"
35
+ }
36
+
37
+ check_precommit_updates() {
38
+ echo "=== Pre-commit Hook Updates ===" >>"$REPORT_DIR/updates.txt"
39
+
40
+ if command -v pre-commit &>/dev/null && [[ -f "$REPO_ROOT/.pre-commit-config.yaml" ]]; then
41
+ cd "$REPO_ROOT"
42
+ pre-commit autoupdate --dry-run >>"$REPORT_DIR/updates.txt" 2>&1 || true
43
+ else
44
+ echo "pre-commit not available or config missing" >>"$REPORT_DIR/updates.txt"
45
+ fi
46
+
47
+ echo "" >>"$REPORT_DIR/updates.txt"
48
+ }
49
+
50
+ check_chezmoi_updates() {
51
+ echo "=== Chezmoi Updates ===" >>"$REPORT_DIR/updates.txt"
52
+
53
+ if command -v curl &>/dev/null; then
54
+ LATEST_VERSION=$(curl -s "https://api.github.com/repos/twpayne/chezmoi/releases/latest" | grep '"tag_name"' | cut -d'"' -f4 | sed 's/^v//')
55
+ CURRENT_VERSION=$(grep "CHEZMOI_VERSION:" "$REPO_ROOT/.github/workflows/ci.yml" | cut -d'"' -f2 | head -1)
56
+
57
+ echo "Current Chezmoi: $CURRENT_VERSION" >>"$REPORT_DIR/updates.txt"
58
+ echo "Latest Chezmoi: $LATEST_VERSION" >>"$REPORT_DIR/updates.txt"
59
+
60
+ if [[ "$CURRENT_VERSION" != "$LATEST_VERSION" ]]; then
61
+ echo "⚠️ Chezmoi update available: $CURRENT_VERSION → $LATEST_VERSION" >>"$REPORT_DIR/updates.txt"
62
+ else
63
+ echo "✅ Chezmoi is up to date" >>"$REPORT_DIR/updates.txt"
64
+ fi
65
+ else
66
+ echo "curl not available - cannot check Chezmoi version" >>"$REPORT_DIR/updates.txt"
67
+ fi
68
+
69
+ echo "" >>"$REPORT_DIR/updates.txt"
70
+ }
71
+
72
+ check_security_tools_updates() {
73
+ echo "=== Security Tools Updates ===" >>"$REPORT_DIR/updates.txt"
74
+
75
+ # Check shellcheck version
76
+ if command -v shellcheck &>/dev/null; then
77
+ SHELLCHECK_VERSION=$(shellcheck --version | grep version: | cut -d' ' -f2)
78
+ echo "Shellcheck: $SHELLCHECK_VERSION" >>"$REPORT_DIR/updates.txt"
79
+ fi
80
+
81
+ # Check other tools if available
82
+ for tool in shfmt stylua luacheck; do
83
+ if command -v "$tool" &>/dev/null; then
84
+ VERSION=$($tool --version 2>&1 | head -1 || echo "unknown")
85
+ echo "$tool: $VERSION" >>"$REPORT_DIR/updates.txt"
86
+ fi
87
+ done
88
+
89
+ echo "" >>"$REPORT_DIR/updates.txt"
90
+ }
91
+
92
+ generate_summary() {
93
+ {
94
+ echo "=== Update Summary ==="
95
+ echo "Generated: $(date -Iseconds)"
96
+ echo "Repository: $REPO_ROOT"
97
+ echo ""
98
+ } >>"$REPORT_DIR/updates.txt"
99
+
100
+ # Count potential updates (simplified heuristic)
101
+ local update_count
102
+ update_count=$(grep -c "⚠️\|→" "$REPORT_DIR/updates.txt" 2>/dev/null || echo "0")
103
+
104
+ if [[ $update_count -gt 0 ]]; then
105
+ echo "🔄 $update_count potential updates found" >>"$REPORT_DIR/updates.txt"
106
+ else
107
+ echo "✅ All dependencies appear current" >>"$REPORT_DIR/updates.txt"
108
+ fi
109
+ }
110
+
111
+ main() {
112
+ echo "Dependency Update Checker"
113
+ echo "========================"
114
+ echo "Checking for available updates..."
115
+
116
+ # Clear previous report
117
+ true >"$REPORT_DIR/updates.txt"
118
+
119
+ check_chezmoi_updates
120
+ check_precommit_updates
121
+ check_github_actions_updates
122
+ check_security_tools_updates
123
+ generate_summary
124
+
125
+ echo "Report generated: $REPORT_DIR/updates.txt"
126
+ echo ""
127
+ echo "Summary:"
128
+ tail -10 "$REPORT_DIR/updates.txt"
129
+ }
130
+
131
+ main "$@"
@@ -0,0 +1,55 @@
1
+ #!/usr/bin/env bash
2
+ # Copyright (c) 2015-2026 Dotfiles. All rights reserved.
3
+ # Universal AI Toolchain Setup & Authentication.
4
+
5
+ set -euo pipefail
6
+
7
+ SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
8
+ # shellcheck disable=SC1091
9
+ source "$SCRIPT_DIR/dot/lib/ui.sh"
10
+
11
+ ui_header "Universal AI Toolchain Setup"
12
+
13
+ setup_tool() {
14
+ local name="$1"
15
+ local cmd="$2"
16
+ local auth_cmd="$3"
17
+
18
+ ui_section "Setting up $name"
19
+ if command -v "$cmd" >/dev/null 2>&1; then
20
+ ui_info "Tool found, initiating authentication..."
21
+ eval "$auth_cmd" || ui_warn "$name" "Setup/Auth skipped or failed."
22
+ else
23
+ ui_err "$name" "Binary not found. Run 'dot apply' or install via mise first."
24
+ fi
25
+ }
26
+
27
+ # 1. Claude
28
+ setup_tool "Claude CLI" "claude" "claude --version" # Claude handles auth via web flow or env
29
+
30
+ # 2. Gemini
31
+ setup_tool "Gemini CLI" "gemini" "gemini info"
32
+
33
+ # 3. Copilot
34
+ setup_tool "Copilot CLI" "copilot" "copilot --version"
35
+
36
+ # 4. Kiro
37
+ setup_tool "Kiro CLI" "kiro-cli" "kiro-cli auth login"
38
+
39
+ # 6. Aider
40
+ setup_tool "Aider" "aider" "aider --version"
41
+
42
+ # 7. Autohand Code
43
+ setup_tool "Autohand Code" "autohand" "autohand --version"
44
+
45
+ # 8. Mistral Vibe
46
+ setup_tool "Mistral Vibe" "vibe" "vibe --version"
47
+
48
+ # 9. Qwen Code
49
+ setup_tool "Qwen Code" "qwen" "qwen --version"
50
+
51
+ # 10. ZAI
52
+ setup_tool "ZAI" "zai" "zai --version"
53
+
54
+ ui_header "AI Setup Complete"
55
+ ui_info "All tools are ready. Use 'dot ai' to check status."
@@ -0,0 +1,77 @@
1
+ #!/usr/bin/env bash
2
+ # Copyright (c) 2015-2026 Dotfiles. All rights reserved.
3
+ # Create an offline bundle of the dotfiles environment for air-gapped systems.
4
+
5
+ set -euo pipefail
6
+
7
+ _cleanup_files=()
8
+ trap 'rm -f "${_cleanup_files[@]}"' EXIT
9
+
10
+ SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
11
+ # shellcheck disable=SC1091
12
+ source "$SCRIPT_DIR/dot/lib/ui.sh"
13
+ # shellcheck disable=SC1091
14
+ source "$SCRIPT_DIR/dot/lib/log.sh"
15
+ export DOT_COMMAND="bundle"
16
+
17
+ # Concurrency guard
18
+ LOCK_FILE="${XDG_RUNTIME_DIR:-/tmp}/dotfiles-bundle.lock"
19
+ exec 9>"$LOCK_FILE"
20
+ if ! flock -n 9; then
21
+ ui_warn "Already running" "Another bundle instance is active"
22
+ exit 0
23
+ fi
24
+
25
+ OUTPUT_DIR="${1:-$HOME/Downloads}"
26
+ TIMESTAMP=$(date +"%Y%m%d_%H%M%S")
27
+ BUNDLE_FILE="$OUTPUT_DIR/dotfiles_offline_bundle_$TIMESTAMP.tar.zst"
28
+
29
+ dot_log info "bundle_start"
30
+ ui_header "Creating Offline Bundle (Zero-Network Mode)"
31
+
32
+ # Ensure target directory exists
33
+ mkdir -p "$OUTPUT_DIR"
34
+
35
+ ui_info "Gathering artifacts..."
36
+ # We use zstd for much faster compression of binary artifacts compared to gzip/xz
37
+ if ! command -v tar >/dev/null || ! command -v zstd >/dev/null; then
38
+ ui_err "tar and zstd are required for bundling."
39
+ exit 1
40
+ fi
41
+
42
+ # Define paths to bundle
43
+ declare -a paths_to_bundle=(
44
+ "$HOME/.dotfiles"
45
+ "$HOME/.config/chezmoi"
46
+ "$HOME/.local/share/mise"
47
+ )
48
+
49
+ # Optional: Add nix store if present and requested
50
+ if [[ -d "/nix/store" ]] && [[ "${DOTFILES_BUNDLE_NIX:-0}" == "1" ]]; then
51
+ ui_warn "Including Nix store. This will be very large."
52
+ paths_to_bundle+=("/nix/store" "/nix/var/nix" "$HOME/.nix-profile")
53
+ fi
54
+
55
+ # Filter only existing paths
56
+ declare -a valid_paths=()
57
+ for p in "${paths_to_bundle[@]}"; do
58
+ if [[ -e "$p" ]]; then
59
+ valid_paths+=("$p")
60
+ ui_bullet "Adding: $p"
61
+ fi
62
+ done
63
+
64
+ ui_info "Compressing artifacts (this may take a while)..."
65
+ # Use absolute paths and store them relative to / to preserve structure
66
+ tar --zstd -cf "$BUNDLE_FILE" -P "${valid_paths[@]}" 2>/dev/null || {
67
+ ui_err "Failed to create bundle."
68
+ exit 1
69
+ }
70
+
71
+ bundle_size=$(stat -c '%s' "$BUNDLE_FILE" 2>/dev/null || stat -f '%z' "$BUNDLE_FILE" 2>/dev/null || echo 0)
72
+ dot_log info "bundle_end" "file=$BUNDLE_FILE"
73
+ dot_metric "bundle_size" "$bundle_size" "bytes"
74
+ ui_ok "Bundle created" "$BUNDLE_FILE"
75
+ ui_info "To restore on an offline machine:"
76
+ ui_bullet "tar --zstd -xf $BUNDLE_FILE -P"
77
+ ui_bullet "cd ~/.dotfiles && ./install.sh --force"
@@ -0,0 +1,49 @@
1
+ #!/usr/bin/env bash
2
+ # Copyright (c) 2015-2026 Dotfiles. All rights reserved.
3
+ # Chaos Engineering: Randomly corrupt config files to test self-healing (dot heal)
4
+ # USE WITH CAUTION: This intentionally breaks your environment.
5
+
6
+ set -euo pipefail
7
+
8
+ SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
9
+ # shellcheck source=../dot/lib/ui.sh
10
+ # shellcheck disable=SC1091
11
+ source "$SCRIPT_DIR/../dot/lib/ui.sh"
12
+ ui_init
13
+
14
+ if [[ "${1:-}" != "--force" ]]; then
15
+ ui_err "WARNING" "This script will intentionally break your dotfiles configuration."
16
+ ui_info "Purpose" "Tests 'dot heal' auto-repair capabilities."
17
+ echo ""
18
+ ui_info "To run, execute" "${0} --force"
19
+ exit 1
20
+ fi
21
+
22
+ ui_warn "Initiating Chaos Engineering Sequence..."
23
+
24
+ # Target files for corruption/deletion
25
+ TARGETS=(
26
+ "$HOME/.config/starship.toml"
27
+ "$HOME/.zshrc"
28
+ "$HOME/.config/alacritty/alacritty.toml"
29
+ )
30
+
31
+ # 1. Configuration Deletion
32
+ for target in "${TARGETS[@]}"; do
33
+ if [[ -f "$target" ]] || [[ -L "$target" ]]; then
34
+ ui_err "Destroying" "$target"
35
+ rm -f "$target"
36
+ fi
37
+ done
38
+
39
+ # 2. Symlink Corruption
40
+ ui_err "Creating" "broken symlinks..."
41
+ ln -sf /tmp/nonexistent_file_xyz "$HOME/.config/broken_symlink_test"
42
+
43
+ # 3. Path Mutation
44
+ ui_err "Corrupting" "PATH..."
45
+ export PATH="/bin"
46
+
47
+ echo ""
48
+ ui_ok "Chaos injected" "State is drifted and broken."
49
+ ui_info "Recover" "dot heal"