@sebastienrousseau/dotfiles 0.2.499 → 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 +375 -0
- package/LICENSE +1283 -0
- package/README.md +284 -0
- package/docs/.vitepress/reports/localization-readability-audit.md +69 -0
- package/docs/AI.md +102 -0
- package/docs/COPYRIGHT +4 -3
- package/docs/NAMING_CONVENTIONS.md +95 -0
- package/docs/README.md +78 -0
- package/docs/adr/ADR-001-ci-cd-pipeline.md +101 -0
- package/docs/adr/ADR-002-shell-performance.md +121 -0
- package/docs/adr/ADR-003-security-first.md +140 -0
- package/docs/adr/ADR-004-cli-architecture.md +157 -0
- package/docs/adr/ADR-005-chezmoi-choice.md +89 -0
- package/docs/adr/ADR-006-shell-selection.md +115 -0
- 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 +32 -0
- 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/LEGACY_ROADMAP.md +142 -0
- package/docs/archive/MILESTONE_v0.2.493.md +43 -0
- package/docs/{PLAN.md → archive/PLAN.md} +4 -4
- package/docs/archive/REPO_AUDIT.md +23 -0
- package/docs/guides/INSTALL.md +140 -0
- package/docs/guides/NEOVIM_IDE_GUIDE.md +52 -0
- package/docs/guides/THEMING.md +222 -0
- package/docs/guides/TROUBLESHOOTING.md +148 -0
- package/docs/guides/WSL2_NIX_TROUBLESHOOTING.md +723 -0
- 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} +22 -22
- 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/reference/ALIASES.md +124 -0
- 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/reference/SCREENSHOTS.md +117 -0
- 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/KEY_ROTATION.md +219 -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 +6 -0
- 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 +32 -0
- package/dot_config/alacritty/alacritty.toml.tmpl +55 -0
- package/dot_config/ansible/ansible.cfg +11 -0
- package/dot_config/atuin/config.toml +40 -0
- package/dot_config/bat/config +23 -0
- package/dot_config/brave-flags.conf.tmpl +7 -0
- package/dot_config/btop/btop.conf +16 -0
- package/dot_config/btop/themes/tokyonight.theme +34 -0
- package/dot_config/bun/bunfig.toml.tmpl +33 -0
- package/dot_config/claude/mcp_servers.json +20 -0
- package/dot_config/containers/containers.conf +14 -0
- package/dot_config/curl/dot_curlrc +18 -0
- package/dot_config/dlv/config.yml +39 -0
- package/dot_config/docker/config.json +15 -0
- 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 +11 -0
- package/dot_config/dotfiles/grub/README.md +11 -0
- package/dot_config/dotfiles/lock/README.md +11 -0
- 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/duf/duf.conf +6 -0
- package/dot_config/duti/defaults.duti +5 -0
- package/dot_config/emoji/emoji.txt +34 -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/fastfetch/config.jsonc +28 -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/flatpak/flatpak.list +4 -0
- package/dot_config/fontconfig/fonts.conf.tmpl +57 -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/gem/gemrc +9 -0
- package/dot_config/gh/config.yml +12 -0
- package/dot_config/ghostty/config.tmpl +165 -0
- package/dot_config/git/allowed_signers.tmpl +18 -0
- package/dot_config/git/attributes +12 -0
- package/dot_config/git/commit-template +10 -0
- package/dot_config/git/ignore +27 -0
- package/dot_config/gnupg/gpg-agent.conf +11 -0
- package/dot_config/go/golangci.yml +118 -0
- package/dot_config/go/gopls.json +30 -0
- package/dot_config/goose/config.yaml +29 -0
- package/dot_config/gtk-3.0/gtk.css.tmpl +184 -0
- package/dot_config/gtk-3.0/settings.ini.tmpl +27 -0
- package/dot_config/gtk-4.0/gtk.css.tmpl +252 -0
- package/dot_config/gtk-4.0/settings.ini.tmpl +18 -0
- package/dot_config/htop/htoprc +20 -0
- package/dot_config/inputrc +2 -0
- package/dot_config/ipython/profile_default/ipython_config.py +19 -0
- package/dot_config/just/justfile +122 -0
- package/dot_config/k9s/config.yaml +65 -0
- package/dot_config/k9s/skins/catppuccin-mocha.yaml +116 -0
- package/dot_config/kanshi/config.tmpl +22 -0
- package/dot_config/karabiner/karabiner.json +14 -0
- package/dot_config/kitty/kitty.conf.tmpl +53 -0
- package/dot_config/lazydocker/config.yml +186 -0
- package/dot_config/lazygit/config.yml +35 -0
- package/dot_config/mako/config +47 -0
- package/dot_config/mas/masapps.txt +5 -0
- package/dot_config/micro/settings.json +3 -0
- package/dot_config/mimeapps.list +77 -0
- package/dot_config/minikube/config.json +13 -0
- package/dot_config/mise/config.toml +99 -0
- package/dot_config/mongosh/mongoshrc.js +68 -0
- package/dot_config/mpv/input.conf +47 -0
- package/dot_config/mpv/mpv.conf +47 -0
- package/dot_config/mycli/myclirc +67 -0
- package/dot_config/nano/nanorc +28 -0
- package/dot_config/ncdu/config +12 -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 +18 -0
- package/dot_config/nvim/lazy-lock.json +58 -0
- package/dot_config/nvim/lua/config/autocmds.lua +107 -0
- package/dot_config/nvim/lua/config/keymaps.lua +92 -0
- package/dot_config/nvim/lua/config/lazy.lua +44 -0
- package/dot_config/nvim/lua/config/options.lua +49 -0
- package/dot_config/nvim/lua/plugins/ai.lua +75 -0
- package/dot_config/nvim/lua/plugins/coding.lua +216 -0
- package/dot_config/nvim/lua/plugins/completion.lua +60 -0
- package/dot_config/nvim/lua/plugins/dap.lua +412 -0
- package/dot_config/nvim/lua/plugins/editor.lua +55 -0
- package/dot_config/nvim/lua/plugins/git.lua +10 -0
- package/dot_config/nvim/lua/plugins/lsp.lua +156 -0
- package/dot_config/nvim/lua/plugins/markdown.lua +18 -0
- package/dot_config/nvim/lua/plugins/rust.lua +34 -0
- package/dot_config/nvim/lua/plugins/sessions.lua +33 -0
- package/dot_config/nvim/lua/plugins/ui.lua +509 -0
- package/dot_config/paru/paru.conf +10 -0
- package/dot_config/pip/pip.conf.tmpl +32 -0
- package/dot_config/powershell/Microsoft.PowerShell_profile.ps1.tmpl +81 -0
- package/dot_config/pueue/pueue.yml +34 -0
- package/dot_config/pypoetry/config.toml +6 -0
- package/dot_config/pyrightconfig.json +5 -0
- package/dot_config/raycast/README.md +13 -0
- package/dot_config/redis/redisclirc +41 -0
- package/dot_config/ripgrep/ripgreprc +21 -0
- package/dot_config/shell/00-core-paths.sh.tmpl +133 -0
- 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/50-logic-functions.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 +120 -0
- package/dot_config/shell/91-ux-aliases-lazy.sh.tmpl +54 -0
- package/dot_config/shell/Brewfile +207 -0
- package/dot_config/shell/Brewfile.cask +92 -0
- package/dot_config/shell/Brewfile.cli +127 -0
- package/dot_config/shell/README.md +267 -0
- 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 +68 -0
- package/dot_config/shell/custom/error_analysis.zsh +45 -0
- package/dot_config/sops/dot_sops.yaml +23 -0
- package/dot_config/starship.toml.tmpl +202 -0
- 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/task/Taskfile.yml +86 -0
- package/dot_config/tflint/tflint.hcl +9 -0
- package/dot_config/tmux/tmux.conf.tmpl +223 -0
- package/dot_config/topgrade.toml.tmpl +54 -0
- package/dot_config/user-dirs.dirs +9 -0
- package/dot_config/vscode/extensions.txt +11 -0
- package/dot_config/vscode/settings.json.tmpl +82 -0
- 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 +64 -0
- package/dot_config/wget/wgetrc +12 -0
- package/dot_config/xdg-desktop-portal/niri-portals.conf +5 -0
- package/dot_config/yarn/yarnrc.yml +36 -0
- package/dot_config/yazi/keymap.toml +67 -0
- package/dot_config/yazi/theme.toml +102 -0
- package/dot_config/yazi/yazi.toml +40 -0
- package/dot_config/zathura/zathurarc +52 -0
- package/dot_config/zellij/config.kdl.tmpl +79 -0
- package/dot_config/zsh/dot_zprofile +7 -0
- package/dot_config/zsh/dot_zshenv +5 -0
- package/dot_config/zsh/dot_zshrc.tmpl +498 -0
- package/dot_config/zsh/rc.d/00-alias-shims.zsh +77 -0
- package/dot_config/zsh/rc.d/05-ssh-agent.zsh +18 -0
- package/dot_config/zsh/rc.d/10-env.zsh.tmpl +28 -0
- package/dot_config/zsh/rc.d/20-zinit.zsh +65 -0
- package/dot_config/zsh/rc.d/30-options.zsh.tmpl +194 -0
- package/dot_config/zsh/rc.d/40-bell.zsh +20 -0
- package/dot_config/zsh/rc.d/50-login-fortune.zsh +9 -0
- 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 +152 -0
- package/dot_local/bin/executable_antigravity +11 -0
- package/dot_local/bin/executable_b64 +84 -0
- package/dot_local/bin/executable_bm +77 -0
- package/dot_local/bin/executable_cb +39 -0
- package/dot_local/bin/executable_dot +589 -0
- 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 +57 -0
- package/dot_local/bin/executable_dtags +28 -0
- package/dot_local/bin/executable_epoch +67 -0
- package/dot_local/bin/executable_extract +41 -0
- package/dot_local/bin/executable_gbd +52 -0
- package/dot_local/bin/executable_gd +42 -0
- package/dot_local/bin/executable_git-ai-commit +175 -0
- package/dot_local/bin/executable_git-ai-diff +169 -0
- package/dot_local/bin/executable_gl +101 -0
- package/dot_local/bin/executable_hash +161 -0
- package/dot_local/bin/executable_hashsum +160 -0
- package/dot_local/bin/executable_hex +115 -0
- package/dot_local/bin/executable_jsonv +78 -0
- package/dot_local/bin/executable_jwt +94 -0
- package/dot_local/bin/executable_kill-port +75 -0
- package/dot_local/bin/executable_lorem +118 -0
- package/dot_local/bin/executable_mkscript +35 -0
- package/dot_local/bin/executable_monitor +56 -0
- package/dot_local/bin/executable_myip +51 -0
- 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 +132 -0
- package/dot_local/bin/executable_start-niri +8 -0
- package/dot_local/bin/executable_tmux-sessionizer +314 -0
- package/dot_local/bin/executable_tour +175 -0
- package/dot_local/bin/executable_up +21 -0
- package/dot_local/bin/executable_update +142 -0
- package/dot_local/bin/executable_uuid +87 -0
- package/dot_local/bin/executable_win +32 -0
- package/dot_local/bin/executable_yamlv +57 -0
- package/dot_local/share/bash-completion/completions/dot +72 -0
- 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/.keep +0 -0
- package/dot_local/share/zsh/completions/_dot +283 -0
- package/install.sh +342 -0
- package/package.json +1 -1
- 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 +224 -0
- package/scripts/demo/record.sh +42 -0
- 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 +381 -0
- package/scripts/diagnostics/conflicts.sh +72 -0
- package/scripts/diagnostics/doctor-unified.sh +38 -0
- package/scripts/diagnostics/doctor.sh +541 -0
- package/scripts/diagnostics/drift-dashboard.sh +37 -0
- package/scripts/diagnostics/health.sh +597 -0
- package/scripts/diagnostics/history-analysis.sh +85 -0
- 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 +438 -0
- package/scripts/diagnostics/smoke-test.sh +87 -0
- package/scripts/diagnostics/snapshot.sh +89 -0
- package/scripts/diagnostics/verify.sh +107 -0
- package/scripts/{verify_state.sh → diagnostics/verify_state.sh} +22 -22
- 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 +80 -0
- package/scripts/dot/commands/core.sh +185 -0
- package/scripts/dot/commands/diagnostics.sh +229 -0
- 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 +248 -0
- package/scripts/dot/commands/patterns.sh +54 -0
- package/scripts/dot/commands/restore.sh +231 -0
- package/scripts/dot/commands/secrets.sh +223 -0
- package/scripts/dot/commands/security.sh +76 -0
- package/scripts/dot/commands/tools.sh +469 -0
- 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 +372 -0
- package/scripts/fonts/install-nerd-fonts.sh +68 -0
- package/scripts/fonts/patch-fonts.sh +35 -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 +270 -0
- package/scripts/ops/chezmoi-diff.sh +15 -0
- package/scripts/ops/chezmoi-remove.sh +45 -0
- package/scripts/ops/chezmoi-update.sh +48 -0
- 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 +222 -0
- 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 +589 -0
- package/scripts/ops/setup.sh +137 -0
- package/scripts/ops/teleport.sh +33 -0
- 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 +70 -0
- package/scripts/secrets/create-secrets-file.sh +45 -0
- package/scripts/secrets/encrypt-ssh-key.sh +43 -0
- package/scripts/security/backup.sh +57 -0
- package/scripts/security/dns-doh.sh +51 -0
- package/scripts/security/encryption-check.sh +54 -0
- package/scripts/security/enforce-policies.sh +334 -0
- package/scripts/security/firewall.sh +90 -0
- package/scripts/security/lock-configs.sh +57 -0
- package/scripts/security/lock-screen.sh +55 -0
- package/scripts/security/manage-secrets.sh +428 -0
- package/scripts/security/ssh-cert.sh +203 -0
- package/scripts/security/telemetry-kill.sh +50 -0
- package/scripts/security/usb-safety.sh +51 -0
- package/scripts/theme/apply-gnome-theme.sh +328 -0
- package/scripts/theme/extract-theme.py +677 -0
- package/scripts/theme/install-boot-logo.sh +62 -0
- package/scripts/theme/install-catppuccin-themes.sh +370 -0
- package/scripts/theme/install-cursors.sh +25 -0
- package/scripts/theme/install-file-icons.sh +26 -0
- package/scripts/theme/install-grub-theme.sh +61 -0
- package/scripts/theme/install-lock-icon.sh +30 -0
- package/scripts/theme/merge-wallpaper.sh +141 -0
- package/scripts/theme/rebuild-themes.sh +309 -0
- package/scripts/theme/switch.sh +421 -0
- package/scripts/theme/wallpaper-rotate.sh +136 -0
- package/scripts/theme/wallpaper-sync.sh +397 -0
- package/scripts/tools/cmatrix.sh +21 -0
- package/scripts/{detect-collisions.py → tools/detect-collisions.py} +2 -2
- package/scripts/tools/emoji-picker.sh +48 -0
- package/scripts/tools/figlet-banner.sh +18 -0
- package/scripts/tools/log-rotate.sh +30 -0
- package/scripts/tools/lolcat-wrap.sh +19 -0
- package/scripts/tools/pipes.sh +48 -0
- package/scripts/tuning/linux.sh +185 -0
- package/scripts/tuning/macos.sh +55 -0
- 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 +4 -0
- 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 +7 -0
- package/templates/projects/molecule/converge.yml +7 -0
- package/templates/projects/molecule/molecule.yml +16 -0
- package/templates/projects/node/.github/workflows/ci.yml +30 -0
- package/templates/projects/node/README.md +4 -0
- package/templates/projects/node/package-lock.json +12 -0
- package/templates/projects/node/src/index.js +1 -0
- package/templates/projects/packer/README.md +15 -0
- package/templates/projects/packer/main.pkr.hcl +15 -0
- package/templates/projects/python/.github/workflows/ci.yml +34 -0
- package/templates/projects/python/README.md +4 -0
- package/templates/projects/python/pyproject.toml +15 -0
- 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 -62
- package/docs/COMPLIANCE.md +0 -47
- package/docs/OPERATIONS.md +0 -103
- package/docs/PR_DESCRIPTION.md +0 -150
- package/docs/ROADMAP_legacy.md +0 -556
- package/docs/SECURITY_CHECKLIST.md +0 -25
- package/docs/TASK.md +0 -99
- package/docs/WALKTHROUGH.md +0 -46
- package/scripts/backup.sh +0 -142
- package/scripts/banner.sh +0 -20
- package/scripts/benchmark.sh +0 -20
- package/scripts/build.sh +0 -41
- package/scripts/clean.sh +0 -31
- package/scripts/compile.sh +0 -54
- package/scripts/copy.sh +0 -108
- package/scripts/doctor.sh +0 -79
- package/scripts/dotfiles.sh +0 -63
- package/scripts/download.sh +0 -35
- package/scripts/help.sh +0 -57
- package/scripts/lock-configs.sh +0 -57
- package/scripts/package.sh +0 -46
- package/scripts/ssh.sh +0 -55
- package/scripts/teleport.sh +0 -23
- package/scripts/test-aliases.sh +0 -25
- package/scripts/test_smoke.sh +0 -88
- package/scripts/unpack.sh +0 -28
|
@@ -0,0 +1,194 @@
|
|
|
1
|
+
# Zsh history and options
|
|
2
|
+
HISTFILE="${HOME}/.zsh_history"
|
|
3
|
+
HISTSIZE=10000
|
|
4
|
+
SAVEHIST=10000
|
|
5
|
+
setopt HIST_IGNORE_ALL_DUPS
|
|
6
|
+
setopt HIST_SAVE_NO_DUPS
|
|
7
|
+
setopt HIST_EXPIRE_DUPS_FIRST
|
|
8
|
+
setopt HIST_FIND_NO_DUPS
|
|
9
|
+
setopt HIST_IGNORE_SPACE
|
|
10
|
+
setopt HIST_REDUCE_BLANKS
|
|
11
|
+
setopt EXTENDED_HISTORY
|
|
12
|
+
setopt SHARE_HISTORY
|
|
13
|
+
setopt APPEND_HISTORY
|
|
14
|
+
setopt HIST_SAVE_BY_COPY
|
|
15
|
+
setopt INTERACTIVE_COMMENTS
|
|
16
|
+
|
|
17
|
+
setopt AUTO_CD
|
|
18
|
+
setopt AUTO_PUSHD
|
|
19
|
+
setopt PUSHD_IGNORE_DUPS
|
|
20
|
+
setopt PUSHD_SILENT
|
|
21
|
+
setopt NO_BEEP
|
|
22
|
+
|
|
23
|
+
bindkey -v
|
|
24
|
+
|
|
25
|
+
# Fix: prevent auto-indent when pasting multi-line content (vi mode)
|
|
26
|
+
autoload -Uz bracketed-paste-magic
|
|
27
|
+
zle -N bracketed-paste bracketed-paste-magic
|
|
28
|
+
|
|
29
|
+
autoload -Uz up-line-or-beginning-search down-line-or-beginning-search
|
|
30
|
+
zle -N up-line-or-beginning-search
|
|
31
|
+
zle -N down-line-or-beginning-search
|
|
32
|
+
bindkey -M viins "^[[A" up-line-or-beginning-search
|
|
33
|
+
bindkey -M viins "^[[B" down-line-or-beginning-search
|
|
34
|
+
bindkey -M viins "^P" up-line-or-beginning-search
|
|
35
|
+
bindkey -M viins "^N" down-line-or-beginning-search
|
|
36
|
+
|
|
37
|
+
ZSH_COMPLETIONS_DIR="${XDG_DATA_HOME:-${HOME}/.local/share}/zsh/completions"
|
|
38
|
+
if [[ ! -d "${ZSH_COMPLETIONS_DIR}" ]]; then
|
|
39
|
+
command mkdir -p "${ZSH_COMPLETIONS_DIR}"
|
|
40
|
+
fi
|
|
41
|
+
if [[ -z ${fpath[(r)${ZSH_COMPLETIONS_DIR}]} ]]; then
|
|
42
|
+
fpath=("${ZSH_COMPLETIONS_DIR}" "${fpath[@]}")
|
|
43
|
+
fi
|
|
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" }}
|
|
47
|
+
# fnm (Fast Node Manager)
|
|
48
|
+
# Initialize early so Node + corepack use the expected version.
|
|
49
|
+
if [[ "${DOTFILES_FAST:-0}" != "1" ]] && [[ "${DOTFILES_ULTRA_FAST:-0}" != "1" ]] && command -v fnm >/dev/null; then
|
|
50
|
+
if [[ ! -f "${ZSH_COMPLETIONS_DIR}/_fnm" ]]; then
|
|
51
|
+
command fnm completions --shell zsh >| "${ZSH_COMPLETIONS_DIR}/_fnm"
|
|
52
|
+
fi
|
|
53
|
+
_lazy_load_fnm() {
|
|
54
|
+
unfunction node npm npx pnpm pnpx fnm _lazy_load_fnm 2>/dev/null
|
|
55
|
+
eval "$(command fnm env --use-on-cd --shell zsh --log-level quiet)"
|
|
56
|
+
}
|
|
57
|
+
fnm() { _lazy_load_fnm; command fnm "$@"; }
|
|
58
|
+
node() { _lazy_load_fnm; command node "$@"; }
|
|
59
|
+
npm() { _lazy_load_fnm; command npm "$@"; }
|
|
60
|
+
npx() { _lazy_load_fnm; command npx "$@"; }
|
|
61
|
+
pnpm() { _lazy_load_fnm; command pnpm "$@"; }
|
|
62
|
+
pnpx() { _lazy_load_fnm; command pnpx "$@"; }
|
|
63
|
+
fi
|
|
64
|
+
{{- end }}
|
|
65
|
+
{{- /* When node_manager = "mise", Node.js is handled by mise activate in dot_zshrc.tmpl */}}
|
|
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
|
|
82
|
+
|
|
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
|
|
87
|
+
if [[ -s "${NVM_DIR}/nvm.sh" ]]; then
|
|
88
|
+
_lazy_load_nvm() {
|
|
89
|
+
unfunction node npm npx nvm _lazy_load_nvm 2>/dev/null
|
|
90
|
+
# shellcheck disable=SC1090
|
|
91
|
+
. "${NVM_DIR}/nvm.sh"
|
|
92
|
+
if [[ -s "${NVM_DIR}/bash_completion" ]]; then
|
|
93
|
+
# shellcheck disable=SC1090
|
|
94
|
+
. "${NVM_DIR}/bash_completion"
|
|
95
|
+
fi
|
|
96
|
+
}
|
|
97
|
+
nvm() { _lazy_load_nvm; nvm "$@"; }
|
|
98
|
+
node() { _lazy_load_nvm; command node "$@"; }
|
|
99
|
+
npm() { _lazy_load_nvm; command npm "$@"; }
|
|
100
|
+
npx() { _lazy_load_nvm; command npx "$@"; }
|
|
101
|
+
fi
|
|
102
|
+
fi
|
|
103
|
+
{{- end }}
|
|
104
|
+
|
|
105
|
+
# Lazy-load SDKMAN
|
|
106
|
+
export SDKMAN_DIR="${SDKMAN_DIR:-$HOME/.sdkman}"
|
|
107
|
+
if [[ "${DOTFILES_FAST:-0}" != "1" ]] && [[ "${DOTFILES_ULTRA_FAST:-0}" != "1" ]] && [[ -s "${SDKMAN_DIR}/bin/sdkman-init.sh" && -z "${functions[sdk]:-}" ]]; then
|
|
108
|
+
_lazy_load_sdkman() {
|
|
109
|
+
unfunction sdk _lazy_load_sdkman 2>/dev/null
|
|
110
|
+
# shellcheck disable=SC1090
|
|
111
|
+
. "${SDKMAN_DIR}/bin/sdkman-init.sh"
|
|
112
|
+
}
|
|
113
|
+
sdk() { _lazy_load_sdkman; sdk "$@"; }
|
|
114
|
+
fi
|
|
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
|
|
136
|
+
else
|
|
137
|
+
_dotfiles_add_precmd _deferred_compinit
|
|
138
|
+
fi
|
|
139
|
+
|
|
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
|
|
146
|
+
|
|
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
|
|
163
|
+
unsetopt correct_all
|
|
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
|
+
|
|
180
|
+
# direnv (directory environments)
|
|
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
|
|
194
|
+
fi
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
# Terminal bell (sound + visual)
|
|
2
|
+
|
|
3
|
+
: ${DOTFILES_BELL_SOUND:=1}
|
|
4
|
+
: ${DOTFILES_BELL_VISUAL:=1}
|
|
5
|
+
|
|
6
|
+
if [[ "$DOTFILES_BELL_SOUND" == "1" ]]; then
|
|
7
|
+
unsetopt NO_BEEP
|
|
8
|
+
setopt BEEP
|
|
9
|
+
else
|
|
10
|
+
setopt NO_BEEP
|
|
11
|
+
fi
|
|
12
|
+
|
|
13
|
+
# Some zsh builds don't include visualbell; guard to avoid startup errors.
|
|
14
|
+
if (( $+options[visualbell] )); then
|
|
15
|
+
if [[ "$DOTFILES_BELL_VISUAL" == "1" ]]; then
|
|
16
|
+
setopt VISUALBELL
|
|
17
|
+
else
|
|
18
|
+
unsetopt VISUALBELL
|
|
19
|
+
fi
|
|
20
|
+
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
|
|
@@ -0,0 +1,152 @@
|
|
|
1
|
+
#!/usr/bin/env bash
|
|
2
|
+
## AI Core — Central wrapper for AI operations in the Predictive Shell.
|
|
3
|
+
##
|
|
4
|
+
## Manages local LLM (llamafile) and fallback to GitHub Copilot CLI.
|
|
5
|
+
## Handles model downloading, server management, and query routing.
|
|
6
|
+
##
|
|
7
|
+
## # Requirements
|
|
8
|
+
## - curl: For downloading models and API requests
|
|
9
|
+
## - nc (netcat): For checking server availability
|
|
10
|
+
## - jq: For parsing JSON responses
|
|
11
|
+
## - llamafile (optional): Local LLM server
|
|
12
|
+
## - copilot (optional): GitHub Copilot CLI fallback
|
|
13
|
+
##
|
|
14
|
+
## # Usage
|
|
15
|
+
## ai_core status # Check AI subsystem status
|
|
16
|
+
## ai_core download # Download local LLM model (~4GB)
|
|
17
|
+
## ai_core start # Start local LLM server
|
|
18
|
+
## ai_core query "prompt" # Query the AI (auto-selects provider)
|
|
19
|
+
##
|
|
20
|
+
## # Platform Notes
|
|
21
|
+
## - Linux/macOS: Full support
|
|
22
|
+
## - WSL: Supported with llamafile or Copilot
|
|
23
|
+
## - Model stored in $XDG_DATA_HOME/ai/models/
|
|
24
|
+
|
|
25
|
+
set -euo pipefail
|
|
26
|
+
|
|
27
|
+
# Configuration
|
|
28
|
+
LLAMAFILE_URL="https://huggingface.co/jart/inexpensive-llm/resolve/main/llamafile-server-0.1-llava-v1.5-7b-q4"
|
|
29
|
+
MODEL_DIR="${XDG_DATA_HOME:-$HOME/.local/share}/ai/models"
|
|
30
|
+
MODEL_PATH="$MODEL_DIR/llava-v1.5-7b-q4.llamafile"
|
|
31
|
+
# Default to port 8080 for llamafile server
|
|
32
|
+
SERVER_PORT=8080
|
|
33
|
+
|
|
34
|
+
# Ensure model directory exists
|
|
35
|
+
ensure_model_dir() {
|
|
36
|
+
if [ ! -d "$MODEL_DIR" ]; then
|
|
37
|
+
mkdir -p "$MODEL_DIR"
|
|
38
|
+
fi
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
# Check if we have a local LLM available
|
|
42
|
+
check_local_llm() {
|
|
43
|
+
if [ -f "$MODEL_PATH" ]; then
|
|
44
|
+
return 0
|
|
45
|
+
else
|
|
46
|
+
return 1
|
|
47
|
+
fi
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
# Download the model (interactive only)
|
|
51
|
+
download_model() {
|
|
52
|
+
ensure_model_dir
|
|
53
|
+
echo "Local LLM model not found at $MODEL_PATH"
|
|
54
|
+
echo "This feature requires downloading a localized LLM (~4GB)."
|
|
55
|
+
read -p "Do you want to download it now? (y/n) " -n 1 -r
|
|
56
|
+
echo
|
|
57
|
+
if [[ $REPLY =~ ^[Yy]$ ]]; then
|
|
58
|
+
echo "Downloading llamafile..."
|
|
59
|
+
# Note: curl -L is used to follow redirects
|
|
60
|
+
if curl -L -o "$MODEL_PATH" "$LLAMAFILE_URL"; then
|
|
61
|
+
chmod +x "$MODEL_PATH"
|
|
62
|
+
echo "Download complete. Model saved to $MODEL_PATH"
|
|
63
|
+
else
|
|
64
|
+
echo "Download failed."
|
|
65
|
+
return 1
|
|
66
|
+
fi
|
|
67
|
+
else
|
|
68
|
+
echo "Skipping download. AI features may be limited."
|
|
69
|
+
return 1
|
|
70
|
+
fi
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
# Verify status of AI subsystem
|
|
74
|
+
status() {
|
|
75
|
+
echo "--- Predictive Shell AI Core Status ---"
|
|
76
|
+
if check_local_llm; then
|
|
77
|
+
echo "Local LLM: Installed ($MODEL_PATH)"
|
|
78
|
+
else
|
|
79
|
+
echo "Local LLM: Not installed"
|
|
80
|
+
fi
|
|
81
|
+
|
|
82
|
+
# Check for other providers
|
|
83
|
+
if command -v copilot &>/dev/null; then
|
|
84
|
+
echo "GitHub Copilot CLI: Available"
|
|
85
|
+
elif command -v gh &>/dev/null && gh copilot --version &>/dev/null; then
|
|
86
|
+
echo "GitHub Copilot CLI: Available"
|
|
87
|
+
else
|
|
88
|
+
echo "GitHub Copilot CLI: Not available"
|
|
89
|
+
fi
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
# Start the server (background)
|
|
93
|
+
start_server() {
|
|
94
|
+
if ! check_local_llm; then
|
|
95
|
+
download_model || return 1
|
|
96
|
+
fi
|
|
97
|
+
|
|
98
|
+
echo "Starting Local LLM Server..."
|
|
99
|
+
"$MODEL_PATH" --server --nobrowser --port "$SERVER_PORT" &
|
|
100
|
+
echo "Server started on port $SERVER_PORT"
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
# Query the LLM
|
|
104
|
+
# Usage: ai_core query "Your prompt here"
|
|
105
|
+
query() {
|
|
106
|
+
local prompt="$1"
|
|
107
|
+
|
|
108
|
+
# Priority 1: Local LLM Server if running
|
|
109
|
+
if nc -z localhost "$SERVER_PORT" 2>/dev/null; then
|
|
110
|
+
# Simple curl based query to llamafile standard endpoint
|
|
111
|
+
# Note: This is a simplified example payload
|
|
112
|
+
curl -s -X POST "http://localhost:$SERVER_PORT/completion" \
|
|
113
|
+
-H "Content-Type: application/json" \
|
|
114
|
+
-d "{\"prompt\": \"$prompt\", \"n_predict\": 128}" | jq -r .content
|
|
115
|
+
return
|
|
116
|
+
fi
|
|
117
|
+
|
|
118
|
+
# Priority 2: GitHub Copilot CLI
|
|
119
|
+
if command -v copilot &>/dev/null; then
|
|
120
|
+
echo "Local server not running. Using GitHub Copilot..."
|
|
121
|
+
copilot -p "$prompt"
|
|
122
|
+
return
|
|
123
|
+
fi
|
|
124
|
+
|
|
125
|
+
if command -v gh &>/dev/null && gh copilot --version &>/dev/null; then
|
|
126
|
+
echo "Local server not running. Using GitHub Copilot..."
|
|
127
|
+
gh copilot explain "$prompt"
|
|
128
|
+
return
|
|
129
|
+
fi
|
|
130
|
+
|
|
131
|
+
echo "No AI provider available. Run 'ai_core start' or install GitHub Copilot CLI."
|
|
132
|
+
}
|
|
133
|
+
|
|
134
|
+
case "$1" in
|
|
135
|
+
status)
|
|
136
|
+
status
|
|
137
|
+
;;
|
|
138
|
+
download)
|
|
139
|
+
download_model
|
|
140
|
+
;;
|
|
141
|
+
start)
|
|
142
|
+
start_server
|
|
143
|
+
;;
|
|
144
|
+
query)
|
|
145
|
+
shift
|
|
146
|
+
query "$@"
|
|
147
|
+
;;
|
|
148
|
+
*)
|
|
149
|
+
echo "Usage: $0 {status|download|start|query}"
|
|
150
|
+
exit 1
|
|
151
|
+
;;
|
|
152
|
+
esac
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
#!/usr/bin/env bash
|
|
2
|
+
# Wrapper for Antigravity extension updates under Topgrade.
|
|
3
|
+
# Clears Node/Electron env that can inject custom loaders and crash updater.
|
|
4
|
+
set -euo pipefail
|
|
5
|
+
|
|
6
|
+
unset NODE_OPTIONS
|
|
7
|
+
unset ELECTRON_RUN_AS_NODE
|
|
8
|
+
unset ELECTRON_NO_ATTACH_CONSOLE
|
|
9
|
+
unset ELECTRON_ENABLE_LOGGING
|
|
10
|
+
|
|
11
|
+
exec /usr/bin/antigravity "$@"
|