@sebastienrousseau/dotfiles 0.2.481 → 0.2.499

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 (317) hide show
  1. package/docs/ARCHITECTURE.md +29 -196
  2. package/docs/COMPLIANCE.md +10 -10
  3. package/docs/COPYRIGHT +3 -4
  4. package/docs/OPERATIONS.md +38 -65
  5. package/docs/PLAN.md +3 -3
  6. package/docs/PR_DESCRIPTION.md +85 -84
  7. package/docs/ROADMAP.md +11 -11
  8. package/docs/ROADMAP_legacy.md +556 -0
  9. package/docs/SECURITY_CHECKLIST.md +1 -1
  10. package/docs/TASK.md +4 -4
  11. package/docs/WALKTHROUGH.md +33 -152
  12. package/package.json +17 -5
  13. package/scripts/backup.sh +142 -0
  14. package/scripts/banner.sh +20 -0
  15. package/scripts/benchmark.sh +20 -0
  16. package/scripts/build.sh +41 -0
  17. package/scripts/clean.sh +31 -0
  18. package/scripts/compile.sh +54 -0
  19. package/scripts/copy.sh +108 -0
  20. package/scripts/{tools/detect-collisions.py → detect-collisions.py} +1 -1
  21. package/scripts/doctor.sh +79 -0
  22. package/scripts/dotfiles.sh +63 -0
  23. package/scripts/download.sh +35 -0
  24. package/scripts/help.sh +57 -0
  25. package/scripts/lock-configs.sh +57 -0
  26. package/scripts/package.sh +46 -0
  27. package/scripts/ssh.sh +55 -0
  28. package/scripts/teleport.sh +23 -0
  29. package/scripts/{tests/test-aliases.sh → test-aliases.sh} +3 -3
  30. package/scripts/test_smoke.sh +88 -0
  31. package/scripts/unpack.sh +28 -0
  32. package/scripts/{diagnostics/verify_state.sh → verify_state.sh} +21 -21
  33. package/templates/projects/go/README.md +0 -4
  34. package/templates/projects/node/README.md +0 -4
  35. package/templates/projects/python/README.md +0 -4
  36. package/templates/projects/python/pyproject.toml +0 -15
  37. package/CHANGELOG.md +0 -285
  38. package/LICENSE +0 -1283
  39. package/README.md +0 -315
  40. package/docs/ALIASES.md +0 -128
  41. package/docs/FEATURES.md +0 -166
  42. package/docs/FONTS.md +0 -147
  43. package/docs/INSTALL.md +0 -119
  44. package/docs/KEYS.md +0 -40
  45. package/docs/KEY_ROTATION.md +0 -219
  46. package/docs/LEGACY_ROADMAP.md +0 -142
  47. package/docs/NEOVIM_IDE_GUIDE.md +0 -52
  48. package/docs/README.md +0 -269
  49. package/docs/REPO_AUDIT.md +0 -23
  50. package/docs/SCREENSHOTS.md +0 -116
  51. package/docs/SECRETS.md +0 -76
  52. package/docs/SECURITY.md +0 -30
  53. package/docs/TESTING.md +0 -190
  54. package/docs/TOOLS.md +0 -146
  55. package/docs/TROUBLESHOOTING.md +0 -112
  56. package/docs/UTILS.md +0 -105
  57. package/docs/WSL2_NIX_TROUBLESHOOTING.md +0 -723
  58. package/docs/adr/ADR-001-ci-cd-pipeline.md +0 -101
  59. package/docs/adr/ADR-002-shell-performance.md +0 -121
  60. package/docs/adr/ADR-003-security-first.md +0 -140
  61. package/docs/adr/ADR-004-cli-architecture.md +0 -157
  62. package/docs/adr/ADR-005-chezmoi-choice.md +0 -89
  63. package/docs/adr/ADR-006-shell-selection.md +0 -115
  64. package/docs/adr/README.md +0 -33
  65. package/docs/themes/README.md +0 -20
  66. package/dot_config/aider/aider.conf.yml +0 -32
  67. package/dot_config/alacritty/alacritty.toml.tmpl +0 -483
  68. package/dot_config/ansible/ansible.cfg.tmpl +0 -11
  69. package/dot_config/atuin/config.toml +0 -23
  70. package/dot_config/bat/config +0 -8
  71. package/dot_config/brave-flags.conf.tmpl +0 -7
  72. package/dot_config/btop/btop.conf +0 -16
  73. package/dot_config/btop/themes/tokyonight.theme +0 -34
  74. package/dot_config/bun/bunfig.toml.tmpl +0 -33
  75. package/dot_config/claude/mcp_servers.json +0 -49
  76. package/dot_config/clippy.toml +0 -55
  77. package/dot_config/containers/containers.conf +0 -14
  78. package/dot_config/curl/dot_curlrc +0 -18
  79. package/dot_config/dlv/config.yml +0 -39
  80. package/dot_config/docker/config.json.tmpl +0 -15
  81. package/dot_config/dotfiles/boot/README.md +0 -11
  82. package/dot_config/dotfiles/grub/README.md +0 -11
  83. package/dot_config/dotfiles/lock/README.md +0 -11
  84. package/dot_config/dotfiles/versions.env.tmpl +0 -19
  85. package/dot_config/duf/duf.conf +0 -6
  86. package/dot_config/duti/defaults.duti +0 -5
  87. package/dot_config/emoji/emoji.txt +0 -34
  88. package/dot_config/fastfetch/config.jsonc +0 -28
  89. package/dot_config/firefox/user.js +0 -8
  90. package/dot_config/flatpak/flatpak.list +0 -4
  91. package/dot_config/fontconfig/fonts.conf.tmpl +0 -44
  92. package/dot_config/gem/gemrc +0 -9
  93. package/dot_config/gh/config.yml +0 -12
  94. package/dot_config/ghostty/config.tmpl +0 -661
  95. package/dot_config/git/attributes +0 -12
  96. package/dot_config/git/config.tmpl +0 -77
  97. package/dot_config/git/ignore +0 -27
  98. package/dot_config/gnupg/gpg-agent.conf.tmpl +0 -11
  99. package/dot_config/go/aliases.sh +0 -61
  100. package/dot_config/go/env.sh +0 -24
  101. package/dot_config/go/golangci.yml +0 -118
  102. package/dot_config/go/gopls.json +0 -30
  103. package/dot_config/goose/config.yaml +0 -29
  104. package/dot_config/gtk-3.0/gtk.css.tmpl +0 -305
  105. package/dot_config/gtk-3.0/settings.ini.tmpl +0 -66
  106. package/dot_config/gtk-4.0/gtk.css.tmpl +0 -309
  107. package/dot_config/gtk-4.0/settings.ini.tmpl +0 -21
  108. package/dot_config/htop/htoprc +0 -20
  109. package/dot_config/ice/README.md +0 -13
  110. package/dot_config/inputrc +0 -2
  111. package/dot_config/ipython/profile_default/ipython_config.py.tmpl +0 -5
  112. package/dot_config/just/justfile +0 -104
  113. package/dot_config/k9s/config.yaml.tmpl +0 -65
  114. package/dot_config/k9s/skins/catppuccin-mocha.yaml +0 -116
  115. package/dot_config/karabiner/karabiner.json +0 -14
  116. package/dot_config/kitty/kitty.conf.tmpl +0 -517
  117. package/dot_config/lazydocker/config.yml +0 -186
  118. package/dot_config/lazygit/config.yml +0 -23
  119. package/dot_config/lsd/config.yaml +0 -19
  120. package/dot_config/mas/masapps.txt +0 -5
  121. package/dot_config/minikube/config.json +0 -13
  122. package/dot_config/mise/config.toml +0 -41
  123. package/dot_config/mongosh/mongoshrc.js +0 -67
  124. package/dot_config/mycli/myclirc +0 -67
  125. package/dot_config/nano/nanorc +0 -28
  126. package/dot_config/ncdu/config +0 -12
  127. package/dot_config/nvim/init.lua +0 -4
  128. package/dot_config/nvim/lazy-lock.json +0 -27
  129. package/dot_config/nvim/lua/config/autocmds.lua +0 -63
  130. package/dot_config/nvim/lua/config/keymaps.lua +0 -87
  131. package/dot_config/nvim/lua/config/lazy.lua +0 -34
  132. package/dot_config/nvim/lua/config/options.lua +0 -48
  133. package/dot_config/nvim/lua/plugins/coding.lua +0 -234
  134. package/dot_config/nvim/lua/plugins/dap.lua +0 -201
  135. package/dot_config/nvim/lua/plugins/editor.lua +0 -59
  136. package/dot_config/nvim/lua/plugins/git.lua +0 -9
  137. package/dot_config/nvim/lua/plugins/lsp.lua +0 -221
  138. package/dot_config/nvim/lua/plugins/markdown.lua +0 -17
  139. package/dot_config/nvim/lua/plugins/rust.lua +0 -33
  140. package/dot_config/nvim/lua/plugins/sessions.lua +0 -32
  141. package/dot_config/nvim/lua/plugins/ui.lua +0 -537
  142. package/dot_config/nvim/snippets/all.lua +0 -9
  143. package/dot_config/nvim/snippets/python.lua +0 -16
  144. package/dot_config/pip/pip.conf.tmpl +0 -32
  145. package/dot_config/pypoetry/config.toml.tmpl +0 -6
  146. package/dot_config/pyrightconfig.json.tmpl +0 -5
  147. package/dot_config/raycast/README.md +0 -13
  148. package/dot_config/redis/redisclirc +0 -41
  149. package/dot_config/shell/00-container-detect.sh +0 -53
  150. package/dot_config/shell/00-core-paths.sh.tmpl +0 -95
  151. package/dot_config/shell/05-core-safety.sh.tmpl +0 -13
  152. package/dot_config/shell/40-ls-colors.sh.tmpl +0 -31
  153. package/dot_config/shell/50-logic-functions.sh.tmpl +0 -10
  154. package/dot_config/shell/90-theme-switch.sh +0 -70
  155. package/dot_config/shell/90-ux-aliases.sh.tmpl +0 -35
  156. package/dot_config/shell/91-ux-aliases-lazy.sh.tmpl +0 -23
  157. package/dot_config/shell/Brewfile +0 -207
  158. package/dot_config/shell/Brewfile.cask +0 -92
  159. package/dot_config/shell/Brewfile.cli +0 -119
  160. package/dot_config/shell/README.md +0 -267
  161. package/dot_config/shell/custom/context_suggest.zsh +0 -68
  162. package/dot_config/shell/custom/error_analysis.zsh +0 -45
  163. package/dot_config/sops/dot_sops.yaml +0 -23
  164. package/dot_config/starship.toml.tmpl +0 -124
  165. package/dot_config/task/Taskfile.yml +0 -86
  166. package/dot_config/tflint/tflint.hcl.tmpl +0 -9
  167. package/dot_config/tmux/tmux.conf.tmpl +0 -181
  168. package/dot_config/topgrade/topgrade.toml.tmpl +0 -42
  169. package/dot_config/vscode/extensions.txt +0 -11
  170. package/dot_config/vscode/settings.json.tmpl +0 -123
  171. package/dot_config/waybar/style.css +0 -8
  172. package/dot_config/wezterm/wezterm.lua.tmpl +0 -236
  173. package/dot_config/wget/wgetrc +0 -12
  174. package/dot_config/yarn/yarnrc.yml.tmpl +0 -36
  175. package/dot_config/yazi/yazi.toml +0 -40
  176. package/dot_config/zellij/config.kdl +0 -79
  177. package/dot_config/zsh/dot_zprofile +0 -13
  178. package/dot_config/zsh/dot_zshenv +0 -6
  179. package/dot_config/zsh/dot_zshrc.tmpl +0 -199
  180. package/dot_config/zsh/rc.d/05-ssh-agent.zsh +0 -5
  181. package/dot_config/zsh/rc.d/10-env.zsh.tmpl +0 -28
  182. package/dot_config/zsh/rc.d/20-zinit.zsh.tmpl +0 -22
  183. package/dot_config/zsh/rc.d/30-options.zsh.tmpl +0 -123
  184. package/dot_config/zsh/rc.d/40-bell.zsh.tmpl +0 -20
  185. package/dot_config/zsh/rc.d/50-login-fortune.zsh.tmpl +0 -9
  186. package/dot_local/bin/executable_ai_core +0 -130
  187. package/dot_local/bin/executable_b64 +0 -59
  188. package/dot_local/bin/executable_dot +0 -178
  189. package/dot_local/bin/executable_dot_completion +0 -55
  190. package/dot_local/bin/executable_epoch +0 -62
  191. package/dot_local/bin/executable_extract +0 -108
  192. package/dot_local/bin/executable_git-ai-commit +0 -160
  193. package/dot_local/bin/executable_git-ai-diff +0 -154
  194. package/dot_local/bin/executable_hash +0 -123
  195. package/dot_local/bin/executable_hex +0 -79
  196. package/dot_local/bin/executable_ip +0 -37
  197. package/dot_local/bin/executable_jsonv +0 -54
  198. package/dot_local/bin/executable_jwt +0 -78
  199. package/dot_local/bin/executable_kill-port +0 -59
  200. package/dot_local/bin/executable_lorem +0 -103
  201. package/dot_local/bin/executable_regex +0 -96
  202. package/dot_local/bin/executable_tmux-sessionizer +0 -187
  203. package/dot_local/bin/executable_tour +0 -137
  204. package/dot_local/bin/executable_update +0 -108
  205. package/dot_local/bin/executable_uuid +0 -57
  206. package/dot_local/bin/executable_yamlv +0 -39
  207. package/dot_local/bin/executable_zig-install +0 -89
  208. package/dot_local/bin/voice_ops +0 -7
  209. package/dot_local/share/bash-completion/completions/dot +0 -54
  210. package/dot_local/share/zsh/completions/.keep +0 -0
  211. package/install.sh +0 -255
  212. package/scripts/ci/validate-ci-config.sh +0 -222
  213. package/scripts/demo/record.sh +0 -41
  214. package/scripts/diagnostics/benchmark.sh +0 -201
  215. package/scripts/diagnostics/doctor.sh +0 -115
  216. package/scripts/diagnostics/drift-dashboard.sh +0 -26
  217. package/scripts/diagnostics/health.sh +0 -356
  218. package/scripts/diagnostics/history-analysis.sh +0 -77
  219. package/scripts/diagnostics/security-score.sh +0 -392
  220. package/scripts/dot/commands/appearance.sh +0 -63
  221. package/scripts/dot/commands/core.sh +0 -130
  222. package/scripts/dot/commands/diagnostics.sh +0 -100
  223. package/scripts/dot/commands/meta.sh +0 -117
  224. package/scripts/dot/commands/restore.sh +0 -209
  225. package/scripts/dot/commands/secrets.sh +0 -81
  226. package/scripts/dot/commands/security.sh +0 -73
  227. package/scripts/dot/commands/tools.sh +0 -228
  228. package/scripts/dot/lib/utils.sh +0 -72
  229. package/scripts/fonts/install-nerd-fonts.sh +0 -59
  230. package/scripts/fonts/patch-fonts.sh +0 -34
  231. package/scripts/ops/chezmoi-apply.sh +0 -42
  232. package/scripts/ops/chezmoi-diff.sh +0 -14
  233. package/scripts/ops/chezmoi-remove.sh +0 -43
  234. package/scripts/ops/chezmoi-update.sh +0 -16
  235. package/scripts/ops/heal.sh +0 -466
  236. package/scripts/ops/health-check.sh +0 -380
  237. package/scripts/ops/rollback.sh +0 -531
  238. package/scripts/ops/teleport.sh +0 -32
  239. package/scripts/secrets/age-init.sh +0 -69
  240. package/scripts/secrets/create-secrets-file.sh +0 -44
  241. package/scripts/secrets/encrypt-ssh-key.sh +0 -42
  242. package/scripts/security/backup.sh +0 -17
  243. package/scripts/security/dns-doh.sh +0 -29
  244. package/scripts/security/encryption-check.sh +0 -39
  245. package/scripts/security/enforce-policies.sh +0 -339
  246. package/scripts/security/firewall.sh +0 -34
  247. package/scripts/security/lock-configs.sh +0 -57
  248. package/scripts/security/lock-screen.sh +0 -33
  249. package/scripts/security/manage-secrets.sh +0 -415
  250. package/scripts/security/telemetry-kill.sh +0 -28
  251. package/scripts/security/usb-safety.sh +0 -29
  252. package/scripts/tests/README.md +0 -241
  253. package/scripts/tests/benchmark.sh +0 -91
  254. package/scripts/tests/framework/assertions.sh +0 -283
  255. package/scripts/tests/framework/mocks.sh +0 -201
  256. package/scripts/tests/framework/test_runner.sh +0 -189
  257. package/scripts/tests/integration/test_install.sh +0 -237
  258. package/scripts/tests/performance/benchmark_runner.sh +0 -156
  259. package/scripts/tests/performance/regression_check.sh +0 -73
  260. package/scripts/tests/performance/stress_test.sh +0 -65
  261. package/scripts/tests/test-docker.sh +0 -48
  262. package/scripts/tests/unit/test_ai_aliases.sh +0 -158
  263. package/scripts/tests/unit/test_ai_cli_checks.sh +0 -47
  264. package/scripts/tests/unit/test_backup.sh +0 -227
  265. package/scripts/tests/unit/test_case_functions.sh +0 -238
  266. package/scripts/tests/unit/test_cd_aliases.sh +0 -367
  267. package/scripts/tests/unit/test_dot_cli.sh +0 -217
  268. package/scripts/tests/unit/test_encode64.sh +0 -67
  269. package/scripts/tests/unit/test_environment.sh +0 -78
  270. package/scripts/tests/unit/test_extract.sh +0 -163
  271. package/scripts/tests/unit/test_framework_edge_cases.sh +0 -113
  272. package/scripts/tests/unit/test_genpass.sh +0 -298
  273. package/scripts/tests/unit/test_install_edge_cases.sh +0 -167
  274. package/scripts/tests/unit/test_installers.sh +0 -172
  275. package/scripts/tests/unit/test_keygen.sh +0 -68
  276. package/scripts/tests/unit/test_logging.sh +0 -96
  277. package/scripts/tests/unit/test_os_detection_comprehensive.sh +0 -388
  278. package/scripts/tests/unit/test_package_managers_comprehensive.sh +0 -321
  279. package/scripts/tests/unit/test_prependpath.sh +0 -66
  280. package/scripts/tests/unit/test_prependpath_refactored.sh +0 -89
  281. package/scripts/tests/unit/test_rd.sh +0 -230
  282. package/scripts/tests/unit/test_security_fixes.sh +0 -130
  283. package/scripts/tests/unit/test_security_scripts.sh +0 -87
  284. package/scripts/tests/unit/test_template_validation.sh +0 -238
  285. package/scripts/tests/unit/test_utility_functions.sh +0 -144
  286. package/scripts/tests/unit/test_wave1_alias_split.sh +0 -132
  287. package/scripts/tests/unit/test_wave1_ci_pinning.sh +0 -61
  288. package/scripts/tests/unit/test_wave1_gitleaks_config.sh +0 -52
  289. package/scripts/tests/unit/test_wave1_heal_fixes.sh +0 -97
  290. package/scripts/tests/unit/test_wave1_install_gpg.sh +0 -35
  291. package/scripts/tests/unit/test_wave1_zshenv_path.sh +0 -89
  292. package/scripts/tests/unit/test_wave1_zshrc_lazy_hook.sh +0 -115
  293. package/scripts/tests/unit/test_wave2_dot_new_guard.sh +0 -75
  294. package/scripts/tests/unit/test_zipf.sh +0 -76
  295. package/scripts/theme/apply-gnome-theme.sh +0 -297
  296. package/scripts/theme/install-boot-logo.sh +0 -61
  297. package/scripts/theme/install-catppuccin-themes.sh +0 -346
  298. package/scripts/theme/install-cursors.sh +0 -24
  299. package/scripts/theme/install-file-icons.sh +0 -25
  300. package/scripts/theme/install-grub-theme.sh +0 -51
  301. package/scripts/theme/install-lock-icon.sh +0 -29
  302. package/scripts/theme/switch.sh +0 -250
  303. package/scripts/theme/wallpaper-rotate.sh +0 -82
  304. package/scripts/theme/wallpaper-sync.sh +0 -42
  305. package/scripts/tools/cmatrix.sh +0 -20
  306. package/scripts/tools/emoji-picker.sh +0 -45
  307. package/scripts/tools/figlet-banner.sh +0 -17
  308. package/scripts/tools/log-rotate.sh +0 -29
  309. package/scripts/tools/lolcat-wrap.sh +0 -18
  310. package/scripts/tools/pipes.sh +0 -47
  311. package/scripts/tuning/linux.sh +0 -175
  312. package/scripts/tuning/macos.sh +0 -46
  313. package/templates/projects/molecule/README.md +0 -7
  314. package/templates/projects/molecule/converge.yml +0 -7
  315. package/templates/projects/molecule/molecule.yml +0 -16
  316. package/templates/projects/packer/README.md +0 -15
  317. package/templates/projects/packer/main.pkr.hcl +0 -15
@@ -1,100 +0,0 @@
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
@@ -1,117 +0,0 @@
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
@@ -1,209 +0,0 @@
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
@@ -1,81 +0,0 @@
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
@@ -1,73 +0,0 @@
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