@sebastienrousseau/dotfiles 0.2.469 → 0.2.481

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 (490) hide show
  1. package/CHANGELOG.md +285 -0
  2. package/README.md +236 -319
  3. package/docs/ALIASES.md +128 -0
  4. package/docs/ARCHITECTURE.md +229 -0
  5. package/docs/COMPLIANCE.md +47 -0
  6. package/docs/COPYRIGHT +7 -0
  7. package/docs/FEATURES.md +166 -0
  8. package/docs/FONTS.md +147 -0
  9. package/docs/INSTALL.md +119 -0
  10. package/docs/KEYS.md +40 -0
  11. package/docs/KEY_ROTATION.md +219 -0
  12. package/docs/LEGACY_ROADMAP.md +142 -0
  13. package/docs/NEOVIM_IDE_GUIDE.md +52 -0
  14. package/docs/OPERATIONS.md +130 -0
  15. package/docs/PLAN.md +161 -0
  16. package/docs/PR_DESCRIPTION.md +149 -0
  17. package/docs/README.md +269 -0
  18. package/docs/REPO_AUDIT.md +23 -0
  19. package/docs/ROADMAP.md +148 -0
  20. package/docs/SCREENSHOTS.md +116 -0
  21. package/docs/SECRETS.md +76 -0
  22. package/docs/SECURITY.md +30 -0
  23. package/docs/SECURITY_CHECKLIST.md +25 -0
  24. package/docs/TASK.md +99 -0
  25. package/docs/TESTING.md +190 -0
  26. package/docs/TOOLS.md +146 -0
  27. package/docs/TROUBLESHOOTING.md +112 -0
  28. package/docs/UTILS.md +105 -0
  29. package/docs/WALKTHROUGH.md +165 -0
  30. package/docs/WSL2_NIX_TROUBLESHOOTING.md +723 -0
  31. package/docs/adr/ADR-001-ci-cd-pipeline.md +101 -0
  32. package/docs/adr/ADR-002-shell-performance.md +121 -0
  33. package/docs/adr/ADR-003-security-first.md +140 -0
  34. package/docs/adr/ADR-004-cli-architecture.md +157 -0
  35. package/docs/adr/ADR-005-chezmoi-choice.md +89 -0
  36. package/docs/adr/ADR-006-shell-selection.md +115 -0
  37. package/docs/adr/README.md +33 -0
  38. package/docs/themes/README.md +20 -0
  39. package/dot_config/aider/aider.conf.yml +32 -0
  40. package/dot_config/alacritty/alacritty.toml.tmpl +483 -0
  41. package/dot_config/ansible/ansible.cfg.tmpl +11 -0
  42. package/dot_config/atuin/config.toml +23 -0
  43. package/dot_config/bat/config +8 -0
  44. package/dot_config/brave-flags.conf.tmpl +7 -0
  45. package/dot_config/btop/btop.conf +16 -0
  46. package/dot_config/btop/themes/tokyonight.theme +34 -0
  47. package/dot_config/bun/bunfig.toml.tmpl +33 -0
  48. package/dot_config/claude/mcp_servers.json +49 -0
  49. package/dot_config/clippy.toml +55 -0
  50. package/dot_config/containers/containers.conf +14 -0
  51. package/dot_config/curl/dot_curlrc +18 -0
  52. package/dot_config/dlv/config.yml +39 -0
  53. package/dot_config/docker/config.json.tmpl +15 -0
  54. package/dot_config/dotfiles/boot/README.md +11 -0
  55. package/dot_config/dotfiles/grub/README.md +11 -0
  56. package/dot_config/dotfiles/lock/README.md +11 -0
  57. package/dot_config/dotfiles/versions.env.tmpl +19 -0
  58. package/dot_config/duf/duf.conf +6 -0
  59. package/dot_config/duti/defaults.duti +5 -0
  60. package/dot_config/emoji/emoji.txt +34 -0
  61. package/dot_config/fastfetch/config.jsonc +28 -0
  62. package/dot_config/firefox/user.js +8 -0
  63. package/dot_config/flatpak/flatpak.list +4 -0
  64. package/dot_config/fontconfig/fonts.conf.tmpl +44 -0
  65. package/dot_config/gh/config.yml +12 -0
  66. package/dot_config/ghostty/config.tmpl +661 -0
  67. package/dot_config/git/attributes +12 -0
  68. package/dot_config/git/config.tmpl +77 -0
  69. package/dot_config/git/ignore +27 -0
  70. package/dot_config/gnupg/gpg-agent.conf.tmpl +11 -0
  71. package/dot_config/go/aliases.sh +61 -0
  72. package/dot_config/go/env.sh +24 -0
  73. package/dot_config/go/golangci.yml +118 -0
  74. package/dot_config/go/gopls.json +30 -0
  75. package/dot_config/goose/config.yaml +29 -0
  76. package/dot_config/gtk-3.0/gtk.css.tmpl +305 -0
  77. package/dot_config/gtk-3.0/settings.ini.tmpl +66 -0
  78. package/dot_config/gtk-4.0/gtk.css.tmpl +309 -0
  79. package/dot_config/gtk-4.0/settings.ini.tmpl +21 -0
  80. package/dot_config/htop/htoprc +20 -0
  81. package/dot_config/ice/README.md +13 -0
  82. package/dot_config/inputrc +2 -0
  83. package/dot_config/ipython/profile_default/ipython_config.py.tmpl +5 -0
  84. package/dot_config/just/justfile +104 -0
  85. package/dot_config/k9s/config.yaml.tmpl +65 -0
  86. package/dot_config/k9s/skins/catppuccin-mocha.yaml +116 -0
  87. package/dot_config/karabiner/karabiner.json +14 -0
  88. package/dot_config/kitty/kitty.conf.tmpl +517 -0
  89. package/dot_config/lazydocker/config.yml +186 -0
  90. package/dot_config/lazygit/config.yml +23 -0
  91. package/dot_config/lsd/config.yaml +19 -0
  92. package/dot_config/mas/masapps.txt +5 -0
  93. package/dot_config/minikube/config.json +13 -0
  94. package/dot_config/mise/config.toml +41 -0
  95. package/dot_config/mongosh/mongoshrc.js +67 -0
  96. package/dot_config/mycli/myclirc +67 -0
  97. package/dot_config/nano/nanorc +28 -0
  98. package/dot_config/ncdu/config +12 -0
  99. package/dot_config/nvim/init.lua +4 -0
  100. package/dot_config/nvim/lazy-lock.json +27 -0
  101. package/dot_config/nvim/lua/config/autocmds.lua +63 -0
  102. package/dot_config/nvim/lua/config/keymaps.lua +87 -0
  103. package/dot_config/nvim/lua/config/lazy.lua +34 -0
  104. package/dot_config/nvim/lua/config/options.lua +48 -0
  105. package/dot_config/nvim/lua/plugins/coding.lua +234 -0
  106. package/dot_config/nvim/lua/plugins/dap.lua +201 -0
  107. package/dot_config/nvim/lua/plugins/editor.lua +59 -0
  108. package/dot_config/nvim/lua/plugins/git.lua +9 -0
  109. package/dot_config/nvim/lua/plugins/lsp.lua +221 -0
  110. package/dot_config/nvim/lua/plugins/markdown.lua +17 -0
  111. package/dot_config/nvim/lua/plugins/rust.lua +33 -0
  112. package/dot_config/nvim/lua/plugins/sessions.lua +32 -0
  113. package/dot_config/nvim/lua/plugins/ui.lua +537 -0
  114. package/dot_config/nvim/snippets/all.lua +9 -0
  115. package/dot_config/nvim/snippets/python.lua +16 -0
  116. package/dot_config/pip/pip.conf.tmpl +32 -0
  117. package/dot_config/pypoetry/config.toml.tmpl +6 -0
  118. package/dot_config/pyrightconfig.json.tmpl +5 -0
  119. package/dot_config/raycast/README.md +13 -0
  120. package/dot_config/redis/redisclirc +41 -0
  121. package/dot_config/shell/00-container-detect.sh +53 -0
  122. package/dot_config/shell/00-core-paths.sh.tmpl +95 -0
  123. package/dot_config/shell/05-core-safety.sh.tmpl +13 -0
  124. package/dot_config/shell/40-ls-colors.sh.tmpl +31 -0
  125. package/dot_config/shell/50-logic-functions.sh.tmpl +10 -0
  126. package/dot_config/shell/90-theme-switch.sh +70 -0
  127. package/dot_config/shell/90-ux-aliases.sh.tmpl +35 -0
  128. package/dot_config/shell/91-ux-aliases-lazy.sh.tmpl +23 -0
  129. package/dot_config/shell/Brewfile +207 -0
  130. package/dot_config/shell/Brewfile.cask +92 -0
  131. package/dot_config/shell/Brewfile.cli +119 -0
  132. package/dot_config/shell/README.md +267 -0
  133. package/dot_config/shell/custom/context_suggest.zsh +68 -0
  134. package/dot_config/shell/custom/error_analysis.zsh +45 -0
  135. package/dot_config/sops/dot_sops.yaml +23 -0
  136. package/dot_config/starship.toml.tmpl +124 -0
  137. package/dot_config/task/Taskfile.yml +86 -0
  138. package/dot_config/tflint/tflint.hcl.tmpl +9 -0
  139. package/dot_config/tmux/tmux.conf.tmpl +181 -0
  140. package/dot_config/topgrade/topgrade.toml.tmpl +42 -0
  141. package/dot_config/vscode/extensions.txt +11 -0
  142. package/dot_config/vscode/settings.json.tmpl +123 -0
  143. package/dot_config/waybar/style.css +8 -0
  144. package/dot_config/wezterm/wezterm.lua.tmpl +236 -0
  145. package/dot_config/wget/wgetrc +12 -0
  146. package/dot_config/yarn/yarnrc.yml.tmpl +36 -0
  147. package/dot_config/yazi/yazi.toml +40 -0
  148. package/dot_config/zellij/config.kdl +79 -0
  149. package/dot_config/zsh/dot_zprofile +13 -0
  150. package/dot_config/zsh/dot_zshenv +6 -0
  151. package/dot_config/zsh/dot_zshrc.tmpl +199 -0
  152. package/dot_config/zsh/rc.d/05-ssh-agent.zsh +5 -0
  153. package/dot_config/zsh/rc.d/10-env.zsh.tmpl +28 -0
  154. package/dot_config/zsh/rc.d/20-zinit.zsh.tmpl +22 -0
  155. package/dot_config/zsh/rc.d/30-options.zsh.tmpl +123 -0
  156. package/dot_config/zsh/rc.d/40-bell.zsh.tmpl +20 -0
  157. package/dot_config/zsh/rc.d/50-login-fortune.zsh.tmpl +9 -0
  158. package/dot_local/bin/executable_ai_core +130 -0
  159. package/dot_local/bin/executable_b64 +59 -0
  160. package/dot_local/bin/executable_dot +178 -0
  161. package/dot_local/bin/executable_dot_completion +55 -0
  162. package/dot_local/bin/executable_epoch +62 -0
  163. package/dot_local/bin/executable_extract +108 -0
  164. package/dot_local/bin/executable_git-ai-commit +160 -0
  165. package/dot_local/bin/executable_git-ai-diff +154 -0
  166. package/dot_local/bin/executable_hash +123 -0
  167. package/dot_local/bin/executable_hex +79 -0
  168. package/dot_local/bin/executable_ip +37 -0
  169. package/dot_local/bin/executable_jsonv +54 -0
  170. package/dot_local/bin/executable_jwt +78 -0
  171. package/dot_local/bin/executable_kill-port +59 -0
  172. package/dot_local/bin/executable_lorem +103 -0
  173. package/dot_local/bin/executable_regex +96 -0
  174. package/dot_local/bin/executable_tmux-sessionizer +187 -0
  175. package/dot_local/bin/executable_tour +137 -0
  176. package/dot_local/bin/executable_update +108 -0
  177. package/dot_local/bin/executable_uuid +57 -0
  178. package/dot_local/bin/executable_yamlv +39 -0
  179. package/dot_local/bin/executable_zig-install +89 -0
  180. package/dot_local/bin/voice_ops +7 -0
  181. package/dot_local/share/bash-completion/completions/dot +54 -0
  182. package/dot_local/share/zsh/completions/.keep +0 -0
  183. package/install.sh +255 -0
  184. package/package.json +52 -76
  185. package/scripts/ci/validate-ci-config.sh +222 -0
  186. package/scripts/demo/record.sh +41 -0
  187. package/scripts/diagnostics/benchmark.sh +201 -0
  188. package/scripts/diagnostics/doctor.sh +115 -0
  189. package/scripts/diagnostics/drift-dashboard.sh +26 -0
  190. package/scripts/diagnostics/health.sh +356 -0
  191. package/scripts/diagnostics/history-analysis.sh +77 -0
  192. package/scripts/diagnostics/security-score.sh +392 -0
  193. package/scripts/diagnostics/verify_state.sh +60 -0
  194. package/scripts/dot/commands/appearance.sh +63 -0
  195. package/scripts/dot/commands/core.sh +130 -0
  196. package/scripts/dot/commands/diagnostics.sh +100 -0
  197. package/scripts/dot/commands/meta.sh +117 -0
  198. package/scripts/dot/commands/restore.sh +209 -0
  199. package/scripts/dot/commands/secrets.sh +81 -0
  200. package/scripts/dot/commands/security.sh +73 -0
  201. package/scripts/dot/commands/tools.sh +228 -0
  202. package/scripts/dot/lib/utils.sh +72 -0
  203. package/scripts/fonts/install-nerd-fonts.sh +59 -0
  204. package/scripts/fonts/patch-fonts.sh +34 -0
  205. package/scripts/ops/chezmoi-apply.sh +42 -0
  206. package/scripts/ops/chezmoi-diff.sh +14 -0
  207. package/scripts/ops/chezmoi-remove.sh +43 -0
  208. package/scripts/ops/chezmoi-update.sh +16 -0
  209. package/scripts/ops/heal.sh +466 -0
  210. package/scripts/ops/health-check.sh +380 -0
  211. package/scripts/ops/rollback.sh +531 -0
  212. package/scripts/ops/teleport.sh +32 -0
  213. package/scripts/secrets/age-init.sh +69 -0
  214. package/scripts/secrets/create-secrets-file.sh +44 -0
  215. package/scripts/secrets/encrypt-ssh-key.sh +42 -0
  216. package/scripts/security/backup.sh +17 -0
  217. package/scripts/security/dns-doh.sh +29 -0
  218. package/scripts/security/encryption-check.sh +39 -0
  219. package/scripts/security/enforce-policies.sh +339 -0
  220. package/scripts/security/firewall.sh +34 -0
  221. package/scripts/security/lock-configs.sh +57 -0
  222. package/scripts/security/lock-screen.sh +33 -0
  223. package/scripts/security/manage-secrets.sh +415 -0
  224. package/scripts/security/telemetry-kill.sh +28 -0
  225. package/scripts/security/usb-safety.sh +29 -0
  226. package/scripts/tests/README.md +241 -0
  227. package/scripts/tests/benchmark.sh +91 -0
  228. package/scripts/tests/framework/assertions.sh +283 -0
  229. package/scripts/tests/framework/mocks.sh +201 -0
  230. package/scripts/tests/framework/test_runner.sh +189 -0
  231. package/scripts/tests/integration/test_install.sh +237 -0
  232. package/scripts/tests/performance/benchmark_runner.sh +156 -0
  233. package/scripts/tests/performance/regression_check.sh +73 -0
  234. package/scripts/tests/performance/stress_test.sh +65 -0
  235. package/scripts/tests/test-aliases.sh +25 -0
  236. package/scripts/tests/test-docker.sh +48 -0
  237. package/scripts/tests/unit/test_ai_aliases.sh +158 -0
  238. package/scripts/tests/unit/test_ai_cli_checks.sh +47 -0
  239. package/scripts/tests/unit/test_backup.sh +227 -0
  240. package/scripts/tests/unit/test_case_functions.sh +238 -0
  241. package/scripts/tests/unit/test_cd_aliases.sh +367 -0
  242. package/scripts/tests/unit/test_dot_cli.sh +217 -0
  243. package/scripts/tests/unit/test_encode64.sh +67 -0
  244. package/scripts/tests/unit/test_environment.sh +78 -0
  245. package/scripts/tests/unit/test_extract.sh +163 -0
  246. package/scripts/tests/unit/test_framework_edge_cases.sh +113 -0
  247. package/scripts/tests/unit/test_genpass.sh +298 -0
  248. package/scripts/tests/unit/test_install_edge_cases.sh +167 -0
  249. package/scripts/tests/unit/test_installers.sh +172 -0
  250. package/scripts/tests/unit/test_keygen.sh +68 -0
  251. package/scripts/tests/unit/test_logging.sh +96 -0
  252. package/scripts/tests/unit/test_os_detection_comprehensive.sh +388 -0
  253. package/scripts/tests/unit/test_package_managers_comprehensive.sh +321 -0
  254. package/scripts/tests/unit/test_prependpath.sh +66 -0
  255. package/scripts/tests/unit/test_prependpath_refactored.sh +89 -0
  256. package/scripts/tests/unit/test_rd.sh +230 -0
  257. package/scripts/tests/unit/test_security_fixes.sh +130 -0
  258. package/scripts/tests/unit/test_security_scripts.sh +87 -0
  259. package/scripts/tests/unit/test_template_validation.sh +238 -0
  260. package/scripts/tests/unit/test_utility_functions.sh +144 -0
  261. package/scripts/tests/unit/test_wave1_alias_split.sh +132 -0
  262. package/scripts/tests/unit/test_wave1_ci_pinning.sh +61 -0
  263. package/scripts/tests/unit/test_wave1_gitleaks_config.sh +52 -0
  264. package/scripts/tests/unit/test_wave1_heal_fixes.sh +97 -0
  265. package/scripts/tests/unit/test_wave1_install_gpg.sh +35 -0
  266. package/scripts/tests/unit/test_wave1_zshenv_path.sh +89 -0
  267. package/scripts/tests/unit/test_wave1_zshrc_lazy_hook.sh +115 -0
  268. package/scripts/tests/unit/test_wave2_dot_new_guard.sh +75 -0
  269. package/scripts/tests/unit/test_zipf.sh +76 -0
  270. package/scripts/theme/apply-gnome-theme.sh +297 -0
  271. package/scripts/theme/install-boot-logo.sh +61 -0
  272. package/scripts/theme/install-catppuccin-themes.sh +346 -0
  273. package/scripts/theme/install-cursors.sh +24 -0
  274. package/scripts/theme/install-file-icons.sh +25 -0
  275. package/scripts/theme/install-grub-theme.sh +51 -0
  276. package/scripts/theme/install-lock-icon.sh +29 -0
  277. package/scripts/theme/switch.sh +250 -0
  278. package/scripts/theme/wallpaper-rotate.sh +82 -0
  279. package/scripts/theme/wallpaper-sync.sh +42 -0
  280. package/scripts/tools/cmatrix.sh +20 -0
  281. package/scripts/tools/detect-collisions.py +84 -0
  282. package/scripts/tools/emoji-picker.sh +45 -0
  283. package/scripts/tools/figlet-banner.sh +17 -0
  284. package/scripts/tools/log-rotate.sh +29 -0
  285. package/scripts/tools/lolcat-wrap.sh +18 -0
  286. package/scripts/tools/pipes.sh +47 -0
  287. package/scripts/tuning/linux.sh +175 -0
  288. package/scripts/tuning/macos.sh +46 -0
  289. package/templates/projects/go/README.md +7 -0
  290. package/templates/projects/go/cmd/__PROJECT_NAME__/main.go +7 -0
  291. package/templates/projects/go/go.mod +3 -0
  292. package/templates/projects/molecule/README.md +7 -0
  293. package/templates/projects/molecule/converge.yml +7 -0
  294. package/templates/projects/molecule/molecule.yml +16 -0
  295. package/templates/projects/node/README.md +7 -0
  296. package/templates/projects/node/package.json +10 -0
  297. package/templates/projects/node/src/index.js +2 -0
  298. package/templates/projects/packer/README.md +15 -0
  299. package/templates/projects/packer/main.pkr.hcl +15 -0
  300. package/templates/projects/python/README.md +7 -0
  301. package/templates/projects/python/pyproject.toml +25 -0
  302. package/templates/projects/python/src/__PROJECT_NAME__/__init__.py +1 -0
  303. package/templates/projects/python/tests/test_basic.py +2 -0
  304. package/dist/Makefile +0 -140
  305. package/dist/bin/backup.d.ts +0 -3
  306. package/dist/bin/backup.d.ts.map +0 -1
  307. package/dist/bin/backup.js +0 -4
  308. package/dist/bin/backup.js.map +0 -1
  309. package/dist/bin/constants.d.ts +0 -7
  310. package/dist/bin/constants.d.ts.map +0 -1
  311. package/dist/bin/constants.js +0 -2
  312. package/dist/bin/constants.js.map +0 -1
  313. package/dist/bin/copy.d.ts +0 -3
  314. package/dist/bin/copy.d.ts.map +0 -1
  315. package/dist/bin/copy.js +0 -3
  316. package/dist/bin/copy.js.map +0 -1
  317. package/dist/bin/dotfiles.d.ts +0 -3
  318. package/dist/bin/dotfiles.d.ts.map +0 -1
  319. package/dist/bin/dotfiles.js +0 -2
  320. package/dist/bin/dotfiles.js.map +0 -1
  321. package/dist/bin/download.d.ts +0 -3
  322. package/dist/bin/download.d.ts.map +0 -1
  323. package/dist/bin/download.js +0 -2
  324. package/dist/bin/download.js.map +0 -1
  325. package/dist/bin/index.d.ts +0 -2
  326. package/dist/bin/index.d.ts.map +0 -1
  327. package/dist/bin/index.js +0 -1
  328. package/dist/bin/index.js.map +0 -1
  329. package/dist/bin/transfer.d.ts +0 -3
  330. package/dist/bin/transfer.d.ts.map +0 -1
  331. package/dist/bin/transfer.js +0 -4
  332. package/dist/bin/transfer.js.map +0 -1
  333. package/dist/bin/unpack.d.ts +0 -3
  334. package/dist/bin/unpack.d.ts.map +0 -1
  335. package/dist/bin/unpack.js +0 -3
  336. package/dist/bin/unpack.js.map +0 -1
  337. package/dist/filesizes.txt +0 -382
  338. package/dist/lib/README.md +0 -86
  339. package/dist/lib/aliases/README.md +0 -57
  340. package/dist/lib/aliases/archives/README.md +0 -145
  341. package/dist/lib/aliases/archives/archives.aliases.sh +0 -114
  342. package/dist/lib/aliases/cd/README.md +0 -146
  343. package/dist/lib/aliases/cd/cd.aliases.sh +0 -51
  344. package/dist/lib/aliases/chmod/README.md +0 -160
  345. package/dist/lib/aliases/chmod/chmod.aliases.sh +0 -107
  346. package/dist/lib/aliases/clear/README.md +0 -37
  347. package/dist/lib/aliases/clear/clear.aliases.sh +0 -71
  348. package/dist/lib/aliases/configuration/README.md +0 -39
  349. package/dist/lib/aliases/configuration/configuration.aliases.sh +0 -70
  350. package/dist/lib/aliases/default/README.md +0 -40
  351. package/dist/lib/aliases/default/default.aliases.sh +0 -139
  352. package/dist/lib/aliases/dig/README.md +0 -37
  353. package/dist/lib/aliases/dig/dig.aliases.sh +0 -43
  354. package/dist/lib/aliases/disk-usage/README.md +0 -36
  355. package/dist/lib/aliases/disk-usage/du.aliases.sh +0 -84
  356. package/dist/lib/aliases/editor/README.md +0 -53
  357. package/dist/lib/aliases/editor/editor.aliases.sh +0 -26
  358. package/dist/lib/aliases/find/README.md +0 -46
  359. package/dist/lib/aliases/find/find.aliases.sh +0 -60
  360. package/dist/lib/aliases/gcloud/README.md +0 -63
  361. package/dist/lib/aliases/gcloud/gcloud.aliases.sh +0 -335
  362. package/dist/lib/aliases/git/README.md +0 -153
  363. package/dist/lib/aliases/git/git.aliases.sh +0 -544
  364. package/dist/lib/aliases/gnu/README.md +0 -89
  365. package/dist/lib/aliases/gnu/gnucoreutils-aliases.sh +0 -150
  366. package/dist/lib/aliases/heroku/README.md +0 -430
  367. package/dist/lib/aliases/heroku/heroku.aliases.sh +0 -1053
  368. package/dist/lib/aliases/interactive/README.md +0 -55
  369. package/dist/lib/aliases/interactive/interactive.aliases.sh +0 -50
  370. package/dist/lib/aliases/list/README.md +0 -131
  371. package/dist/lib/aliases/list/list.aliases.sh +0 -132
  372. package/dist/lib/aliases/macOS/README.md +0 -42
  373. package/dist/lib/aliases/macOS/macos.aliases.sh +0 -65
  374. package/dist/lib/aliases/make/README.md +0 -32
  375. package/dist/lib/aliases/make/make.aliases.sh +0 -35
  376. package/dist/lib/aliases/mkdir/README.md +0 -30
  377. package/dist/lib/aliases/mkdir/mkdir.aliases.sh +0 -29
  378. package/dist/lib/aliases/npm/README.md +0 -41
  379. package/dist/lib/aliases/npm/npm.aliases.sh +0 -61
  380. package/dist/lib/aliases/permission/README.md +0 -47
  381. package/dist/lib/aliases/permission/permission.aliases.sh +0 -73
  382. package/dist/lib/aliases/pnpm/README.md +0 -53
  383. package/dist/lib/aliases/pnpm/pnpm.aliases.sh +0 -76
  384. package/dist/lib/aliases/ps/README.md +0 -29
  385. package/dist/lib/aliases/ps/ps.aliases.sh +0 -20
  386. package/dist/lib/aliases/python/python.aliases.sh +0 -141
  387. package/dist/lib/aliases/rsync/README.md +0 -25
  388. package/dist/lib/aliases/rsync/rsync.aliases.sh +0 -17
  389. package/dist/lib/aliases/rust/README.md +0 -182
  390. package/dist/lib/aliases/rust/rust.aliases.sh +0 -119
  391. package/dist/lib/aliases/subversion/README.md +0 -66
  392. package/dist/lib/aliases/subversion/subversion.aliases.sh +0 -47
  393. package/dist/lib/aliases/sudo/README.md +0 -27
  394. package/dist/lib/aliases/sudo/sudo.aliases.sh +0 -20
  395. package/dist/lib/aliases/tmux/README.md +0 -31
  396. package/dist/lib/aliases/tmux/tmux.aliases.sh +0 -36
  397. package/dist/lib/aliases/update/README.md +0 -38
  398. package/dist/lib/aliases/update/update.aliases.sh +0 -310
  399. package/dist/lib/aliases/uuid/README.md +0 -24
  400. package/dist/lib/aliases/uuid/uuid.aliases.sh +0 -19
  401. package/dist/lib/aliases/wget/README.md +0 -27
  402. package/dist/lib/aliases/wget/wget.aliases.sh +0 -22
  403. package/dist/lib/aliases.sh +0 -50
  404. package/dist/lib/configurations/README.md +0 -18
  405. package/dist/lib/configurations/bash/bashrc +0 -167
  406. package/dist/lib/configurations/curl/cacert.pem +0 -3460
  407. package/dist/lib/configurations/curl/curlrc +0 -53
  408. package/dist/lib/configurations/default/color.sh +0 -24
  409. package/dist/lib/configurations/default/constants.sh +0 -43
  410. package/dist/lib/configurations/default/editor.sh +0 -18
  411. package/dist/lib/configurations/default/prompt.sh +0 -48
  412. package/dist/lib/configurations/input/inputrc +0 -23
  413. package/dist/lib/configurations/jshint/jshintrc +0 -37
  414. package/dist/lib/configurations/nano/nanorc +0 -35
  415. package/dist/lib/configurations/profile/profile +0 -37
  416. package/dist/lib/configurations/prompt/prompt.sh +0 -81
  417. package/dist/lib/configurations/tmux/default +0 -18
  418. package/dist/lib/configurations/tmux/display +0 -30
  419. package/dist/lib/configurations/tmux/linux +0 -18
  420. package/dist/lib/configurations/tmux/navigation +0 -30
  421. package/dist/lib/configurations/tmux/panes +0 -10
  422. package/dist/lib/configurations/tmux/theme +0 -29
  423. package/dist/lib/configurations/tmux/tmux +0 -21
  424. package/dist/lib/configurations/vim/vimrc +0 -193
  425. package/dist/lib/configurations/wget/wgetrc +0 -40
  426. package/dist/lib/configurations/zsh/zshrc +0 -50
  427. package/dist/lib/configurations.sh +0 -45
  428. package/dist/lib/functions/README.md +0 -92
  429. package/dist/lib/functions/apihealth.sh +0 -277
  430. package/dist/lib/functions/apilatency.sh +0 -157
  431. package/dist/lib/functions/apiload.sh +0 -165
  432. package/dist/lib/functions/backup.sh +0 -143
  433. package/dist/lib/functions/cdls.sh +0 -60
  434. package/dist/lib/functions/curlheader.sh +0 -78
  435. package/dist/lib/functions/curlstatus.sh +0 -74
  436. package/dist/lib/functions/curltime.sh +0 -75
  437. package/dist/lib/functions/encode64.sh +0 -107
  438. package/dist/lib/functions/environment.sh +0 -78
  439. package/dist/lib/functions/extract.sh +0 -86
  440. package/dist/lib/functions/freespace.sh +0 -67
  441. package/dist/lib/functions/genpwd.sh +0 -105
  442. package/dist/lib/functions/goto.sh +0 -67
  443. package/dist/lib/functions/hexdump.sh +0 -96
  444. package/dist/lib/functions/hiddenfiles.sh +0 -77
  445. package/dist/lib/functions/hostinfo.sh +0 -98
  446. package/dist/lib/functions/hstats.sh +0 -75
  447. package/dist/lib/functions/httpdebug.sh +0 -113
  448. package/dist/lib/functions/kebabcase.sh +0 -61
  449. package/dist/lib/functions/keygen.sh +0 -194
  450. package/dist/lib/functions/last.sh +0 -112
  451. package/dist/lib/functions/logout.sh +0 -120
  452. package/dist/lib/functions/lowercase.sh +0 -61
  453. package/dist/lib/functions/matrix.sh +0 -216
  454. package/dist/lib/functions/mount_read_only.sh +0 -11
  455. package/dist/lib/functions/myproc.sh +0 -9
  456. package/dist/lib/functions/prependpath.sh +0 -21
  457. package/dist/lib/functions/ql.sh +0 -9
  458. package/dist/lib/functions/rd.sh +0 -17
  459. package/dist/lib/functions/remove_disk.sh +0 -11
  460. package/dist/lib/functions/ren.sh +0 -73
  461. package/dist/lib/functions/sentencecase.sh +0 -63
  462. package/dist/lib/functions/showhiddenfiles.sh +0 -14
  463. package/dist/lib/functions/size.sh +0 -16
  464. package/dist/lib/functions/snakecase.sh +0 -61
  465. package/dist/lib/functions/stopwatch.sh +0 -15
  466. package/dist/lib/functions/sysinfo.sh +0 -145
  467. package/dist/lib/functions/titlecase.sh +0 -65
  468. package/dist/lib/functions/uppercase.sh +0 -61
  469. package/dist/lib/functions/view-source.sh +0 -9
  470. package/dist/lib/functions/vscode.sh +0 -32
  471. package/dist/lib/functions/whoisport.sh +0 -14
  472. package/dist/lib/functions/zipf.sh +0 -16
  473. package/dist/lib/functions.sh +0 -46
  474. package/dist/lib/history.sh +0 -90
  475. package/dist/lib/paths/README.md +0 -52
  476. package/dist/lib/paths/custom.paths.sh +0 -40
  477. package/dist/lib/paths/default.paths.sh +0 -37
  478. package/dist/lib/paths.sh +0 -46
  479. package/dist/scripts/backup.sh +0 -95
  480. package/dist/scripts/banner.sh +0 -20
  481. package/dist/scripts/build.sh +0 -41
  482. package/dist/scripts/clean.sh +0 -31
  483. package/dist/scripts/compile.sh +0 -54
  484. package/dist/scripts/copy.sh +0 -108
  485. package/dist/scripts/dotfiles.sh +0 -63
  486. package/dist/scripts/download.sh +0 -35
  487. package/dist/scripts/help.sh +0 -57
  488. package/dist/scripts/ssh.sh +0 -55
  489. package/dist/scripts/unpack.sh +0 -28
  490. /package/{dist/lib/configurations → dot_config}/gem/gemrc +0 -0
