@sebastienrousseau/dotfiles 0.2.481 → 0.2.500

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (546) hide show
  1. package/CHANGELOG.md +122 -32
  2. package/LICENSE +1 -1
  3. package/README.md +211 -242
  4. package/docs/.vitepress/reports/localization-readability-audit.md +69 -0
  5. package/docs/AI.md +102 -0
  6. package/docs/COPYRIGHT +2 -2
  7. package/docs/NAMING_CONVENTIONS.md +95 -0
  8. package/docs/README.md +58 -249
  9. package/docs/adr/ADR-004-cli-architecture.md +2 -2
  10. package/docs/adr/ADR-006-shell-selection.md +2 -2
  11. package/docs/adr/ADR-007-multi-shell-parity.md +53 -0
  12. package/docs/adr/ADR-008-alias-system-architecture.md +85 -0
  13. package/docs/adr/README.md +2 -3
  14. package/docs/architecture/ARCHITECTURE.md +113 -0
  15. package/docs/architecture/INTEROP.md +36 -0
  16. package/docs/architecture/REPO_LAYOUT.md +237 -0
  17. package/docs/architecture/WALKTHROUGH.md +82 -0
  18. package/docs/architecture/fleet-deployment.md +73 -0
  19. package/docs/archive/EUXIS_2026_REVIEW.md +119 -0
  20. package/docs/archive/MILESTONE_v0.2.493.md +43 -0
  21. package/docs/{PLAN.md → archive/PLAN.md} +1 -1
  22. package/docs/guides/INSTALL.md +140 -0
  23. package/docs/{NEOVIM_IDE_GUIDE.md → guides/NEOVIM_IDE_GUIDE.md} +12 -12
  24. package/docs/guides/THEMING.md +222 -0
  25. package/docs/{TROUBLESHOOTING.md → guides/TROUBLESHOOTING.md} +36 -0
  26. package/docs/{WSL2_NIX_TROUBLESHOOTING.md → guides/WSL2_NIX_TROUBLESHOOTING.md} +8 -8
  27. package/docs/index.md +39 -0
  28. package/docs/interop/A2A.md +32 -0
  29. package/docs/manual/00-introduction.md +85 -0
  30. package/docs/manual/01-concepts/01-architecture.md +134 -0
  31. package/docs/manual/01-concepts/02-trust-model.md +178 -0
  32. package/docs/manual/01-concepts/03-theme-engine.md +182 -0
  33. package/docs/manual/01-concepts/04-fleet.md +142 -0
  34. package/docs/manual/01-concepts/05-self-healing.md +197 -0
  35. package/docs/manual/02-tutorials/01-first-install.md +192 -0
  36. package/docs/manual/02-tutorials/02-add-wallpaper.md +211 -0
  37. package/docs/manual/02-tutorials/03-create-profile.md +238 -0
  38. package/docs/manual/02-tutorials/04-encrypt-secret.md +275 -0
  39. package/docs/manual/02-tutorials/05-deploy-fleet.md +279 -0
  40. package/docs/manual/03-reference/01-dot-cli.md +413 -0
  41. package/docs/manual/03-reference/02-config-files.md +259 -0
  42. package/docs/manual/03-reference/03-environment.md +120 -0
  43. package/docs/manual/03-reference/04-templates.md +184 -0
  44. package/docs/manual/03-reference/05-feature-flags.md +118 -0
  45. package/docs/manual/04-cookbook/01-recipes.md +281 -0
  46. package/docs/manual/04-cookbook/02-troubleshooting.md +319 -0
  47. package/docs/manual/04-cookbook/03-faq.md +167 -0
  48. package/docs/manual/05-appendices/A-platform-matrix.md +97 -0
  49. package/docs/manual/05-appendices/B-security-checklist.md +78 -0
  50. package/docs/manual/05-appendices/C-glossary.md +36 -0
  51. package/docs/manual/05-appendices/D-bibliography.md +54 -0
  52. package/docs/manual/05-appendices/E-license.md +34 -0
  53. package/docs/manual/_toc.yml +58 -0
  54. package/docs/manual/command-index.md +58 -0
  55. package/docs/manual/concept-index.md +164 -0
  56. package/docs/operations/ATTESTATION.md +39 -0
  57. package/docs/operations/MAINTENANCE.md +59 -0
  58. package/docs/operations/MIGRATION.md +101 -0
  59. package/docs/operations/OPERATIONS.md +164 -0
  60. package/docs/operations/RELIABILITY.md +116 -0
  61. package/docs/{ROADMAP.md → operations/ROADMAP.md} +11 -11
  62. package/docs/operations/TESTING.md +195 -0
  63. package/docs/operations/TRACEABILITY.md +31 -0
  64. package/docs/operations/TRUSTED_AGENT_WORKSTATION.md +61 -0
  65. package/docs/operations/VERSION_SYNC.md +344 -0
  66. package/docs/{ALIASES.md → reference/ALIASES.md} +2 -6
  67. package/docs/reference/ALIASES_CHEATSHEET.md +28 -0
  68. package/docs/reference/ALIASES_DEPRECATIONS.md +9 -0
  69. package/docs/reference/FEATURES.md +62 -0
  70. package/docs/reference/FONTS.md +108 -0
  71. package/docs/reference/PROFILES.md +65 -0
  72. package/docs/{SCREENSHOTS.md → reference/SCREENSHOTS.md} +26 -25
  73. package/docs/reference/SCRIPTS.md +67 -0
  74. package/docs/reference/SUPPORT_MATRIX.md +74 -0
  75. package/docs/reference/THEMES.md +113 -0
  76. package/docs/reference/TOOLS.md +105 -0
  77. package/docs/reference/UTILS.md +151 -0
  78. package/docs/security/AI_ACT_COMPLIANCE.md +90 -0
  79. package/docs/security/AUTOMATION_SECRETS.md +22 -0
  80. package/docs/security/COMPLIANCE.md +453 -0
  81. package/docs/security/ENCRYPTION.md +52 -0
  82. package/docs/security/FMEA.md +155 -0
  83. package/docs/security/INCIDENT_RESPONSE.md +575 -0
  84. package/docs/security/KEYS.md +45 -0
  85. package/docs/security/MCP_POLICY.md +69 -0
  86. package/docs/security/POLICY_RELEASES.md +33 -0
  87. package/docs/security/README.md +24 -0
  88. package/docs/security/SECRETS.md +146 -0
  89. package/docs/security/SECURITY.md +41 -0
  90. package/docs/security/SECURITY_CHECKLIST.md +44 -0
  91. package/docs/security/SOUP_REGISTER.md +32 -0
  92. package/docs/security/THREAT_MODEL.md +120 -0
  93. package/docs/security/VERIFICATION_VALIDATION.md +224 -0
  94. package/docs/themes/README.md +3 -17
  95. package/docs/themes/VISUAL_INTEGRITY_REPORT.md +26 -0
  96. package/docs/themes/hero-shot.svg +78 -0
  97. package/dot_config/.module-manifest.json +69 -0
  98. package/dot_config/ai/identity.md +20 -0
  99. package/dot_config/ai/patterns/architect.md +14 -0
  100. package/dot_config/ai/patterns/hardener.md +13 -0
  101. package/dot_config/ai/patterns/refactor.md +13 -0
  102. package/dot_config/aider/aider.conf.yml +1 -1
  103. package/dot_config/alacritty/alacritty.toml.tmpl +41 -469
  104. package/dot_config/atuin/config.toml +18 -1
  105. package/dot_config/bat/config +16 -1
  106. package/dot_config/claude/mcp_servers.json +3 -32
  107. package/dot_config/dotfiles/agent-card.json +29 -0
  108. package/dot_config/dotfiles/agent-profiles.json +92 -0
  109. package/dot_config/dotfiles/boot/README.md +1 -1
  110. package/dot_config/dotfiles/grub/README.md +1 -1
  111. package/dot_config/dotfiles/lock/README.md +1 -1
  112. package/dot_config/dotfiles/mcp-lock.json +33 -0
  113. package/dot_config/dotfiles/mcp-policy.json +52 -0
  114. package/dot_config/dotfiles/mcp-registry.json +47 -0
  115. package/dot_config/dotfiles/model-registry.json +20 -0
  116. package/dot_config/dotfiles/policy-bundles.json +38 -0
  117. package/dot_config/dotfiles/prompt-registry.json +16 -0
  118. package/dot_config/dotfiles/versions.env +18 -0
  119. package/dot_config/environment.d/50-ssh-agent.conf +2 -0
  120. package/dot_config/environment.d/90-wayland.conf +19 -0
  121. package/dot_config/firefox/user.js.tmpl +58 -0
  122. package/dot_config/fish/completions/dot-theme-sync.fish.tmpl +9 -0
  123. package/dot_config/fish/completions/dot.fish.tmpl +115 -0
  124. package/dot_config/fish/conf.d/000-perf-cache.fish +56 -0
  125. package/dot_config/fish/conf.d/aliases.fish.tmpl +77 -0
  126. package/dot_config/fish/conf.d/env.fish.tmpl +48 -0
  127. package/dot_config/fish/conf.d/functions.fish.tmpl +22 -0
  128. package/dot_config/fish/conf.d/init.fish.tmpl +151 -0
  129. package/dot_config/fish/config.fish.tmpl +44 -0
  130. package/dot_config/fish/fish_plugins +1 -0
  131. package/dot_config/fish/functions/_.fish +3 -0
  132. package/dot_config/fish/functions/_cached_eval.fish +58 -0
  133. package/dot_config/fish/functions/als.fish +46 -0
  134. package/dot_config/fish/functions/bg-upgrade.fish +7 -0
  135. package/dot_config/fish/functions/c.fish +3 -0
  136. package/dot_config/fish/functions/cat.fish +9 -0
  137. package/dot_config/fish/functions/d.fish +7 -0
  138. package/dot_config/fish/functions/dot.fish +34 -0
  139. package/dot_config/fish/functions/h.fish +3 -0
  140. package/dot_config/fish/functions/l.fish +7 -0
  141. package/dot_config/fish/functions/la.fish +7 -0
  142. package/dot_config/fish/functions/ll.fish +7 -0
  143. package/dot_config/fish/functions/log_error.fish +13 -0
  144. package/dot_config/fish/functions/log_info.fish +13 -0
  145. package/dot_config/fish/functions/lr.fish +7 -0
  146. package/dot_config/fish/functions/lra.fish +7 -0
  147. package/dot_config/fish/functions/ls.fish +7 -0
  148. package/dot_config/fish/functions/lt.fish +7 -0
  149. package/dot_config/fish/functions/lta.fish +7 -0
  150. package/dot_config/fish/functions/notify-run.fish +11 -0
  151. package/dot_config/fish/functions/q.fish +3 -0
  152. package/dot_config/fish/functions/silent-run.fish +7 -0
  153. package/dot_config/fish/functions/yy.fish +8 -0
  154. package/dot_config/fontconfig/fonts.conf.tmpl +13 -0
  155. package/dot_config/foot/foot.ini.tmpl +33 -0
  156. package/dot_config/fuzzel/fuzzel.ini.tmpl +18 -0
  157. package/dot_config/fzf/fzf.zsh +48 -0
  158. package/dot_config/ghostty/config.tmpl +69 -565
  159. package/dot_config/git/allowed_signers.tmpl +18 -0
  160. package/dot_config/git/commit-template +10 -0
  161. package/dot_config/gnupg/{gpg-agent.conf.tmpl → gpg-agent.conf} +3 -3
  162. package/dot_config/goose/config.yaml +2 -2
  163. package/dot_config/gtk-3.0/gtk.css.tmpl +59 -180
  164. package/dot_config/gtk-3.0/settings.ini.tmpl +5 -44
  165. package/dot_config/gtk-4.0/gtk.css.tmpl +79 -136
  166. package/dot_config/gtk-4.0/settings.ini.tmpl +5 -8
  167. package/dot_config/ipython/profile_default/ipython_config.py +19 -0
  168. package/dot_config/just/justfile +18 -0
  169. package/dot_config/kanshi/config.tmpl +22 -0
  170. package/dot_config/kitty/kitty.conf.tmpl +44 -508
  171. package/dot_config/lazygit/config.yml +18 -6
  172. package/dot_config/mako/config +47 -0
  173. package/dot_config/micro/settings.json +3 -0
  174. package/dot_config/mimeapps.list +77 -0
  175. package/dot_config/mise/config.toml +63 -5
  176. package/dot_config/mongosh/mongoshrc.js +1 -0
  177. package/dot_config/mpv/input.conf +47 -0
  178. package/dot_config/mpv/mpv.conf +47 -0
  179. package/dot_config/niri/config.kdl.tmpl +327 -0
  180. package/dot_config/nushell/aliases.nu +18 -0
  181. package/dot_config/nushell/completions.nu.tmpl +52 -0
  182. package/dot_config/nushell/config.nu.tmpl +86 -0
  183. package/dot_config/nushell/env.nu.tmpl +94 -0
  184. package/dot_config/nushell/functions.nu.tmpl +17 -0
  185. package/dot_config/nvim/init.lua +14 -0
  186. package/dot_config/nvim/lazy-lock.json +45 -14
  187. package/dot_config/nvim/lua/config/autocmds.lua +45 -1
  188. package/dot_config/nvim/lua/config/keymaps.lua +13 -8
  189. package/dot_config/nvim/lua/config/lazy.lua +22 -12
  190. package/dot_config/nvim/lua/config/options.lua +1 -0
  191. package/dot_config/nvim/lua/plugins/ai.lua +75 -0
  192. package/dot_config/nvim/lua/plugins/coding.lua +11 -29
  193. package/dot_config/nvim/lua/plugins/completion.lua +60 -0
  194. package/dot_config/nvim/lua/plugins/dap.lua +215 -4
  195. package/dot_config/nvim/lua/plugins/editor.lua +6 -10
  196. package/dot_config/nvim/lua/plugins/git.lua +1 -0
  197. package/dot_config/nvim/lua/plugins/lsp.lua +16 -81
  198. package/dot_config/nvim/lua/plugins/markdown.lua +1 -0
  199. package/dot_config/nvim/lua/plugins/rust.lua +1 -0
  200. package/dot_config/nvim/lua/plugins/sessions.lua +1 -0
  201. package/dot_config/nvim/lua/plugins/ui.lua +23 -51
  202. package/dot_config/paru/paru.conf +10 -0
  203. package/dot_config/powershell/Microsoft.PowerShell_profile.ps1.tmpl +81 -0
  204. package/dot_config/pueue/pueue.yml +34 -0
  205. package/dot_config/raycast/README.md +1 -1
  206. package/dot_config/ripgrep/ripgreprc +21 -0
  207. package/dot_config/shell/00-core-paths.sh.tmpl +62 -24
  208. package/dot_config/shell/05-core-safety.sh +47 -0
  209. package/dot_config/shell/10-secrets.sh +40 -0
  210. package/dot_config/shell/40-fzf-defaults.sh.tmpl +16 -0
  211. package/dot_config/shell/40-ls-colors.sh +48 -0
  212. package/dot_config/shell/50-logic-functions-core.sh.tmpl +10 -0
  213. package/dot_config/shell/51-logic-functions-extra.sh.tmpl +64 -0
  214. package/dot_config/shell/90-ux-aliases.sh.tmpl +90 -5
  215. package/dot_config/shell/91-ux-aliases-lazy.sh.tmpl +33 -2
  216. package/dot_config/shell/Brewfile.cli +8 -0
  217. package/dot_config/shell/README.md +9 -9
  218. package/dot_config/shell/als_data.txt.tmpl +65 -0
  219. package/dot_config/shell/custom/auto_ls.zsh +20 -0
  220. package/dot_config/shell/custom/context_suggest.zsh +50 -50
  221. package/dot_config/shell/custom/error_analysis.zsh +29 -29
  222. package/dot_config/starship.toml.tmpl +85 -7
  223. package/dot_config/swaylock/config +43 -0
  224. package/dot_config/systemd/user/dotfiles-maintenance.service +8 -0
  225. package/dot_config/systemd/user/dotfiles-maintenance.timer +11 -0
  226. package/dot_config/systemd/user/pueued.service +12 -0
  227. package/dot_config/systemd/user/ssh-agent.service +12 -0
  228. package/dot_config/tmux/tmux.conf.tmpl +80 -38
  229. package/dot_config/topgrade.toml.tmpl +54 -0
  230. package/dot_config/user-dirs.dirs +9 -0
  231. package/dot_config/vscode/settings.json.tmpl +9 -50
  232. package/dot_config/waybar/config.jsonc.tmpl +90 -0
  233. package/dot_config/waybar/style.css.tmpl +211 -0
  234. package/dot_config/wezterm/wezterm.lua.tmpl +31 -203
  235. package/dot_config/xdg-desktop-portal/niri-portals.conf +5 -0
  236. package/dot_config/yazi/keymap.toml +67 -0
  237. package/dot_config/yazi/theme.toml +102 -0
  238. package/dot_config/zathura/zathurarc +52 -0
  239. package/dot_config/zellij/{config.kdl → config.kdl.tmpl} +1 -1
  240. package/dot_config/zsh/dot_zprofile +1 -7
  241. package/dot_config/zsh/dot_zshenv +2 -3
  242. package/dot_config/zsh/dot_zshrc.tmpl +368 -69
  243. package/dot_config/zsh/rc.d/00-alias-shims.zsh +77 -0
  244. package/dot_config/zsh/rc.d/05-ssh-agent.zsh +17 -4
  245. package/dot_config/zsh/rc.d/10-env.zsh.tmpl +4 -4
  246. package/dot_config/zsh/rc.d/20-zinit.zsh +65 -0
  247. package/dot_config/zsh/rc.d/30-options.zsh.tmpl +101 -30
  248. package/dot_config/zsh/rc.d/99-alias-wrapper.zsh +32 -0
  249. package/dot_local/bin/__pycache__/executable_dot-load-benchmark-ptycpython-312.pyc +0 -0
  250. package/dot_local/bin/executable_ai-update +195 -0
  251. package/dot_local/bin/executable_ai_core +113 -91
  252. package/dot_local/bin/executable_antigravity +11 -0
  253. package/dot_local/bin/executable_b64 +61 -36
  254. package/dot_local/bin/executable_bm +77 -0
  255. package/dot_local/bin/executable_cb +39 -0
  256. package/dot_local/bin/executable_dot +543 -132
  257. package/dot_local/bin/executable_dot-ai +36 -0
  258. package/dot_local/bin/executable_dot-bootstrap +77 -0
  259. package/dot_local/bin/executable_dot-launch-or-focus +52 -0
  260. package/dot_local/bin/executable_dot-load-benchmark +31 -0
  261. package/dot_local/bin/executable_dot-load-benchmark-pty +77 -0
  262. package/dot_local/bin/executable_dot-theme-sync +952 -0
  263. package/dot_local/bin/executable_dot_completion +2 -0
  264. package/dot_local/bin/executable_dtags +28 -0
  265. package/dot_local/bin/executable_epoch +43 -38
  266. package/dot_local/bin/executable_extract +32 -99
  267. package/dot_local/bin/executable_gbd +52 -0
  268. package/dot_local/bin/executable_gd +42 -0
  269. package/dot_local/bin/executable_git-ai-commit +35 -20
  270. package/dot_local/bin/executable_git-ai-diff +33 -18
  271. package/dot_local/bin/executable_gl +101 -0
  272. package/dot_local/bin/executable_hash +56 -18
  273. package/dot_local/bin/executable_hashsum +160 -0
  274. package/dot_local/bin/executable_hex +44 -8
  275. package/dot_local/bin/executable_jsonv +34 -10
  276. package/dot_local/bin/executable_jwt +22 -6
  277. package/dot_local/bin/executable_kill-port +18 -2
  278. package/dot_local/bin/executable_lorem +21 -6
  279. package/dot_local/bin/executable_mkscript +35 -0
  280. package/dot_local/bin/executable_monitor +56 -0
  281. package/dot_local/bin/{executable_ip → executable_myip} +16 -2
  282. package/dot_local/bin/executable_notify +22 -0
  283. package/dot_local/bin/executable_open +36 -0
  284. package/dot_local/bin/executable_pw +27 -0
  285. package/dot_local/bin/executable_rec-start +46 -0
  286. package/dot_local/bin/executable_rec-stop +35 -0
  287. package/dot_local/bin/executable_regex +49 -13
  288. package/dot_local/bin/executable_start-niri +8 -0
  289. package/dot_local/bin/executable_tmux-sessionizer +276 -149
  290. package/dot_local/bin/executable_tour +112 -74
  291. package/dot_local/bin/executable_up +21 -0
  292. package/dot_local/bin/executable_update +45 -11
  293. package/dot_local/bin/executable_uuid +37 -7
  294. package/dot_local/bin/executable_win +32 -0
  295. package/dot_local/bin/executable_yamlv +25 -7
  296. package/dot_local/share/bash-completion/completions/dot +62 -44
  297. package/dot_local/share/icons/hicolor/128x128/apps/rousseau.png +0 -0
  298. package/dot_local/share/icons/hicolor/16x16/apps/rousseau.png +0 -0
  299. package/dot_local/share/icons/hicolor/24x24/apps/rousseau.png +0 -0
  300. package/dot_local/share/icons/hicolor/256x256/apps/rousseau.png +0 -0
  301. package/dot_local/share/icons/hicolor/32x32/apps/rousseau.png +0 -0
  302. package/dot_local/share/icons/hicolor/48x48/apps/rousseau.png +0 -0
  303. package/dot_local/share/icons/hicolor/512x512/apps/rousseau.png +0 -0
  304. package/dot_local/share/icons/hicolor/64x64/apps/rousseau.png +0 -0
  305. package/dot_local/share/icons/hicolor/96x96/apps/rousseau.png +0 -0
  306. package/dot_local/share/icons/hicolor/scalable/apps/rousseau.png +0 -0
  307. package/dot_local/share/man/man1/dot.1 +149 -0
  308. package/dot_local/share/mise/plugins/kiro-cli/bin/executable_download +64 -0
  309. package/dot_local/share/mise/plugins/kiro-cli/bin/executable_install +18 -0
  310. package/dot_local/share/mise/plugins/kiro-cli/bin/executable_list-all +13 -0
  311. package/dot_local/share/wayland-sessions/niri.desktop.tmpl +6 -0
  312. package/dot_local/share/zsh/completions/_dot +283 -0
  313. package/install.sh +297 -210
  314. package/package.json +17 -5
  315. package/scripts/ci/check-copyright-headers.sh +96 -0
  316. package/scripts/ci/guard-gitleaks-checkout.sh +57 -0
  317. package/scripts/ci/install-chezmoi-verified.sh +64 -0
  318. package/scripts/ci/validate-ci-config.sh +41 -39
  319. package/scripts/demo/record.sh +3 -2
  320. package/scripts/diagnostics/a2a-conformance.sh +162 -0
  321. package/scripts/diagnostics/alias-governance.sh +137 -0
  322. package/scripts/diagnostics/aliases-cheatsheet.sh +73 -0
  323. package/scripts/diagnostics/aliases-manifest.sh +31 -0
  324. package/scripts/diagnostics/benchmark.sh +209 -29
  325. package/scripts/diagnostics/conflicts.sh +72 -0
  326. package/scripts/diagnostics/doctor-unified.sh +38 -0
  327. package/scripts/diagnostics/doctor.sh +491 -65
  328. package/scripts/diagnostics/drift-dashboard.sh +17 -6
  329. package/scripts/diagnostics/health.sh +351 -110
  330. package/scripts/diagnostics/history-analysis.sh +12 -4
  331. package/scripts/diagnostics/mcp-doctor.sh +575 -0
  332. package/scripts/diagnostics/perf.sh +225 -0
  333. package/scripts/diagnostics/scorecard.sh +118 -0
  334. package/scripts/diagnostics/secret-governance.sh +58 -0
  335. package/scripts/diagnostics/security-score.sh +139 -93
  336. package/scripts/diagnostics/smoke-test.sh +87 -0
  337. package/scripts/diagnostics/snapshot.sh +89 -0
  338. package/scripts/diagnostics/verify.sh +107 -0
  339. package/scripts/diagnostics/verify_state.sh +2 -2
  340. package/scripts/diagnostics/version-locks.sh +79 -0
  341. package/scripts/diagnostics/workstation-attestation.sh +181 -0
  342. package/scripts/docs/build-manual.sh +883 -0
  343. package/scripts/docs/check-manual.sh +213 -0
  344. package/scripts/dot/commands/agent.sh +465 -0
  345. package/scripts/dot/commands/ai.sh +416 -0
  346. package/scripts/dot/commands/aliases.sh +250 -0
  347. package/scripts/dot/commands/appearance.sh +21 -4
  348. package/scripts/dot/commands/core.sh +59 -4
  349. package/scripts/dot/commands/diagnostics.sh +132 -3
  350. package/scripts/dot/commands/fleet.sh +399 -0
  351. package/scripts/dot/commands/lint.sh +177 -0
  352. package/scripts/dot/commands/manual.sh +168 -0
  353. package/scripts/dot/commands/meta.sh +148 -17
  354. package/scripts/dot/commands/patterns.sh +54 -0
  355. package/scripts/dot/commands/restore.sh +57 -35
  356. package/scripts/dot/commands/secrets.sh +151 -9
  357. package/scripts/dot/commands/security.sh +3 -0
  358. package/scripts/dot/commands/tools.sh +268 -27
  359. package/scripts/dot/data/alias-deprecations.tsv +2 -0
  360. package/scripts/dot/lib/bento.sh +49 -0
  361. package/scripts/dot/lib/log.sh +194 -0
  362. package/scripts/dot/lib/platform.sh +98 -0
  363. package/scripts/dot/lib/ui.sh +507 -0
  364. package/scripts/dot/lib/utils.sh +318 -18
  365. package/scripts/fonts/install-nerd-fonts.sh +19 -10
  366. package/scripts/fonts/patch-fonts.sh +1 -0
  367. package/scripts/git-hooks/install.sh +11 -0
  368. package/scripts/git-hooks/pre-commit +12 -0
  369. package/scripts/git-hooks/pre-commit-audit.sh +145 -0
  370. package/scripts/git-hooks/pre-push +29 -0
  371. package/scripts/git-hooks/prepare-commit-msg +29 -0
  372. package/scripts/lib/secrets_provider.sh +158 -0
  373. package/scripts/maintenance/check-updates.sh +131 -0
  374. package/scripts/ops/ai-setup.sh +55 -0
  375. package/scripts/ops/bundle.sh +77 -0
  376. package/scripts/ops/chaos.sh +49 -0
  377. package/scripts/ops/chezmoi-apply.sh +245 -17
  378. package/scripts/ops/chezmoi-diff.sh +1 -0
  379. package/scripts/ops/chezmoi-remove.sh +2 -0
  380. package/scripts/ops/chezmoi-update.sh +34 -2
  381. package/scripts/ops/heal-chezmoi.sh +51 -0
  382. package/scripts/ops/heal-system.sh +128 -0
  383. package/scripts/ops/heal-tools.sh +340 -0
  384. package/scripts/ops/heal.sh +98 -342
  385. package/scripts/ops/post-apply-repair.sh +106 -0
  386. package/scripts/ops/prewarm.sh +127 -0
  387. package/scripts/ops/release.sh +252 -0
  388. package/scripts/ops/rollback.sh +86 -28
  389. package/scripts/ops/setup.sh +137 -0
  390. package/scripts/ops/teleport.sh +2 -1
  391. package/scripts/qa/coverage-baseline.sh +60 -0
  392. package/scripts/qa/docs-coverage.sh +111 -0
  393. package/scripts/qa/reliability-audit.sh +138 -0
  394. package/scripts/qa/traceability-coverage.sh +116 -0
  395. package/scripts/qa/validate-examples.sh +26 -0
  396. package/scripts/qa/wsl-contract.sh +11 -0
  397. package/scripts/release/package-policy-bundles.sh +125 -0
  398. package/scripts/secrets/age-init.sh +1 -0
  399. package/scripts/secrets/create-secrets-file.sh +1 -0
  400. package/scripts/secrets/encrypt-ssh-key.sh +1 -0
  401. package/scripts/security/backup.sh +44 -4
  402. package/scripts/security/dns-doh.sh +36 -14
  403. package/scripts/security/encryption-check.sh +27 -12
  404. package/scripts/security/enforce-policies.sh +11 -16
  405. package/scripts/security/firewall.sh +76 -20
  406. package/scripts/security/lock-configs.sh +2 -2
  407. package/scripts/security/lock-screen.sh +40 -18
  408. package/scripts/security/manage-secrets.sh +42 -29
  409. package/scripts/security/ssh-cert.sh +203 -0
  410. package/scripts/security/telemetry-kill.sh +40 -18
  411. package/scripts/security/usb-safety.sh +37 -15
  412. package/scripts/theme/apply-gnome-theme.sh +87 -56
  413. package/scripts/theme/extract-theme.py +677 -0
  414. package/scripts/theme/install-boot-logo.sh +1 -0
  415. package/scripts/theme/install-catppuccin-themes.sh +57 -33
  416. package/scripts/theme/install-cursors.sh +1 -0
  417. package/scripts/theme/install-file-icons.sh +1 -0
  418. package/scripts/theme/install-grub-theme.sh +11 -1
  419. package/scripts/theme/install-lock-icon.sh +1 -0
  420. package/scripts/theme/merge-wallpaper.sh +141 -0
  421. package/scripts/theme/rebuild-themes.sh +309 -0
  422. package/scripts/theme/switch.sh +308 -137
  423. package/scripts/theme/wallpaper-rotate.sh +66 -12
  424. package/scripts/theme/wallpaper-sync.sh +386 -31
  425. package/scripts/tools/cmatrix.sh +1 -0
  426. package/scripts/tools/detect-collisions.py +1 -1
  427. package/scripts/tools/emoji-picker.sh +4 -1
  428. package/scripts/tools/figlet-banner.sh +1 -0
  429. package/scripts/tools/log-rotate.sh +2 -1
  430. package/scripts/tools/lolcat-wrap.sh +1 -0
  431. package/scripts/tools/pipes.sh +1 -0
  432. package/scripts/tuning/linux.sh +23 -13
  433. package/scripts/tuning/macos.sh +13 -4
  434. package/scripts/uninstall.sh +85 -0
  435. package/scripts/version-sync.sh +487 -0
  436. package/templates/chezmoi-data/geekom-a9.toml.example +21 -0
  437. package/templates/chezmoi-data/mac-m1.toml.example +16 -0
  438. package/templates/chezmoi-data/mac-t2-linux.toml.example +21 -0
  439. package/templates/chezmoi-data/surface-pro-7p.toml.example +21 -0
  440. package/templates/projects/go/.github/workflows/ci.yml +31 -0
  441. package/templates/projects/go/README.md +1 -1
  442. package/templates/projects/go/cmd/__PROJECT_NAME__/main.go +1 -0
  443. package/templates/projects/go/go.sum +0 -0
  444. package/templates/projects/molecule/README.md +1 -1
  445. package/templates/projects/node/.github/workflows/ci.yml +30 -0
  446. package/templates/projects/node/README.md +1 -1
  447. package/templates/projects/node/package-lock.json +12 -0
  448. package/templates/projects/node/src/index.js +1 -0
  449. package/templates/projects/packer/README.md +1 -1
  450. package/templates/projects/python/.github/workflows/ci.yml +34 -0
  451. package/templates/projects/python/README.md +1 -1
  452. package/templates/projects/python/src/__PROJECT_NAME__/__init__.py +1 -0
  453. package/templates/projects/python/tests/test_basic.py +1 -0
  454. package/docs/ARCHITECTURE.md +0 -229
  455. package/docs/COMPLIANCE.md +0 -47
  456. package/docs/FEATURES.md +0 -166
  457. package/docs/FONTS.md +0 -147
  458. package/docs/INSTALL.md +0 -119
  459. package/docs/KEYS.md +0 -40
  460. package/docs/OPERATIONS.md +0 -130
  461. package/docs/PR_DESCRIPTION.md +0 -149
  462. package/docs/SECRETS.md +0 -76
  463. package/docs/SECURITY.md +0 -30
  464. package/docs/SECURITY_CHECKLIST.md +0 -25
  465. package/docs/TASK.md +0 -99
  466. package/docs/TESTING.md +0 -190
  467. package/docs/TOOLS.md +0 -146
  468. package/docs/UTILS.md +0 -105
  469. package/docs/WALKTHROUGH.md +0 -165
  470. package/dot_config/clippy.toml +0 -55
  471. package/dot_config/dotfiles/versions.env.tmpl +0 -19
  472. package/dot_config/firefox/user.js +0 -8
  473. package/dot_config/git/config.tmpl +0 -77
  474. package/dot_config/go/aliases.sh +0 -61
  475. package/dot_config/go/env.sh +0 -24
  476. package/dot_config/ice/README.md +0 -13
  477. package/dot_config/ipython/profile_default/ipython_config.py.tmpl +0 -5
  478. package/dot_config/lsd/config.yaml +0 -19
  479. package/dot_config/nvim/snippets/all.lua +0 -9
  480. package/dot_config/nvim/snippets/python.lua +0 -16
  481. package/dot_config/shell/00-container-detect.sh +0 -53
  482. package/dot_config/shell/05-core-safety.sh.tmpl +0 -13
  483. package/dot_config/shell/40-ls-colors.sh.tmpl +0 -31
  484. package/dot_config/shell/90-theme-switch.sh +0 -70
  485. package/dot_config/topgrade/topgrade.toml.tmpl +0 -42
  486. package/dot_config/waybar/style.css +0 -8
  487. package/dot_config/zsh/rc.d/20-zinit.zsh.tmpl +0 -22
  488. package/dot_local/bin/executable_zig-install +0 -89
  489. package/dot_local/bin/voice_ops +0 -7
  490. package/scripts/ops/health-check.sh +0 -380
  491. package/scripts/tests/README.md +0 -241
  492. package/scripts/tests/benchmark.sh +0 -91
  493. package/scripts/tests/framework/assertions.sh +0 -283
  494. package/scripts/tests/framework/mocks.sh +0 -201
  495. package/scripts/tests/framework/test_runner.sh +0 -189
  496. package/scripts/tests/integration/test_install.sh +0 -237
  497. package/scripts/tests/performance/benchmark_runner.sh +0 -156
  498. package/scripts/tests/performance/regression_check.sh +0 -73
  499. package/scripts/tests/performance/stress_test.sh +0 -65
  500. package/scripts/tests/test-aliases.sh +0 -25
  501. package/scripts/tests/test-docker.sh +0 -48
  502. package/scripts/tests/unit/test_ai_aliases.sh +0 -158
  503. package/scripts/tests/unit/test_ai_cli_checks.sh +0 -47
  504. package/scripts/tests/unit/test_backup.sh +0 -227
  505. package/scripts/tests/unit/test_case_functions.sh +0 -238
  506. package/scripts/tests/unit/test_cd_aliases.sh +0 -367
  507. package/scripts/tests/unit/test_dot_cli.sh +0 -217
  508. package/scripts/tests/unit/test_encode64.sh +0 -67
  509. package/scripts/tests/unit/test_environment.sh +0 -78
  510. package/scripts/tests/unit/test_extract.sh +0 -163
  511. package/scripts/tests/unit/test_framework_edge_cases.sh +0 -113
  512. package/scripts/tests/unit/test_genpass.sh +0 -298
  513. package/scripts/tests/unit/test_install_edge_cases.sh +0 -167
  514. package/scripts/tests/unit/test_installers.sh +0 -172
  515. package/scripts/tests/unit/test_keygen.sh +0 -68
  516. package/scripts/tests/unit/test_logging.sh +0 -96
  517. package/scripts/tests/unit/test_os_detection_comprehensive.sh +0 -388
  518. package/scripts/tests/unit/test_package_managers_comprehensive.sh +0 -321
  519. package/scripts/tests/unit/test_prependpath.sh +0 -66
  520. package/scripts/tests/unit/test_prependpath_refactored.sh +0 -89
  521. package/scripts/tests/unit/test_rd.sh +0 -230
  522. package/scripts/tests/unit/test_security_fixes.sh +0 -130
  523. package/scripts/tests/unit/test_security_scripts.sh +0 -87
  524. package/scripts/tests/unit/test_template_validation.sh +0 -238
  525. package/scripts/tests/unit/test_utility_functions.sh +0 -144
  526. package/scripts/tests/unit/test_wave1_alias_split.sh +0 -132
  527. package/scripts/tests/unit/test_wave1_ci_pinning.sh +0 -61
  528. package/scripts/tests/unit/test_wave1_gitleaks_config.sh +0 -52
  529. package/scripts/tests/unit/test_wave1_heal_fixes.sh +0 -97
  530. package/scripts/tests/unit/test_wave1_install_gpg.sh +0 -35
  531. package/scripts/tests/unit/test_wave1_zshenv_path.sh +0 -89
  532. package/scripts/tests/unit/test_wave1_zshrc_lazy_hook.sh +0 -115
  533. package/scripts/tests/unit/test_wave2_dot_new_guard.sh +0 -75
  534. package/scripts/tests/unit/test_zipf.sh +0 -76
  535. /package/docs/{LEGACY_ROADMAP.md → archive/LEGACY_ROADMAP.md} +0 -0
  536. /package/docs/{REPO_AUDIT.md → archive/REPO_AUDIT.md} +0 -0
  537. /package/docs/{KEY_ROTATION.md → security/KEY_ROTATION.md} +0 -0
  538. /package/dot_config/ansible/{ansible.cfg.tmpl → ansible.cfg} +0 -0
  539. /package/dot_config/docker/{config.json.tmpl → config.json} +0 -0
  540. /package/dot_config/k9s/{config.yaml.tmpl → config.yaml} +0 -0
  541. /package/dot_config/pypoetry/{config.toml.tmpl → config.toml} +0 -0
  542. /package/dot_config/{pyrightconfig.json.tmpl → pyrightconfig.json} +0 -0
  543. /package/dot_config/tflint/{tflint.hcl.tmpl → tflint.hcl} +0 -0
  544. /package/dot_config/yarn/{yarnrc.yml.tmpl → yarnrc.yml} +0 -0
  545. /package/dot_config/zsh/rc.d/{40-bell.zsh.tmpl → 40-bell.zsh} +0 -0
  546. /package/dot_config/zsh/rc.d/{50-login-fortune.zsh.tmpl → 50-login-fortune.zsh} +0 -0
