@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
@@ -4,21 +4,25 @@
4
4
  [settings]
5
5
  # Install missing tools automatically
6
6
  auto_install = true
7
+ # Ensure mise tool paths/shims are placed ahead of system PATH
8
+ activate_aggressive = true
7
9
  # Use verbose output
8
10
  verbose = false
11
+ # Use precompiled ruby binaries (silences 2026.8.0 warning)
12
+ ruby.compile = false
9
13
 
10
14
  [tools]
11
- # Node.js - use fnm for faster switching
12
- # node = "lts"
15
+ # Node.js
16
+ node = ["lts", "24", "25"]
13
17
 
14
18
  # Python
15
- python = ["3.12", "3.11"]
19
+ python = ["3.12", "3.11", "3.14"]
16
20
 
17
21
  # Go
18
22
  go = "latest"
19
23
 
20
- # Rust (via rustup)
21
- # rust = "stable"
24
+ # Rust
25
+ rust = "latest"
22
26
 
23
27
  # Ruby
24
28
  ruby = "3.3"
@@ -32,6 +36,52 @@ deno = "latest"
32
36
  # Bun
33
37
  bun = "latest"
34
38
 
39
+ # Zig
40
+ zig = "latest"
41
+
42
+ # CLI Tools
43
+ atuin = "latest"
44
+ bat = "latest"
45
+ codex = "latest"
46
+ eza = "latest"
47
+ gping = "latest"
48
+ ripgrep = "latest"
49
+ ruff = "latest"
50
+ yazi = "latest"
51
+ zellij = "latest"
52
+ zoxide = "latest"
53
+ "aqua:twpayne/chezmoi" = "latest"
54
+ "aqua:junegunn/fzf" = "latest"
55
+ "aqua:FiloSottile/age" = "latest"
56
+ "aqua:sharkdp/hyperfine" = "latest"
57
+ "aqua:ollama/ollama" = "latest"
58
+ "aqua:Nukesor/pueue/pueue" = "4.0.4"
59
+ "aqua:Nukesor/pueue/pueued" = "4.0.4"
60
+ "aqua:dandavison/delta" = "latest"
61
+ fd = "latest"
62
+ "aqua:ClementTsang/bottom" = "latest"
63
+ "npm:tldr" = "latest"
64
+ "aqua:jesseduffield/lazygit" = "latest"
65
+ "aqua:jesseduffield/lazydocker" = "latest"
66
+
67
+ # Python tools
68
+ "pipx:poetry" = "latest"
69
+ uv = "latest"
70
+ "pipx:aider-chat" = "latest"
71
+ "pipx:shell-gpt" = "latest"
72
+
73
+ # AI tools
74
+ "npm:@anthropic-ai/claude-code" = "latest"
75
+ "npm:@github/copilot" = "latest"
76
+ "npm:@google/gemini-cli" = "latest"
77
+ "npm:codex-cli" = "latest"
78
+ "npm:opencode-ai" = "latest"
79
+ kiro-cli = "latest"
80
+ "npm:autohand-cli" = "latest"
81
+ "npm:@qwen-code/qwen-code" = "latest"
82
+ "npm:@guizmo-ai/zai-cli" = "latest"
83
+ "pipx:mistral-vibe" = "latest"
84
+
35
85
  # Task runners
36
86
  task = "latest"
37
87
  just = "latest"
@@ -39,3 +89,11 @@ just = "latest"
39
89
  [env]
40
90
  # Environment variables to set
41
91
  MISE_EXPERIMENTAL = "1"
92
+ GITHUB_TOKEN = "{{exec(command='gh auth token')}}"
93
+ # Build caches → /tmp (cleared on reboot)
94
+ GOCACHE = "/tmp/builds/go-cache"
95
+ GOTMPDIR = "/tmp/builds/go-tmp"
96
+ PIP_CACHE_DIR = "/tmp/builds/pip-cache"
97
+ UV_CACHE_DIR = "/tmp/builds/uv-cache"
98
+ ZIG_LOCAL_CACHE_DIR = "/tmp/builds/zig-cache"
99
+ ZIG_GLOBAL_CACHE_DIR = "/tmp/builds/zig-global-cache"
@@ -1,3 +1,4 @@
1
+ // Copyright (c) 2015-2026 Dotfiles. All rights reserved.
1
2
  /* global db, config, disableTelemetry */