@@ -0,0 +1,130 @@
1
+ #!/usr/bin/env bash
2
+ # Dotfiles CLI - Core Commands
3
+ # apply, sync, update, add, diff, status, remove, cd, edit
4
+
5
+ set -euo pipefail
6
+
7
+ SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
8
+ # shellcheck source=../lib/utils.sh
9
+ source "$SCRIPT_DIR/../lib/utils.sh"
10
+
11
+ cmd_apply() {
12
+ local src_dir
13
+ src_dir="$(resolve_source_dir)"
14
+ if [ -n "$src_dir" ] && [ -f "$src_dir/scripts/ops/chezmoi-apply.sh" ]; then
15
+ exec bash "$src_dir/scripts/ops/chezmoi-apply.sh" "$@"
16
+ fi
17
+ exec chezmoi apply "$@"
18
+ }
19
+
20
+ cmd_sync() {
21
+ cmd_apply "$@"
22
+ }
23
+
24
+ cmd_update() {
25
+ local src_dir
26
+ src_dir="$(resolve_source_dir)"
27
+ if [ -n "$src_dir" ] && [ -f "$src_dir/scripts/ops/chezmoi-update.sh" ]; then
28
+ exec bash "$src_dir/scripts/ops/chezmoi-update.sh" "$@"
29
+ fi
30
+ echo "Updating Dotfiles..."
31
+ exec chezmoi update "$@"
32
+ }
33
+
34
+ cmd_add() {
35
+ if [ -z "$1" ]; then
36
+ echo "Usage: dot add <file>"
37
+ echo ""
38
+ echo "Add a file to the chezmoi source directory."
39
+ echo "The file will be managed by chezmoi from now on."
40
+ exit 1
41
+ fi
42
+ exec chezmoi add "$@"
43
+ }
44
+
45
+ cmd_diff() {
46
+ local src_dir
47
+ src_dir="$(resolve_source_dir)"
48
+ if [ -n "$src_dir" ] && [ -f "$src_dir/scripts/ops/chezmoi-diff.sh" ]; then
49
+ exec bash "$src_dir/scripts/ops/chezmoi-diff.sh" "$@"
50
+ fi
51
+ exec chezmoi diff "$@"
52
+ }
53
+
54
+ cmd_status() {
55
+ exec chezmoi status "$@"
56
+ }
57
+
58
+ cmd_remove() {
59
+ run_script "scripts/ops/chezmoi-remove.sh" "Remove helper" "$@"
60
+ }
61
+
62
+ cmd_cd() {
63
+ local src_dir
64
+ src_dir="$(resolve_source_dir)"
65
+ if [ -n "$src_dir" ]; then
66
+ echo "$src_dir"
67
+ else
68
+ echo "Dotfiles source not found." >&2
69
+ exit 1
70
+ fi
71
+ }
72
+
73
+ cmd_edit() {
74
+ local src_dir
75
+ src_dir="$(require_source_dir)"
76
+ if [ -n "${EDITOR:-}" ]; then
77
+ exec "$EDITOR" "$src_dir"
78
+ elif has_command nvim; then
79
+ exec nvim "$src_dir"
80
+ elif has_command vim; then
81
+ exec vim "$src_dir"
82
+ else
83
+ echo "No editor found. Set \$EDITOR to open $src_dir."
84
+ exit 1
85
+ fi
86
+ }
87
+
88
+ # Dispatch
89
+ case "${1:-}" in
90
+ apply)
91
+ shift
92
+ cmd_apply "$@"
93
+ ;;
94
+ sync)
95
+ shift
96
+ cmd_sync "$@"
97
+ ;;
98
+ update)
99
+ shift
100
+ cmd_update "$@"
101
+ ;;
102
+ add)
103
+ shift
104
+ cmd_add "$@"
105
+ ;;
106
+ diff)
107
+ shift
108
+ cmd_diff "$@"
109
+ ;;
110
+ status)
111
+ shift
112
+ cmd_status "$@"
113
+ ;;
114
+ remove)
115
+ shift
116
+ cmd_remove "$@"
117
+ ;;
118
+ cd)
119
+ shift
120
+ cmd_cd "$@"
121
+ ;;
122
+ edit)
123
+ shift
124
+ cmd_edit "$@"
125
+ ;;
126
+ *)
127
+ echo "Unknown core command: ${1:-}" >&2
128
+ exit 1
129
+ ;;
130
+ esac
@@ -0,0 +1,100 @@
1
+ #!/usr/bin/env bash
2
+ # Dotfiles CLI - Diagnostics Commands
3
+ # doctor, heal, health, rollback, drift, history, benchmark
4
+
5
+ set -euo pipefail
6
+
7
+ SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
8
+ # shellcheck source=../lib/utils.sh
9
+ source "$SCRIPT_DIR/../lib/utils.sh"
10
+
11
+ cmd_doctor() {
12
+ echo "Running Dotfiles Doctor..."
13
+ local src_dir
14
+ src_dir="$(resolve_source_dir)"
15
+ if [ -n "$src_dir" ] && [ -f "$src_dir/scripts/diagnostics/doctor.sh" ]; then
16
+ exec bash "$src_dir/scripts/diagnostics/doctor.sh" "$@"
17
+ fi
18
+ exec chezmoi doctor "$@"
19
+ }
20
+
21
+ cmd_heal() {
22
+ run_script "scripts/ops/heal.sh" "Heal script" "$@"
23
+ }
24
+
25
+ cmd_health() {
26
+ run_script "scripts/diagnostics/health.sh" "Health dashboard" "$@"
27
+ }
28
+
29
+ cmd_security_score() {
30
+ run_script "scripts/diagnostics/security-score.sh" "Security score" "$@"
31
+ }
32
+
33
+ cmd_rollback() {
34
+ run_script "scripts/ops/rollback.sh" "Rollback script" "$@"
35
+ }
36
+
37
+ cmd_drift() {
38
+ local src_dir
39
+ src_dir="$(resolve_source_dir)"
40
+ if [ -n "$src_dir" ] && [ -f "$src_dir/scripts/diagnostics/drift-dashboard.sh" ]; then
41
+ exec bash "$src_dir/scripts/diagnostics/drift-dashboard.sh" "$@"
42
+ fi
43
+ exec chezmoi status "$@"
44
+ }
45
+
46
+ cmd_history() {
47
+ run_script "scripts/diagnostics/history-analysis.sh" "History analysis script" "$@"
48
+ }
49
+
50
+ cmd_benchmark() {
51
+ run_script "scripts/diagnostics/benchmark.sh" "Benchmark script" "$@"
52
+ }
53
+
54
+ cmd_restore() {
55
+ run_script "scripts/dot/commands/restore.sh" "Restore script" "$@"
56
+ }
57
+
58
+ # Dispatch
59
+ case "${1:-}" in
60
+ doctor)
61
+ shift
62
+ cmd_doctor "$@"
63
+ ;;
64
+ heal)
65
+ shift
66
+ cmd_heal "$@"
67
+ ;;
68
+ health | health-check)
69
+ shift
70
+ cmd_health "$@"
71
+ ;;
72
+ security-score)
73
+ shift
74
+ cmd_security_score "$@"
75
+ ;;
76
+ rollback)
77
+ shift
78
+ cmd_rollback "$@"
79
+ ;;
80
+ drift)
81
+ shift
82
+ cmd_drift "$@"
83
+ ;;
84
+ history)
85
+ shift
86
+ cmd_history "$@"
87
+ ;;
88
+ benchmark)
89
+ shift
90
+ cmd_benchmark "$@"
91
+ ;;
92
+ restore)
93
+ shift
94
+ cmd_restore "$@"
95
+ ;;
96
+ *)
97
+ echo "Unknown diagnostics command: ${1:-}" >&2
98
+ exit 1
99
+ ;;
100
+ esac
@@ -0,0 +1,117 @@
1
+ #!/usr/bin/env bash
2
+ # Dotfiles CLI - Meta Commands
3
+ # upgrade, docs, learn, keys, sandbox
4
+
5
+ set -euo pipefail
6
+
7
+ SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
8
+ # shellcheck source=../lib/utils.sh
9
+ source "$SCRIPT_DIR/../lib/utils.sh"
10
+
11
+ cmd_upgrade() {
12
+ local src_dir
13
+ src_dir="$(require_source_dir)"
14
+
15
+ if [ -f "$src_dir/nix/flake.nix" ] && has_command nix; then
16
+ echo "Updating Nix flake..."
17
+ (cd "$src_dir" && nix flake update) || true
18
+ echo "Running Nix garbage collection..."
19
+ nix-collect-garbage -d || true
20
+ fi
21
+
22
+ echo "Updating dotfiles..."
23
+ chezmoi update || true
24
+
25
+ if has_command nvim; then
26
+ echo "Updating Neovim plugins..."
27
+ nvim --headless "+Lazy! sync" +qa || true
28
+ fi
29
+
30
+ if [ "${DOTFILES_FONTS:-}" = "1" ]; then
31
+ if [ -f "$src_dir/scripts/fonts/install-nerd-fonts.sh" ]; then
32
+ echo "Installing Nerd Fonts..."
33
+ sh "$src_dir/scripts/fonts/install-nerd-fonts.sh"
34
+ fi
35
+ fi
36
+ }
37
+
38
+ cmd_docs() {
39
+ local src_dir
40
+ src_dir="$(resolve_source_dir)"
41
+
42
+ if [ -n "$src_dir" ] && [ -f "$src_dir/README.md" ]; then
43
+ exec cat "$src_dir/README.md"
44
+ else
45
+ die "README not found."
46
+ fi
47
+ }
48
+
49
+ cmd_learn() {
50
+ local dot_bin
51
+ dot_bin="$(dirname "${BASH_SOURCE[0]}")/../../../dot_local/bin"
52
+ if [ -f "$dot_bin/executable_tour" ]; then
53
+ exec bash "$dot_bin/executable_tour" "$@"
54
+ fi
55
+ # Fallback to PATH
56
+ exec tour "$@"
57
+ }
58
+
59
+ cmd_keys() {
60
+ local src_dir
61
+ src_dir="$(resolve_source_dir)"
62
+
63
+ if [ -n "$src_dir" ] && [ -f "$src_dir/docs/KEYS.md" ]; then
64
+ if [ -n "$1" ]; then
65
+ rg -i --fixed-strings --context 1 "$1" "$src_dir/docs/KEYS.md" || true
66
+ else
67
+ exec cat "$src_dir/docs/KEYS.md"
68
+ fi
69
+ else
70
+ die "Keybindings catalog not found."
71
+ fi
72
+ }
73
+
74
+ cmd_sandbox() {
75
+ local src_dir
76
+ src_dir="$(require_source_dir)"
77
+
78
+ if has_command docker; then
79
+ echo "Launching sandbox via Docker..."
80
+ docker build -f "$src_dir/tests/Dockerfile.sandbox" -t dotfiles-sandbox "$src_dir"
81
+ exec docker run --rm -it dotfiles-sandbox
82
+ elif has_command podman; then
83
+ echo "Launching sandbox via Podman..."
84
+ podman build -f "$src_dir/tests/Dockerfile.sandbox" -t dotfiles-sandbox "$src_dir"
85
+ exec podman run --rm -it dotfiles-sandbox
86
+ else
87
+ die "Docker or Podman is required for sandbox."
88
+ fi
89
+ }
90
+
91
+ # Dispatch
92
+ case "${1:-}" in
93
+ upgrade)
94
+ shift
95
+ cmd_upgrade "$@"
96
+ ;;
97
+ docs)
98
+ shift
99
+ cmd_docs "$@"
100
+ ;;
101
+ learn)
102
+ shift
103
+ cmd_learn "$@"
104
+ ;;
105
+ keys)
106
+ shift
107
+ cmd_keys "$@"
108
+ ;;
109
+ sandbox)
110
+ shift
111
+ cmd_sandbox "$@"
112
+ ;;
113
+ *)
114
+ echo "Unknown meta command: ${1:-}" >&2
115
+ exit 1
116
+ ;;
117
+ esac
@@ -0,0 +1,209 @@
1
+ #!/usr/bin/env bash
2
+ # dot restore - Restore dotfiles from backup or previous state
3
+ # Usage: dot restore [--list|--latest|<backup-id>]
4
+
5
+ set -euo pipefail
6
+
7
+ DOTFILES_DIR="${DOTFILES_DIR:-$HOME/.dotfiles}"
8
+ BACKUP_DIR="${XDG_DATA_HOME:-$HOME/.local/share}/dotfiles/backups"
9
+ CHEZMOI_SOURCE="${HOME}/.local/share/chezmoi"
10
+
11
+ # Colors
12
+ RED='\033[0;31m'
13
+ GREEN='\033[0;32m'
14
+ YELLOW='\033[1;33m'
15
+ BLUE='\033[0;34m'
16
+ NC='\033[0m'
17
+
18
+ log_info() { echo -e "${BLUE}[INFO]${NC} $*"; }
19
+ log_warn() { echo -e "${YELLOW}[WARN]${NC} $*"; }
20
+ log_error() { echo -e "${RED}[ERROR]${NC} $*" >&2; }
21
+ log_success() { echo -e "${GREEN}[OK]${NC} $*"; }
22
+
23
+ usage() {
24
+ echo "Usage: dot restore [OPTIONS]"
25
+ echo ""
26
+ echo "Options:"
27
+ echo " --list, -l List available backups"
28
+ echo " --latest Restore from latest backup"
29
+ echo " --git <ref> Restore from git ref (commit, tag, branch)"
30
+ echo " --diff <ref> Show diff between current and ref"
31
+ echo " --dry-run Show what would be restored"
32
+ echo " -h, --help Show this help"
33
+ echo ""
34
+ echo "Examples:"
35
+ echo " dot restore --list"
36
+ echo " dot restore --latest"
37
+ echo " dot restore --git HEAD~1"
38
+ echo " dot restore --git v0.2.470"
39
+ }
40
+
41
+ list_backups() {
42
+ if [[ ! -d "$BACKUP_DIR" ]]; then
43
+ log_warn "No backups found at $BACKUP_DIR"
44
+ return 1
45
+ fi
46
+
47
+ echo -e "${BLUE}Available Backups:${NC}"
48
+ echo "─────────────────────────────────────────"
49
+
50
+ find "$BACKUP_DIR" -maxdepth 1 -type d -name "backup-*" -printf "%T@ %f\n" 2>/dev/null | sort -rn | cut -d' ' -f2- | while read -r backup; do
51
+ echo " $backup"
52
+ done
53
+
54
+ echo ""
55
+ echo -e "${BLUE}Git History (last 10):${NC}"
56
+ echo "─────────────────────────────────────────"
57
+
58
+ if [[ -d "$DOTFILES_DIR/.git" ]]; then
59
+ git -C "$DOTFILES_DIR" log --oneline -10
60
+ elif [[ -d "$CHEZMOI_SOURCE/.git" ]]; then
61
+ git -C "$CHEZMOI_SOURCE" log --oneline -10
62
+ fi
63
+ }
64
+
65
+ restore_from_git() {
66
+ local ref="$1"
67
+ local dry_run="${2:-false}"
68
+ local source_dir
69
+
70
+ if [[ -d "$DOTFILES_DIR/.git" ]]; then
71
+ source_dir="$DOTFILES_DIR"
72
+ elif [[ -d "$CHEZMOI_SOURCE/.git" ]]; then
73
+ source_dir="$CHEZMOI_SOURCE"
74
+ else
75
+ log_error "No git repository found"
76
+ return 1
77
+ fi
78
+
79
+ log_info "Restoring from git ref: $ref"
80
+
81
+ if $dry_run; then
82
+ log_info "Dry run - showing changes:"
83
+ git -C "$source_dir" diff "$ref" --stat
84
+ return 0
85
+ fi
86
+
87
+ # Create backup first
88
+ create_backup
89
+
90
+ # Restore
91
+ git -C "$source_dir" checkout "$ref" -- .
92
+ log_success "Restored from $ref"
93
+
94
+ # Re-apply chezmoi
95
+ if command -v chezmoi >/dev/null 2>&1; then
96
+ log_info "Re-applying chezmoi..."
97
+ chezmoi apply
98
+ fi
99
+ }
100
+
101
+ show_diff() {
102
+ local ref="$1"
103
+ local source_dir
104
+
105
+ if [[ -d "$DOTFILES_DIR/.git" ]]; then
106
+ source_dir="$DOTFILES_DIR"
107
+ elif [[ -d "$CHEZMOI_SOURCE/.git" ]]; then
108
+ source_dir="$CHEZMOI_SOURCE"
109
+ else
110
+ log_error "No git repository found"
111
+ return 1
112
+ fi
113
+
114
+ git -C "$source_dir" diff "$ref"
115
+ }
116
+
117
+ create_backup() {
118
+ local backup_name
119
+ backup_name="backup-$(date +%Y%m%d_%H%M%S)"
120
+ local backup_path="$BACKUP_DIR/$backup_name"
121
+
122
+ mkdir -p "$backup_path"
123
+
124
+ log_info "Creating backup: $backup_name"
125
+
126
+ # Backup key config files
127
+ local files_to_backup=(
128
+ "$HOME/.zshrc"
129
+ "$HOME/.config/zsh"
130
+ "$HOME/.config/nvim"
131
+ "$HOME/.config/git"
132
+ "$HOME/.gitconfig"
133
+ )
134
+
135
+ for f in "${files_to_backup[@]}"; do
136
+ if [[ -e "$f" ]]; then
137
+ cp -r "$f" "$backup_path/" 2>/dev/null || true
138
+ fi
139
+ done
140
+
141
+ log_success "Backup created at $backup_path"
142
+ }
143
+
144
+ restore_latest() {
145
+ if [[ ! -d "$BACKUP_DIR" ]]; then
146
+ log_error "No backups found"
147
+ return 1
148
+ fi
149
+
150
+ local latest
151
+ latest=$(find "$BACKUP_DIR" -maxdepth 1 -type d -name "backup-*" -printf "%T@ %f\n" 2>/dev/null | sort -rn | head -1 | cut -d' ' -f2-)
152
+
153
+ if [[ -z "$latest" ]]; then
154
+ log_error "No backups found"
155
+ return 1
156
+ fi
157
+
158
+ log_info "Restoring from: $latest"
159
+
160
+ local backup_path="$BACKUP_DIR/$latest"
161
+ local target
162
+ for item in "$backup_path"/*; do
163
+ if [[ -e "$item" ]]; then
164
+ target="$HOME/$(basename "$item")"
165
+ cp -r "$item" "$target"
166
+ log_success "Restored: $(basename "$item")"
167
+ fi
168
+ done
169
+ }
170
+
171
+ # Parse arguments
172
+ DRY_RUN=false
173
+
174
+ while [[ $# -gt 0 ]]; do
175
+ case "$1" in
176
+ -l | --list)
177
+ list_backups
178
+ exit 0
179
+ ;;
180
+ --latest)
181
+ restore_latest
182
+ exit 0
183
+ ;;
184
+ --git)
185
+ restore_from_git "$2" "$DRY_RUN"
186
+ exit 0
187
+ ;;
188
+ --diff)
189
+ show_diff "$2"
190
+ exit 0
191
+ ;;
192
+ --dry-run)
193
+ DRY_RUN=true
194
+ shift
195
+ ;;
196
+ -h | --help)
197
+ usage
198
+ exit 0
199
+ ;;
200
+ *)
201
+ log_error "Unknown option: $1"
202
+ usage
203
+ exit 1
204
+ ;;
205
+ esac
206
+ done
207
+
208
+ # Default: show usage
209
+ usage
@@ -0,0 +1,81 @@
1
+ #!/usr/bin/env bash
2
+ # Dotfiles CLI - Secrets Commands
3
+ # secrets-init, secrets, secrets-create, ssh-key
4
+
5
+ set -euo pipefail
6
+
7
+ SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
8
+ # shellcheck source=../lib/utils.sh
9
+ source "$SCRIPT_DIR/../lib/utils.sh"
10
+
11
+ cmd_secrets_init() {
12
+ local src_dir
13
+ src_dir="$(resolve_source_dir)"
14
+
15
+ if [ -n "$src_dir" ] && [ -f "$src_dir/scripts/secrets/age-init.sh" ]; then
16
+ exec bash "$src_dir/scripts/secrets/age-init.sh" "$@"
17
+ fi
18
+
19
+ local secrets_dir="$HOME/.config/chezmoi"
20
+ local key_file="$secrets_dir/key.txt"
21
+
22
+ mkdir -p "$secrets_dir"
23
+
24
+ if [ -f "$key_file" ]; then
25
+ echo "Age key already exists: $key_file"
26
+ exit 0
27
+ fi
28
+
29
+ if ! has_command age-keygen; then
30
+ die "age-keygen not found. Install 'age' first."
31
+ fi
32
+
33
+ age-keygen -o "$key_file"
34
+ chmod 600 "$key_file"
35
+ echo "Age key created at $key_file"
36
+ echo "Public key:"
37
+ age-keygen -y "$key_file"
38
+ }
39
+
40
+ cmd_secrets() {
41
+ local secrets_dir="$HOME/.config/chezmoi"
42
+ local key_file="$secrets_dir/key.txt"
43
+
44
+ if [ ! -f "$key_file" ]; then
45
+ die "No age key found. Run: dot secrets-init"
46
+ fi
47
+
48
+ exec chezmoi edit --apply "$HOME/.config/chezmoi/encrypted_secrets.age"
49
+ }
50
+
51
+ cmd_secrets_create() {
52
+ run_script "scripts/secrets/create-secrets-file.sh" "Secrets creation script" "$@"
53
+ }
54
+
55
+ cmd_ssh_key() {
56
+ run_script "scripts/secrets/encrypt-ssh-key.sh" "SSH key encryption script" "$@"
57
+ }
58
+
59
+ # Dispatch
60
+ case "${1:-}" in
61
+ secrets-init)
62
+ shift
63
+ cmd_secrets_init "$@"
64
+ ;;
65
+ secrets)
66
+ shift
67
+ cmd_secrets "$@"
68
+ ;;
69
+ secrets-create)
70
+ shift
71
+ cmd_secrets_create "$@"
72
+ ;;
73
+ ssh-key)
74
+ shift
75
+ cmd_ssh_key "$@"
76
+ ;;
77
+ *)
78
+ echo "Unknown secrets command: ${1:-}" >&2
79
+ exit 1
80
+ ;;
81
+ esac
@@ -0,0 +1,73 @@
1
+ #!/usr/bin/env bash
2
+ # Dotfiles CLI - Security Commands
3
+ # backup, encrypt-check, firewall, telemetry, dns-doh, lock-screen, usb-safety
4
+
5
+ set -euo pipefail
6
+
7
+ SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
8
+ # shellcheck source=../lib/utils.sh
9
+ source "$SCRIPT_DIR/../lib/utils.sh"
10
+
11
+ cmd_backup() {
12
+ run_script "scripts/security/backup.sh" "Backup script" "$@"
13
+ }
14
+
15
+ cmd_encrypt_check() {
16
+ run_script "scripts/security/encryption-check.sh" "Encryption check script" "$@"
17
+ }
18
+
19
+ cmd_firewall() {
20
+ run_script "scripts/security/firewall.sh" "Firewall script" "$@"
21
+ }
22
+
23
+ cmd_telemetry() {
24
+ run_script "scripts/security/telemetry-kill.sh" "Telemetry script" "$@"
25
+ }
26
+
27
+ cmd_dns_doh() {
28
+ run_script "scripts/security/dns-doh.sh" "DNS DoH script" "$@"
29
+ }
30
+
31
+ cmd_lock_screen() {
32
+ run_script "scripts/security/lock-screen.sh" "Lock screen script" "$@"
33
+ }
34
+
35
+ cmd_usb_safety() {
36
+ run_script "scripts/security/usb-safety.sh" "USB safety script" "$@"
37
+ }
38
+
39
+ # Dispatch
40
+ case "${1:-}" in
41
+ backup)
42
+ shift
43
+ cmd_backup "$@"
44
+ ;;
45
+ encrypt-check)
46
+ shift
47
+ cmd_encrypt_check "$@"
48
+ ;;
49
+ firewall)
50
+ shift
51
+ cmd_firewall "$@"
52
+ ;;
53
+ telemetry)
54
+ shift
55
+ cmd_telemetry "$@"
56
+ ;;
57
+ dns-doh)
58
+ shift
59
+ cmd_dns_doh "$@"
60
+ ;;
61
+ lock-screen)
62
+ shift
63
+ cmd_lock_screen "$@"
64
+ ;;
65
+ usb-safety)
66
+ shift
67
+ cmd_usb_safety "$@"
68
+ ;;
69
+ *)
70
+ echo "Unknown security command: ${1:-}" >&2
71
+ exit 1
72
+ ;;
73
+ esac