@@ -0,0 +1,77 @@
1
+ {{- $fishFuncsPattern := joinPath .chezmoi.sourceDir "dot_config/fish/functions/*.fish" -}}
2
+ {{- $fishFuncs := glob $fishFuncsPattern -}}
3
+ # Fish aliases — bridged from bash alias library (Generated by Chezmoi)
4
+ # Edit .chezmoitemplates/aliases/ source files, not this file.
5
+ #
6
+ # Data flow: .chezmoitemplates/aliases/ -> 90/91-ux-aliases*.sh -> bash bridge -> cache
7
+
8
+ if status is-interactive
9
+ set -l _cache_dir "$HOME/.cache/fish"
10
+ set -l _alias_cache "$_cache_dir/bash-aliases.fish"
11
+ set -l _src_eager "$HOME/.config/shell/90-ux-aliases.sh"
12
+ set -l _src_lazy "$HOME/.config/shell/91-ux-aliases-lazy.sh"
13
+
14
+ # Native fish functions that must not be overridden by bash aliases
15
+ set -l _skip{{ range $fishFuncs }} {{ trimSuffix ".fish" (base .) }}{{ end }}
16
+
17
+ # Rebuild cache when alias sources change or cache is missing
18
+ set -l _stale 0
19
+ if not test -f "$_alias_cache"
20
+ set _stale 1
21
+ else if test -f "$_src_eager"; and test "$_src_eager" -nt "$_alias_cache"
22
+ set _stale 1
23
+ else if test -f "$_src_lazy"; and test "$_src_lazy" -nt "$_alias_cache"
24
+ set _stale 1
25
+ end
26
+
27
+ if test "$_stale" = 1
28
+ mkdir -p "$_cache_dir"
29
+ # Source bash aliases, filter fish-incompatible syntax, write cache
30
+ env -i HOME="$HOME" PATH="$PATH" bash --norc --noprofile -c '
31
+ source "$HOME/.config/shell/90-ux-aliases.sh" 2>/dev/null
32
+ source "$HOME/.config/shell/91-ux-aliases-lazy.sh" 2>/dev/null
33
+ alias -p 2>/dev/null | while IFS= read -r line; do
34
+ name="${line#alias }"
35
+ name="${name#-- }"
36
+ name="${name%%=*}"
37
+ [[ "$name" =~ ^[a-zA-Z_][a-zA-Z0-9_.-]*$ ]] || continue
38
+ val="${line#*=}"
39
+ # Skip bash-specific syntax incompatible with fish
40
+ case "$val" in
41
+ *\$\{*) continue ;;
42
+ *"; then "*) continue ;;
43
+ *"[[ "*) continue ;;
44
+ *\`*) continue ;;
45
+ esac
46
+ printf "alias %s=%s\n" "$name" "$val"
47
+ done
48
+ ' 2>/dev/null | while read -l _line
49
+ set -l _parts (string match -r '^alias ([^=]+)=' -- "$_line")
50
+ set -l _name
51
+ if set -q _parts[2]
52
+ set _name $_parts[2]
53
+ end
54
+ set -l _target (string replace -r '^alias [^=]+=["'\'']?([^ "'\'']+).*$' '$1' -- "$_line")
55
+ if set -q _name[1]; and not contains -- "$_name" $_skip
56
+ if string match -rq '^dot_[a-z0-9_]+$' -- "$_target"
57
+ continue
58
+ end
59
+ echo "$_line"
60
+ end
61
+ end >"$_alias_cache.tmp"
62
+ mv "$_alias_cache.tmp" "$_alias_cache"
63
+ end
64
+
65
+ # Source cached aliases
66
+ if test -s "$_alias_cache"
67
+ source "$_alias_cache"
68
+ end
69
+
70
+ # Remove stale alias wrappers that reference bash-only helper functions.
71
+ if functions -q cat; and not functions -q dot_cat
72
+ set -l _cat_def (functions cat)
73
+ if string match -rq 'dot_cat \$argv' -- "$_cat_def"
74
+ functions -e cat
75
+ end
76
+ end
77
+ end
@@ -0,0 +1,48 @@
1
+ # 🅳🅾🆃🅵🅸🅻🅴🆂 (v{{ .dotfiles_version }}) — Environment, PATH, and tool defaults
2
+ # Consolidated for startup performance (fewer conf.d files = less source overhead).
3
+ # Values baked at chezmoi apply time where possible — no subshells at startup.
4
+
5
+ # ── PATH Construction ────────────────────────────────────────────
6
+ # Uses direct set -p (builtin) instead of fish_add_path for speed.
7
+ # Lowest priority first, highest last (each set -p pushes to front).
8
+ set -gx PIPX_HOME (set -q XDG_DATA_HOME; and echo "$XDG_DATA_HOME"; or echo "$HOME/.local/share")/pipx
9
+ set -gx PIPX_BIN_DIR (set -q XDG_BIN_HOME; and echo "$XDG_BIN_HOME"; or echo "$HOME/.local/bin")
10
+ set -gx BUN_INSTALL "$HOME/.bun"
11
+
12
+ for p in \
13
+ /usr/sbin /sbin /usr/bin /bin \
14
+ /opt/homebrew/sbin /opt/homebrew/bin \
15
+ /opt/homebrew/opt/ruby/bin \
16
+ "$HOME/.gem/ruby/bin" \
17
+ "$PIPX_BIN_DIR" \
18
+ "$HOME/.cargo/bin" \
19
+ "$HOME/go/bin" \
20
+ "$BUN_INSTALL/bin" \
21
+ "$HOME/.node_modules/bin" \
22
+ "$HOME/.luarocks/bin" \
23
+ {{- if eq .chezmoi.os "darwin" }}
24
+ /Library/Apple/usr/bin \
25
+ {{- end }}
26
+ "$HOME/.local/bin" \
27
+ "$HOME/.local/share/mise/shims" \
28
+ "$HOME/bin"
29
+ contains -- "$p" $PATH; or set -p PATH "$p"
30
+ end
31
+
32
+ # ── Build artifacts → /tmp (cleared on reboot) ─────────────────
33
+ mkdir -p /tmp/builds
34
+
35
+ # ── Direnv ──────────────────────────────────────────────────────
36
+ set -gx DIRENV_LOG_FORMAT ""
37
+
38
+ # ── Environment Variables ────────────────────────────────────────
39
+ status is-interactive; or return
40
+
41
+ set -gx HOSTNAME '{{ output "hostname" | trim }}'
42
+
43
+ # ── FZF Defaults ─────────────────────────────────────────────────
44
+ if test -f "$HOME/.config/shell/40-fzf-defaults.sh"
45
+ set -gx FZF_DEFAULT_COMMAND 'fd --type f --strip-cwd-prefix --hidden --follow --exclude .git'
46
+ set -gx FZF_CTRL_T_COMMAND "$FZF_DEFAULT_COMMAND"
47
+ set -gx FZF_DEFAULT_OPTS "--color=bg+:#313244,bg:#1e1e2e,spinner:#f5e0dc,hl:#f38ba8 --color=fg:#cdd6f4,header:#f38ba8,info:#cba6f7,pointer:#f5e0dc --color=marker:#f5e0dc,fg+:#cdd6f4,prompt:#cba6f7,hl+:#f38ba8 --multi --layout=reverse --border --height=40% --preview-window='right:60%:wrap' --preview 'if [ -d {} ]; then eza --tree --level 2 --icons {} | head -200; else bat --style=numbers --color=always --line-range :500 {} 2>/dev/null; or cat {} | head -500; end'"
48
+ end
@@ -0,0 +1,22 @@
1
+ {{- $root := . -}}
2
+ {{- $groupsPath := joinPath $root.chezmoi.sourceDir ".chezmoitemplates/functions/groups.json" -}}
3
+ {{- $groups := (fromJson (include $groupsPath)) -}}
4
+ {{- $fishFuncsPattern := joinPath $root.chezmoi.sourceDir "dot_config/fish/functions/*.fish" -}}
5
+ {{- $fishFuncs := glob $fishFuncsPattern -}}
6
+ # Fish function wrappers (Generated by Chezmoi)
7
+ # Delegates to bash function library in ~/.config/shell/50-logic-functions.sh
8
+ # Edit .chezmoitemplates/functions/ source files, not this file.
9
+
10
+ if status is-interactive
11
+ {{- range $group, $files := $groups }}
12
+ {{- range $files }}
13
+ {{- $func := trimSuffix ".sh" (base .) }}
14
+ {{- $nativePath := joinPath $root.chezmoi.sourceDir (printf "dot_config/fish/functions/%s.fish" $func) }}
15
+ {{- if not (has $nativePath $fishFuncs) }}
16
+ function {{ $func }} --description 'Dotfiles: {{ $func }}'
17
+ bash -c 'source "$HOME/.config/shell/50-logic-functions.sh" 2>/dev/null; {{ $func }} "$@"' -- $argv
18
+ end
19
+ {{- end }}
20
+ {{- end }}
21
+ {{- end }}
22
+ end
@@ -0,0 +1,151 @@
1
+ # 🅳🅾🆃🅵🅸🅻🅴🆂 (v{{ .dotfiles_version }}) — Interactive initialization
2
+ # Consolidated: init + keybindings + modern-core + carapace
3
+ # Non-interactive shells skip this entire file.
4
+
5
+ if not status is-interactive
6
+ return
7
+ end
8
+
9
+ # ── Shell Cache ──────────────────────────────────────────────────
10
+ set -g SHELL_CACHE "$XDG_CACHE_HOME"
11
+ if test -z "$SHELL_CACHE"
12
+ set SHELL_CACHE "$HOME/.cache"
13
+ end
14
+ set SHELL_CACHE "$SHELL_CACHE/fish"
15
+ mkdir -p "$SHELL_CACHE"
16
+
17
+ # ── Artifact Mode ────────────────────────────────────────────────
18
+ if not set -q DOTFILES_ARTIFACT_MODE
19
+ set -gx DOTFILES_ARTIFACT_MODE 0
20
+ end
21
+
22
+ if test "$DOTFILES_ARTIFACT_MODE" = "1"
23
+ function fish_prompt
24
+ set_color green
25
+ echo -n "➜ "
26
+ set_color normal
27
+ end
28
+ function fish_right_prompt; end
29
+ set -g fish_greeting ""
30
+ end
31
+
32
+ # ── Starship (eager — must survive cache clears) ────────────────
33
+ function _dotfiles_source_cached_init --argument-names tool file
34
+ if test -n "$XDG_CACHE_HOME"
35
+ set -l cache_root "$XDG_CACHE_HOME"
36
+ else
37
+ set -l cache_root "$HOME/.cache"
38
+ end
39
+
40
+ set -l cache_file "$cache_root/fish/$file"
41
+ if test -s "$cache_file"
42
+ source "$cache_file"
43
+ return 0
44
+ end
45
+
46
+ if command -v $tool >/dev/null 2>&1
47
+ _cached_eval $tool init fish
48
+ return $status
49
+ end
50
+
51
+ return 1
52
+ end
53
+
54
+ if test "$DOTFILES_ARTIFACT_MODE" = "0"; and command -v starship >/dev/null
55
+ if not _dotfiles_source_cached_init starship starship-init.fish
56
+ starship init fish | source
57
+ end
58
+ end
59
+
60
+ # ── Lazy Hydration (deferred to first prompt) ────────────────────
61
+ function _dotfiles_async_init
62
+ # Mise
63
+ if command -v mise >/dev/null
64
+ if not test -s "$SHELL_CACHE/mise-init.fish"
65
+ _cached_eval mise activate fish
66
+ else
67
+ source "$SHELL_CACHE/mise-init.fish"
68
+ end
69
+ end
70
+ # Atuin
71
+ if command -v atuin >/dev/null
72
+ if not test -s "$SHELL_CACHE/atuin-init.fish"
73
+ _cached_eval atuin init fish
74
+ else
75
+ source "$SHELL_CACHE/atuin-init.fish"
76
+ end
77
+ end
78
+ # Zoxide (--cmd=cd replaces cd with zoxide-aware version)
79
+ if command -v zoxide >/dev/null
80
+ if not test -s "$SHELL_CACHE/zoxide-init.fish"
81
+ _cached_eval zoxide init --cmd=cd fish
82
+ else
83
+ source "$SHELL_CACHE/zoxide-init.fish"
84
+ end
85
+ end
86
+ # FZF
87
+ if command -v fzf >/dev/null
88
+ if not test -s "$SHELL_CACHE/fzf-init.fish"
89
+ _cached_eval fzf --fish
90
+ else
91
+ source "$SHELL_CACHE/fzf-init.fish"
92
+ end
93
+ end
94
+ # Direnv
95
+ if command -v direnv >/dev/null
96
+ if not test -s "$SHELL_CACHE/direnv-init.fish"
97
+ _cached_eval direnv hook fish
98
+ else
99
+ source "$SHELL_CACHE/direnv-init.fish"
100
+ end
101
+ end
102
+ # Carapace completions (cached)
103
+ if command -v carapace >/dev/null 2>&1
104
+ set -l carapace_cache "$SHELL_CACHE/carapace-init.fish"
105
+ if test -s "$carapace_cache"
106
+ source "$carapace_cache"
107
+ else
108
+ set -l _carapace_tmp "$carapace_cache.tmp.$fish_pid"
109
+ if carapace _carapace fish >"$_carapace_tmp" 2>/dev/null
110
+ mv "$_carapace_tmp" "$carapace_cache"
111
+ source "$carapace_cache"
112
+ else
113
+ rm -f "$_carapace_tmp"
114
+ end
115
+ end
116
+ end
117
+ # Pueue daemon (deferred here to avoid blocking shell startup)
118
+ if command -v pueue >/dev/null; and not pueue status >/dev/null 2>&1
119
+ if command -v pueued >/dev/null
120
+ pueued -d >/dev/null 2>&1
121
+ end
122
+ end
123
+ end
124
+
125
+ function _dotfiles_trigger_hydration --on-event fish_prompt
126
+ functions -e _dotfiles_trigger_hydration
127
+ _dotfiles_async_init
128
+ if test "$DOTFILES_ARTIFACT_MODE" = "1"
129
+ begin
130
+ bash "$HOME/.dotfiles/scripts/dot/lib/bento.sh" </dev/null
131
+ kill -WINCH $fish_pid
132
+ end &
133
+ end
134
+ end
135
+
136
+ # ── Keybindings (Fish 4.x enhanced) ─────────────────────────────
137
+ bind ctrl-backspace backward-kill-word
138
+ bind alt-enter 'commandline -f accept-autosuggestion; commandline -f execute'
139
+ bind ctrl-z undo
140
+ bind ctrl-shift-z redo
141
+ bind alt-up 'prevd; commandline -f repaint'
142
+ bind alt-down 'nextd; commandline -f repaint'
143
+ bind ctrl-left backward-word
144
+ bind ctrl-right forward-word
145
+ bind alt-l 'echo; ls; commandline -f repaint'
146
+ bind alt-. history-token-search-backward
147
+ bind ctrl-g 'echo; git status --short 2>/dev/null || echo "Not a git repo"; commandline -f repaint'
148
+ bind alt-e edit_command_buffer
149
+ if command -q fzf
150
+ bind ctrl-t 'set -l result (fzf --height 40% --reverse 2>/dev/null); and commandline -it -- $result; commandline -f repaint'
151
+ end
@@ -0,0 +1,44 @@
1
+ # 🅳🅾🆃🅵🅸🅻🅴🆂 (v{{ .dotfiles_version }}) - <https://dotfiles.io>
2
+ # Made With ❤️ in London, United Kingdom
3
+ # Designed by
4
+ # Copyright (c) 2015-2026. All rights reserved.
5
+ # License: MIT
6
+
7
+ # Performance optimization - skip if not interactive
8
+ status is-interactive; or return
9
+
10
+ # Only source once
11
+ if set -q FISH_CONFIG_SOURCED
12
+ return
13
+ end
14
+ set -g FISH_CONFIG_SOURCED 1
15
+
16
+ {{- /* Input Validation: Ensure crucial variables are set */ -}}
17
+ {{- if not .chezmoi.homeDir -}}
18
+ {{- fail "Critical Error: .chezmoi.homeDir is not set!" -}}
19
+ {{- end -}}
20
+
21
+ # Load local customizations if they exist
22
+ if test -f "$HOME/.config/fish/config.fish.local"
23
+ source "$HOME/.config/fish/config.fish.local"
24
+ end
25
+
26
+ # Ensure LS_COLORS is set for fish (bridged from bash dircolors setup)
27
+ if not set -q LS_COLORS
28
+ set -l _dircolors_cache "$HOME/.cache/shell/dircolors.sh"
29
+ if test -f "$_dircolors_cache"
30
+ # Extract LS_COLORS value from cached dircolors output
31
+ set -l _val (string match -r "LS_COLORS='([^']+)'" < "$_dircolors_cache")
32
+ if set -q _val[2]
33
+ set -gx LS_COLORS "$_val[2]"
34
+ end
35
+ else if command -q dircolors
36
+ set -gx LS_COLORS (dircolors -c 2>/dev/null | string match -r "LS_COLORS='([^']+)'" | tail -1)
37
+ else if test (uname -s) = "Darwin"
38
+ set -gx CLICOLOR 1
39
+ set -gx LSCOLORS "ExFxCxDxBxegedabagacad"
40
+ end
41
+ end
42
+
43
+ # Welcome message
44
+ set -g fish_greeting ""
@@ -0,0 +1 @@
1
+ jorgebucaran/fisher
@@ -0,0 +1,3 @@
1
+ function _ --description 'Run command with sudo'
2
+ sudo $argv
3
+ end
@@ -0,0 +1,58 @@
1
+ # _cached_eval — Cache tool init output with binary mtime invalidation
2
+ # Mirrors the bash/zsh _cached_eval pattern for Fish
3
+ #
4
+ # Usage: _cached_eval <tool_binary> <init_args...>
5
+ # Example: _cached_eval starship init fish
6
+ # _cached_eval zoxide init fish
7
+ #
8
+ # Cache files stored in $XDG_CACHE_HOME/fish/ (or ~/.cache/fish/)
9
+ # Cache invalidated when binary mtime changes (e.g. after upgrade)
10
+
11
+ function _cached_eval --description 'Cache and source tool init output'
12
+ set -l tool_name $argv[1]
13
+ if test -z "$tool_name"
14
+ echo "_cached_eval: usage: _cached_eval <tool> <init args...>" >&2
15
+ return 1
16
+ end
17
+
18
+ # Resolve binary path
19
+ set -l tool_path (command -v $tool_name 2>/dev/null)
20
+ if test -z "$tool_path"
21
+ return 1
22
+ end
23
+
24
+ set -l cache_dir (set -q XDG_CACHE_HOME; and echo $XDG_CACHE_HOME; or echo "$HOME/.cache")/fish
25
+ set -l cache_file "$cache_dir/$tool_name-init.fish"
26
+ set -l mtime_file "$cache_dir/$tool_name-init.mtime"
27
+
28
+ mkdir -p "$cache_dir"
29
+
30
+ # Check if cache is stale (binary newer than cache)
31
+ set -l stale 0
32
+ if not test -f "$cache_file"
33
+ set stale 1
34
+ else if not test -f "$mtime_file"
35
+ set stale 1
36
+ else if test "$tool_path" -nt "$cache_file"
37
+ set stale 1
38
+ end
39
+
40
+ # Regenerate cache if stale
41
+ if test "$stale" = 1
42
+ set -l init_output (command $argv 2>/dev/null)
43
+ # Reject suspicious patterns indicating malicious payloads
44
+ if string match -rq 'curl\s.*\|\s*(ba)?sh|wget\s.*\|\s*(ba)?sh|nc\s+-e|/dev/tcp/|base64\s+-d\s*\|' -- "$init_output"
45
+ echo "[WARN] Suspicious output from $tool_name init, skipping" >&2
46
+ return 1
47
+ end
48
+ set -l tmp_cache "$cache_file.tmp.%self"
49
+ printf '%s\n' $init_output >"$tmp_cache"
50
+ mv "$tmp_cache" "$cache_file" # atomic rename
51
+ echo "$tool_path" >"$mtime_file"
52
+ end
53
+
54
+ # Source cached output
55
+ if test -s "$cache_file"
56
+ source "$cache_file"
57
+ end
58
+ end
@@ -0,0 +1,46 @@
1
+ function als --description 'Instant-Load High-Fidelity Command Explorer'
2
+ set -l data_file "$HOME/.config/shell/als_data.txt"
3
+
4
+ if not test -f "$data_file"
5
+ echo "Error: Command data not found. Please run 'chezmoi apply'."
6
+ return 1
7
+ end
8
+
9
+ # Find gum cmd robustly
10
+ set -l gum_cmd (command -v gum 2>/dev/null)
11
+ if test -z "$gum_cmd"
12
+ for f in $HOME/.local/share/mise/installs/aqua-charmbracelet-gum/*/gum*/gum
13
+ if test -x "$f"; set gum_cmd "$f"; break; end
14
+ end
15
+ end
16
+
17
+ if test -z "$gum_cmd"
18
+ echo "Error: 'gum' not found. Please ensure mise tools are installed."
19
+ return 1
20
+ end
21
+
22
+ # Search Interface (Near-Instant)
23
+ set -l selected ("$gum_cmd" filter --placeholder "Search categories, aliases, or descriptions..." \
24
+ --indicator "󰁔" --indicator.foreground 212 \
25
+ --match.foreground 212 --text.foreground 255 --height 20 < "$data_file")
26
+
27
+ if test -n "$selected"
28
+ # Extract metadata from hidden fields
29
+ set -l parts (string split "|SEP|" "$selected")
30
+ set -l final_cmd $parts[2]
31
+ set -l final_name $parts[3]
32
+
33
+ # Clean the display string for the detail view (remove ANSI and SEP)
34
+ set -l clean_display (echo "$selected" | sed 's/\x1b\[[0-9;]*m//g' | sed 's/|SEP|.*$//' | string trim)
35
+
36
+ echo ""
37
+ "$gum_cmd" style --foreground 212 --border rounded --border-foreground 212 --padding "1 2" \
38
+ "󰄬 COMMAND INTELLIGENCE" \
39
+ " Identity: $final_name" \
40
+ " Exec: $final_cmd" \
41
+ " Details: $clean_display"
42
+
43
+ echo "$final_cmd" | cb >/dev/null 2>&1
44
+ "$gum_cmd" style --foreground 240 " 󱉊 Copied to clipboard"
45
+ end
46
+ end
@@ -0,0 +1,7 @@
1
+ function bg-upgrade --description 'Background upgrade of all package managers'
2
+ echo "🚀 Starting background upgrades (Homebrew, Nix, Chezmoi)..."
3
+ if command -v brew >/dev/null; silent-run "brew upgrade"; end
4
+ if command -v nix >/dev/null; silent-run "nix flake update"; end
5
+ silent-run "chezmoi update"
6
+ echo "Check status with 'pueue status'"
7
+ end
@@ -0,0 +1,3 @@
1
+ function c --description 'Clear screen'
2
+ clear $argv
3
+ end
@@ -0,0 +1,9 @@
1
+ function cat --description 'Print file contents with bat fallback'
2
+ if command -v bat >/dev/null 2>&1
3
+ bat $argv
4
+ else if command -v batcat >/dev/null 2>&1
5
+ batcat $argv
6
+ else
7
+ command cat $argv
8
+ end
9
+ end
@@ -0,0 +1,7 @@
1
+ function d --description 'Run dot or docker'
2
+ if command -v dot >/dev/null 2>&1
3
+ dot $argv
4
+ else if command -v docker >/dev/null 2>&1
5
+ docker $argv
6
+ end
7
+ end
@@ -0,0 +1,34 @@
1
+ function dot --description 'dotfiles manager'
2
+ if test "$argv[1]" = "load"
3
+ # Since fish doesn't have the same "lazy loading" mechanism as this zsh setup
4
+ # we'll just indicate that we're ready.
5
+ # But we'll still call the real dot if it exists.
6
+ if test "$argv[2]" = "--status"
7
+ echo "ready"
8
+ return 0
9
+ end
10
+ end
11
+
12
+ if test -x "$HOME/.local/bin/dot"
13
+ "$HOME/.local/bin/dot" $argv
14
+ else
15
+ echo "dot command not found at $HOME/.local/bin/dot" >&2
16
+ return 1
17
+ end
18
+ end
19
+
20
+ function dm --description 'List dot agent modes'
21
+ dot mode list
22
+ end
23
+
24
+ function da --description 'List dot agent profiles'
25
+ dot agent list
26
+ end
27
+
28
+ function dmc --description 'Show MCP registry'
29
+ dot mcp registry
30
+ end
31
+
32
+ function datt --description 'Emit workstation attestation JSON'
33
+ dot attest --json
34
+ end
@@ -0,0 +1,3 @@
1
+ function h --description 'Show history'
2
+ history $argv
3
+ end
@@ -0,0 +1,7 @@
1
+ function l --wraps=ls --description 'List contents of directory'
2
+ if command -v eza >/dev/null 2>&1
3
+ eza --sort Name --icons --group-directories-first $argv
4
+ else
5
+ ls $argv
6
+ end
7
+ end
@@ -0,0 +1,7 @@
1
+ function la --wraps=ls --description 'List contents of directory including hidden files'
2
+ if command -v eza >/dev/null 2>&1
3
+ eza -a --sort Name --icons --group-directories-first $argv
4
+ else
5
+ ls -a $argv
6
+ end
7
+ end
@@ -0,0 +1,7 @@
1
+ function ll --wraps=ls --description 'List contents of directory in long format'
2
+ if command -v eza >/dev/null 2>&1
3
+ eza -alF --sort Name --icons --group-directories-first $argv
4
+ else
5
+ ls -lA $argv
6
+ end
7
+ end
@@ -0,0 +1,13 @@
1
+ function log_error --description 'Log error message'
2
+ if set -q NO_COLOR; or not isatty 2
3
+ set -l RED ""
4
+ set -l NC ""
5
+ printf "[ERROR] %s
6
+ " "$argv[1]" >&2
7
+ else
8
+ set -l RED (set_color red)
9
+ set -l NC (set_color normal)
10
+ printf "%s[ERROR]%s %s
11
+ " "$RED" "$NC" "$argv[1]" >&2
12
+ end
13
+ end
@@ -0,0 +1,13 @@
1
+ function log_info --description 'Log info message'
2
+ if set -q NO_COLOR; or not isatty 1
3
+ set -l BLUE ""
4
+ set -l NC ""
5
+ printf "[INFO] %s
6
+ " "$argv[1]"
7
+ else
8
+ set -l BLUE (set_color blue)
9
+ set -l NC (set_color normal)
10
+ printf "%s[INFO]%s %s
11
+ " "$BLUE" "$NC" "$argv[1]"
12
+ end
13
+ end
@@ -0,0 +1,7 @@
1
+ function lr --wraps=ls --description 'List contents of directory recursively'
2
+ if command -v eza >/dev/null 2>&1
3
+ eza -alF --recurse --sort Name --icons --group-directories-first $argv
4
+ else
5
+ ls -lAR $argv
6
+ end
7
+ end
@@ -0,0 +1,7 @@
1
+ function lra --wraps=ls --description 'List contents of directory recursively including hidden files'
2
+ if command -v eza >/dev/null 2>&1
3
+ eza -alF --recurse --all --sort Name --icons --group-directories-first $argv
4
+ else
5
+ ls -lAR $argv
6
+ end
7
+ end
@@ -0,0 +1,7 @@
1
+ function ls --description 'List contents of directory'
2
+ if command -v eza >/dev/null 2>&1
3
+ eza --sort Name --icons --group-directories-first $argv
4
+ else
5
+ command ls $argv
6
+ end
7
+ end
@@ -0,0 +1,7 @@
1
+ function lt --wraps=ls --description 'List contents of directory in tree format'
2
+ if command -v eza >/dev/null 2>&1
3
+ eza -aT --sort Name --icons --group-directories-first $argv
4
+ else
5
+ ls -R $argv
6
+ end
7
+ end
@@ -0,0 +1,7 @@
1
+ function lta --wraps=ls --description 'List contents of directory in tree format including hidden files'
2
+ if command -v eza >/dev/null 2>&1
3
+ eza -aT --all --sort Name --icons --group-directories-first $argv
4
+ else
5
+ ls -aR $argv
6
+ end
7
+ end
@@ -0,0 +1,11 @@
1
+ function notify-run --description 'Submit a command to pueue and notify when done'
2
+ if test -z "$argv"
3
+ echo "Usage: notify-run <command>"
4
+ return 1
5
+ end
6
+ set -l task_id (pueue add --print-id -- $argv)
7
+ echo "Task $task_id submitted: $argv"
8
+ # Run a background process to wait and notify
9
+ fish -c "pueue wait $task_id; and echo '✅ Task $task_id finished: $argv'" &
10
+ disown
11
+ end
@@ -0,0 +1,3 @@
1
+ function q --description 'Exit shell'
2
+ exit $argv
3
+ end
@@ -0,0 +1,7 @@
1
+ function silent-run --description 'Submit a command to pueue and forget about it'
2
+ if test -z "$argv"
3
+ echo "Usage: silent-run <command>"
4
+ return 1
5
+ end
6
+ pueue add -- $argv
7
+ end