2
3
  // MongoDB Shell Configuration (~/.config/mongosh/mongoshrc.js)
3
4
  // https://www.mongodb.com/docs/mongodb-shell/reference/configure-shell-settings/
@@ -0,0 +1,47 @@
1
+ # Copyright (c) 2015-2026 Dotfiles. All rights reserved.
2
+ # Playback
3
+ SPACE cycle pause
4
+ q quit
5
+ Q quit-watch-later
6
+ > playlist-next
7
+ < playlist-prev
8
+
9
+ # Seeking
10
+ RIGHT seek 5
11
+ LEFT seek -5
12
+ UP seek 60
13
+ DOWN seek -60
14
+ Shift+RIGHT seek 1 exact
15
+ Shift+LEFT seek -1 exact
16
+
17
+ # Speed
18
+ [ add speed -0.25
19
+ ] add speed 0.25
20
+ { add speed -0.5
21
+ } add speed 0.5
22
+ BS set speed 1.0
23
+
24
+ # Volume
25
+ m cycle mute
26
+ WHEEL_UP add volume 2
27
+ WHEEL_DOWN add volume -2
28
+
29
+ # Zoom
30
+ Ctrl+WHEEL_UP add video-zoom 0.1
31
+ Ctrl+WHEEL_DOWN add video-zoom -0.1
32
+ Ctrl+0 set video-zoom 0; set video-pan-x 0; set video-pan-y 0
33
+
34
+ # Subtitles
35
+ v cycle sub-visibility
36
+ j cycle sub
37
+ J cycle sub down
38
+
39
+ # Screenshot
40
+ s screenshot
41
+ S screenshot video
42
+
43
+ # Rotation
44
+ r cycle-values video-rotate 90 180 270 0
45
+
46
+ # Crop / Aspect
47
+ A cycle-values video-aspect-override "16:9" "4:3" "2.35:1" "-1"
@@ -0,0 +1,47 @@
1
+ # Copyright (c) 2015-2026 Dotfiles. All rights reserved.
2
+ # Video
3
+ profile=gpu-hq
4
+ vo=gpu-next
5
+ hwdec=auto-safe
6
+ gpu-api=vulkan
7
+
8
+ # Window
9
+ autofit-larger=90%x90%
10
+ keep-open=yes
11
+ cursor-autohide=1000
12
+
13
+ # Audio
14
+ volume=80
15
+ volume-max=150
16
+ audio-pitch-correction=yes
17
+
18
+ # Subtitles
19
+ sub-auto=fuzzy
20
+ sub-font="Inter"
21
+ sub-font-size=36
22
+ sub-border-size=2
23
+
24
+ # Screenshots
25
+ screenshot-format=png
26
+ screenshot-directory=~/Pictures/Screenshots
27
+ screenshot-template="%F-%P"
28
+
29
+ # OSD
30
+ osd-font="Inter"
31
+ osd-font-size=28
32
+ osd-duration=2000
33
+
34
+ # Cache
35
+ cache=yes
36
+ demuxer-max-bytes=400MiB
37
+ demuxer-max-back-bytes=150MiB
38
+
39
+ # Loop images and gifs
40
+ [extension.gif]
41
+ loop-file=inf
42
+ [extension.png]
43
+ loop-file=inf
44
+ [extension.jpg]
45
+ loop-file=inf
46
+ [extension.webp]
47
+ loop-file=inf
@@ -0,0 +1,327 @@
1
+ // Niri Configuration (v{{ .dotfiles_version }})
2
+ // Machine: {{ .chezmoi.hostname }} | Profile: {{ .profile }}
3
+ // KDL format: https://kdl.dev
4
+ {{- $hw := .hardware -}}
5
+ {{- $machine := .machine -}}
6
+ {{- if and $machine (ne $machine "") -}}
7
+ {{- $m := index .machines $machine -}}
8
+ {{- if $m -}}
9
+ {{- $hw = $m -}}
10
+ {{- end -}}
11
+ {{- end -}}
12
+ {{- $t := index .themes (default "macos-monterey-dark" .theme) -}}
13
+ {{- if not $t -}}{{- $t = index .themes "macos-monterey-dark" -}}{{- end }}
14
+ config-notification {
15
+ disable-failed
16
+ }
17
+
18
+ gestures {
19
+ hot-corners {
20
+ off
21
+ }
22
+ }
23
+
24
+ // Input device configuration.
25
+ // Find the full list of options on the wiki:
26
+ // https://github.com/YaLTeR/niri/wiki/Configuration:-Input
27
+ input {
28
+ keyboard {
29
+ xkb {
30
+ }
31
+ numlock
32
+ repeat-delay 250
33
+ repeat-rate 35
34
+ }
35
+
36
+ // Next sections include libinput settings.
37
+ // Omitting settings disables them, or leaves them at their default values.
38
+ // All commented-out settings here are examples, not defaults.
39
+ touchpad {
40
+ {{- if eq $hw.touchpad true }}
41
+ tap
42
+ dwt
43
+ dwtp
44
+ natural-scroll
45
+ {{- if ne (float64 $hw.touchpad_accel) 0.0 }}
46
+ accel-speed {{ $hw.touchpad_accel }}
47
+ {{- end }}
48
+ {{- if and $hw.touchpad_accel_profile (ne $hw.touchpad_accel_profile "adaptive") }}
49
+ accel-profile "{{ $hw.touchpad_accel_profile }}"
50
+ {{- end }}
51
+ {{- if eq $hw.profile "desktop" }}
52
+ disabled-on-external-mouse
53
+ {{- end }}
54
+ {{- else }}
55
+ off
56
+ {{- end }}
57
+ }
58
+
59
+ mouse {
60
+ {{- if eq $hw.profile "desktop" }}
61
+ accel-profile "flat"
62
+ {{- end }}
63
+ }
64
+
65
+ trackpoint {
66
+ // off
67
+ // natural-scroll
68
+ // accel-speed 0.2
69
+ // accel-profile "flat"
70
+ // scroll-method "on-button-down"
71
+ // scroll-button 273
72
+ // scroll-button-lock
73
+ // middle-emulation
74
+ }
75
+
76
+ // Uncomment this to make the mouse warp to the center of newly focused windows.
77
+ // warp-mouse-to-focus
78
+
79
+ // Focus windows and outputs automatically when moving the mouse into them.
80
+ // Setting max-scroll-amount="0%" makes it work only on windows already fully on screen.
81
+ // focus-follows-mouse max-scroll-amount="0%"
82
+
83
+ disable-power-key-handling
84
+ }
85
+
86
+ cursor {
87
+ hide-when-typing
88
+ hide-after-inactive-ms 3000
89
+ }
90
+
91
+ clipboard {
92
+ disable-primary
93
+ }
94
+ // Output configuration — hardware-aware via .chezmoidata/hardware.toml
95
+ // Run `niri msg outputs` to discover output names.
96
+ {{- if and $hw.output_name $hw.output_mode }}
97
+ output "{{ $hw.output_name }}" {
98
+ mode "{{ $hw.output_mode }}"
99
+ scale {{ $hw.scale }}
100
+ {{- if gt (int $hw.max_refresh) 60 }}
101
+ variable-refresh-rate
102
+ {{- end }}
103
+ }
104
+ {{- end }}
105
+ // Settings that influence how windows are positioned and sized.
106
+ // Find more information on the wiki:
107
+ // https://github.com/YaLTeR/niri/wiki/Configuration:-Layout
108
+ layout {
109
+ // Set gaps around windows in logical pixels.
110
+ background-color "transparent"
111
+ // When to center a column when changing focus, options are:
112
+ // - "never", default behavior, focusing an off-screen column will keep at the left
113
+ // or right edge of the screen.
114
+ // - "always", the focused column will always be centered.
115
+ // - "on-overflow", focusing a column will center it if it doesn't fit
116
+ // together with the previously focused column.
117
+ center-focused-column "on-overflow"
118
+ always-center-single-column
119
+ // You can customize the widths that "switch-preset-column-width" (Mod+R) toggles between.
120
+ preset-column-widths {
121
+ // Proportion sets the width as a fraction of the output width, taking gaps into account.
122
+ // For example, you can perfectly fit four windows sized "proportion 0.25" on an output.
123
+ // The default preset widths are 1/3, 1/2 and 2/3 of the output.
124
+ proportion 0.33333
125
+ proportion 0.5
126
+ proportion 0.66667
127
+ // Fixed sets the width in logical pixels exactly.
128
+ // fixed 1920
129
+ }
130
+ // You can also customize the heights that "switch-preset-window-height" (Mod+Shift+R) toggles between.
131
+ // preset-window-heights { }
132
+ // You can change the default width of the new windows.
133
+ default-column-width { proportion 0.5; }
134
+ // If you leave the brackets empty, the windows themselves will decide their initial width.
135
+ // default-column-width {}
136
+ // By default focus ring and border are rendered as a solid background rectangle
137
+ // behind windows. That is, they will show up through semitransparent windows.
138
+ // This is because windows using client-side decorations can have an arbitrary shape.
139
+ //
140
+ // If you don't like that, you should uncomment `prefer-no-csd` below.
141
+ // Niri will draw focus ring and border *around* windows that agree to omit their
142
+ // client-side decorations.
143
+ //
144
+ // Alternatively, you can override it with a window rule called
145
+ // `draw-border-with-background`.
146
+ focus-ring {
147
+ active-color "{{ $t.ui.accent }}"
148
+ inactive-color "{{ $t.ui.border }}"
149
+ urgent-color "{{ $t.ui.error }}"
150
+ }
151
+ border {
152
+ active-color "{{ $t.ui.accent }}"
153
+ inactive-color "{{ $t.ui.border }}"
154
+ urgent-color "{{ $t.ui.error }}"
155
+ }
156
+ shadow {
157
+ softness 15
158
+ spread 5
159
+ offset x=0 y=5
160
+ color "{{ $t.term.bg }}70"
161
+ }
162
+ struts {
163
+ }
164
+ }
165
+ layer-rule {
166
+ match namespace="^quickshell$"
167
+ place-within-backdrop true
168
+ }
169
+ overview {
170
+ workspace-shadow {
171
+ off
172
+ }
173
+ }
174
+ // Add lines like this to spawn processes at startup.
175
+ // Note that running niri as a session supports xdg-desktop-autostart,
176
+ // which may be more convenient to use.
177
+ // See the binds section below for more spawn examples.
178
+ // This line starts waybar, a commonly used bar for Wayland compositors.
179
+
180
+ // Idle management — lock screen after 5 min, monitors off after 10 min
181
+ spawn-at-startup "swayidle" "-w" "timeout" "300" "swaylock -f" "timeout" "600" "niri msg action power-off-monitors" "before-sleep" "swaylock -f"
182
+
183
+ // Clipboard persistence — text and image history via cliphist
184
+ spawn-at-startup "wl-paste" "--type" "text" "--watch" "cliphist" "store"
185
+ spawn-at-startup "wl-paste" "--type" "image" "--watch" "cliphist" "store"
186
+
187
+ environment {
188
+ XDG_CURRENT_DESKTOP "niri"
189
+ }
190
+ hotkey-overlay {
191
+ skip-at-startup
192
+ }
193
+ prefer-no-csd
194
+ screenshot-path "~/Pictures/Screenshots/Screenshot from %Y-%m-%d %H-%M-%S.png"
195
+ animations {
196
+ workspace-switch {
197
+ spring damping-ratio=1.0 stiffness=1000 epsilon=0.0001
198
+ }
199
+ window-open {
200
+ duration-ms 120
201
+ curve "ease-out-expo"
202
+ }
203
+ window-close {
204
+ duration-ms 120
205
+ curve "ease-out-quad"
206
+ }
207
+ horizontal-view-movement {
208
+ spring damping-ratio=1.0 stiffness=800 epsilon=0.0001
209
+ }
210
+ window-movement {
211
+ spring damping-ratio=1.0 stiffness=800 epsilon=0.0001
212
+ }
213
+ window-resize {
214
+ spring damping-ratio=1.0 stiffness=800 epsilon=0.0001
215
+ }
216
+ config-notification-open-close {
217
+ spring damping-ratio=1.0 stiffness=900 epsilon=0.001
218
+ }
219
+ screenshot-ui-open {
220
+ duration-ms 150
221
+ curve "ease-out-quad"
222
+ }
223
+ overview-open-close {
224
+ spring damping-ratio=1.0 stiffness=800 epsilon=0.0001
225
+ }
226
+ }
227
+ // Window rules let you adjust behavior for individual windows.
228
+ // Find more information on the wiki:
229
+ // https://github.com/YaLTeR/niri/wiki/Configuration:-Window-Rules
230
+ // Work around WezTerm's initial configure bug
231
+ // by setting an empty default-column-width.
232
+ window-rule {
233
+ // This regular expression is intentionally made as specific as possible,
234
+ // since this is the default config, and we want no false positives.
235
+ // You can get away with just app-id="wezterm" if you want.
236
+ match app-id=r#"^org\.wezfurlong\.wezterm$"#
237
+ default-column-width {}
238
+ }
239
+ window-rule {
240
+ match app-id=r#"^org\.gnome\."#
241
+ draw-border-with-background false
242
+ geometry-corner-radius 12
243
+ clip-to-geometry true
244
+ }
245
+ window-rule {
246
+ match app-id=r#"^gnome-control-center$"#
247
+ match app-id=r#"^pavucontrol$"#
248
+ match app-id=r#"^nm-connection-editor$"#
249
+ default-column-width { proportion 0.5; }
250
+ open-floating false
251
+ }
252
+ window-rule {
253
+ match app-id=r#"^gnome-calculator$"#
254
+ match app-id=r#"^galculator$"#
255
+ match app-id=r#"^blueman-manager$"#
256
+ match app-id=r#"^org\.gnome\.Nautilus$"#
257
+ match app-id=r#"^xdg-desktop-portal$"#
258
+ open-floating true
259
+ }
260
+ window-rule {
261
+ match app-id=r#"^steam$"# title=r#"^notificationtoasts_\d+_desktop$"#
262
+ default-floating-position x=10 y=10 relative-to="bottom-right"
263
+ open-focused false
264
+ }
265
+ window-rule {
266
+ match app-id=r#"^org\.wezfurlong\.wezterm$"#
267
+ match app-id="Alacritty"
268
+ match app-id="zen"
269
+ match app-id="com.mitchellh.ghostty"
270
+ match app-id="kitty"
271
+ draw-border-with-background false
272
+ }
273
+ window-rule {
274
+ match app-id="zoom"
275
+ open-floating true
276
+ }
277
+ window-rule {
278
+ match app-id="flameshot"
279
+ open-floating true
280
+ }
281
+ // Open dms windows as floating by default
282
+ window-rule {
283
+ match app-id=r#"org.quickshell$"#
284
+ open-floating true
285
+ }
286
+ // Visual focus hierarchy — dim unfocused windows
287
+ window-rule {
288
+ match is-focused=false
289
+ opacity 0.9
290
+ }
291
+ // Block sensitive apps from screen capture
292
+ window-rule {
293
+ match app-id=r#"^org\.keepassxc\.KeePassXC$"#
294
+ match app-id=r#"^org\.gnome\.World\.Secrets$"#
295
+ match app-id=r#"^1Password$"#
296
+ block-out-from "screen-capture"
297
+ }
298
+ // Firefox PiP — float with fixed size, bottom-right
299
+ window-rule {
300
+ match app-id=r#"firefox$"# title="^Picture-in-Picture$"
301
+ open-floating true
302
+ default-column-width { fixed 480; }
303
+ default-window-height { fixed 270; }
304
+ default-floating-position x=32 y=32 relative-to="bottom-right"
305
+ }
306
+ debug {
307
+ honor-xdg-activation-with-invalid-serial
308
+ }
309
+
310
+ // Override to disable super+tab
311
+ recent-windows {
312
+ binds {
313
+ Alt+Tab { next-window scope="output"; }
314
+ Alt+Shift+Tab { previous-window scope="output"; }
315
+ Alt+grave { next-window filter="app-id"; }
316
+ Alt+Shift+grave { previous-window filter="app-id"; }
317
+ }
318
+ }
319
+
320
+ // Include dms files (colors owned by chezmoi, not dms/colors.kdl)
321
+ include "dms/layout.kdl"
322
+ include "dms/alttab.kdl"
323
+ include "dms/binds.kdl"
324
+ include "dms/outputs.kdl"
325
+ include "dms/cursor.kdl"
326
+
327
+ include "dms/windowrules.kdl"
@@ -0,0 +1,18 @@
1
+ # Nushell aliases — bridged from bash alias library (Generated by Chezmoi)
2
+ # Edit .chezmoitemplates/aliases/ source files, not this file.
3
+ #
4
+ # Architecture: env.nu generates ~/.cache/nushell/bash-aliases.nu via bash bridge.
5
+ # This file is sourced from config.nu and loads the cached aliases.
6
+ # Only simple command aliases are bridged; complex bash syntax is skipped.
7
+ #
8
+ # Data flow: .chezmoitemplates/aliases/ -> 90/91-ux-aliases*.sh -> bash bridge -> cache
9
+
10
+ source ~/.cache/nushell/bash-aliases.nu
11
+
12
+ alias d = dot
13
+ alias dv = dot --version
14
+ alias dd = dot doctor
15
+ alias dm = dot mode list
16
+ alias da = dot agent list
17
+ alias dmc = dot mcp registry
18
+ alias datt = dot attest --json
@@ -0,0 +1,52 @@
1
+ # Nushell completions for 'dot' CLI
2
+ # 🅳🅾🆃🅵🅸🅻🅴🆂 (v{{ .dotfiles_version }})
3
+
4
+ export extern dot [
5
+ command?: string@dot_commands # The command to execute
6
+ ...args: string # Arguments to the command
7
+ ]
8
+
9
+ def dot_commands [] {
10
+ [
11
+ { value: "apply", description: "Apply dotfiles (chezmoi apply)" }
12
+ { value: "sync", description: "Apply dotfiles (alias of apply)" }
13
+ { value: "update", description: "Pull latest changes and apply" }
14
+ { value: "clean-cache", description: "Clear shell caches" }
15
+ { value: "prewarm", description: "Regenerate shell caches" }
16
+ { value: "cl", description: "Claude with context patterns" }
17
+ { value: "copilot", description: "GitHub Copilot with context patterns" }
18
+ { value: "gemini", description: "Gemini with context patterns" }
19
+ { value: "kiro", description: "Kiro with context patterns" }
20
+ { value: "sgpt", description: "Shell-GPT with context" }
21
+ { value: "ollama", description: "Ollama with context" }
22
+ { value: "opencode", description: "OpenCode with context" }
23
+ { value: "aider", description: "Aider with context" }
24
+ { value: "add", description: "Add a file to chezmoi source" }
25
+ { value: "diff", description: "Show chezmoi diff" }
26
+ { value: "status", description: "Show configuration drift" }
27
+ { value: "remove", description: "Safely remove a managed file" }
28
+ { value: "cd", description: "Print source directory path" }
29
+ { value: "patterns", description: "Manage AI steering patterns" }
30
+ { value: "commit", description: "AI-powered conventional commit" }
31
+ { value: "edit", description: "Open chezmoi source in $EDITOR" }
32
+ { value: "doctor", description: "Check system health" }
33
+ { value: "heal", description: "Auto-repair issues" }
34
+ { value: "health", description: "Run health check" }
35
+ { value: "smoke-test", description: "Toolchain verification" }
36
+ { value: "chaos", description: "Simulate corruption" }
37
+ { value: "bundle", description: "Create offline archive" }
38
+ { value: "drift", description: "Drift dashboard" }
39
+ { value: "history", description: "History analysis" }
40
+ { value: "benchmark", description: "Startup benchmark" }
41
+ { value: "perf", description: "Show performance mode" }
42
+ { value: "theme", description: "Switch terminal theme" }
43
+ { value: "wallpaper", description: "Apply a wallpaper" }
44
+ { value: "fonts", description: "Install Nerd Fonts" }
45
+ { value: "secrets-init", description: "Init age key" }
46
+ { value: "secrets", description: "Edit encrypted secrets" }
47
+ { value: "upgrade", description: "Update all tools" }
48
+ { value: "tools", description: "Show tools catalog" }
49
+ { value: "new", description: "Create new project" }
50
+ { value: "docs", description: "Show README" }
51
+ ]
52
+ }
@@ -0,0 +1,86 @@
1
+ # 🅳🅾🆃🅵🅸🅻🅴🆂 (v{{ .dotfiles_version }}) - Nushell Config
2
+ # <https://dotfiles.io>
3
+
4
+ $env.config = {
5
+ show_banner: false,
6
+ table: {
7
+ mode: rounded
8
+ },
9
+ completions: {
10
+ case_sensitive: false,
11
+ quick: true,
12
+ partial: true,
13
+ algorithm: "prefix"
14
+ },
15
+ history: {
16
+ max_size: 100000,
17
+ sync_on_enter: true,
18
+ file_format: "sqlite"
19
+ }
20
+ }
21
+
22
+ # Source Shell Tool Integrations (cache generated by env.nu)
23
+ source ~/.cache/nushell/starship.nu
24
+ source ~/.cache/nushell/zoxide.nu
25
+ source ~/.cache/nushell/atuin.nu
26
+ source ~/.cache/nushell/carapace.nu
27
+
28
+ # Source dot CLI completions
29
+ source ~/.config/nushell/completions.nu
30
+
31
+ # Source bridged aliases and function wrappers from bash library
32
+ source ~/.config/nushell/aliases.nu
33
+ source ~/.config/nushell/functions.nu
34
+
35
+ # Auto-start Pueue daemon if not running
36
+ if (which pueued | length) > 0 {
37
+ let status = (do -i { pueue status } | complete)
38
+ if $status.exit_code != 0 {
39
+ pueued -d
40
+ }
41
+ }
42
+
43
+ # Aliases - simple structured wrappers
44
+ alias l = ls -l
45
+ alias ll = ls -la
46
+ alias la = ls -a
47
+ alias c = clear
48
+ alias q = exit
49
+ alias g = git
50
+
51
+ # Yazi integration to cd on quit
52
+ def --env yy [...args] {
53
+ let tmp = (mktemp -t "yazi-cwd.XXXXXX")
54
+ yazi ...$args --cwd-file $tmp
55
+ let cwd = (open $tmp)
56
+ if $cwd != "" and $cwd != $env.PWD {
57
+ cd $cwd
58
+ }
59
+ rm -fp $tmp
60
+ }
61
+
62
+ # Pueue Background Task Wrappers (Nushell Style)
63
+ def silent-run [cmd: string] {
64
+ pueue add -- $cmd
65
+ }
66
+
67
+ def notify-run [cmd: string] {
68
+ let task_id = (pueue add --print-id -- $cmd)
69
+ echo $"Task ($task_id) submitted: ($cmd)"
70
+ # Nu doesn't have background shells like bash, but we can call bash
71
+ bash -c $"pueue wait ($task_id) && echo '✅ Task ($task_id) finished: ($cmd)' &"
72
+ }
73
+
74
+ def bg-upgrade [] {
75
+ echo "🚀 Starting background upgrades..."
76
+ if (which brew | length) > 0 { silent-run "brew upgrade" }
77
+ if (which nix | length) > 0 { silent-run "nix flake update" }
78
+ silent-run "chezmoi update"
79
+ echo "Check status with 'pueue status'"
80
+ }
81
+
82
+ # Data pipelines examples for productivity
83
+ def "find ports" [] {
84
+ sys host | get name
85
+ # Example command to show how nu handles data
86
+ }