@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.
- package/CHANGELOG.md +122 -32
- package/LICENSE +1 -1
- package/README.md +211 -242
- package/docs/.vitepress/reports/localization-readability-audit.md +69 -0
- package/docs/AI.md +102 -0
- package/docs/COPYRIGHT +2 -2
- package/docs/NAMING_CONVENTIONS.md +95 -0
- package/docs/README.md +58 -249
- package/docs/adr/ADR-004-cli-architecture.md +2 -2
- package/docs/adr/ADR-006-shell-selection.md +2 -2
- package/docs/adr/ADR-007-multi-shell-parity.md +53 -0
- package/docs/adr/ADR-008-alias-system-architecture.md +85 -0
- package/docs/adr/README.md +2 -3
- package/docs/architecture/ARCHITECTURE.md +113 -0
- package/docs/architecture/INTEROP.md +36 -0
- package/docs/architecture/REPO_LAYOUT.md +237 -0
- package/docs/architecture/WALKTHROUGH.md +82 -0
- package/docs/architecture/fleet-deployment.md +73 -0
- package/docs/archive/EUXIS_2026_REVIEW.md +119 -0
- package/docs/archive/MILESTONE_v0.2.493.md +43 -0
- package/docs/{PLAN.md → archive/PLAN.md} +1 -1
- package/docs/guides/INSTALL.md +140 -0
- package/docs/{NEOVIM_IDE_GUIDE.md → guides/NEOVIM_IDE_GUIDE.md} +12 -12
- package/docs/guides/THEMING.md +222 -0
- package/docs/{TROUBLESHOOTING.md → guides/TROUBLESHOOTING.md} +36 -0
- package/docs/{WSL2_NIX_TROUBLESHOOTING.md → guides/WSL2_NIX_TROUBLESHOOTING.md} +8 -8
- package/docs/index.md +39 -0
- package/docs/interop/A2A.md +32 -0
- package/docs/manual/00-introduction.md +85 -0
- package/docs/manual/01-concepts/01-architecture.md +134 -0
- package/docs/manual/01-concepts/02-trust-model.md +178 -0
- package/docs/manual/01-concepts/03-theme-engine.md +182 -0
- package/docs/manual/01-concepts/04-fleet.md +142 -0
- package/docs/manual/01-concepts/05-self-healing.md +197 -0
- package/docs/manual/02-tutorials/01-first-install.md +192 -0
- package/docs/manual/02-tutorials/02-add-wallpaper.md +211 -0
- package/docs/manual/02-tutorials/03-create-profile.md +238 -0
- package/docs/manual/02-tutorials/04-encrypt-secret.md +275 -0
- package/docs/manual/02-tutorials/05-deploy-fleet.md +279 -0
- package/docs/manual/03-reference/01-dot-cli.md +413 -0
- package/docs/manual/03-reference/02-config-files.md +259 -0
- package/docs/manual/03-reference/03-environment.md +120 -0
- package/docs/manual/03-reference/04-templates.md +184 -0
- package/docs/manual/03-reference/05-feature-flags.md +118 -0
- package/docs/manual/04-cookbook/01-recipes.md +281 -0
- package/docs/manual/04-cookbook/02-troubleshooting.md +319 -0
- package/docs/manual/04-cookbook/03-faq.md +167 -0
- package/docs/manual/05-appendices/A-platform-matrix.md +97 -0
- package/docs/manual/05-appendices/B-security-checklist.md +78 -0
- package/docs/manual/05-appendices/C-glossary.md +36 -0
- package/docs/manual/05-appendices/D-bibliography.md +54 -0
- package/docs/manual/05-appendices/E-license.md +34 -0
- package/docs/manual/_toc.yml +58 -0
- package/docs/manual/command-index.md +58 -0
- package/docs/manual/concept-index.md +164 -0
- package/docs/operations/ATTESTATION.md +39 -0
- package/docs/operations/MAINTENANCE.md +59 -0
- package/docs/operations/MIGRATION.md +101 -0
- package/docs/operations/OPERATIONS.md +164 -0
- package/docs/operations/RELIABILITY.md +116 -0
- package/docs/{ROADMAP.md → operations/ROADMAP.md} +11 -11
- package/docs/operations/TESTING.md +195 -0
- package/docs/operations/TRACEABILITY.md +31 -0
- package/docs/operations/TRUSTED_AGENT_WORKSTATION.md +61 -0
- package/docs/operations/VERSION_SYNC.md +344 -0
- package/docs/{ALIASES.md → reference/ALIASES.md} +2 -6
- package/docs/reference/ALIASES_CHEATSHEET.md +28 -0
- package/docs/reference/ALIASES_DEPRECATIONS.md +9 -0
- package/docs/reference/FEATURES.md +62 -0
- package/docs/reference/FONTS.md +108 -0
- package/docs/reference/PROFILES.md +65 -0
- package/docs/{SCREENSHOTS.md → reference/SCREENSHOTS.md} +26 -25
- package/docs/reference/SCRIPTS.md +67 -0
- package/docs/reference/SUPPORT_MATRIX.md +74 -0
- package/docs/reference/THEMES.md +113 -0
- package/docs/reference/TOOLS.md +105 -0
- package/docs/reference/UTILS.md +151 -0
- package/docs/security/AI_ACT_COMPLIANCE.md +90 -0
- package/docs/security/AUTOMATION_SECRETS.md +22 -0
- package/docs/security/COMPLIANCE.md +453 -0
- package/docs/security/ENCRYPTION.md +52 -0
- package/docs/security/FMEA.md +155 -0
- package/docs/security/INCIDENT_RESPONSE.md +575 -0
- package/docs/security/KEYS.md +45 -0
- package/docs/security/MCP_POLICY.md +69 -0
- package/docs/security/POLICY_RELEASES.md +33 -0
- package/docs/security/README.md +24 -0
- package/docs/security/SECRETS.md +146 -0
- package/docs/security/SECURITY.md +41 -0
- package/docs/security/SECURITY_CHECKLIST.md +44 -0
- package/docs/security/SOUP_REGISTER.md +32 -0
- package/docs/security/THREAT_MODEL.md +120 -0
- package/docs/security/VERIFICATION_VALIDATION.md +224 -0
- package/docs/themes/README.md +3 -17
- package/docs/themes/VISUAL_INTEGRITY_REPORT.md +26 -0
- package/docs/themes/hero-shot.svg +78 -0
- package/dot_config/.module-manifest.json +69 -0
- package/dot_config/ai/identity.md +20 -0
- package/dot_config/ai/patterns/architect.md +14 -0
- package/dot_config/ai/patterns/hardener.md +13 -0
- package/dot_config/ai/patterns/refactor.md +13 -0
- package/dot_config/aider/aider.conf.yml +1 -1
- package/dot_config/alacritty/alacritty.toml.tmpl +41 -469
- package/dot_config/atuin/config.toml +18 -1
- package/dot_config/bat/config +16 -1
- package/dot_config/claude/mcp_servers.json +3 -32
- package/dot_config/dotfiles/agent-card.json +29 -0
- package/dot_config/dotfiles/agent-profiles.json +92 -0
- package/dot_config/dotfiles/boot/README.md +1 -1
- package/dot_config/dotfiles/grub/README.md +1 -1
- package/dot_config/dotfiles/lock/README.md +1 -1
- package/dot_config/dotfiles/mcp-lock.json +33 -0
- package/dot_config/dotfiles/mcp-policy.json +52 -0
- package/dot_config/dotfiles/mcp-registry.json +47 -0
- package/dot_config/dotfiles/model-registry.json +20 -0
- package/dot_config/dotfiles/policy-bundles.json +38 -0
- package/dot_config/dotfiles/prompt-registry.json +16 -0
- package/dot_config/dotfiles/versions.env +18 -0
- package/dot_config/environment.d/50-ssh-agent.conf +2 -0
- package/dot_config/environment.d/90-wayland.conf +19 -0
- package/dot_config/firefox/user.js.tmpl +58 -0
- package/dot_config/fish/completions/dot-theme-sync.fish.tmpl +9 -0
- package/dot_config/fish/completions/dot.fish.tmpl +115 -0
- package/dot_config/fish/conf.d/000-perf-cache.fish +56 -0
- package/dot_config/fish/conf.d/aliases.fish.tmpl +77 -0
- package/dot_config/fish/conf.d/env.fish.tmpl +48 -0
- package/dot_config/fish/conf.d/functions.fish.tmpl +22 -0
- package/dot_config/fish/conf.d/init.fish.tmpl +151 -0
- package/dot_config/fish/config.fish.tmpl +44 -0
- package/dot_config/fish/fish_plugins +1 -0
- package/dot_config/fish/functions/_.fish +3 -0
- package/dot_config/fish/functions/_cached_eval.fish +58 -0
- package/dot_config/fish/functions/als.fish +46 -0
- package/dot_config/fish/functions/bg-upgrade.fish +7 -0
- package/dot_config/fish/functions/c.fish +3 -0
- package/dot_config/fish/functions/cat.fish +9 -0
- package/dot_config/fish/functions/d.fish +7 -0
- package/dot_config/fish/functions/dot.fish +34 -0
- package/dot_config/fish/functions/h.fish +3 -0
- package/dot_config/fish/functions/l.fish +7 -0
- package/dot_config/fish/functions/la.fish +7 -0
- package/dot_config/fish/functions/ll.fish +7 -0
- package/dot_config/fish/functions/log_error.fish +13 -0
- package/dot_config/fish/functions/log_info.fish +13 -0
- package/dot_config/fish/functions/lr.fish +7 -0
- package/dot_config/fish/functions/lra.fish +7 -0
- package/dot_config/fish/functions/ls.fish +7 -0
- package/dot_config/fish/functions/lt.fish +7 -0
- package/dot_config/fish/functions/lta.fish +7 -0
- package/dot_config/fish/functions/notify-run.fish +11 -0
- package/dot_config/fish/functions/q.fish +3 -0
- package/dot_config/fish/functions/silent-run.fish +7 -0
- package/dot_config/fish/functions/yy.fish +8 -0
- package/dot_config/fontconfig/fonts.conf.tmpl +13 -0
- package/dot_config/foot/foot.ini.tmpl +33 -0
- package/dot_config/fuzzel/fuzzel.ini.tmpl +18 -0
- package/dot_config/fzf/fzf.zsh +48 -0
- package/dot_config/ghostty/config.tmpl +69 -565
- package/dot_config/git/allowed_signers.tmpl +18 -0
- package/dot_config/git/commit-template +10 -0
- package/dot_config/gnupg/{gpg-agent.conf.tmpl → gpg-agent.conf} +3 -3
- package/dot_config/goose/config.yaml +2 -2
- package/dot_config/gtk-3.0/gtk.css.tmpl +59 -180
- package/dot_config/gtk-3.0/settings.ini.tmpl +5 -44
- package/dot_config/gtk-4.0/gtk.css.tmpl +79 -136
- package/dot_config/gtk-4.0/settings.ini.tmpl +5 -8
- package/dot_config/ipython/profile_default/ipython_config.py +19 -0
- package/dot_config/just/justfile +18 -0
- package/dot_config/kanshi/config.tmpl +22 -0
- package/dot_config/kitty/kitty.conf.tmpl +44 -508
- package/dot_config/lazygit/config.yml +18 -6
- package/dot_config/mako/config +47 -0
- package/dot_config/micro/settings.json +3 -0
- package/dot_config/mimeapps.list +77 -0
- package/dot_config/mise/config.toml +63 -5
- package/dot_config/mongosh/mongoshrc.js +1 -0
- package/dot_config/mpv/input.conf +47 -0
- package/dot_config/mpv/mpv.conf +47 -0
- package/dot_config/niri/config.kdl.tmpl +327 -0
- package/dot_config/nushell/aliases.nu +18 -0
- package/dot_config/nushell/completions.nu.tmpl +52 -0
- package/dot_config/nushell/config.nu.tmpl +86 -0
- package/dot_config/nushell/env.nu.tmpl +94 -0
- package/dot_config/nushell/functions.nu.tmpl +17 -0
- package/dot_config/nvim/init.lua +14 -0
- package/dot_config/nvim/lazy-lock.json +45 -14
- package/dot_config/nvim/lua/config/autocmds.lua +45 -1
- package/dot_config/nvim/lua/config/keymaps.lua +13 -8
- package/dot_config/nvim/lua/config/lazy.lua +22 -12
- package/dot_config/nvim/lua/config/options.lua +1 -0
- package/dot_config/nvim/lua/plugins/ai.lua +75 -0
- package/dot_config/nvim/lua/plugins/coding.lua +11 -29
- package/dot_config/nvim/lua/plugins/completion.lua +60 -0
- package/dot_config/nvim/lua/plugins/dap.lua +215 -4
- package/dot_config/nvim/lua/plugins/editor.lua +6 -10
- package/dot_config/nvim/lua/plugins/git.lua +1 -0
- package/dot_config/nvim/lua/plugins/lsp.lua +16 -81
- package/dot_config/nvim/lua/plugins/markdown.lua +1 -0
- package/dot_config/nvim/lua/plugins/rust.lua +1 -0
- package/dot_config/nvim/lua/plugins/sessions.lua +1 -0
- package/dot_config/nvim/lua/plugins/ui.lua +23 -51
- package/dot_config/paru/paru.conf +10 -0
- package/dot_config/powershell/Microsoft.PowerShell_profile.ps1.tmpl +81 -0
- package/dot_config/pueue/pueue.yml +34 -0
- package/dot_config/raycast/README.md +1 -1
- package/dot_config/ripgrep/ripgreprc +21 -0
- package/dot_config/shell/00-core-paths.sh.tmpl +62 -24
- package/dot_config/shell/05-core-safety.sh +47 -0
- package/dot_config/shell/10-secrets.sh +40 -0
- package/dot_config/shell/40-fzf-defaults.sh.tmpl +16 -0
- package/dot_config/shell/40-ls-colors.sh +48 -0
- package/dot_config/shell/50-logic-functions-core.sh.tmpl +10 -0
- package/dot_config/shell/51-logic-functions-extra.sh.tmpl +64 -0
- package/dot_config/shell/90-ux-aliases.sh.tmpl +90 -5
- package/dot_config/shell/91-ux-aliases-lazy.sh.tmpl +33 -2
- package/dot_config/shell/Brewfile.cli +8 -0
- package/dot_config/shell/README.md +9 -9
- package/dot_config/shell/als_data.txt.tmpl +65 -0
- package/dot_config/shell/custom/auto_ls.zsh +20 -0
- package/dot_config/shell/custom/context_suggest.zsh +50 -50
- package/dot_config/shell/custom/error_analysis.zsh +29 -29
- package/dot_config/starship.toml.tmpl +85 -7
- package/dot_config/swaylock/config +43 -0
- package/dot_config/systemd/user/dotfiles-maintenance.service +8 -0
- package/dot_config/systemd/user/dotfiles-maintenance.timer +11 -0
- package/dot_config/systemd/user/pueued.service +12 -0
- package/dot_config/systemd/user/ssh-agent.service +12 -0
- package/dot_config/tmux/tmux.conf.tmpl +80 -38
- package/dot_config/topgrade.toml.tmpl +54 -0
- package/dot_config/user-dirs.dirs +9 -0
- package/dot_config/vscode/settings.json.tmpl +9 -50
- package/dot_config/waybar/config.jsonc.tmpl +90 -0
- package/dot_config/waybar/style.css.tmpl +211 -0
- package/dot_config/wezterm/wezterm.lua.tmpl +31 -203
- package/dot_config/xdg-desktop-portal/niri-portals.conf +5 -0
- package/dot_config/yazi/keymap.toml +67 -0
- package/dot_config/yazi/theme.toml +102 -0
- package/dot_config/zathura/zathurarc +52 -0
- package/dot_config/zellij/{config.kdl → config.kdl.tmpl} +1 -1
- package/dot_config/zsh/dot_zprofile +1 -7
- package/dot_config/zsh/dot_zshenv +2 -3
- package/dot_config/zsh/dot_zshrc.tmpl +368 -69
- package/dot_config/zsh/rc.d/00-alias-shims.zsh +77 -0
- package/dot_config/zsh/rc.d/05-ssh-agent.zsh +17 -4
- package/dot_config/zsh/rc.d/10-env.zsh.tmpl +4 -4
- package/dot_config/zsh/rc.d/20-zinit.zsh +65 -0
- package/dot_config/zsh/rc.d/30-options.zsh.tmpl +101 -30
- package/dot_config/zsh/rc.d/99-alias-wrapper.zsh +32 -0
- package/dot_local/bin/__pycache__/executable_dot-load-benchmark-ptycpython-312.pyc +0 -0
- package/dot_local/bin/executable_ai-update +195 -0
- package/dot_local/bin/executable_ai_core +113 -91
- package/dot_local/bin/executable_antigravity +11 -0
- package/dot_local/bin/executable_b64 +61 -36
- package/dot_local/bin/executable_bm +77 -0
- package/dot_local/bin/executable_cb +39 -0
- package/dot_local/bin/executable_dot +543 -132
- package/dot_local/bin/executable_dot-ai +36 -0
- package/dot_local/bin/executable_dot-bootstrap +77 -0
- package/dot_local/bin/executable_dot-launch-or-focus +52 -0
- package/dot_local/bin/executable_dot-load-benchmark +31 -0
- package/dot_local/bin/executable_dot-load-benchmark-pty +77 -0
- package/dot_local/bin/executable_dot-theme-sync +952 -0
- package/dot_local/bin/executable_dot_completion +2 -0
- package/dot_local/bin/executable_dtags +28 -0
- package/dot_local/bin/executable_epoch +43 -38
- package/dot_local/bin/executable_extract +32 -99
- package/dot_local/bin/executable_gbd +52 -0
- package/dot_local/bin/executable_gd +42 -0
- package/dot_local/bin/executable_git-ai-commit +35 -20
- package/dot_local/bin/executable_git-ai-diff +33 -18
- package/dot_local/bin/executable_gl +101 -0
- package/dot_local/bin/executable_hash +56 -18
- package/dot_local/bin/executable_hashsum +160 -0
- package/dot_local/bin/executable_hex +44 -8
- package/dot_local/bin/executable_jsonv +34 -10
- package/dot_local/bin/executable_jwt +22 -6
- package/dot_local/bin/executable_kill-port +18 -2
- package/dot_local/bin/executable_lorem +21 -6
- package/dot_local/bin/executable_mkscript +35 -0
- package/dot_local/bin/executable_monitor +56 -0
- package/dot_local/bin/{executable_ip → executable_myip} +16 -2
- package/dot_local/bin/executable_notify +22 -0
- package/dot_local/bin/executable_open +36 -0
- package/dot_local/bin/executable_pw +27 -0
- package/dot_local/bin/executable_rec-start +46 -0
- package/dot_local/bin/executable_rec-stop +35 -0
- package/dot_local/bin/executable_regex +49 -13
- package/dot_local/bin/executable_start-niri +8 -0
- package/dot_local/bin/executable_tmux-sessionizer +276 -149
- package/dot_local/bin/executable_tour +112 -74
- package/dot_local/bin/executable_up +21 -0
- package/dot_local/bin/executable_update +45 -11
- package/dot_local/bin/executable_uuid +37 -7
- package/dot_local/bin/executable_win +32 -0
- package/dot_local/bin/executable_yamlv +25 -7
- package/dot_local/share/bash-completion/completions/dot +62 -44
- package/dot_local/share/icons/hicolor/128x128/apps/rousseau.png +0 -0
- package/dot_local/share/icons/hicolor/16x16/apps/rousseau.png +0 -0
- package/dot_local/share/icons/hicolor/24x24/apps/rousseau.png +0 -0
- package/dot_local/share/icons/hicolor/256x256/apps/rousseau.png +0 -0
- package/dot_local/share/icons/hicolor/32x32/apps/rousseau.png +0 -0
- package/dot_local/share/icons/hicolor/48x48/apps/rousseau.png +0 -0
- package/dot_local/share/icons/hicolor/512x512/apps/rousseau.png +0 -0
- package/dot_local/share/icons/hicolor/64x64/apps/rousseau.png +0 -0
- package/dot_local/share/icons/hicolor/96x96/apps/rousseau.png +0 -0
- package/dot_local/share/icons/hicolor/scalable/apps/rousseau.png +0 -0
- package/dot_local/share/man/man1/dot.1 +149 -0
- package/dot_local/share/mise/plugins/kiro-cli/bin/executable_download +64 -0
- package/dot_local/share/mise/plugins/kiro-cli/bin/executable_install +18 -0
- package/dot_local/share/mise/plugins/kiro-cli/bin/executable_list-all +13 -0
- package/dot_local/share/wayland-sessions/niri.desktop.tmpl +6 -0
- package/dot_local/share/zsh/completions/_dot +283 -0
- package/install.sh +297 -210
- package/package.json +17 -5
- package/scripts/ci/check-copyright-headers.sh +96 -0
- package/scripts/ci/guard-gitleaks-checkout.sh +57 -0
- package/scripts/ci/install-chezmoi-verified.sh +64 -0
- package/scripts/ci/validate-ci-config.sh +41 -39
- package/scripts/demo/record.sh +3 -2
- package/scripts/diagnostics/a2a-conformance.sh +162 -0
- package/scripts/diagnostics/alias-governance.sh +137 -0
- package/scripts/diagnostics/aliases-cheatsheet.sh +73 -0
- package/scripts/diagnostics/aliases-manifest.sh +31 -0
- package/scripts/diagnostics/benchmark.sh +209 -29
- package/scripts/diagnostics/conflicts.sh +72 -0
- package/scripts/diagnostics/doctor-unified.sh +38 -0
- package/scripts/diagnostics/doctor.sh +491 -65
- package/scripts/diagnostics/drift-dashboard.sh +17 -6
- package/scripts/diagnostics/health.sh +351 -110
- package/scripts/diagnostics/history-analysis.sh +12 -4
- package/scripts/diagnostics/mcp-doctor.sh +575 -0
- package/scripts/diagnostics/perf.sh +225 -0
- package/scripts/diagnostics/scorecard.sh +118 -0
- package/scripts/diagnostics/secret-governance.sh +58 -0
- package/scripts/diagnostics/security-score.sh +139 -93
- package/scripts/diagnostics/smoke-test.sh +87 -0
- package/scripts/diagnostics/snapshot.sh +89 -0
- package/scripts/diagnostics/verify.sh +107 -0
- package/scripts/diagnostics/verify_state.sh +2 -2
- package/scripts/diagnostics/version-locks.sh +79 -0
- package/scripts/diagnostics/workstation-attestation.sh +181 -0
- package/scripts/docs/build-manual.sh +883 -0
- package/scripts/docs/check-manual.sh +213 -0
- package/scripts/dot/commands/agent.sh +465 -0
- package/scripts/dot/commands/ai.sh +416 -0
- package/scripts/dot/commands/aliases.sh +250 -0
- package/scripts/dot/commands/appearance.sh +21 -4
- package/scripts/dot/commands/core.sh +59 -4
- package/scripts/dot/commands/diagnostics.sh +132 -3
- package/scripts/dot/commands/fleet.sh +399 -0
- package/scripts/dot/commands/lint.sh +177 -0
- package/scripts/dot/commands/manual.sh +168 -0
- package/scripts/dot/commands/meta.sh +148 -17
- package/scripts/dot/commands/patterns.sh +54 -0
- package/scripts/dot/commands/restore.sh +57 -35
- package/scripts/dot/commands/secrets.sh +151 -9
- package/scripts/dot/commands/security.sh +3 -0
- package/scripts/dot/commands/tools.sh +268 -27
- package/scripts/dot/data/alias-deprecations.tsv +2 -0
- package/scripts/dot/lib/bento.sh +49 -0
- package/scripts/dot/lib/log.sh +194 -0
- package/scripts/dot/lib/platform.sh +98 -0
- package/scripts/dot/lib/ui.sh +507 -0
- package/scripts/dot/lib/utils.sh +318 -18
- package/scripts/fonts/install-nerd-fonts.sh +19 -10
- package/scripts/fonts/patch-fonts.sh +1 -0
- package/scripts/git-hooks/install.sh +11 -0
- package/scripts/git-hooks/pre-commit +12 -0
- package/scripts/git-hooks/pre-commit-audit.sh +145 -0
- package/scripts/git-hooks/pre-push +29 -0
- package/scripts/git-hooks/prepare-commit-msg +29 -0
- package/scripts/lib/secrets_provider.sh +158 -0
- package/scripts/maintenance/check-updates.sh +131 -0
- package/scripts/ops/ai-setup.sh +55 -0
- package/scripts/ops/bundle.sh +77 -0
- package/scripts/ops/chaos.sh +49 -0
- package/scripts/ops/chezmoi-apply.sh +245 -17
- package/scripts/ops/chezmoi-diff.sh +1 -0
- package/scripts/ops/chezmoi-remove.sh +2 -0
- package/scripts/ops/chezmoi-update.sh +34 -2
- package/scripts/ops/heal-chezmoi.sh +51 -0
- package/scripts/ops/heal-system.sh +128 -0
- package/scripts/ops/heal-tools.sh +340 -0
- package/scripts/ops/heal.sh +98 -342
- package/scripts/ops/post-apply-repair.sh +106 -0
- package/scripts/ops/prewarm.sh +127 -0
- package/scripts/ops/release.sh +252 -0
- package/scripts/ops/rollback.sh +86 -28
- package/scripts/ops/setup.sh +137 -0
- package/scripts/ops/teleport.sh +2 -1
- package/scripts/qa/coverage-baseline.sh +60 -0
- package/scripts/qa/docs-coverage.sh +111 -0
- package/scripts/qa/reliability-audit.sh +138 -0
- package/scripts/qa/traceability-coverage.sh +116 -0
- package/scripts/qa/validate-examples.sh +26 -0
- package/scripts/qa/wsl-contract.sh +11 -0
- package/scripts/release/package-policy-bundles.sh +125 -0
- package/scripts/secrets/age-init.sh +1 -0
- package/scripts/secrets/create-secrets-file.sh +1 -0
- package/scripts/secrets/encrypt-ssh-key.sh +1 -0
- package/scripts/security/backup.sh +44 -4
- package/scripts/security/dns-doh.sh +36 -14
- package/scripts/security/encryption-check.sh +27 -12
- package/scripts/security/enforce-policies.sh +11 -16
- package/scripts/security/firewall.sh +76 -20
- package/scripts/security/lock-configs.sh +2 -2
- package/scripts/security/lock-screen.sh +40 -18
- package/scripts/security/manage-secrets.sh +42 -29
- package/scripts/security/ssh-cert.sh +203 -0
- package/scripts/security/telemetry-kill.sh +40 -18
- package/scripts/security/usb-safety.sh +37 -15
- package/scripts/theme/apply-gnome-theme.sh +87 -56
- package/scripts/theme/extract-theme.py +677 -0
- package/scripts/theme/install-boot-logo.sh +1 -0
- package/scripts/theme/install-catppuccin-themes.sh +57 -33
- package/scripts/theme/install-cursors.sh +1 -0
- package/scripts/theme/install-file-icons.sh +1 -0
- package/scripts/theme/install-grub-theme.sh +11 -1
- package/scripts/theme/install-lock-icon.sh +1 -0
- package/scripts/theme/merge-wallpaper.sh +141 -0
- package/scripts/theme/rebuild-themes.sh +309 -0
- package/scripts/theme/switch.sh +308 -137
- package/scripts/theme/wallpaper-rotate.sh +66 -12
- package/scripts/theme/wallpaper-sync.sh +386 -31
- package/scripts/tools/cmatrix.sh +1 -0
- package/scripts/tools/detect-collisions.py +1 -1
- package/scripts/tools/emoji-picker.sh +4 -1
- package/scripts/tools/figlet-banner.sh +1 -0
- package/scripts/tools/log-rotate.sh +2 -1
- package/scripts/tools/lolcat-wrap.sh +1 -0
- package/scripts/tools/pipes.sh +1 -0
- package/scripts/tuning/linux.sh +23 -13
- package/scripts/tuning/macos.sh +13 -4
- package/scripts/uninstall.sh +85 -0
- package/scripts/version-sync.sh +487 -0
- package/templates/chezmoi-data/geekom-a9.toml.example +21 -0
- package/templates/chezmoi-data/mac-m1.toml.example +16 -0
- package/templates/chezmoi-data/mac-t2-linux.toml.example +21 -0
- package/templates/chezmoi-data/surface-pro-7p.toml.example +21 -0
- package/templates/projects/go/.github/workflows/ci.yml +31 -0
- package/templates/projects/go/README.md +1 -1
- package/templates/projects/go/cmd/__PROJECT_NAME__/main.go +1 -0
- package/templates/projects/go/go.sum +0 -0
- package/templates/projects/molecule/README.md +1 -1
- package/templates/projects/node/.github/workflows/ci.yml +30 -0
- package/templates/projects/node/README.md +1 -1
- package/templates/projects/node/package-lock.json +12 -0
- package/templates/projects/node/src/index.js +1 -0
- package/templates/projects/packer/README.md +1 -1
- package/templates/projects/python/.github/workflows/ci.yml +34 -0
- package/templates/projects/python/README.md +1 -1
- package/templates/projects/python/src/__PROJECT_NAME__/__init__.py +1 -0
- package/templates/projects/python/tests/test_basic.py +1 -0
- package/docs/ARCHITECTURE.md +0 -229
- package/docs/COMPLIANCE.md +0 -47
- package/docs/FEATURES.md +0 -166
- package/docs/FONTS.md +0 -147
- package/docs/INSTALL.md +0 -119
- package/docs/KEYS.md +0 -40
- package/docs/OPERATIONS.md +0 -130
- package/docs/PR_DESCRIPTION.md +0 -149
- package/docs/SECRETS.md +0 -76
- package/docs/SECURITY.md +0 -30
- package/docs/SECURITY_CHECKLIST.md +0 -25
- package/docs/TASK.md +0 -99
- package/docs/TESTING.md +0 -190
- package/docs/TOOLS.md +0 -146
- package/docs/UTILS.md +0 -105
- package/docs/WALKTHROUGH.md +0 -165
- package/dot_config/clippy.toml +0 -55
- package/dot_config/dotfiles/versions.env.tmpl +0 -19
- package/dot_config/firefox/user.js +0 -8
- package/dot_config/git/config.tmpl +0 -77
- package/dot_config/go/aliases.sh +0 -61
- package/dot_config/go/env.sh +0 -24
- package/dot_config/ice/README.md +0 -13
- package/dot_config/ipython/profile_default/ipython_config.py.tmpl +0 -5
- package/dot_config/lsd/config.yaml +0 -19
- package/dot_config/nvim/snippets/all.lua +0 -9
- package/dot_config/nvim/snippets/python.lua +0 -16
- package/dot_config/shell/00-container-detect.sh +0 -53
- package/dot_config/shell/05-core-safety.sh.tmpl +0 -13
- package/dot_config/shell/40-ls-colors.sh.tmpl +0 -31
- package/dot_config/shell/90-theme-switch.sh +0 -70
- package/dot_config/topgrade/topgrade.toml.tmpl +0 -42
- package/dot_config/waybar/style.css +0 -8
- package/dot_config/zsh/rc.d/20-zinit.zsh.tmpl +0 -22
- package/dot_local/bin/executable_zig-install +0 -89
- package/dot_local/bin/voice_ops +0 -7
- package/scripts/ops/health-check.sh +0 -380
- package/scripts/tests/README.md +0 -241
- package/scripts/tests/benchmark.sh +0 -91
- package/scripts/tests/framework/assertions.sh +0 -283
- package/scripts/tests/framework/mocks.sh +0 -201
- package/scripts/tests/framework/test_runner.sh +0 -189
- package/scripts/tests/integration/test_install.sh +0 -237
- package/scripts/tests/performance/benchmark_runner.sh +0 -156
- package/scripts/tests/performance/regression_check.sh +0 -73
- package/scripts/tests/performance/stress_test.sh +0 -65
- package/scripts/tests/test-aliases.sh +0 -25
- package/scripts/tests/test-docker.sh +0 -48
- package/scripts/tests/unit/test_ai_aliases.sh +0 -158
- package/scripts/tests/unit/test_ai_cli_checks.sh +0 -47
- package/scripts/tests/unit/test_backup.sh +0 -227
- package/scripts/tests/unit/test_case_functions.sh +0 -238
- package/scripts/tests/unit/test_cd_aliases.sh +0 -367
- package/scripts/tests/unit/test_dot_cli.sh +0 -217
- package/scripts/tests/unit/test_encode64.sh +0 -67
- package/scripts/tests/unit/test_environment.sh +0 -78
- package/scripts/tests/unit/test_extract.sh +0 -163
- package/scripts/tests/unit/test_framework_edge_cases.sh +0 -113
- package/scripts/tests/unit/test_genpass.sh +0 -298
- package/scripts/tests/unit/test_install_edge_cases.sh +0 -167
- package/scripts/tests/unit/test_installers.sh +0 -172
- package/scripts/tests/unit/test_keygen.sh +0 -68
- package/scripts/tests/unit/test_logging.sh +0 -96
- package/scripts/tests/unit/test_os_detection_comprehensive.sh +0 -388
- package/scripts/tests/unit/test_package_managers_comprehensive.sh +0 -321
- package/scripts/tests/unit/test_prependpath.sh +0 -66
- package/scripts/tests/unit/test_prependpath_refactored.sh +0 -89
- package/scripts/tests/unit/test_rd.sh +0 -230
- package/scripts/tests/unit/test_security_fixes.sh +0 -130
- package/scripts/tests/unit/test_security_scripts.sh +0 -87
- package/scripts/tests/unit/test_template_validation.sh +0 -238
- package/scripts/tests/unit/test_utility_functions.sh +0 -144
- package/scripts/tests/unit/test_wave1_alias_split.sh +0 -132
- package/scripts/tests/unit/test_wave1_ci_pinning.sh +0 -61
- package/scripts/tests/unit/test_wave1_gitleaks_config.sh +0 -52
- package/scripts/tests/unit/test_wave1_heal_fixes.sh +0 -97
- package/scripts/tests/unit/test_wave1_install_gpg.sh +0 -35
- package/scripts/tests/unit/test_wave1_zshenv_path.sh +0 -89
- package/scripts/tests/unit/test_wave1_zshrc_lazy_hook.sh +0 -115
- package/scripts/tests/unit/test_wave2_dot_new_guard.sh +0 -75
- package/scripts/tests/unit/test_zipf.sh +0 -76
- /package/docs/{LEGACY_ROADMAP.md → archive/LEGACY_ROADMAP.md} +0 -0
- /package/docs/{REPO_AUDIT.md → archive/REPO_AUDIT.md} +0 -0
- /package/docs/{KEY_ROTATION.md → security/KEY_ROTATION.md} +0 -0
- /package/dot_config/ansible/{ansible.cfg.tmpl → ansible.cfg} +0 -0
- /package/dot_config/docker/{config.json.tmpl → config.json} +0 -0
- /package/dot_config/k9s/{config.yaml.tmpl → config.yaml} +0 -0
- /package/dot_config/pypoetry/{config.toml.tmpl → config.toml} +0 -0
- /package/dot_config/{pyrightconfig.json.tmpl → pyrightconfig.json} +0 -0
- /package/dot_config/tflint/{tflint.hcl.tmpl → tflint.hcl} +0 -0
- /package/dot_config/yarn/{yarnrc.yml.tmpl → yarnrc.yml} +0 -0
- /package/dot_config/zsh/rc.d/{40-bell.zsh.tmpl → 40-bell.zsh} +0 -0
- /package/dot_config/zsh/rc.d/{50-login-fortune.zsh.tmpl → 50-login-fortune.zsh} +0 -0
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
# Zinit plugin manager
|
|
2
|
+
[[ "${DOTFILES_FAST:-0}" == "1" ]] && return 0
|
|
3
|
+
[[ "${DOTFILES_ULTRA_FAST:-0}" == "1" ]] && return 0
|
|
4
|
+
|
|
5
|
+
ZINIT_HOME="${XDG_DATA_HOME:-${HOME}/.local/share}/zinit/zinit.git"
|
|
6
|
+
|
|
7
|
+
_dotfiles_zinit_git_policy() {
|
|
8
|
+
[[ -d "$ZINIT_HOME/.git" ]] || return 0
|
|
9
|
+
command git -C "$ZINIT_HOME" config --local merge.verifySignatures false >/dev/null 2>&1 || true
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
_dotfiles_zinit_init() {
|
|
13
|
+
if [[ ! -f "$ZINIT_HOME/zinit.zsh" ]]; then
|
|
14
|
+
print -P "%F{33}▓▒░ %F{220}Installing %F{33}ZDHARMA-CONTINUUM%F{220} Initiative Plugin Manager (%F{33}zdharma-continuum/zinit%F{220})…%f"
|
|
15
|
+
command mkdir -p "$(dirname "$ZINIT_HOME")" && command chmod g-rwX "$(dirname "$ZINIT_HOME")"
|
|
16
|
+
command git clone https://github.com/zdharma-continuum/zinit "$ZINIT_HOME" && \
|
|
17
|
+
print -P "%F{33}▓▒░ %F{34}Installation successful.%f%b" || \
|
|
18
|
+
print -P "%F{160}▓▒░ The clone has failed.%f%b"
|
|
19
|
+
fi
|
|
20
|
+
|
|
21
|
+
_dotfiles_zinit_git_policy
|
|
22
|
+
|
|
23
|
+
source "$ZINIT_HOME/zinit.zsh"
|
|
24
|
+
autoload -Uz _zinit
|
|
25
|
+
(( ${+_comps} )) && _comps[zinit]=_zinit
|
|
26
|
+
|
|
27
|
+
# Load Zsh Plugins (Turbo mode - deferred loading, pinned to stable releases)
|
|
28
|
+
zinit ice wait lucid ver"0.8.0"
|
|
29
|
+
zinit light zsh-users/zsh-syntax-highlighting
|
|
30
|
+
zinit ice wait lucid ver"v0.7.1" atload"_zsh_autosuggest_start"
|
|
31
|
+
zinit light zsh-users/zsh-autosuggestions
|
|
32
|
+
zinit ice wait lucid ver"0.35.0" blockf atpull"zinit creinstall -q ."
|
|
33
|
+
zinit light zsh-users/zsh-completions
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
# Defer Zinit init for faster first prompt (opt-out by setting DOTFILES_DEFER_ZINIT=0)
|
|
37
|
+
: ${DOTFILES_DEFER_ZINIT:=1}
|
|
38
|
+
: ${DOTFILES_DEFER_ZINIT_MODE:=preexec}
|
|
39
|
+
|
|
40
|
+
if [[ "${DOTFILES_DEFER_ZINIT}" == "1" ]]; then
|
|
41
|
+
# Stub to auto-load zinit on first call (e.g. by topgrade)
|
|
42
|
+
zinit() {
|
|
43
|
+
unfunction zinit
|
|
44
|
+
_dotfiles_zinit_init
|
|
45
|
+
zinit "$@"
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
_dotfiles_zinit_deferred() {
|
|
49
|
+
if [[ "${DOTFILES_DEFER_ZINIT_MODE}" == "preexec" ]]; then
|
|
50
|
+
_dotfiles_del_preexec _dotfiles_zinit_deferred
|
|
51
|
+
else
|
|
52
|
+
_dotfiles_del_precmd _dotfiles_zinit_deferred
|
|
53
|
+
fi
|
|
54
|
+
# If zinit was already loaded via the stub, this is a no-op
|
|
55
|
+
(( ${+functions[zinit]} )) && [[ "$(whence -w zinit)" == "zinit: function" ]] || _dotfiles_zinit_init
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
if [[ "${DOTFILES_DEFER_ZINIT_MODE}" == "preexec" ]]; then
|
|
59
|
+
_dotfiles_add_preexec _dotfiles_zinit_deferred
|
|
60
|
+
else
|
|
61
|
+
_dotfiles_add_precmd _dotfiles_zinit_deferred
|
|
62
|
+
fi
|
|
63
|
+
else
|
|
64
|
+
_dotfiles_zinit_init
|
|
65
|
+
fi
|
|
@@ -1,7 +1,4 @@
|
|
|
1
1
|
# Zsh history and options
|
|
2
|
-
# Set secure default umask (077 = owner only, 022 = standard)
|
|
3
|
-
umask 022
|
|
4
|
-
|
|
5
2
|
HISTFILE="${HOME}/.zsh_history"
|
|
6
3
|
HISTSIZE=10000
|
|
7
4
|
SAVEHIST=10000
|
|
@@ -14,6 +11,8 @@ setopt HIST_REDUCE_BLANKS
|
|
|
14
11
|
setopt EXTENDED_HISTORY
|
|
15
12
|
setopt SHARE_HISTORY
|
|
16
13
|
setopt APPEND_HISTORY
|
|
14
|
+
setopt HIST_SAVE_BY_COPY
|
|
15
|
+
setopt INTERACTIVE_COMMENTS
|
|
17
16
|
|
|
18
17
|
setopt AUTO_CD
|
|
19
18
|
setopt AUTO_PUSHD
|
|
@@ -42,12 +41,12 @@ fi
|
|
|
42
41
|
if [[ -z ${fpath[(r)${ZSH_COMPLETIONS_DIR}]} ]]; then
|
|
43
42
|
fpath=("${ZSH_COMPLETIONS_DIR}" "${fpath[@]}")
|
|
44
43
|
fi
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
44
|
+
{{- /* Node.js version manager: configured via .chezmoidata.toml tools.node_manager */ -}}
|
|
45
|
+
{{- $node_mgr := default "mise" .tools.node_manager -}}
|
|
46
|
+
{{- if eq $node_mgr "fnm" }}
|
|
48
47
|
# fnm (Fast Node Manager)
|
|
49
48
|
# Initialize early so Node + corepack use the expected version.
|
|
50
|
-
if command -v fnm >/dev/null; then
|
|
49
|
+
if [[ "${DOTFILES_FAST:-0}" != "1" ]] && [[ "${DOTFILES_ULTRA_FAST:-0}" != "1" ]] && command -v fnm >/dev/null; then
|
|
51
50
|
if [[ ! -f "${ZSH_COMPLETIONS_DIR}/_fnm" ]]; then
|
|
52
51
|
command fnm completions --shell zsh >| "${ZSH_COMPLETIONS_DIR}/_fnm"
|
|
53
52
|
fi
|
|
@@ -62,11 +61,29 @@ if command -v fnm >/dev/null; then
|
|
|
62
61
|
pnpm() { _lazy_load_fnm; command pnpm "$@"; }
|
|
63
62
|
pnpx() { _lazy_load_fnm; command pnpx "$@"; }
|
|
64
63
|
fi
|
|
64
|
+
{{- end }}
|
|
65
|
+
{{- /* When node_manager = "mise", Node.js is handled by mise activate in dot_zshrc.tmpl */}}
|
|
65
66
|
|
|
67
|
+
# Completions: pre-warmed by `dot prewarm`, generated on-demand as fallback
|
|
68
|
+
if [[ "${DOTFILES_FAST:-0}" != "1" ]] && [[ "${DOTFILES_ULTRA_FAST:-0}" != "1" ]]; then
|
|
69
|
+
[[ ! -f "${ZSH_COMPLETIONS_DIR}/_gh" ]] && command -v gh >/dev/null &&
|
|
70
|
+
command gh completion -s zsh >| "${ZSH_COMPLETIONS_DIR}/_gh"
|
|
71
|
+
[[ ! -f "${ZSH_COMPLETIONS_DIR}/_just" ]] && command -v just >/dev/null &&
|
|
72
|
+
command just --completions zsh >| "${ZSH_COMPLETIONS_DIR}/_just"
|
|
73
|
+
[[ ! -f "${ZSH_COMPLETIONS_DIR}/_chezmoi" ]] && command -v chezmoi >/dev/null &&
|
|
74
|
+
command chezmoi completion zsh >| "${ZSH_COMPLETIONS_DIR}/_chezmoi"
|
|
75
|
+
[[ ! -f "${ZSH_COMPLETIONS_DIR}/_kubectl" ]] && command -v kubectl >/dev/null &&
|
|
76
|
+
command kubectl completion zsh >| "${ZSH_COMPLETIONS_DIR}/_kubectl"
|
|
77
|
+
[[ ! -f "${ZSH_COMPLETIONS_DIR}/_atuin" ]] && command -v atuin >/dev/null &&
|
|
78
|
+
command atuin gen-completions --shell zsh --out-dir "${ZSH_COMPLETIONS_DIR}" 2>/dev/null
|
|
79
|
+
[[ ! -f "${ZSH_COMPLETIONS_DIR}/_mise" ]] && command -v mise >/dev/null &&
|
|
80
|
+
command mise completions zsh >| "${ZSH_COMPLETIONS_DIR}/_mise" 2>/dev/null
|
|
81
|
+
fi
|
|
66
82
|
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
83
|
+
{{- if eq $node_mgr "nvm" }}
|
|
84
|
+
# Lazy-load NVM
|
|
85
|
+
export NVM_DIR="${NVM_DIR:-$HOME/.nvm}"
|
|
86
|
+
if [[ "${DOTFILES_FAST:-0}" != "1" ]] && [[ "${DOTFILES_ULTRA_FAST:-0}" != "1" ]]; then
|
|
70
87
|
if [[ -s "${NVM_DIR}/nvm.sh" ]]; then
|
|
71
88
|
_lazy_load_nvm() {
|
|
72
89
|
unfunction node npm npx nvm _lazy_load_nvm 2>/dev/null
|
|
@@ -83,10 +100,11 @@ if ! command -v fnm >/dev/null; then
|
|
|
83
100
|
npx() { _lazy_load_nvm; command npx "$@"; }
|
|
84
101
|
fi
|
|
85
102
|
fi
|
|
103
|
+
{{- end }}
|
|
86
104
|
|
|
87
105
|
# Lazy-load SDKMAN
|
|
88
106
|
export SDKMAN_DIR="${SDKMAN_DIR:-$HOME/.sdkman}"
|
|
89
|
-
if [[ -s "${SDKMAN_DIR}/bin/sdkman-init.sh" && -z "${functions[sdk]:-}" ]]; then
|
|
107
|
+
if [[ "${DOTFILES_FAST:-0}" != "1" ]] && [[ "${DOTFILES_ULTRA_FAST:-0}" != "1" ]] && [[ -s "${SDKMAN_DIR}/bin/sdkman-init.sh" && -z "${functions[sdk]:-}" ]]; then
|
|
90
108
|
_lazy_load_sdkman() {
|
|
91
109
|
unfunction sdk _lazy_load_sdkman 2>/dev/null
|
|
92
110
|
# shellcheck disable=SC1090
|
|
@@ -94,30 +112,83 @@ if [[ -s "${SDKMAN_DIR}/bin/sdkman-init.sh" && -z "${functions[sdk]:-}" ]]; then
|
|
|
94
112
|
}
|
|
95
113
|
sdk() { _lazy_load_sdkman; sdk "$@"; }
|
|
96
114
|
fi
|
|
97
|
-
# Defer compinit to first prompt —
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
115
|
+
# Defer compinit to first prompt — opt-in for max performance
|
|
116
|
+
: ${DOTFILES_ENABLE_COMPINIT:=0}
|
|
117
|
+
: ${DOTFILES_DEFER_COMPINIT:=1}
|
|
118
|
+
if [[ "${DOTFILES_ENABLE_COMPINIT}" == "1" ]] && [[ "${DOTFILES_FAST:-0}" != "1" ]] && [[ "${DOTFILES_ULTRA_FAST:-0}" != "1" ]]; then
|
|
119
|
+
autoload -Uz compinit
|
|
120
|
+
_deferred_compinit() {
|
|
121
|
+
if [[ "${DOTFILES_DEFER_COMPINIT}" == "1" ]]; then
|
|
122
|
+
_dotfiles_del_preexec _deferred_compinit
|
|
123
|
+
else
|
|
124
|
+
_dotfiles_del_precmd _deferred_compinit
|
|
125
|
+
fi
|
|
126
|
+
if [[ -n ${ZDOTDIR}/.zcompdump(#qN.mh+24) ]]; then
|
|
127
|
+
compinit
|
|
128
|
+
else
|
|
129
|
+
compinit -C
|
|
130
|
+
fi
|
|
131
|
+
# Compile zcompdump to bytecode in background for faster subsequent loads
|
|
132
|
+
{ [[ ! -f "${ZDOTDIR}/.zcompdump.zwc" || "${ZDOTDIR}/.zcompdump" -nt "${ZDOTDIR}/.zcompdump.zwc" ]] && zcompile "${ZDOTDIR}/.zcompdump" } &!
|
|
133
|
+
}
|
|
134
|
+
if [[ "${DOTFILES_DEFER_COMPINIT}" == "1" ]]; then
|
|
135
|
+
_dotfiles_add_preexec _deferred_compinit
|
|
103
136
|
else
|
|
104
|
-
|
|
137
|
+
_dotfiles_add_precmd _deferred_compinit
|
|
105
138
|
fi
|
|
106
|
-
# Compile zcompdump to bytecode in background for faster subsequent loads
|
|
107
|
-
{ [[ ! -f "${ZDOTDIR}/.zcompdump.zwc" || "${ZDOTDIR}/.zcompdump" -nt "${ZDOTDIR}/.zcompdump.zwc" ]] && zcompile "${ZDOTDIR}/.zcompdump" } &!
|
|
108
|
-
}
|
|
109
|
-
add-zsh-hook precmd _deferred_compinit
|
|
110
139
|
|
|
111
|
-
zstyle ':completion:*' menu select
|
|
112
|
-
zstyle ':completion:*' matcher-list 'm:{a-zA-Z}={A-Za-z}'
|
|
113
|
-
zstyle ':completion:*' list-colors "${(s.:.)LS_COLORS}"
|
|
114
|
-
zstyle ':completion:*' special-dirs true
|
|
115
|
-
zstyle ':completion:*' verbose yes
|
|
140
|
+
zstyle ':completion:*' menu select
|
|
141
|
+
zstyle ':completion:*' matcher-list 'm:{a-zA-Z}={A-Za-z}'
|
|
142
|
+
zstyle ':completion:*' list-colors "${(s.:.)LS_COLORS}"
|
|
143
|
+
zstyle ':completion:*' special-dirs true
|
|
144
|
+
zstyle ':completion:*' verbose yes
|
|
145
|
+
fi
|
|
116
146
|
|
|
117
|
-
|
|
147
|
+
# Colors (opt-in; enables $fg/$bg variables)
|
|
148
|
+
: ${DOTFILES_ENABLE_COLORS:=0}
|
|
149
|
+
if [[ "${DOTFILES_ENABLE_COLORS}" == "1" ]]; then
|
|
150
|
+
: ${DOTFILES_DEFER_COLORS:=1}
|
|
151
|
+
if [[ "${DOTFILES_DEFER_COLORS}" == "1" ]]; then
|
|
152
|
+
_dotfiles_colors_zle_init() {
|
|
153
|
+
zle -D zle-line-init
|
|
154
|
+
# Skip when running -c (no prompt)
|
|
155
|
+
[[ -n "${ZSH_EXECUTION_STRING:-}" ]] && return 0
|
|
156
|
+
autoload -Uz colors && colors
|
|
157
|
+
}
|
|
158
|
+
zle -N zle-line-init _dotfiles_colors_zle_init
|
|
159
|
+
else
|
|
160
|
+
autoload -Uz colors && colors
|
|
161
|
+
fi
|
|
162
|
+
fi
|
|
118
163
|
unsetopt correct_all
|
|
119
164
|
|
|
165
|
+
# fzf integration
|
|
166
|
+
if [[ "${DOTFILES_FAST:-0}" != "1" ]] && [[ "${DOTFILES_ULTRA_FAST:-0}" != "1" ]]; then
|
|
167
|
+
if [[ -f "${HOME}/.config/fzf/fzf.zsh" ]]; then
|
|
168
|
+
source "${HOME}/.config/fzf/fzf.zsh"
|
|
169
|
+
elif [[ -f "${HOME}/.fzf.zsh" ]]; then
|
|
170
|
+
source "${HOME}/.fzf.zsh"
|
|
171
|
+
fi
|
|
172
|
+
fi
|
|
173
|
+
|
|
174
|
+
# Explicit fzf bindings (fallback if not already set by fzf)
|
|
175
|
+
if [[ "${DOTFILES_FAST:-0}" != "1" ]] && [[ "${DOTFILES_ULTRA_FAST:-0}" != "1" ]] && command -v fzf >/dev/null; then
|
|
176
|
+
bindkey -M viins -s '^T' 'fzf^M'
|
|
177
|
+
bindkey -M viins -s '^R' 'fzf^M'
|
|
178
|
+
fi
|
|
179
|
+
|
|
120
180
|
# direnv (directory environments)
|
|
121
|
-
if command -v direnv >/dev/null; then
|
|
122
|
-
|
|
181
|
+
if [[ "${DOTFILES_FAST:-0}" != "1" ]] && [[ "${DOTFILES_ULTRA_FAST:-0}" != "1" ]] && command -v direnv >/dev/null; then
|
|
182
|
+
# Custom quiet hook: suppress direnv status chatter on every prompt/chdir.
|
|
183
|
+
_dotfiles_direnv_hook() {
|
|
184
|
+
# Fast path: skip direnv in dotfiles unless flake mode is explicitly enabled.
|
|
185
|
+
if [[ "${PWD:A}" == "${HOME}/.dotfiles"* ]] && [[ "${DOTFILES_USE_FLAKE:-0}" != "1" ]] && [[ "${CI:-0}" != "1" ]]; then
|
|
186
|
+
return 0
|
|
187
|
+
fi
|
|
188
|
+
trap -- '' SIGINT
|
|
189
|
+
eval "$(direnv export zsh 2>/dev/null)"
|
|
190
|
+
trap - SIGINT
|
|
191
|
+
}
|
|
192
|
+
autoload -Uz add-zsh-hook
|
|
193
|
+
add-zsh-hook chpwd _dotfiles_direnv_hook
|
|
123
194
|
fi
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
# Smart Alias Function (High-Fidelity TUI)
|
|
2
|
+
alias_wrapper() {
|
|
3
|
+
if [[ $# -eq 0 ]]; then
|
|
4
|
+
# Find gum cmd dynamically if needed
|
|
5
|
+
local gum_cmd
|
|
6
|
+
gum_cmd=$(command -v gum 2>/dev/null || (command -v mise >/dev/null && mise which "aqua:charmbracelet/gum" 2>/dev/null))
|
|
7
|
+
|
|
8
|
+
if [[ -n "$gum_cmd" ]]; then
|
|
9
|
+
# Use printf to get a literal tab
|
|
10
|
+
local tab=$'\t'
|
|
11
|
+
|
|
12
|
+
# Extract aliases, format as Tab separated, ensure only 2 columns, and pipe to gum table
|
|
13
|
+
builtin alias | sed -E "s/^([^=]+)='?([^']*)'?$/\1${tab}\2/" |
|
|
14
|
+
while IFS=$tab read -r alias_name cmd_body; do
|
|
15
|
+
if [[ -n "$alias_name" && -n "$cmd_body" ]]; then
|
|
16
|
+
# Ensure no extra tabs in body and exactly one tab total
|
|
17
|
+
local clean_cmd="${cmd_body//$tab/ }"
|
|
18
|
+
printf "%s\t%s\n" "$alias_name" "$clean_cmd"
|
|
19
|
+
fi
|
|
20
|
+
done |
|
|
21
|
+
"$gum_cmd" table --separator "${tab}" --print --columns "Alias,Command" --widths 15,60 \
|
|
22
|
+
--border rounded --border.foreground 212 --header.foreground 212
|
|
23
|
+
elif command -v bat >/dev/null 2>&1; then
|
|
24
|
+
builtin alias | bat -l sh --style=plain
|
|
25
|
+
else
|
|
26
|
+
builtin alias
|
|
27
|
+
fi
|
|
28
|
+
else
|
|
29
|
+
builtin alias "$@"
|
|
30
|
+
fi
|
|
31
|
+
}
|
|
32
|
+
alias alias=alias_wrapper
|
|
Binary file
|
|
@@ -0,0 +1,195 @@
|
|
|
1
|
+
#!/usr/bin/env bash
|
|
2
|
+
## AI Update — Dotfiles AI workflow updater for cross-platform environments.
|
|
3
|
+
##
|
|
4
|
+
## Updates all AI-related tools and runtimes including mise, npm globals,
|
|
5
|
+
## pipx tools, Ollama, and LM Studio. Auto-detects installation methods.
|
|
6
|
+
##
|
|
7
|
+
## # Requirements
|
|
8
|
+
## - curl: For downloading updates
|
|
9
|
+
## - sudo: For system-level updates (Linux)
|
|
10
|
+
## - zstd: For Ollama archive extraction (Linux)
|
|
11
|
+
##
|
|
12
|
+
## # Usage
|
|
13
|
+
## ai-update # Update all AI tools
|
|
14
|
+
##
|
|
15
|
+
## # Platform Notes
|
|
16
|
+
## - macOS: Updates via Homebrew where applicable
|
|
17
|
+
## - Linux: Updates via APT, manual binaries, or pipx
|
|
18
|
+
## - WSL: Full Linux support
|
|
19
|
+
|
|
20
|
+
set -euo pipefail
|
|
21
|
+
|
|
22
|
+
# --- Configuration & Theme ---
|
|
23
|
+
CYAN='[38;5;86m'
|
|
24
|
+
PURPLE='[38;5;141m'
|
|
25
|
+
GREEN='[38;5;84m'
|
|
26
|
+
YELLOW='[38;5;227m'
|
|
27
|
+
RED='[38;5;203m'
|
|
28
|
+
GRAY='[38;5;244m'
|
|
29
|
+
NC='[0m'
|
|
30
|
+
BOLD='[1m'
|
|
31
|
+
|
|
32
|
+
# --- UI Components ---
|
|
33
|
+
log_header() {
|
|
34
|
+
printf '%b\n' "
|
|
35
|
+
${BOLD}${PURPLE}Updating AI Environment${NC}"
|
|
36
|
+
printf '%b\n' "${GRAY}-----------------------------------------------------------${NC}"
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
step() { echo -ne "${CYAN}->${NC} ${BOLD}$1...${NC} "; }
|
|
40
|
+
ok() { printf '%b\n' "${GREEN}done${NC}"; }
|
|
41
|
+
skip() { printf '%b\n' "${YELLOW}skipped${NC} ${GRAY}($1)${NC}"; }
|
|
42
|
+
err() { printf '%b\n' "${RED}error${NC}
|
|
43
|
+
${RED}$1${NC}"; }
|
|
44
|
+
|
|
45
|
+
# --- Initialization ---
|
|
46
|
+
log_header
|
|
47
|
+
|
|
48
|
+
# Pre-auth sudo to avoid mid-script interruptions
|
|
49
|
+
if [[ "$(uname -s)" == "Linux" ]]; then
|
|
50
|
+
step "Authenticating sudo"
|
|
51
|
+
if sudo -v; then ok; else
|
|
52
|
+
err "Sudo required for system updates"
|
|
53
|
+
exit 1
|
|
54
|
+
fi
|
|
55
|
+
fi
|
|
56
|
+
|
|
57
|
+
# --- 1. mise Core (Multi-Method Detection) ---
|
|
58
|
+
if command -v mise >/dev/null 2>&1; then
|
|
59
|
+
step "Checking mise core"
|
|
60
|
+
if [[ "$(uname -s)" == "Linux" ]] && command -v pacman >/dev/null 2>&1 && pacman -Qs mise >/dev/null 2>&1; then
|
|
61
|
+
# Handle Arch/CachyOS AUR/Official package
|
|
62
|
+
sudo pacman -S --noconfirm mise >/dev/null 2>&1 || true
|
|
63
|
+
ok
|
|
64
|
+
elif [[ "$(uname -s)" == "Linux" ]] && command -v dpkg >/dev/null 2>&1 && dpkg -s mise >/dev/null 2>&1; then
|
|
65
|
+
# Handle your ZorinOS APT installation
|
|
66
|
+
sudo apt update -y -o Dir::Etc::sourcelist="sources.list.d/jdx.list" >/dev/null 2>&1 || true
|
|
67
|
+
sudo apt install --only-upgrade -y mise >/dev/null 2>&1
|
|
68
|
+
ok
|
|
69
|
+
elif command -v brew >/dev/null 2>&1 && brew list mise >/dev/null 2>&1; then
|
|
70
|
+
# Handle macOS/Linux Brew installation
|
|
71
|
+
brew upgrade mise >/dev/null 2>&1
|
|
72
|
+
ok
|
|
73
|
+
else
|
|
74
|
+
# Fallback for standalone binary installation
|
|
75
|
+
if mise self-update -y >/dev/null 2>&1; then ok; else skip "manual update needed"; fi
|
|
76
|
+
fi
|
|
77
|
+
else
|
|
78
|
+
skip "mise not found"
|
|
79
|
+
fi
|
|
80
|
+
|
|
81
|
+
# --- 2. System & Language Packages ---
|
|
82
|
+
|
|
83
|
+
# Homebrew
|
|
84
|
+
if command -v brew >/dev/null 2>&1; then
|
|
85
|
+
step "Homebrew packages"
|
|
86
|
+
brew update >/dev/null && brew upgrade --quiet >/dev/null
|
|
87
|
+
ok
|
|
88
|
+
fi
|
|
89
|
+
|
|
90
|
+
# NPM Globals (via mise)
|
|
91
|
+
if command -v mise >/dev/null 2>&1; then
|
|
92
|
+
step "NPM (claude, gemini, etc)"
|
|
93
|
+
mise exec node -- npm update -g --audit=false >/dev/null 2>&1
|
|
94
|
+
ok
|
|
95
|
+
|
|
96
|
+
step "Kiro CLI"
|
|
97
|
+
if [[ "$(uname -s)" == "Darwin" ]]; then
|
|
98
|
+
skip "managed by Kiro app bundle via mise plugin"
|
|
99
|
+
elif mise upgrade kiro-cli >/dev/null 2>&1; then
|
|
100
|
+
ok
|
|
101
|
+
else
|
|
102
|
+
skip "mise plugin update unavailable"
|
|
103
|
+
fi
|
|
104
|
+
fi
|
|
105
|
+
|
|
106
|
+
# Pipx (aider, sgpt)
|
|
107
|
+
if command -v pipx >/dev/null 2>&1; then
|
|
108
|
+
step "Pipx tools"
|
|
109
|
+
pipx upgrade-all >/dev/null 2>&1
|
|
110
|
+
ok
|
|
111
|
+
fi
|
|
112
|
+
|
|
113
|
+
# --- 3. Specialized AI Binaries ---
|
|
114
|
+
|
|
115
|
+
# Ollama (Verified Manual Override)
|
|
116
|
+
if command -v ollama >/dev/null 2>&1; then
|
|
117
|
+
if [[ "$(uname -s)" == "Linux" ]]; then
|
|
118
|
+
step "Ollama (Manual Deployment)"
|
|
119
|
+
arch="$(uname -m)"
|
|
120
|
+
case "$arch" in
|
|
121
|
+
x86_64 | amd64) ollama_arch="amd64" ;;
|
|
122
|
+
aarch64 | arm64) ollama_arch="arm64" ;;
|
|
123
|
+
*) ollama_arch="" ;;
|
|
124
|
+
esac
|
|
125
|
+
|
|
126
|
+
if [[ -n "$ollama_arch" ]]; then
|
|
127
|
+
# Check for updates by comparing local vs remote version
|
|
128
|
+
current_ver="$(ollama --version | awk '{print $NF}' | tr -d '[:space:]')"
|
|
129
|
+
# This is a bit slow but safer than downloading every time
|
|
130
|
+
latest_ver="$(curl -fsSL -I https://github.com/ollama/ollama/releases/latest | grep -i location | sed 's/.*\/v//;s/
|
|
131
|
+
|
|
132
|
+
if [[ "$current_ver" == "$latest_ver" ]]; then
|
|
133
|
+
skip "already up to date"
|
|
134
|
+
else
|
|
135
|
+
tmp_tar="$(umask 077 && mktemp)"
|
|
136
|
+
trap 'rm -f "$tmp_tar"' EXIT
|
|
137
|
+
tar_url="https://ollama.com/download/ollama-linux-${ollama_arch}.tar.zst"
|
|
138
|
+
|
|
139
|
+
if curl -fsSL --retry 2 "$tar_url" -o "$tmp_tar" && zstd -t "$tmp_tar" >/dev/null 2>&1; then
|
|
140
|
+
# Stop service safely
|
|
141
|
+
if command -v systemctl >/dev/null 2>&1; then
|
|
142
|
+
sudo systemctl stop ollama 2>/dev/null || true
|
|
143
|
+
fi
|
|
144
|
+
|
|
145
|
+
# Extract
|
|
146
|
+
zstd -dc "$tmp_tar" | sudo tar -x -C /usr/local >/dev/null
|
|
147
|
+
|
|
148
|
+
# Ensure permissions
|
|
149
|
+
sudo chmod +x /usr/local/bin/ollama
|
|
150
|
+
|
|
151
|
+
# Restart if systemd exists
|
|
152
|
+
if command -v systemctl >/dev/null 2>&1; then
|
|
153
|
+
sudo systemctl daemon-reload
|
|
154
|
+
sudo systemctl start ollama 2>/dev/null || true
|
|
155
|
+
fi
|
|
156
|
+
ok
|
|
157
|
+
else
|
|
158
|
+
err "Integrity check failed"
|
|
159
|
+
fi
|
|
160
|
+
fi
|
|
161
|
+
else
|
|
162
|
+
skip "unsupported arch"
|
|
163
|
+
fi
|
|
164
|
+
else
|
|
165
|
+
# macOS users typically use the .app or Brew
|
|
166
|
+
step "Ollama (macOS)"
|
|
167
|
+
if command -v brew >/dev/null 2>&1 && brew upgrade ollama --cask >/dev/null 2>&1; then
|
|
168
|
+
ok
|
|
169
|
+
else
|
|
170
|
+
skip "Update via App"
|
|
171
|
+
fi
|
|
172
|
+
fi
|
|
173
|
+
fi
|
|
174
|
+
|
|
175
|
+
# LM Studio Runtime
|
|
176
|
+
if command -v lms >/dev/null 2>&1; then
|
|
177
|
+
step "LM Studio Runtime"
|
|
178
|
+
lms runtime update >/dev/null 2>&1
|
|
179
|
+
ok
|
|
180
|
+
fi
|
|
181
|
+
|
|
182
|
+
# --- 4. Final Summary ---
|
|
183
|
+
printf '%b\n' "${GRAY}-----------------------------------------------------------${NC}"
|
|
184
|
+
printf '%b\n' "${GREEN}${BOLD}Dotfiles Environment Ready${NC}"
|
|
185
|
+
|
|
186
|
+
# Version Report
|
|
187
|
+
printf '%b\n' "
|
|
188
|
+
${BOLD}System Version Status:${NC}"
|
|
189
|
+
printf "%b%-12s%b %s\n" "${GRAY}" "Node:" "${NC}" "$(node -v 2>/dev/null || echo 'N/A')"
|
|
190
|
+
printf "%b%-12s%b %s\n" "${GRAY}" "Kiro:" "${NC}" "$(kiro-cli --version 2>/dev/null | awk '{print $NF}' || echo 'N/A')"
|
|
191
|
+
printf "%b%-12s%b %s\n" "${GRAY}" "Ollama:" "${NC}" "$(ollama --version 2>/dev/null | awk '{print $NF}' || echo 'N/A')"
|
|
192
|
+
printf "%b%-12s%b %s\n" "${GRAY}" "Pipx:" "${NC}" "$(pipx --version 2>/dev/null || echo 'N/A')"
|
|
193
|
+
printf "%b%-12s%b %s\n" "${GRAY}" "Mise:" "${NC}" "$(mise --version 2>/dev/null | awk '{print $1}' || echo 'N/A')"
|
|
194
|
+
|
|
195
|
+
trap - EXIT
|