@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,469 @@
1
+ #!/usr/bin/env bash
2
+ # Copyright (c) 2015-2026 Dotfiles. All rights reserved.
3
+ # Dotfiles CLI - Tools Commands
4
+ # tools, new, packages, log-rotate, aliases, alias-check, env, profile
5
+
6
+ set -euo pipefail
7
+
8
+ _TOOLS_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
9
+ # shellcheck source=../lib/utils.sh
10
+ source "$_TOOLS_DIR/../lib/utils.sh"
11
+ # shellcheck source=aliases.sh
12
+ source "$_TOOLS_DIR/aliases.sh"
13
+
14
+ # Cross-platform sed in-place (BSD vs GNU)
15
+ sed_in_place() {
16
+ if sed --version >/dev/null 2>&1; then
17
+ sed -i "$@" # GNU
18
+ else
19
+ sed -i '' "$@" # BSD (macOS)
20
+ fi
21
+ }
22
+
23
+ dot_ui_command_banner "Tools" "${1:-}"
24
+
25
+ ensure_line_in_file() {
26
+ local file="$1"
27
+ local line="$2"
28
+ if ! grep -Fqx "$line" "$file" 2>/dev/null; then
29
+ printf "%s\n" "$line" >>"$file"
30
+ fi
31
+ }
32
+
33
+ apply_template_security_baseline() {
34
+ local dest="$1"
35
+ local template_lang="$2"
36
+
37
+ # Baseline repo hygiene defaults
38
+ if [[ ! -f "$dest/.editorconfig" ]]; then
39
+ cat >"$dest/.editorconfig" <<'EOF'
40
+ root = true
41
+
42
+ [*]
43
+ charset = utf-8
44
+ end_of_line = lf
45
+ insert_final_newline = true
46
+ indent_style = space
47
+ indent_size = 2
48
+ trim_trailing_whitespace = true
49
+ EOF
50
+ fi
51
+
52
+ if [[ ! -f "$dest/.gitattributes" ]]; then
53
+ cat >"$dest/.gitattributes" <<'EOF'
54
+ * text=auto eol=lf
55
+ *.sh text eol=lf
56
+ *.yml text eol=lf
57
+ *.yaml text eol=lf
58
+ EOF
59
+ fi
60
+
61
+ if [[ ! -f "$dest/.gitignore" ]]; then
62
+ : >"$dest/.gitignore"
63
+ fi
64
+ ensure_line_in_file "$dest/.gitignore" ".env"
65
+ ensure_line_in_file "$dest/.gitignore" ".env.*"
66
+ ensure_line_in_file "$dest/.gitignore" "*.pem"
67
+ ensure_line_in_file "$dest/.gitignore" "*.key"
68
+ ensure_line_in_file "$dest/.gitignore" "*.p12"
69
+ ensure_line_in_file "$dest/.gitignore" "*.agekey"
70
+
71
+ if [[ ! -f "$dest/SECURITY.md" ]]; then
72
+ cat >"$dest/SECURITY.md" <<'EOF'
73
+ # Security Policy
74
+
75
+ ## Reporting
76
+
77
+ Do not disclose vulnerabilities publicly before a fix is available.
78
+ Open a private security advisory or contact maintainers directly.
79
+
80
+ ## Baseline Controls
81
+
82
+ - No secrets in source control.
83
+ - Use environment variables for API keys/tokens.
84
+ - Keep dependencies and lockfiles up to date.
85
+ - Enable secret scanning in CI.
86
+ EOF
87
+ fi
88
+
89
+ mkdir -p "$dest/.github/workflows"
90
+ if [[ ! -f "$dest/.github/workflows/security.yml" ]]; then
91
+ cat >"$dest/.github/workflows/security.yml" <<'EOF'
92
+ name: Security Baseline
93
+
94
+ on:
95
+ pull_request:
96
+ push:
97
+ branches: [main, master]
98
+
99
+ permissions:
100
+ contents: read
101
+
102
+ jobs:
103
+ secrets:
104
+ runs-on: ubuntu-latest
105
+ timeout-minutes: 10
106
+ steps:
107
+ - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
108
+ - uses: gitleaks/gitleaks-action@ff98106e4c7b2bc287b24eaf42907196329070c7 # v2
109
+ env:
110
+ GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
111
+ - uses: trufflesecurity/trufflehog@6961f2bace57ab32b23b3ba40f8f420f6bc7e004 # v3.93.3
112
+ with:
113
+ extra_args: --only-verified
114
+ EOF
115
+ fi
116
+
117
+ # Best-effort lockfile generation to improve reproducibility.
118
+ case "$template_lang" in
119
+ node)
120
+ if has_command npm && [[ -f "$dest/package.json" ]] && [[ ! -f "$dest/package-lock.json" ]]; then
121
+ (cd "$dest" && npm install --package-lock-only --ignore-scripts --silent >/dev/null 2>&1) || true
122
+ fi
123
+ ;;
124
+ python)
125
+ if has_command uv && [[ -f "$dest/pyproject.toml" ]] && [[ ! -f "$dest/uv.lock" ]]; then
126
+ (cd "$dest" && uv lock >/dev/null 2>&1) || true
127
+ fi
128
+ ;;
129
+ go)
130
+ if has_command go && [[ -f "$dest/go.mod" ]]; then
131
+ (cd "$dest" && go mod tidy >/dev/null 2>&1) || true
132
+ fi
133
+ ;;
134
+ esac
135
+ }
136
+
137
+ show_system_package_managers() {
138
+ if has_command brew; then
139
+ local brew_version brew_formulae brew_casks
140
+ brew_version=$(brew --version | head -1)
141
+ brew_formulae=$(brew list --formula 2>/dev/null | wc -l | tr -d ' ')
142
+ brew_casks=$(brew list --cask 2>/dev/null | wc -l | tr -d ' ')
143
+ echo " Homebrew: $brew_version"
144
+ echo " Formulae: $brew_formulae"
145
+ echo " Casks: $brew_casks"
146
+ fi
147
+ if has_command apt; then
148
+ local apt_version apt_packages
149
+ apt_version=$(apt --version 2>/dev/null | head -1 || echo 'installed')
150
+ apt_packages=$(dpkg -l 2>/dev/null | grep -c '^ii' || echo 'N/A')
151
+ echo " APT: $apt_version"
152
+ echo " Packages: $apt_packages"
153
+ fi
154
+ if has_command dnf; then
155
+ echo " DNF: $(dnf --version 2>/dev/null | head -1 || echo 'installed')"
156
+ fi
157
+ if has_command pacman; then
158
+ local pacman_packages
159
+ pacman_packages=$(pacman -Q 2>/dev/null | wc -l | tr -d ' ')
160
+ echo " Pacman: $(pacman --version | head -1)"
161
+ echo " Packages: $pacman_packages"
162
+ fi
163
+ if has_command nix; then
164
+ echo " Nix: $(nix --version)"
165
+ fi
166
+ }
167
+
168
+ show_language_package_managers() {
169
+ if has_command npm; then
170
+ local npm_globals
171
+ npm_globals=$(npm list -g --depth=0 2>/dev/null | grep -c '├──\|└──' || echo 'N/A')
172
+ echo " npm: $(npm --version)"
173
+ echo " Global packages: $npm_globals"
174
+ fi
175
+ if has_command pnpm; then
176
+ echo " pnpm: $(pnpm --version)"
177
+ fi
178
+ if has_command bun; then
179
+ echo " Bun: $(bun --version)"
180
+ fi
181
+ if has_command cargo; then
182
+ local cargo_installed
183
+ cargo_installed=$(cargo install --list 2>/dev/null | grep -c ':$' || echo 'N/A')
184
+ echo " Cargo: $(cargo --version | cut -d' ' -f2)"
185
+ echo " Installed: $cargo_installed"
186
+ fi
187
+ if has_command pip3; then
188
+ echo " pip: $(pip3 --version | cut -d' ' -f2)"
189
+ fi
190
+ if has_command pipx; then
191
+ local pipx_installed
192
+ pipx_installed=$(pipx list --short 2>/dev/null | wc -l | tr -d ' ')
193
+ echo " pipx: $(pipx --version)"
194
+ echo " Installed: $pipx_installed"
195
+ fi
196
+ if has_command gem; then
197
+ echo " RubyGems: $(gem --version)"
198
+ fi
199
+ if has_command go; then
200
+ echo " Go: $(go version | cut -d' ' -f3)"
201
+ fi
202
+ }
203
+
204
+ cmd_setup() {
205
+ run_script "scripts/ops/setup.sh" "Setup script" "$@"
206
+ }
207
+
208
+ cmd_tools() {
209
+ local src_dir subcommand
210
+ src_dir="$(resolve_source_dir)"
211
+ subcommand="${1:-}"
212
+
213
+ if [ "$subcommand" = "install" ]; then
214
+ if ! has_command nix; then
215
+ ui_err "Nix" "not installed"
216
+ echo ""
217
+ ui_header "Install Nix"
218
+ echo " Follow the verified installer instructions:"
219
+ echo " https://nixos.org/download/"
220
+ echo ""
221
+ ui_info "Or" "use Homebrew/apt for individual tools"
222
+ exit 1
223
+ fi
224
+ shift
225
+ # Validate any tool name arguments
226
+ for arg in "$@"; do
227
+ [[ "$arg" == -* ]] && continue
228
+ validate_name "$arg" "tool name"
229
+ done
230
+ if [ -n "$src_dir" ] && [ -f "$src_dir/nix/flake.nix" ]; then
231
+ ui_info "Entering" "Nix development shell"
232
+ exec nix develop "$src_dir/nix" "$@"
233
+ else
234
+ ui_err "Nix flake" "not found in source directory"
235
+ exit 1
236
+ fi
237
+ elif [ "$subcommand" = "docs" ]; then
238
+ if [ -n "$src_dir" ] && [ -f "$src_dir/docs/TOOLS.md" ]; then
239
+ exec cat "$src_dir/docs/TOOLS.md"
240
+ elif [ -n "$src_dir" ] && [ -f "$src_dir/docs/UTILS.md" ]; then
241
+ exec cat "$src_dir/docs/UTILS.md"
242
+ fi
243
+ ui_err "Docs" "TOOLS.md not found"
244
+ exit 1
245
+ else
246
+ ui_header "Dot Tools"
247
+ echo ""
248
+ ui_info "Usage" "dot tools [command]"
249
+ echo ""
250
+ ui_header "Commands"
251
+ ui_ok "(none)" "Show tools documentation"
252
+ ui_ok "install" "Enter Nix development shell with all tools"
253
+ ui_ok "docs" "Show full tools markdown documentation"
254
+ echo ""
255
+ ui_header "Quick Reference"
256
+ ui_ok "dot sync" "Apply dotfiles"
257
+ ui_ok "dot update" "Pull latest changes and apply"
258
+ ui_ok "dot doctor" "Run health checks"
259
+ ui_ok "dot verify" "Run post-merge verification checks"
260
+ ui_ok "dot keys" "Show keybindings catalog"
261
+ ui_ok "dot learn" "Interactive tour"
262
+ fi
263
+ }
264
+
265
+ cmd_new() {
266
+ local template_lang="${1:-}"
267
+ local project_name="${2:-}"
268
+
269
+ if [ -z "$template_lang" ] || [ -z "$project_name" ]; then
270
+ echo "Usage: dot new <lang> <name>"
271
+ echo "Available templates: python, go, node, packer, molecule"
272
+ exit 1
273
+ fi
274
+
275
+ # Validate inputs to prevent path traversal
276
+ if [[ ! "$template_lang" =~ ^[a-zA-Z0-9_-]+$ ]]; then
277
+ die "Invalid template name: $template_lang"
278
+ fi
279
+ if [[ ! "$project_name" =~ ^[a-zA-Z0-9_.-]+$ ]]; then
280
+ die "Invalid project name: $project_name"
281
+ fi
282
+
283
+ local src_dir
284
+ src_dir="$(require_source_dir)"
285
+ local template_dir="$src_dir/templates/projects/$template_lang"
286
+
287
+ if [ ! -d "$template_dir" ]; then
288
+ echo "Unknown template: $template_lang"
289
+ echo "Available templates: python, go, node, packer, molecule"
290
+ exit 1
291
+ fi
292
+
293
+ # Pre-flight: verify Python is available before creating any files
294
+ local python_cmd=""
295
+ if has_command python3; then
296
+ python_cmd="python3"
297
+ elif has_command python; then
298
+ python_cmd="python"
299
+ else
300
+ die "python3 is required to render templates."
301
+ fi
302
+
303
+ local dest="$PWD/$project_name"
304
+ if [ -e "$dest" ]; then
305
+ die "Destination exists: $dest"
306
+ fi
307
+
308
+ mkdir -p "$dest"
309
+ cp -R "$template_dir/." "$dest"
310
+
311
+ # Rename directories
312
+ find "$dest" -depth -name "__PROJECT_NAME__" -print0 | while IFS= read -r -d '' path; do
313
+ local parent
314
+ parent="$(dirname "$path")"
315
+ mv "$path" "$parent/$project_name"
316
+ done
317
+
318
+ # Render template placeholders
319
+ find "$dest" -type f -print0 | while IFS= read -r -d '' file; do
320
+ $python_cmd - "$file" "$project_name" <<'PY'
321
+ import sys
322
+ path = sys.argv[1]
323
+ name = sys.argv[2]
324
+ with open(path, "r", encoding="utf-8") as f:
325
+ data = f.read()
326
+ data = data.replace("__PROJECT_NAME__", name)
327
+ with open(path, "w", encoding="utf-8") as f:
328
+ f.write(data)
329
+ PY
330
+ done
331
+
332
+ apply_template_security_baseline "$dest" "$template_lang"
333
+
334
+ echo "Created $template_lang project at $dest"
335
+ }
336
+
337
+ cmd_packages() {
338
+ ui_header "Package Managers"
339
+ echo ""
340
+ show_system_package_managers
341
+ echo ""
342
+ ui_header "Language Package Managers"
343
+ show_language_package_managers
344
+ }
345
+
346
+ cmd_log_rotate() {
347
+ run_script "scripts/tools/log-rotate.sh" "Log rotation script" "$@"
348
+ }
349
+
350
+ cmd_env_mise() {
351
+ if ! has_command mise; then
352
+ ui_err "mise not installed (required for dot env)"
353
+ exit 1
354
+ fi
355
+ case "${1:-list}" in
356
+ list | ls) mise ls ;;
357
+ install)
358
+ shift
359
+ # Validate tool names to prevent injection
360
+ for arg in "$@"; do
361
+ [[ "$arg" == -* ]] && continue
362
+ validate_name "$arg" "tool name"
363
+ done
364
+ mise install "$@"
365
+ ;;
366
+ use)
367
+ shift
368
+ for arg in "$@"; do
369
+ [[ "$arg" == -* ]] && continue
370
+ validate_name "$arg" "tool name"
371
+ done
372
+ mise use "$@"
373
+ ;;
374
+ *) mise "$@" ;;
375
+ esac
376
+ }
377
+
378
+ cmd_profile() {
379
+ local data_file
380
+ data_file="$(resolve_source_dir)/.chezmoidata.toml"
381
+ if [[ ! -f "$data_file" ]]; then
382
+ die ".chezmoidata.toml not found"
383
+ fi
384
+ case "${1:-show}" in
385
+ show)
386
+ ui_header "Dotfiles Profile"
387
+ local profile_val
388
+ profile_val="$(grep '^profile' "$data_file" | head -1 | sed 's/.*=\s*"\(.*\)"/\1/')"
389
+ ui_info "Profile" "${profile_val:-default}"
390
+ echo ""
391
+ ui_section "Feature Flags"
392
+ grep -A 100 '^\[features\]' "$data_file" | tail -n +2 | while IFS= read -r line; do
393
+ [[ "$line" =~ ^\[ ]] && break
394
+ [[ -z "$line" || "$line" =~ ^# ]] && continue
395
+ local key val
396
+ key="${line%%=*}"
397
+ key="${key// /}"
398
+ val="${line#*=}"
399
+ val="${val// /}"
400
+ val="${val//\"/}"
401
+ ui_info "$key" "$val"
402
+ done
403
+ ;;
404
+ set)
405
+ shift
406
+ local new_profile="${1:-}"
407
+ if [[ -z "$new_profile" ]]; then
408
+ die "Usage: dot profile set <name>"
409
+ fi
410
+ if grep -q '^profile' "$data_file"; then
411
+ sed_in_place "s/^profile = \".*\"/profile = \"$new_profile\"/" "$data_file"
412
+ else
413
+ sed_in_place "1a profile = \"$new_profile\"" "$data_file"
414
+ fi
415
+ ui_info "Profile" "Set to '$new_profile'. Run 'dot sync' to apply."
416
+ ;;
417
+ *)
418
+ die "Unknown profile subcommand: ${1:-}. Use 'show' or 'set'."
419
+ ;;
420
+ esac
421
+ }
422
+
423
+ # Dispatch — aliases and alias-check are defined in aliases.sh (sourced above)
424
+ case "${1:-}" in
425
+ tools)
426
+ shift
427
+ cmd_tools "$@"
428
+ ;;
429
+ alias-check)
430
+ shift
431
+ cmd_alias_check "$@"
432
+ ;;
433
+ new)
434
+ shift
435
+ cmd_new "$@"
436
+ ;;
437
+ packages)
438
+ shift
439
+ cmd_packages "$@"
440
+ ;;
441
+ log-rotate)
442
+ shift
443
+ cmd_log_rotate "$@"
444
+ ;;
445
+ setup)
446
+ shift
447
+ cmd_setup "$@"
448
+ ;;
449
+ aliases)
450
+ shift
451
+ cmd_aliases "$@"
452
+ ;;
453
+ env)
454
+ shift
455
+ cmd_env_mise "$@"
456
+ ;;
457
+ profile)
458
+ shift
459
+ cmd_profile "$@"
460
+ ;;
461
+ lint)
462
+ shift
463
+ exec bash "$(require_source_dir)/scripts/dot/commands/lint.sh" lint "$@"
464
+ ;;
465
+ *)
466
+ echo "Unknown tools command: ${1:-}" >&2
467
+ exit 1
468
+ ;;
469
+ esac
@@ -0,0 +1,2 @@
1
+ # alias replacement remove_in note
2
+ dlogsf dklf v0.2.487 Removed duplicate logs-follow alias
@@ -0,0 +1,50 @@
1
+ #!/usr/bin/env bash
2
+ # Copyright (c) 2015-2026 Dotfiles. All rights reserved.
3
+ # Sourced by scripts/dot/commands/*.sh and dot_local/bin/executable_dot; inherits set -euo pipefail.
4
+ # Dotfiles 2026: Atomic Intelligence Surface
5
+ # High-fidelity, perfectly aligned, and professional.
6
+
7
+ _dotfiles_bento_render() {
8
+ # Catppuccin Mocha palette — consistent with the project's terminal theme
9
+ # so the bento card matches the user's configured color scheme.
10
+ local c_cyan='\x1b[38;2;0;255;255m' # Accent: header + bullet markers
11
+ local c_gray='\x1b[38;2;147;153;178m' # Overlay1: metric labels (subdued)
12
+ local c_blue='\x1b[38;2;116;199;236m' # Sapphire: metric values (readable)
13
+ local c_slate='\x1b[38;2;49;50;68m' # Surface0: dividers (near-invisible)
14
+ local c_green='\x1b[38;2;166;227;161m' # Green: status confirmations
15
+ local c_reset='\x1b[0m'
16
+ local c_bold='\x1b[1m'
17
+
18
+ # Detect OS to show platform-specific icon in the bento card
19
+ local os_name="Linux"
20
+ local os_icon=""
21
+ case "$(uname)" in
22
+ Darwin)
23
+ os_name="macOS"
24
+ os_icon=""
25
+ ;;
26
+ *)
27
+ [[ -f /proc/sys/kernel/osrelease ]] && grep -qiE '(microsoft|wsl)' /proc/sys/kernel/osrelease && os_name="WSL"
28
+ os_icon=""
29
+ ;;
30
+ esac
31
+
32
+ # Render a fixed-width card (42 cols) so output aligns in any terminal width
33
+ printf "\n"
34
+ printf " ${c_cyan}${c_bold}💎 D O T F I L E S${c_reset} ${c_slate}[v0.2.501]${c_reset}\n"
35
+ printf " ${c_slate}──────────────────────────────────────────${c_reset}\n"
36
+
37
+ # Key system properties at a glance — answers "is my env healthy?" in 1 second
38
+ printf " ${c_cyan}•${c_reset} ${c_gray}%-12s${c_reset} ${c_blue}rousseau @ %s (%s)${c_reset}\n" "Platform" "$os_name" "$os_icon"
39
+ printf " ${c_cyan}•${c_reset} ${c_gray}%-12s${c_reset} ${c_blue}Hardened (GPG/SOPS/Enclave)${c_reset}\n" "Security"
40
+ printf " ${c_cyan}•${c_reset} ${c_gray}%-12s${c_reset} ${c_blue}Idempotent • Deterministic${c_reset}\n" "Strategy"
41
+ printf " ${c_cyan}•${c_reset} ${c_gray}%-12s${c_reset} ${c_blue}Active (Vault Synced)${c_reset}\n" "Cloud"
42
+ printf " ${c_cyan}•${c_reset} ${c_gray}%-12s${c_reset} ${c_blue}60fps UI • <45ms Initial${c_reset}\n" "Latency"
43
+
44
+ # Footer confirms shell startup strategy — reassures user the env is optimized
45
+ printf " ${c_slate}──────────────────────────────────────────${c_reset}\n"
46
+ printf " ${c_green}✓ Hydrated${c_reset} ${c_slate}•${c_reset} ${c_green}Zero-Jank Async${c_reset} ${c_slate}•${c_reset} ${c_cyan}Atomic${c_reset}\n"
47
+ printf "\n"
48
+ }
49
+
50
+ _dotfiles_bento_render