@sebastienrousseau/dotfiles 0.2.502 → 0.2.503
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 +83 -9
- package/LICENSE +21 -1283
- package/README.md +5 -3
- package/docs/CONFIG_STRATEGY.md +124 -0
- package/docs/COPYRIGHT +1 -1
- package/docs/GOVERNANCE.md +98 -0
- package/docs/MAINTAINERS.md +41 -0
- package/docs/OPENCODE.md +127 -0
- package/docs/README.md +2 -0
- package/docs/STRUCTURE.md +102 -0
- package/docs/adr/ADR-011-nushell-tier3-keep.md +2 -2
- package/docs/architecture/AI_COST_OPTIMIZATION.md +143 -0
- package/docs/architecture/REPO_LAYOUT.md +8 -8
- package/docs/archive/MILESTONE_v0.2.493.md +1 -1
- package/docs/index.md +2 -2
- package/docs/interop/POWERSHELL.md +1 -1
- package/docs/manual/00-introduction.md +1 -1
- package/docs/manual/01-concepts/02-trust-model.md +1 -1
- package/docs/manual/03-reference/02-config-files.md +2 -2
- package/docs/manual/_toc.yml +1 -1
- package/docs/manual/command-index.md +72 -59
- package/docs/operations/CI_COMPOSITES.md +2 -2
- package/docs/operations/COMPLETIONS.md +2 -2
- package/docs/operations/COVERAGE.md +5 -5
- package/docs/operations/HARD_AUDIT_2026.md +11 -11
- package/docs/operations/MAINTENANCE.md +3 -3
- package/docs/operations/MANIFEST.md +127 -0
- package/docs/operations/RELEASE_PIPELINE.md +130 -0
- package/docs/operations/RFC_v0_2_503_reorganization.md +280 -0
- package/docs/operations/ROADMAP_2026.md +6 -6
- package/docs/operations/ROADMAP_V0_2_503.md +134 -0
- package/docs/operations/TESTING.md +17 -0
- package/docs/operations/TRACEABILITY.md +6 -3
- package/docs/operations/VERSION_SYNC.md +4 -4
- package/docs/reference/POWERSHELL_PARITY.md +8 -7
- package/docs/schema/dot-env-v1.json +110 -0
- package/docs/security/CI_EGRESS_ALLOWLIST.md +1 -1
- package/docs/security/CI_PINNING.md +17 -9
- package/docs/security/DEPS_DEV_EXCEPTIONS.md +2 -2
- package/docs/security/FUZZING.md +114 -0
- package/docs/security/INSTALL_VERIFICATION.md +2 -2
- package/docs/security/POLICY_RELEASES.md +2 -2
- package/docs/security/SCORECARD.md +58 -3
- package/docs/security/SHELL_EXEMPTIONS.md +4 -4
- package/docs/security/VERIFY_RELEASE.md +201 -0
- package/install.sh +27 -5
- package/package.json +1 -1
- package/scripts/README.md +123 -0
- package/scripts/ci/check-copyright-headers.sh +4 -93
- package/scripts/ci/check-shell-preamble.sh +4 -103
- package/scripts/ci/guard-gitleaks-checkout.sh +4 -54
- package/scripts/diagnostics/a2a-conformance.sh +4 -4
- package/scripts/diagnostics/alias-governance.sh +1 -1
- package/scripts/diagnostics/aliases-cheatsheet.sh +2 -2
- package/scripts/diagnostics/benchmark.sh +4 -4
- package/scripts/diagnostics/conflicts.sh +2 -2
- package/scripts/diagnostics/doctor-unified.sh +2 -2
- package/scripts/diagnostics/doctor.sh +10 -10
- package/scripts/diagnostics/drift-dashboard.sh +2 -2
- package/scripts/diagnostics/health.sh +4 -4
- package/scripts/diagnostics/history-analysis.sh +2 -2
- package/scripts/diagnostics/mcp-doctor.sh +10 -7
- package/scripts/diagnostics/perf.sh +4 -4
- package/scripts/diagnostics/scorecard.sh +4 -4
- package/scripts/diagnostics/security-score.sh +2 -2
- package/scripts/diagnostics/smoke-test.sh +2 -2
- package/scripts/diagnostics/snapshot.sh +2 -2
- package/scripts/diagnostics/verify.sh +4 -4
- package/scripts/diagnostics/version-locks.sh +2 -2
- package/scripts/diagnostics/workstation-attestation.sh +14 -14
- package/scripts/dot/commands/agent.sh +8 -0
- package/scripts/dot/commands/agents.sh +14 -4
- package/scripts/dot/commands/ai.sh +144 -25
- package/scripts/dot/commands/appearance.sh +2 -2
- package/scripts/dot/commands/core.sh +2 -2
- package/scripts/dot/commands/diagnostics.sh +5 -5
- package/scripts/dot/commands/env-emit.sh +202 -0
- package/scripts/dot/commands/fleet.sh +12 -11
- package/scripts/dot/commands/init.sh +4 -4
- package/scripts/dot/commands/lint.sh +9 -4
- package/scripts/dot/commands/manual.sh +3 -3
- package/scripts/dot/commands/meta.sh +12 -6
- package/scripts/dot/commands/patterns.sh +2 -2
- package/scripts/dot/commands/registry.sh +4 -4
- package/scripts/dot/commands/restore.sh +4 -4
- package/scripts/dot/commands/secrets.sh +4 -3
- package/scripts/dot/commands/security.sh +2 -2
- package/scripts/dot/commands/tools.sh +13 -3
- package/scripts/dot/powershell/Dot.psm1 +199 -0
- package/scripts/fonts/install-nerd-fonts.sh +2 -2
- package/scripts/git-hooks/pre-commit-audit.sh +2 -2
- package/scripts/git-hooks/pre-push +13 -0
- package/scripts/ops/ai-setup.sh +1 -1
- package/scripts/ops/bundle.sh +2 -2
- package/scripts/ops/chaos.sh +2 -2
- package/scripts/ops/chezmoi-apply.sh +4 -4
- package/scripts/ops/heal.sh +4 -4
- package/scripts/ops/post-apply-repair.sh +2 -2
- package/scripts/ops/prewarm.sh +2 -2
- package/scripts/ops/release.sh +4 -4
- package/scripts/ops/rollback.sh +4 -4
- package/scripts/ops/setup.sh +2 -2
- package/scripts/qa/check-version-consistency.sh +123 -0
- package/scripts/qa/coverage-baseline.sh +1 -1
- package/scripts/qa/docs-coverage.sh +2 -2
- package/scripts/qa/powershell-contract.ps1 +1 -1
- package/scripts/qa/scorecard-snapshot.sh +127 -0
- package/scripts/security/backup.sh +2 -2
- package/scripts/security/dns-doh.sh +4 -4
- package/scripts/security/encryption-check.sh +4 -4
- package/scripts/security/enforce-policies.sh +2 -2
- package/scripts/security/firewall.sh +4 -4
- package/scripts/security/lock-screen.sh +4 -4
- package/scripts/security/manage-secrets.sh +2 -2
- package/scripts/security/ssh-cert.sh +2 -2
- package/scripts/security/telemetry-kill.sh +4 -4
- package/scripts/security/usb-safety.sh +4 -4
- package/scripts/theme/extract-heic-frames.sh +114 -0
- package/scripts/theme/rebuild-themes.sh +8 -1
- package/scripts/theme/switch.sh +13 -6
- package/scripts/theme/wallpaper-sync.sh +297 -93
- package/scripts/tuning/linux.sh +2 -2
- package/scripts/tuning/macos.sh +2 -2
- package/scripts/version-sync.sh +55 -7
- package/dot_config/.module-manifest.json +0 -69
- package/dot_config/ai/identity.md +0 -23
- package/dot_config/ai/patterns/architect.md +0 -16
- package/dot_config/ai/patterns/hardener.md +0 -15
- package/dot_config/ai/patterns/refactor.md +0 -15
- package/dot_config/aider/aider.conf.yml +0 -32
- package/dot_config/alacritty/alacritty.toml.tmpl +0 -55
- package/dot_config/ansible/ansible.cfg +0 -11
- package/dot_config/atuin/config.toml.tmpl +0 -47
- package/dot_config/bat/config +0 -23
- package/dot_config/brave-flags.conf.tmpl +0 -7
- package/dot_config/btop/btop.conf +0 -16
- package/dot_config/btop/themes/tokyonight.theme +0 -34
- package/dot_config/bun/bunfig.toml.tmpl +0 -33
- package/dot_config/claude/mcp_servers.json +0 -20
- package/dot_config/containers/containers.conf +0 -14
- package/dot_config/curl/dot_curlrc +0 -18
- package/dot_config/dlv/config.yml +0 -39
- package/dot_config/docker/config.json +0 -15
- package/dot_config/dotfiles/agent-card.json +0 -29
- package/dot_config/dotfiles/agent-profiles.json +0 -92
- package/dot_config/dotfiles/boot/README.md +0 -13
- package/dot_config/dotfiles/grub/README.md +0 -13
- package/dot_config/dotfiles/lock/README.md +0 -13
- package/dot_config/dotfiles/mcp-lock.json +0 -33
- package/dot_config/dotfiles/mcp-policy.json +0 -52
- package/dot_config/dotfiles/mcp-registry.json +0 -47
- package/dot_config/dotfiles/model-registry.json +0 -20
- package/dot_config/dotfiles/policy-bundles.json +0 -38
- package/dot_config/dotfiles/prompt-registry.json +0 -16
- package/dot_config/dotfiles/versions.env +0 -18
- package/dot_config/duf/duf.conf +0 -6
- package/dot_config/duti/defaults.duti +0 -5
- package/dot_config/emoji/emoji.txt +0 -34
- package/dot_config/environment.d/50-ssh-agent.conf +0 -2
- package/dot_config/environment.d/90-wayland.conf +0 -19
- package/dot_config/fastfetch/config.jsonc +0 -28
- package/dot_config/firefox/user.js.tmpl +0 -58
- package/dot_config/fish/completions/dot-theme-sync.fish.tmpl +0 -9
- package/dot_config/fish/completions/dot.fish.tmpl +0 -115
- package/dot_config/fish/conf.d/000-perf-cache.fish +0 -56
- package/dot_config/fish/conf.d/aliases.fish.tmpl +0 -77
- package/dot_config/fish/conf.d/direnv.fish +0 -4
- package/dot_config/fish/conf.d/env.fish.tmpl +0 -48
- package/dot_config/fish/conf.d/functions.fish.tmpl +0 -22
- package/dot_config/fish/conf.d/init.fish.tmpl +0 -172
- package/dot_config/fish/conf.d/mise-activate.fish +0 -5
- package/dot_config/fish/config.fish.tmpl +0 -44
- package/dot_config/fish/fish_plugins +0 -1
- package/dot_config/fish/functions/_.fish +0 -3
- package/dot_config/fish/functions/_cached_eval.fish +0 -131
- package/dot_config/fish/functions/_cached_eval_clear.fish +0 -17
- package/dot_config/fish/functions/als.fish +0 -46
- package/dot_config/fish/functions/bg-upgrade.fish +0 -7
- package/dot_config/fish/functions/c.fish +0 -3
- package/dot_config/fish/functions/cat.fish +0 -9
- package/dot_config/fish/functions/d.fish +0 -7
- package/dot_config/fish/functions/dot.fish +0 -34
- package/dot_config/fish/functions/h.fish +0 -3
- package/dot_config/fish/functions/l.fish +0 -7
- package/dot_config/fish/functions/la.fish +0 -7
- package/dot_config/fish/functions/ll.fish +0 -7
- package/dot_config/fish/functions/log_error.fish +0 -13
- package/dot_config/fish/functions/log_info.fish +0 -13
- package/dot_config/fish/functions/lr.fish +0 -7
- package/dot_config/fish/functions/lra.fish +0 -7
- package/dot_config/fish/functions/ls.fish +0 -7
- package/dot_config/fish/functions/lt.fish +0 -7
- package/dot_config/fish/functions/lta.fish +0 -7
- package/dot_config/fish/functions/notify-run.fish +0 -11
- package/dot_config/fish/functions/q.fish +0 -3
- package/dot_config/fish/functions/silent-run.fish +0 -7
- package/dot_config/fish/functions/yy.fish +0 -8
- package/dot_config/flatpak/flatpak.list +0 -4
- package/dot_config/fontconfig/fonts.conf.tmpl +0 -57
- package/dot_config/foot/foot.ini.tmpl +0 -33
- package/dot_config/fuzzel/fuzzel.ini.tmpl +0 -18
- package/dot_config/fzf/fzf.zsh +0 -48
- package/dot_config/gem/gemrc +0 -9
- package/dot_config/gh/config.yml +0 -12
- package/dot_config/ghostty/config.tmpl +0 -165
- package/dot_config/git/allowed_signers.tmpl +0 -18
- package/dot_config/git/attributes +0 -12
- package/dot_config/git/commit-template +0 -10
- package/dot_config/git/hooks/executable_commit-msg +0 -146
- package/dot_config/git/ignore +0 -27
- package/dot_config/gnupg/gpg-agent.conf +0 -11
- package/dot_config/go/golangci.yml +0 -118
- package/dot_config/go/gopls.json +0 -30
- package/dot_config/goose/config.yaml +0 -29
- package/dot_config/gtk-3.0/gtk.css.tmpl +0 -184
- package/dot_config/gtk-3.0/settings.ini.tmpl +0 -27
- package/dot_config/gtk-4.0/gtk.css.tmpl +0 -252
- package/dot_config/gtk-4.0/settings.ini.tmpl +0 -18
- package/dot_config/htop/htoprc +0 -20
- package/dot_config/inputrc +0 -2
- package/dot_config/ipython/profile_default/ipython_config.py +0 -19
- package/dot_config/just/justfile +0 -122
- package/dot_config/k9s/config.yaml +0 -65
- package/dot_config/k9s/skins/catppuccin-mocha.yaml +0 -116
- package/dot_config/kanshi/config.tmpl +0 -22
- package/dot_config/karabiner/karabiner.json +0 -14
- package/dot_config/kitty/kitty.conf.tmpl +0 -53
- package/dot_config/lazydocker/config.yml +0 -186
- package/dot_config/lazygit/config.yml +0 -35
- package/dot_config/mako/config +0 -47
- package/dot_config/mas/masapps.txt +0 -5
- package/dot_config/micro/settings.json +0 -3
- package/dot_config/mimeapps.list +0 -77
- package/dot_config/minikube/config.json +0 -13
- package/dot_config/mise/config.toml +0 -99
- package/dot_config/mongosh/mongoshrc.js +0 -68
- package/dot_config/mpv/input.conf +0 -47
- package/dot_config/mpv/mpv.conf +0 -47
- package/dot_config/mycli/myclirc +0 -67
- package/dot_config/nano/nanorc +0 -28
- package/dot_config/ncdu/config +0 -12
- package/dot_config/niri/config.kdl.tmpl +0 -327
- package/dot_config/nushell/aliases.nu +0 -18
- package/dot_config/nushell/cached_eval.nu +0 -80
- package/dot_config/nushell/completions.nu.tmpl +0 -52
- package/dot_config/nushell/config.nu.tmpl +0 -86
- package/dot_config/nushell/env.nu.tmpl +0 -102
- package/dot_config/nushell/functions.nu.tmpl +0 -17
- package/dot_config/nvim/init.lua +0 -18
- package/dot_config/nvim/lazy-lock.json +0 -58
- package/dot_config/nvim/lua/config/autocmds.lua +0 -107
- package/dot_config/nvim/lua/config/keymaps.lua +0 -92
- package/dot_config/nvim/lua/config/lazy.lua +0 -44
- package/dot_config/nvim/lua/config/options.lua +0 -49
- package/dot_config/nvim/lua/plugins/ai.lua +0 -75
- package/dot_config/nvim/lua/plugins/coding.lua +0 -216
- package/dot_config/nvim/lua/plugins/completion.lua +0 -60
- package/dot_config/nvim/lua/plugins/dap.lua +0 -412
- package/dot_config/nvim/lua/plugins/editor.lua +0 -55
- package/dot_config/nvim/lua/plugins/git.lua +0 -10
- package/dot_config/nvim/lua/plugins/lsp.lua +0 -156
- package/dot_config/nvim/lua/plugins/markdown.lua +0 -18
- package/dot_config/nvim/lua/plugins/rust.lua +0 -34
- package/dot_config/nvim/lua/plugins/sessions.lua +0 -33
- package/dot_config/nvim/lua/plugins/ui.lua +0 -509
- package/dot_config/paru/paru.conf +0 -10
- package/dot_config/pip/pip.conf.tmpl +0 -32
- package/dot_config/powershell/Microsoft.PowerShell_profile.ps1.tmpl +0 -81
- package/dot_config/pueue/pueue.yml +0 -34
- package/dot_config/pypoetry/config.toml +0 -6
- package/dot_config/pyrightconfig.json +0 -5
- package/dot_config/raycast/README.md +0 -13
- package/dot_config/redis/redisclirc +0 -41
- package/dot_config/ripgrep/ripgreprc +0 -21
- package/dot_config/shell/00-core-paths.sh.tmpl +0 -141
- package/dot_config/shell/05-core-safety.sh +0 -48
- package/dot_config/shell/10-secrets.sh +0 -41
- package/dot_config/shell/40-fzf-defaults.sh.tmpl +0 -17
- package/dot_config/shell/40-ls-colors.sh +0 -49
- package/dot_config/shell/50-logic-functions-core.sh.tmpl +0 -11
- package/dot_config/shell/50-logic-functions.sh.tmpl +0 -11
- package/dot_config/shell/51-logic-functions-extra.sh.tmpl +0 -65
- package/dot_config/shell/90-ux-aliases.sh.tmpl +0 -121
- package/dot_config/shell/91-ux-aliases-lazy.sh.tmpl +0 -55
- package/dot_config/shell/Brewfile +0 -207
- package/dot_config/shell/Brewfile.cask +0 -92
- package/dot_config/shell/Brewfile.cli +0 -127
- package/dot_config/shell/README.md +0 -284
- package/dot_config/shell/als_data.txt.tmpl +0 -65
- package/dot_config/shell/custom/auto_ls.zsh +0 -20
- package/dot_config/shell/custom/context_suggest.zsh +0 -68
- package/dot_config/shell/custom/error_analysis.zsh +0 -45
- package/dot_config/sops/dot_sops.yaml +0 -23
- package/dot_config/starship.toml.tmpl +0 -202
- package/dot_config/swaylock/config +0 -43
- package/dot_config/systemd/user/dotfiles-maintenance.service +0 -8
- package/dot_config/systemd/user/dotfiles-maintenance.timer +0 -11
- package/dot_config/systemd/user/pueued.service +0 -12
- package/dot_config/systemd/user/ssh-agent.service +0 -12
- package/dot_config/task/Taskfile.yml +0 -86
- package/dot_config/tflint/tflint.hcl +0 -9
- package/dot_config/tmux/tmux.conf.tmpl +0 -223
- package/dot_config/topgrade.toml.tmpl +0 -54
- package/dot_config/user-dirs.dirs +0 -10
- package/dot_config/vscode/extensions.txt +0 -11
- package/dot_config/vscode/settings.json.tmpl +0 -82
- package/dot_config/waybar/config.jsonc.tmpl +0 -90
- package/dot_config/waybar/style.css.tmpl +0 -211
- package/dot_config/wezterm/wezterm.lua.tmpl +0 -64
- package/dot_config/wget/wgetrc +0 -12
- package/dot_config/xdg-desktop-portal/niri-portals.conf +0 -5
- package/dot_config/yarn/yarnrc.yml +0 -36
- package/dot_config/yazi/keymap.toml +0 -67
- package/dot_config/yazi/theme.toml +0 -102
- package/dot_config/yazi/yazi.toml +0 -40
- package/dot_config/zathura/zathurarc +0 -52
- package/dot_config/zellij/config.kdl.tmpl +0 -79
- package/dot_config/zsh/dot_zprofile +0 -7
- package/dot_config/zsh/dot_zshenv +0 -5
- package/dot_config/zsh/dot_zshrc.tmpl +0 -688
- package/dot_config/zsh/rc.d/00-alias-shims.zsh +0 -99
- package/dot_config/zsh/rc.d/05-ssh-agent.zsh +0 -18
- package/dot_config/zsh/rc.d/10-env.zsh.tmpl +0 -28
- package/dot_config/zsh/rc.d/20-zinit.zsh +0 -65
- package/dot_config/zsh/rc.d/30-options.zsh.tmpl +0 -214
- package/dot_config/zsh/rc.d/40-bell.zsh +0 -20
- package/dot_config/zsh/rc.d/50-login-fortune.zsh +0 -9
- package/dot_config/zsh/rc.d/99-alias-wrapper.zsh +0 -32
- package/dot_local/bin/executable_ai-update +0 -195
- package/dot_local/bin/executable_ai_core +0 -152
- package/dot_local/bin/executable_antigravity +0 -11
- package/dot_local/bin/executable_b64 +0 -84
- package/dot_local/bin/executable_bm +0 -79
- package/dot_local/bin/executable_cb +0 -39
- package/dot_local/bin/executable_dot +0 -636
- package/dot_local/bin/executable_dot-ai +0 -36
- package/dot_local/bin/executable_dot-bootstrap +0 -76
- package/dot_local/bin/executable_dot-launch-or-focus +0 -52
- package/dot_local/bin/executable_dot-load-benchmark +0 -31
- package/dot_local/bin/executable_dot-load-benchmark-pty +0 -77
- package/dot_local/bin/executable_dot-theme-sync +0 -952
- package/dot_local/bin/executable_dot_completion +0 -57
- package/dot_local/bin/executable_dtags +0 -28
- package/dot_local/bin/executable_epoch +0 -67
- package/dot_local/bin/executable_extract +0 -41
- package/dot_local/bin/executable_gbd +0 -52
- package/dot_local/bin/executable_gd +0 -42
- package/dot_local/bin/executable_git-ai-commit +0 -175
- package/dot_local/bin/executable_git-ai-diff +0 -169
- package/dot_local/bin/executable_gl +0 -101
- package/dot_local/bin/executable_hash +0 -161
- package/dot_local/bin/executable_hashsum +0 -160
- package/dot_local/bin/executable_hex +0 -115
- package/dot_local/bin/executable_jsonv +0 -78
- package/dot_local/bin/executable_jwt +0 -94
- package/dot_local/bin/executable_kill-port +0 -75
- package/dot_local/bin/executable_lorem +0 -118
- package/dot_local/bin/executable_mkscript +0 -35
- package/dot_local/bin/executable_monitor +0 -56
- package/dot_local/bin/executable_myip +0 -51
- package/dot_local/bin/executable_notify +0 -24
- package/dot_local/bin/executable_open +0 -38
- package/dot_local/bin/executable_pw +0 -27
- package/dot_local/bin/executable_rec-start +0 -46
- package/dot_local/bin/executable_rec-stop +0 -35
- package/dot_local/bin/executable_regex +0 -132
- package/dot_local/bin/executable_start-niri +0 -8
- package/dot_local/bin/executable_tmux-sessionizer +0 -314
- package/dot_local/bin/executable_tour +0 -177
- package/dot_local/bin/executable_up +0 -23
- package/dot_local/bin/executable_update +0 -142
- package/dot_local/bin/executable_uuid +0 -87
- package/dot_local/bin/executable_win +0 -32
- package/dot_local/bin/executable_yamlv +0 -57
- package/dot_local/share/bash-completion/completions/dot +0 -72
- 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 +0 -149
- package/dot_local/share/mise/plugins/kiro-cli/bin/executable_download +0 -64
- package/dot_local/share/mise/plugins/kiro-cli/bin/executable_install +0 -18
- package/dot_local/share/mise/plugins/kiro-cli/bin/executable_list-all +0 -13
- package/dot_local/share/wayland-sessions/niri.desktop.tmpl +0 -6
- package/dot_local/share/zsh/completions/.keep +0 -0
- package/dot_local/share/zsh/completions/_dot +0 -287
- package/scripts/ci/check-dangerous-chmod.sh +0 -19
- package/scripts/ci/check-deps-dev.sh +0 -236
- package/scripts/ci/check-insecure-tls.sh +0 -61
- package/scripts/ci/check-regression-traceability.sh +0 -67
- package/scripts/ci/dot-cli-startup-bench.sh +0 -126
- package/scripts/ci/install-chezmoi-verified.sh +0 -67
- package/scripts/ci/lint-reusable-pins.sh +0 -78
- package/scripts/ci/run-coverage.sh +0 -451
- package/scripts/ci/validate-chezmoidata.sh +0 -25
- package/scripts/ci/validate-ci-config.sh +0 -224
- package/scripts/ci/windows-smoke-test.ps1 +0 -136
- package/scripts/docs/build-manual.sh +0 -883
- package/scripts/docs/check-manual.sh +0 -213
- package/scripts/dot/lib/bento.sh +0 -50
- package/scripts/dot/lib/log.sh +0 -200
- package/scripts/dot/lib/platform.sh +0 -112
- package/scripts/dot/lib/ui.sh +0 -650
- package/scripts/dot/lib/utils.sh +0 -377
- package/scripts/maintenance/check-updates.sh +0 -131
- package/scripts/release/package-policy-bundles.sh +0 -125
|
@@ -1,688 +0,0 @@
|
|
|
1
|
-
# .dotfiles (v{{ .dotfiles_version }}) - <https://dotfiles.io>
|
|
2
|
-
# Made With ❤️ in London, United Kingdom
|
|
3
|
-
# Designed by
|
|
4
|
-
# Copyright (c) 2015-2026. All rights reserved.
|
|
5
|
-
# License: MIT
|
|
6
|
-
|
|
7
|
-
# Performance optimization - skip if not interactive
|
|
8
|
-
[[ -o interactive ]] || return
|
|
9
|
-
|
|
10
|
-
# Only source once if being re-sourced (in the same shell scope)
|
|
11
|
-
if [[ -v DOTFILES_SOURCED ]]; then
|
|
12
|
-
return
|
|
13
|
-
fi
|
|
14
|
-
DOTFILES_SOURCED=1
|
|
15
|
-
|
|
16
|
-
{{- /* Input Validation: Ensure crucial variables are set */ -}}
|
|
17
|
-
{{- if not .chezmoi.homeDir -}}
|
|
18
|
-
{{- fail "Critical Error: .chezmoi.homeDir is not set!" -}}
|
|
19
|
-
{{- end -}}
|
|
20
|
-
|
|
21
|
-
{{- if eq .chezmoi.os "darwin" }}
|
|
22
|
-
export FORCE_COLOR_OS="macOS"
|
|
23
|
-
{{- else if eq .chezmoi.os "linux" }}
|
|
24
|
-
export FORCE_COLOR_OS="Linux"
|
|
25
|
-
{{- else if eq .chezmoi.os "windows" }}
|
|
26
|
-
export FORCE_COLOR_OS="Windows"
|
|
27
|
-
{{- end }}
|
|
28
|
-
|
|
29
|
-
{{- $profile := default "laptop" .profile -}}
|
|
30
|
-
{{- $features := default (dict "zsh" true "nvim" true "tmux" true "gui" true "secrets" true) .features -}}
|
|
31
|
-
{{- $theme := default "big-sur-dark" .theme -}}
|
|
32
|
-
{{- $strict_mode := default false (index . "strict_mode") -}}
|
|
33
|
-
{{- $enabled := list -}}
|
|
34
|
-
{{- range $k, $v := $features }}{{- if $v }}{{- $enabled = append $enabled $k }}{{- end }}{{- end }}
|
|
35
|
-
|
|
36
|
-
export DOTFILES_PROFILE="{{ $profile }}"
|
|
37
|
-
export DOTFILES_FEATURES="{{ join "," $enabled }}"
|
|
38
|
-
export DOTFILES_THEME="{{ $theme }}"
|
|
39
|
-
: ${DOTFILES_STARTUP_MODE:=full}
|
|
40
|
-
: ${DOTFILES_FAST:=0}
|
|
41
|
-
: ${DOTFILES_ULTRA_FAST:=0}
|
|
42
|
-
: ${DOTFILES_AI:=0}
|
|
43
|
-
: ${DOTFILES_ALIAS_STRICT_MODE:={{ if $strict_mode }}1{{ else }}0{{ end }}}
|
|
44
|
-
: ${DOTFILES_ULTRA_FAST_PROMPT:=1}
|
|
45
|
-
: ${DOTFILES_LAYERS_LOAD:=ondemand}
|
|
46
|
-
: ${DOTFILES_LAYERS_PREWARM:=system,text,api}
|
|
47
|
-
: ${DOTFILES_ALIAS_WRAPPER:={{ if .features.alias_wrapper }}1{{ else }}0{{ end }}}
|
|
48
|
-
|
|
49
|
-
# Default compinit based on profile (can be overridden by env)
|
|
50
|
-
if [[ -z "${DOTFILES_ENABLE_COMPINIT+x}" ]]; then
|
|
51
|
-
case "${DOTFILES_PROFILE}" in
|
|
52
|
-
laptop|desktop) DOTFILES_ENABLE_COMPINIT=1 ;;
|
|
53
|
-
*) DOTFILES_ENABLE_COMPINIT=0 ;;
|
|
54
|
-
esac
|
|
55
|
-
fi
|
|
56
|
-
|
|
57
|
-
# Startup mode override (if explicit mode set and flags not already set)
|
|
58
|
-
if [[ "${DOTFILES_FAST}" == "0" ]] && [[ "${DOTFILES_ULTRA_FAST}" == "0" ]]; then
|
|
59
|
-
if [[ "${DOTFILES_STARTUP_MODE}" == "fast" ]]; then
|
|
60
|
-
DOTFILES_FAST=1
|
|
61
|
-
elif [[ "${DOTFILES_STARTUP_MODE}" == "ultra" ]]; then
|
|
62
|
-
DOTFILES_ULTRA_FAST=1
|
|
63
|
-
DOTFILES_FAST=1
|
|
64
|
-
fi
|
|
65
|
-
fi
|
|
66
|
-
|
|
67
|
-
# Ultra-fast mode: minimal init (skip rc.d, plugins, prompts, AI, completions)
|
|
68
|
-
if [[ "${DOTFILES_ULTRA_FAST}" == "1" ]]; then
|
|
69
|
-
export DOTFILES_FAST=1
|
|
70
|
-
if [[ "${DOTFILES_ULTRA_FAST_PROMPT}" == "1" ]]; then
|
|
71
|
-
PROMPT='%n@%m:%~%# '
|
|
72
|
-
RPROMPT=''
|
|
73
|
-
fi
|
|
74
|
-
# Ensure no precmd/preexec hooks run in ultra-fast mode
|
|
75
|
-
precmd_functions=()
|
|
76
|
-
preexec_functions=()
|
|
77
|
-
unset -f precmd preexec
|
|
78
|
-
typeset -aU path
|
|
79
|
-
return
|
|
80
|
-
fi
|
|
81
|
-
|
|
82
|
-
# Cached eval helper â sources cached init scripts, regenerates when stale
|
|
83
|
-
# Debug/Trace modes — observability for shell startup
|
|
84
|
-
: ${DOTFILES_DEBUG:=0}
|
|
85
|
-
: ${DOTFILES_TRACE:=0}
|
|
86
|
-
|
|
87
|
-
if [[ "${DOTFILES_TRACE}" == "1" ]]; then
|
|
88
|
-
_dotfiles_trace_dir="${XDG_STATE_HOME:-$HOME/.local/state}/dotfiles"
|
|
89
|
-
mkdir -p "$_dotfiles_trace_dir"
|
|
90
|
-
exec 3>&2 2>"$_dotfiles_trace_dir/debug.log"
|
|
91
|
-
PS4='+%D{%s.%6.} %N:%i> '
|
|
92
|
-
set -x
|
|
93
|
-
fi
|
|
94
|
-
|
|
95
|
-
if [[ "${DOTFILES_DEBUG}" == "1" ]]; then
|
|
96
|
-
_dotfiles_debug_start=${EPOCHREALTIME:-$(date +%s.%N)}
|
|
97
|
-
_dotfiles_debug() {
|
|
98
|
-
local now=${EPOCHREALTIME:-$(date +%s.%N)}
|
|
99
|
-
local elapsed
|
|
100
|
-
elapsed=$(printf '%.0f' "$(( (now - _dotfiles_debug_start) * 1000 ))")
|
|
101
|
-
printf '[debug %4dms] %s\n' "$elapsed" "$1" >&2
|
|
102
|
-
}
|
|
103
|
-
_dotfiles_debug "startup begins"
|
|
104
|
-
else
|
|
105
|
-
_dotfiles_debug() { :; }
|
|
106
|
-
fi
|
|
107
|
-
|
|
108
|
-
_SHELL_CACHE="${XDG_CACHE_HOME:-$HOME/.cache}/zsh"
|
|
109
|
-
[[ -d "$_SHELL_CACHE" ]] || mkdir -p "$_SHELL_CACHE"
|
|
110
|
-
|
|
111
|
-
# Append a timing event to ${XDG_STATE_HOME:-~/.local/state}/dotfiles/eval-timings.jsonl.
|
|
112
|
-
# Read by `dot perf --by-tool` to attribute startup time per tool.
|
|
113
|
-
_cached_eval_log_timing() {
|
|
114
|
-
emulate -L zsh
|
|
115
|
-
setopt no_clobber 2>/dev/null && unsetopt no_clobber
|
|
116
|
-
local label="$1" t0="$2" t1="$3" rc="${4:-0}" shell="${5:-zsh}"
|
|
117
|
-
local log_dir="${XDG_STATE_HOME:-$HOME/.local/state}/dotfiles"
|
|
118
|
-
[[ -d "$log_dir" ]] || mkdir -p "$log_dir" 2>/dev/null || return 0
|
|
119
|
-
local logfile="$log_dir/eval-timings.jsonl"
|
|
120
|
-
[[ -f "$logfile" ]] || touch "$logfile" 2>/dev/null || return 0
|
|
121
|
-
local ms_int=0
|
|
122
|
-
if [[ -n "$t0" && -n "$t1" ]]; then
|
|
123
|
-
ms_int=$(printf '%.0f' "$(( (t1 - t0) * 1000 ))" 2>/dev/null) || ms_int=0
|
|
124
|
-
fi
|
|
125
|
-
printf '{"ts":"%s","shell":"%s","label":"%s","ms":%s,"rc":%s}\n' \
|
|
126
|
-
"$(date -u +%Y-%m-%dT%H:%M:%SZ)" "$shell" "$label" "$ms_int" "$rc" \
|
|
127
|
-
>> "$logfile" 2>/dev/null || true
|
|
128
|
-
}
|
|
129
|
-
|
|
130
|
-
# Cache and source a tool's init output, with mtime/realpath/file-arg invalidation.
|
|
131
|
-
#
|
|
132
|
-
# Runs <cmd args...> on cache miss, vets the output for shell-injection
|
|
133
|
-
# patterns, writes atomically, sources, and precompiles via zcompile in
|
|
134
|
-
# the background. Cache invalidates when the binary's mtime is newer,
|
|
135
|
-
# its realpath has changed (PATH-shadow swap), or a file-path argument
|
|
136
|
-
# is newer than the cache.
|
|
137
|
-
#
|
|
138
|
-
# @arg $1 string Cache label (cache file: $_SHELL_CACHE/<label>.zsh)
|
|
139
|
-
# @arg $2..N string Command and args to run on cache miss
|
|
140
|
-
# @env EVALCACHE_DISABLE Set to "true" to bypass cache read AND write
|
|
141
|
-
# @env EVALCACHE_TIMING Set to "1" to log per-call timing for `dot perf --by-tool`
|
|
142
|
-
# @stdout Sourced cache content
|
|
143
|
-
# @stderr Warning on init failure or suspicious-output rejection
|
|
144
|
-
# @exitcode 0 Cache hit, successful regeneration, or successful bypass
|
|
145
|
-
# @exitcode 1 Suspicious pattern detected in init output
|
|
146
|
-
# @exitcode * Init command's exit code on non-zero return
|
|
147
|
-
_cached_eval() {
|
|
148
|
-
if [[ "$EVALCACHE_TIMING" != "1" ]]; then
|
|
149
|
-
_cached_eval_impl "$@"
|
|
150
|
-
return
|
|
151
|
-
fi
|
|
152
|
-
zmodload zsh/datetime 2>/dev/null
|
|
153
|
-
local _ce_t0="${EPOCHREALTIME:-$(date +%s.%N 2>/dev/null || echo 0)}"
|
|
154
|
-
_cached_eval_impl "$@"
|
|
155
|
-
local _ce_rc=$?
|
|
156
|
-
local _ce_t1="${EPOCHREALTIME:-$(date +%s.%N 2>/dev/null || echo 0)}"
|
|
157
|
-
_cached_eval_log_timing "${1:-unknown}" "$_ce_t0" "$_ce_t1" "$_ce_rc" "zsh"
|
|
158
|
-
return $_ce_rc
|
|
159
|
-
}
|
|
160
|
-
|
|
161
|
-
_cached_eval_impl() {
|
|
162
|
-
local label=$1; shift
|
|
163
|
-
|
|
164
|
-
# Debug bypass: skip cache read AND write entirely.
|
|
165
|
-
# Set EVALCACHE_DISABLE=true to eval directly without touching cache files.
|
|
166
|
-
if [[ "$EVALCACHE_DISABLE" == "true" ]]; then
|
|
167
|
-
eval "$("$@" 2>/dev/null)"
|
|
168
|
-
return $?
|
|
169
|
-
fi
|
|
170
|
-
|
|
171
|
-
local cache="$_SHELL_CACHE/${label}.zsh"
|
|
172
|
-
local pin="${cache}.bin"
|
|
173
|
-
local bin="${commands[$1]}"
|
|
174
|
-
local real_bin=""
|
|
175
|
-
[[ -n "$bin" ]] && real_bin=${bin:A}
|
|
176
|
-
|
|
177
|
-
# Cache is valid when: it exists non-empty, the binary is not newer than it,
|
|
178
|
-
# the recorded realpath (if any) still matches the current realpath, and no
|
|
179
|
-
# file-path argument has been modified since cache write.
|
|
180
|
-
local cache_valid=1
|
|
181
|
-
if [[ ! -s "$cache" ]]; then
|
|
182
|
-
cache_valid=0
|
|
183
|
-
elif [[ -n "$bin" && "$bin" -nt "$cache" ]]; then
|
|
184
|
-
cache_valid=0
|
|
185
|
-
elif [[ -f "$pin" && -n "$real_bin" ]]; then
|
|
186
|
-
local pinned_real
|
|
187
|
-
pinned_real=$(<"$pin")
|
|
188
|
-
[[ -n "$pinned_real" && "$pinned_real" != "$real_bin" ]] && cache_valid=0
|
|
189
|
-
fi
|
|
190
|
-
if (( cache_valid )); then
|
|
191
|
-
local arg
|
|
192
|
-
for arg in "${@:2}"; do
|
|
193
|
-
if [[ -f "$arg" && "$arg" -nt "$cache" ]]; then
|
|
194
|
-
cache_valid=0
|
|
195
|
-
break
|
|
196
|
-
fi
|
|
197
|
-
done
|
|
198
|
-
fi
|
|
199
|
-
|
|
200
|
-
if (( cache_valid )); then
|
|
201
|
-
source "$cache"
|
|
202
|
-
return
|
|
203
|
-
fi
|
|
204
|
-
|
|
205
|
-
local init_output rc
|
|
206
|
-
init_output=$("$@" 2>/dev/null)
|
|
207
|
-
rc=$?
|
|
208
|
-
if (( rc != 0 )); then
|
|
209
|
-
print -u2 "[WARN] $label init exited $rc; not caching"
|
|
210
|
-
return $rc
|
|
211
|
-
fi
|
|
212
|
-
|
|
213
|
-
# Reject suspicious patterns indicating malicious payloads
|
|
214
|
-
local suspicious_re='(curl[[:space:]].*\|[[:space:]]*(ba)?sh|wget[[:space:]].*\|[[:space:]]*(ba)?sh|nc[[:space:]]+-e|/dev/tcp/|base64[[:space:]]+-d[[:space:]]*\|)'
|
|
215
|
-
if printf '%s\n' "$init_output" | LC_ALL=C grep -Eqs -- "$suspicious_re"; then
|
|
216
|
-
print -u2 "[WARN] Suspicious output from $label init, skipping"
|
|
217
|
-
return 1
|
|
218
|
-
fi
|
|
219
|
-
|
|
220
|
-
# `mktemp` instead of `${cache}.tmp.$$` — under PID recycling (very
|
|
221
|
-
# rare but possible) two concurrent shells with the same $$ could
|
|
222
|
-
# otherwise race on the same temp file. mktemp gives a unique name.
|
|
223
|
-
# Use `>|` so we overwrite the just-created mktemp file even when the
|
|
224
|
-
# user has `setopt noclobber` (see dot_config/shell/05-core-safety.sh).
|
|
225
|
-
local _tmp _tmp_pin
|
|
226
|
-
_tmp="$(mktemp "${cache}.XXXXXX")" || return 1
|
|
227
|
-
print -r -- "$init_output" >| "$_tmp" && mv "$_tmp" "$cache" || { rm -f "$_tmp"; return 1; }
|
|
228
|
-
if [[ -n "$real_bin" ]]; then
|
|
229
|
-
_tmp_pin="$(mktemp "${pin}.XXXXXX")" || return 1
|
|
230
|
-
print -r -- "$real_bin" >| "$_tmp_pin" && mv "$_tmp_pin" "$pin" || { rm -f "$_tmp_pin"; return 1; }
|
|
231
|
-
fi
|
|
232
|
-
source "$cache"
|
|
233
|
-
{ zcompile "$cache" } &!
|
|
234
|
-
}
|
|
235
|
-
|
|
236
|
-
# Clear cache files written by _cached_eval.
|
|
237
|
-
#
|
|
238
|
-
# Safe by design: only deletes *.zsh / *.zsh.bin / *.zwc files in
|
|
239
|
-
# $_SHELL_CACHE, leaving any unrelated content untouched.
|
|
240
|
-
#
|
|
241
|
-
# @noargs
|
|
242
|
-
# @stdout Single-line summary: "Cleared N cached eval file(s) from <dir>"
|
|
243
|
-
# @exitcode 0 Always (no-op when cache dir doesn't exist)
|
|
244
|
-
_cached_eval_clear() {
|
|
245
|
-
local cache_dir="$_SHELL_CACHE"
|
|
246
|
-
[[ -d "$cache_dir" ]] || return 0
|
|
247
|
-
local count=0 f
|
|
248
|
-
for f in "$cache_dir"/*.zsh(N) "$cache_dir"/*.zsh.bin(N) "$cache_dir"/*.zwc(N); do
|
|
249
|
-
rm -f -- "$f" && (( count++ ))
|
|
250
|
-
done
|
|
251
|
-
printf 'Cleared %d cached eval file(s) from %s\n' "$count" "$cache_dir"
|
|
252
|
-
}
|
|
253
|
-
|
|
254
|
-
# Lazy-load helper for user-supplied slow tools.
|
|
255
|
-
#
|
|
256
|
-
# Usage in ~/.config/zsh/rc.d/99-local.zsh:
|
|
257
|
-
# _dot_lazy nvm nvm node npm npx # nvm.sh sourced on first nvm/node/npm/npx call
|
|
258
|
-
# _dot_lazy pyenv pyenv python python3 pip pip3
|
|
259
|
-
# _dot_lazy conda conda
|
|
260
|
-
#
|
|
261
|
-
# First arg is the "trigger" — also the function name that bootstraps
|
|
262
|
-
# the real tool. Remaining args are the commands that, when invoked,
|
|
263
|
-
# bootstrap the trigger then re-exec the command. Bootstrap functions
|
|
264
|
-
# must export `_DOT_LAZY_<TRIGGER>_LOADED` so subsequent calls bypass
|
|
265
|
-
# the stub.
|
|
266
|
-
#
|
|
267
|
-
# Why this matters: every `eval "$(slowtool init zsh)"` at startup
|
|
268
|
-
# costs 50-200ms; lazy-load defers that to first use, keeping
|
|
269
|
-
# `dot version` cold-start under 100ms.
|
|
270
|
-
_dot_lazy() {
|
|
271
|
-
local trigger="$1"; shift || return 1
|
|
272
|
-
local cmd
|
|
273
|
-
for cmd in "$trigger" "$@"; do
|
|
274
|
-
# shellcheck disable=SC2139,SC2140
|
|
275
|
-
eval "$cmd() {
|
|
276
|
-
local _trigger=\"$trigger\"
|
|
277
|
-
local _loaded_var=\"_DOT_LAZY_\${(U)_trigger//[^A-Z0-9]/_}_LOADED\"
|
|
278
|
-
if [[ -z \${(P)_loaded_var} ]]; then
|
|
279
|
-
# Unset every stub so the real binary takes over.
|
|
280
|
-
local _c
|
|
281
|
-
for _c in \"$trigger\" $@; do
|
|
282
|
-
unset -f -- \"\$_c\" 2>/dev/null
|
|
283
|
-
done
|
|
284
|
-
# User must define a __dot_lazy_init_<trigger> bootstrap.
|
|
285
|
-
local _init=\"__dot_lazy_init_\${_trigger//-/_}\"
|
|
286
|
-
if (( \${+functions[\$_init]} )); then
|
|
287
|
-
\"\$_init\" || return \$?
|
|
288
|
-
fi
|
|
289
|
-
export \"\$_loaded_var=1\"
|
|
290
|
-
fi
|
|
291
|
-
command \"$cmd\" \"\$@\"
|
|
292
|
-
}"
|
|
293
|
-
done
|
|
294
|
-
}
|
|
295
|
-
|
|
296
|
-
# Lightweight precmd hook manager (faster than add-zsh-hook)
|
|
297
|
-
_dotfiles_add_precmd() {
|
|
298
|
-
local fn="$1"
|
|
299
|
-
[[ -z "$fn" ]] && return 0
|
|
300
|
-
precmd_functions=(${precmd_functions:#$fn} "$fn")
|
|
301
|
-
}
|
|
302
|
-
|
|
303
|
-
_dotfiles_del_precmd() {
|
|
304
|
-
local fn="$1"
|
|
305
|
-
[[ -z "$fn" ]] && return 0
|
|
306
|
-
precmd_functions=(${precmd_functions:#$fn})
|
|
307
|
-
}
|
|
308
|
-
|
|
309
|
-
# ==============================================================================
|
|
310
|
-
# Dotfiles 2026: Zero-Jank & Artifact-Only Mode Foundation
|
|
311
|
-
# ==============================================================================
|
|
312
|
-
export DOTFILES_ARTIFACT_MODE="${DOTFILES_ARTIFACT_MODE:-0}"
|
|
313
|
-
|
|
314
|
-
if [[ "$DOTFILES_ARTIFACT_MODE" == "1" ]]; then
|
|
315
|
-
# The Canvas: Strip away all visual noise.
|
|
316
|
-
export PROMPT="%F{green}➜ %f"
|
|
317
|
-
export RPROMPT=""
|
|
318
|
-
# Suppress all background job notifications
|
|
319
|
-
setopt NO_NOTIFY
|
|
320
|
-
setopt NO_MONITOR
|
|
321
|
-
fi
|
|
322
|
-
# ==============================================================================
|
|
323
|
-
|
|
324
|
-
# Lightweight preexec hook manager
|
|
325
|
-
_dotfiles_add_preexec() {
|
|
326
|
-
local fn="$1"
|
|
327
|
-
[[ -z "$fn" ]] && return 0
|
|
328
|
-
preexec_functions=(${preexec_functions:#$fn} "$fn")
|
|
329
|
-
}
|
|
330
|
-
|
|
331
|
-
_dotfiles_del_preexec() {
|
|
332
|
-
local fn="$1"
|
|
333
|
-
[[ -z "$fn" ]] && return 0
|
|
334
|
-
preexec_functions=(${preexec_functions:#$fn})
|
|
335
|
-
}
|
|
336
|
-
|
|
337
|
-
## ð
ð
°ðð
¸ð
°ðð
¸ð
°ð
±ð
»ð
´ð - Core variables, plugins, and options
|
|
338
|
-
ZSH_RC_DIR="${HOME}/.config/zsh/rc.d"
|
|
339
|
-
if [[ -d "${ZSH_RC_DIR}" ]]; then
|
|
340
|
-
for rc_file in "${ZSH_RC_DIR}"/**/*.zsh(N); do
|
|
341
|
-
source "${rc_file}"
|
|
342
|
-
done
|
|
343
|
-
fi
|
|
344
|
-
|
|
345
|
-
# User-local rc.d extensions (not managed by chezmoi)
|
|
346
|
-
if [[ -d "${ZDOTDIR:-$HOME/.config/zsh}/rc.d.local" ]]; then
|
|
347
|
-
for _rc_local in "${ZDOTDIR:-$HOME/.config/zsh}"/rc.d.local/*.zsh(N); do
|
|
348
|
-
source "$_rc_local"
|
|
349
|
-
done
|
|
350
|
-
unset _rc_local
|
|
351
|
-
fi
|
|
352
|
-
|
|
353
|
-
###############################
|
|
354
|
-
# Performance: Auto-Zcompile #
|
|
355
|
-
###############################
|
|
356
|
-
zcompile_many() {
|
|
357
|
-
local f
|
|
358
|
-
for f; do
|
|
359
|
-
# Compile if source is newer than .zwc or .zwc doesn't exist
|
|
360
|
-
if [[ -f "$f" ]]; then
|
|
361
|
-
if [[ ! -f "${f}.zwc" || "$f" -nt "${f}.zwc" ]]; then
|
|
362
|
-
zcompile "$f"
|
|
363
|
-
fi
|
|
364
|
-
fi
|
|
365
|
-
done
|
|
366
|
-
}
|
|
367
|
-
|
|
368
|
-
# Compile main config and generated files in background
|
|
369
|
-
if [[ -o interactive ]]; then
|
|
370
|
-
(
|
|
371
|
-
zcompile_many "${HOME}/.zshrc" \
|
|
372
|
-
"${HOME}/.config/shell/aliases.sh" \
|
|
373
|
-
"${HOME}/.config/shell/paths.sh" \
|
|
374
|
-
"${HOME}/.config/shell/functions.sh" \
|
|
375
|
-
"${HOME}/.config/shell/00-core-paths.sh" \
|
|
376
|
-
"${HOME}/.config/shell/05-core-safety.sh" \
|
|
377
|
-
"${HOME}/.config/shell/40-ls-colors.sh" \
|
|
378
|
-
"${HOME}/.config/shell/50-logic-functions-core.sh" \
|
|
379
|
-
"${HOME}/.config/shell/90-ux-aliases.sh" \
|
|
380
|
-
/opt/homebrew/opt/fzf/shell/completion.zsh \
|
|
381
|
-
/opt/homebrew/opt/fzf/shell/key-bindings.zsh &
|
|
382
|
-
)
|
|
383
|
-
fi
|
|
384
|
-
|
|
385
|
-
# Legacy Loader (Disabled in favor of Chezmoi Universal Config)
|
|
386
|
-
# _DOTFILES_CACHE="${HOME}/.zsh_dotfiles_cache"
|
|
387
|
-
# load_dotfiles() { ... }
|
|
388
|
-
# load_dotfiles
|
|
389
|
-
|
|
390
|
-
# Remove duplicates in zsh $PATH
|
|
391
|
-
typeset -aU path
|
|
392
|
-
|
|
393
|
-
# Load local customizations if they exist
|
|
394
|
-
[[ -f "${HOME}/.zshrc.local" ]] && source "${HOME}/.zshrc.local"
|
|
395
|
-
|
|
396
|
-
# Vendor / Enterprise Hooks (Site-local overrides)
|
|
397
|
-
# Supports drop-in configs from system management tools
|
|
398
|
-
if [[ -d "/etc/dotfiles/defaults.d" ]]; then
|
|
399
|
-
for hook in /etc/dotfiles/defaults.d/*.sh(N); do
|
|
400
|
-
source "$hook"
|
|
401
|
-
done
|
|
402
|
-
fi
|
|
403
|
-
|
|
404
|
-
# Load Chezmoi-managed Universal Configuration Layers (Lexical Order)
|
|
405
|
-
# 00-19: Core (Paths, Safety)
|
|
406
|
-
# 20-49: Middleware (Exports, Options)
|
|
407
|
-
# 50-89: Toolchain & Logic (Functions, Rust tools)
|
|
408
|
-
# 90-99: UX (Aliases, Prompts)
|
|
409
|
-
#
|
|
410
|
-
# Optimized loading of core configurations + eager aliases
|
|
411
|
-
if [[ "${DOTFILES_FAST}" == "1" ]]; then
|
|
412
|
-
_core_layers=(00-core-paths 05-core-safety)
|
|
413
|
-
else
|
|
414
|
-
_core_layers=(00-core-paths 05-core-safety 90-ux-aliases)
|
|
415
|
-
fi
|
|
416
|
-
for core_layer in "${_core_layers[@]}"; do
|
|
417
|
-
[[ -f "${HOME}/.config/shell/${core_layer}.sh" ]] && source "${HOME}/.config/shell/${core_layer}.sh"
|
|
418
|
-
done
|
|
419
|
-
unset _core_layers
|
|
420
|
-
|
|
421
|
-
# Starship prompt (eager — must survive cache clears for consistent UI)
|
|
422
|
-
if [[ "$DOTFILES_ARTIFACT_MODE" != "1" ]] && (( ${+commands[starship]} )); then
|
|
423
|
-
_cached_eval starship-init starship init zsh
|
|
424
|
-
# Transient Prompt: collapse the prompt of past commands to the
|
|
425
|
-
# [character] glyph after Enter, reducing scrollback noise.
|
|
426
|
-
#
|
|
427
|
-
# Forward-compatibility hook. Starship's `enable_transience` function
|
|
428
|
-
# is currently defined only by `starship init fish` (upstream issue
|
|
429
|
-
# starship/starship#3522 tracks the zsh equivalent). On zsh the
|
|
430
|
-
# `${+functions[enable_transience]}` guard evaluates to 0, so the
|
|
431
|
-
# block silently no-ops. When upstream ships the zsh-side function,
|
|
432
|
-
# this code activates automatically — no zshrc change needed.
|
|
433
|
-
#
|
|
434
|
-
# The `_DOTFILES_STARSHIP_TRANSIENT` flag prevents the lazy-hydration
|
|
435
|
-
# path below (which also re-runs starship init) from binding the
|
|
436
|
-
# widgets twice.
|
|
437
|
-
if [[ -z "${_DOTFILES_STARSHIP_TRANSIENT:-}" ]] && (( ${+functions[enable_transience]} )); then
|
|
438
|
-
enable_transience
|
|
439
|
-
_DOTFILES_STARSHIP_TRANSIENT=1
|
|
440
|
-
fi
|
|
441
|
-
fi
|
|
442
|
-
|
|
443
|
-
# User-local modules (aliases, functions — not managed by chezmoi)
|
|
444
|
-
for _mod_dir in "${XDG_CONFIG_HOME:-$HOME/.config}/dotfiles/modules.d"/*(N/); do
|
|
445
|
-
for _mod_file in "$_mod_dir"/*.sh(N); do
|
|
446
|
-
source "$_mod_file"
|
|
447
|
-
done
|
|
448
|
-
done
|
|
449
|
-
unset _mod_dir _mod_file
|
|
450
|
-
|
|
451
|
-
if [[ "${DOTFILES_FAST}" != "1" ]]; then
|
|
452
|
-
# On-demand loading of heavy layers (functions + aliases only when needed)
|
|
453
|
-
DOTFILES_LAYERS_LOADED=0
|
|
454
|
-
DOTFILES_LAYERS_LOAD_STATE=idle
|
|
455
|
-
unset DOTFILES_LAYERS_LOAD_STATUS
|
|
456
|
-
_dotfiles_load_heavy_layers_stage1() {
|
|
457
|
-
[[ "${DOTFILES_LAYERS_LOAD_STATE}" == "stage1" || "${DOTFILES_LAYERS_LOAD_STATE}" == "ready" ]] && return 0
|
|
458
|
-
DOTFILES_LAYERS_LOAD_STATE=loading
|
|
459
|
-
unset DOTFILES_LAYERS_LOAD_STATUS
|
|
460
|
-
[[ -f "${HOME}/.config/shell/10-secrets.sh" ]] && source "${HOME}/.config/shell/10-secrets.sh"
|
|
461
|
-
[[ -f "${HOME}/.config/shell/40-ls-colors.sh" ]] && source "${HOME}/.config/shell/40-ls-colors.sh"
|
|
462
|
-
[[ -f "${HOME}/.config/shell/50-logic-functions-core.sh" ]] && source "${HOME}/.config/shell/50-logic-functions-core.sh"
|
|
463
|
-
[[ -f "${HOME}/.config/shell/91-ux-aliases-lazy.sh" ]] && source "${HOME}/.config/shell/91-ux-aliases-lazy.sh"
|
|
464
|
-
DOTFILES_LAYERS_LOAD_STATE=stage1
|
|
465
|
-
}
|
|
466
|
-
|
|
467
|
-
_dotfiles_load_heavy_layers_stage2() {
|
|
468
|
-
[[ "${DOTFILES_LAYERS_LOAD_STATE}" == "ready" ]] && return 0
|
|
469
|
-
[[ -f "${HOME}/.config/shell/51-logic-functions-extra.sh" ]] && source "${HOME}/.config/shell/51-logic-functions-extra.sh"
|
|
470
|
-
# Compile extra functions for faster future loads
|
|
471
|
-
if command -v zcompile >/dev/null 2>&1; then
|
|
472
|
-
{ [[ ! -f "${HOME}/.config/shell/51-logic-functions-extra.sh.zwc" || "${HOME}/.config/shell/51-logic-functions-extra.sh" -nt "${HOME}/.config/shell/51-logic-functions-extra.sh.zwc" ]] && zcompile "${HOME}/.config/shell/51-logic-functions-extra.sh" } &!
|
|
473
|
-
fi
|
|
474
|
-
DOTFILES_LAYERS_LOAD_STATE=ready
|
|
475
|
-
DOTFILES_LAYERS_LOAD_STATUS=ready
|
|
476
|
-
export DOTFILES_LAYERS_LOAD_STATUS
|
|
477
|
-
}
|
|
478
|
-
|
|
479
|
-
_dotfiles_prewarm_groups() {
|
|
480
|
-
local -a _groups
|
|
481
|
-
_groups=(${(s:,:)DOTFILES_LAYERS_PREWARM})
|
|
482
|
-
local g
|
|
483
|
-
for g in "${_groups[@]}"; do
|
|
484
|
-
[[ -z "$g" ]] && continue
|
|
485
|
-
if (( ${+functions[_dotfiles_load_group_${g}]} )); then
|
|
486
|
-
"_dotfiles_load_group_${g}"
|
|
487
|
-
fi
|
|
488
|
-
done
|
|
489
|
-
}
|
|
490
|
-
|
|
491
|
-
_dotfiles_load_heavy_layers() {
|
|
492
|
-
[[ "${DOTFILES_LAYERS_LOADED}" == "1" ]] && return 0
|
|
493
|
-
DOTFILES_LAYERS_LOADED=1
|
|
494
|
-
_dotfiles_load_heavy_layers_stage1
|
|
495
|
-
_dotfiles_load_heavy_layers_stage2
|
|
496
|
-
}
|
|
497
|
-
|
|
498
|
-
# Optional background prewarm for heavy layers (idle after first prompt)
|
|
499
|
-
_dotfiles_schedule_heavy_layers() {
|
|
500
|
-
if [[ "${DOTFILES_LAYERS_LOAD}" == "background" ]]; then
|
|
501
|
-
if [[ -n "${ZSH_EXECUTION_STRING:-}" ]]; then
|
|
502
|
-
(sleep 1; _dotfiles_load_heavy_layers_stage1; _dotfiles_load_heavy_layers_stage2; _dotfiles_prewarm_groups) &
|
|
503
|
-
else
|
|
504
|
-
zmodload zsh/sched 2>/dev/null || return 0
|
|
505
|
-
sched +1 _dotfiles_load_heavy_layers_stage1
|
|
506
|
-
sched +2 _dotfiles_load_heavy_layers_stage2
|
|
507
|
-
# Prewarm selected groups after stage2 loads stubs
|
|
508
|
-
sched +3 _dotfiles_prewarm_groups
|
|
509
|
-
fi
|
|
510
|
-
fi
|
|
511
|
-
}
|
|
512
|
-
# Compatibility: use add-zsh-hook when available (tests rely on this)
|
|
513
|
-
autoload -Uz add-zsh-hook
|
|
514
|
-
_load_deferred_layers() {
|
|
515
|
-
if (( ${+functions[add-zsh-hook]} )); then
|
|
516
|
-
add-zsh-hook -d precmd _load_deferred_layers
|
|
517
|
-
else
|
|
518
|
-
_dotfiles_del_precmd _load_deferred_layers
|
|
519
|
-
fi
|
|
520
|
-
_dotfiles_schedule_heavy_layers
|
|
521
|
-
}
|
|
522
|
-
if (( ${+functions[add-zsh-hook]} )); then
|
|
523
|
-
add-zsh-hook precmd _load_deferred_layers
|
|
524
|
-
else
|
|
525
|
-
_dotfiles_add_precmd _load_deferred_layers
|
|
526
|
-
fi
|
|
527
|
-
|
|
528
|
-
# Capture existing command_not_found handler (if any)
|
|
529
|
-
if (( ${+functions[command_not_found_handler]} )); then
|
|
530
|
-
functions[_dotfiles_prev_command_not_found_handler]="${functions[command_not_found_handler]}"
|
|
531
|
-
fi
|
|
532
|
-
|
|
533
|
-
command_not_found_handler() {
|
|
534
|
-
local cmd="$1"
|
|
535
|
-
shift || true
|
|
536
|
-
|
|
537
|
-
if [[ "${DOTFILES_LAYERS_LOADED}" != "1" ]]; then
|
|
538
|
-
_dotfiles_load_heavy_layers_stage1
|
|
539
|
-
if (( ${+functions[$cmd]} )); then
|
|
540
|
-
"$cmd" "$@"
|
|
541
|
-
return $?
|
|
542
|
-
fi
|
|
543
|
-
if alias "$cmd" >/dev/null 2>&1; then
|
|
544
|
-
local -a _args
|
|
545
|
-
_args=("$@")
|
|
546
|
-
eval "$cmd ${(@q)_args}"
|
|
547
|
-
unset _args
|
|
548
|
-
return $?
|
|
549
|
-
fi
|
|
550
|
-
_dotfiles_load_heavy_layers_stage2
|
|
551
|
-
if (( ${+functions[$cmd]} )); then
|
|
552
|
-
"$cmd" "$@"
|
|
553
|
-
return $?
|
|
554
|
-
fi
|
|
555
|
-
if alias "$cmd" >/dev/null 2>&1; then
|
|
556
|
-
local -a _args2
|
|
557
|
-
_args2=("$@")
|
|
558
|
-
eval "$cmd ${(@q)_args2}"
|
|
559
|
-
unset _args2
|
|
560
|
-
return $?
|
|
561
|
-
fi
|
|
562
|
-
fi
|
|
563
|
-
|
|
564
|
-
if (( ${+functions[_dotfiles_prev_command_not_found_handler]} )); then
|
|
565
|
-
_dotfiles_prev_command_not_found_handler "$cmd" "$@"
|
|
566
|
-
return $?
|
|
567
|
-
fi
|
|
568
|
-
|
|
569
|
-
print -r -- "zsh: command not found: ${cmd}" >&2
|
|
570
|
-
return 127
|
|
571
|
-
}
|
|
572
|
-
|
|
573
|
-
# dot load: force heavy layers now
|
|
574
|
-
unalias dot 2>/dev/null
|
|
575
|
-
functions[dot]='
|
|
576
|
-
if [[ "$1" == "load" ]]; then
|
|
577
|
-
if [[ "$2" == "--background" ]]; then
|
|
578
|
-
DOTFILES_LAYERS_LOAD=background
|
|
579
|
-
_dotfiles_schedule_heavy_layers
|
|
580
|
-
return 0
|
|
581
|
-
fi
|
|
582
|
-
if [[ "$2" == "--status" ]]; then
|
|
583
|
-
if [[ "$3" == "--watch" ]]; then
|
|
584
|
-
local _timeout="${4:-5}"
|
|
585
|
-
local _t0=$EPOCHREALTIME
|
|
586
|
-
if [[ "${DOTFILES_LAYERS_LOAD_STATE:-idle}" == "idle" ]]; then
|
|
587
|
-
_dotfiles_load_heavy_layers
|
|
588
|
-
fi
|
|
589
|
-
while [[ "${DOTFILES_LAYERS_LOAD_STATE:-idle}" != "ready" ]]; do
|
|
590
|
-
sleep 0.1
|
|
591
|
-
if [[ -n "${_timeout}" && "${_timeout}" != "0" ]]; then
|
|
592
|
-
local _t1=$EPOCHREALTIME
|
|
593
|
-
if (( (_t1 - _t0) >= _timeout )); then
|
|
594
|
-
print -r -- "timeout"
|
|
595
|
-
return 124
|
|
596
|
-
fi
|
|
597
|
-
fi
|
|
598
|
-
done
|
|
599
|
-
fi
|
|
600
|
-
print -r -- "${DOTFILES_LAYERS_LOAD_STATE:-idle}"
|
|
601
|
-
return 0
|
|
602
|
-
fi
|
|
603
|
-
_dotfiles_load_heavy_layers
|
|
604
|
-
return 0
|
|
605
|
-
fi
|
|
606
|
-
"$HOME/.local/bin/dot" "$@"
|
|
607
|
-
'
|
|
608
|
-
fi
|
|
609
|
-
|
|
610
|
-
# Essential Aliases (fallback if 90-ux-aliases.sh is unavailable)
|
|
611
|
-
if command -v bat >/dev/null; then
|
|
612
|
-
alias cat="bat"
|
|
613
|
-
fi
|
|
614
|
-
|
|
615
|
-
|
|
616
|
-
if [[ "${DOTFILES_FAST}" != "1" ]]; then
|
|
617
|
-
## AI / Predictive Shell (opt-in)
|
|
618
|
-
if [[ "${DOTFILES_AI}" == "1" ]]; then
|
|
619
|
-
[[ -f "$HOME/.config/shell/custom/context_suggest.zsh" ]] && source "$HOME/.config/shell/custom/context_suggest.zsh"
|
|
620
|
-
[[ -f "$HOME/.config/shell/custom/error_analysis.zsh" ]] && source "$HOME/.config/shell/custom/error_analysis.zsh"
|
|
621
|
-
fi
|
|
622
|
-
|
|
623
|
-
: ${DOTFILES_DEFER_TOOLS:=1}
|
|
624
|
-
|
|
625
|
-
# Dotfiles 2026 Async Loader: Move heavy binary path resolution to background
|
|
626
|
-
_dotfiles_async_init() {
|
|
627
|
-
[[ "$DOTFILES_FAST" == "1" ]] && return
|
|
628
|
-
local tools=(mise atuin starship zoxide)
|
|
629
|
-
local t
|
|
630
|
-
for t in $tools; do
|
|
631
|
-
if [[ -x "${commands[$t]}" ]]; then
|
|
632
|
-
case "$t" in
|
|
633
|
-
mise)
|
|
634
|
-
_cached_eval mise-init mise activate zsh
|
|
635
|
-
;;
|
|
636
|
-
atuin)
|
|
637
|
-
_cached_eval atuin-init atuin init zsh
|
|
638
|
-
;;
|
|
639
|
-
starship)
|
|
640
|
-
if [[ "$DOTFILES_ARTIFACT_MODE" == "0" ]]; then
|
|
641
|
-
_cached_eval starship-init starship init zsh
|
|
642
|
-
if [[ -z "${_DOTFILES_STARSHIP_TRANSIENT:-}" ]] && (( ${+functions[enable_transience]} )); then
|
|
643
|
-
enable_transience
|
|
644
|
-
_DOTFILES_STARSHIP_TRANSIENT=1
|
|
645
|
-
fi
|
|
646
|
-
fi
|
|
647
|
-
;;
|
|
648
|
-
zoxide)
|
|
649
|
-
_cached_eval zoxide-init zoxide init zsh
|
|
650
|
-
;;
|
|
651
|
-
esac
|
|
652
|
-
fi
|
|
653
|
-
done
|
|
654
|
-
# mise/atuin/etc emit `export PATH=...` which bypasses zsh's -U flag on
|
|
655
|
-
# the `path` array — re-apply uniqueness to drop any duplicates baked
|
|
656
|
-
# into the cached output (e.g. system paths inherited from a dirty
|
|
657
|
-
# parent shell).
|
|
658
|
-
typeset -U path
|
|
659
|
-
}
|
|
660
|
-
|
|
661
|
-
# Deferred Hydration for Zero-Jank Experience
|
|
662
|
-
_dotfiles_deferred_hydration() {
|
|
663
|
-
# Unregister self
|
|
664
|
-
_dotfiles_del_precmd _dotfiles_deferred_hydration
|
|
665
|
-
_dotfiles_del_preexec _dotfiles_deferred_hydration
|
|
666
|
-
|
|
667
|
-
# Check if already hydrated in this shell instance
|
|
668
|
-
[[ -n "$DOTFILES_HYDRATED" ]] && return 0
|
|
669
|
-
export DOTFILES_HYDRATED=1
|
|
670
|
-
|
|
671
|
-
_dotfiles_async_init
|
|
672
|
-
|
|
673
|
-
# Bento-Grid 2.0 (Liquid Glass Dashboard)
|
|
674
|
-
# Only render if interactive and not in restricted ultra-fast mode
|
|
675
|
-
if [[ "$DOTFILES_ARTIFACT_MODE" == "1" ]]; then
|
|
676
|
-
[[ -f "$HOME/.dotfiles/scripts/dot/lib/bento.sh" ]] && (bash "$HOME/.dotfiles/scripts/dot/lib/bento.sh" </dev/null; kill -WINCH $$) &!
|
|
677
|
-
fi
|
|
678
|
-
}
|
|
679
|
-
|
|
680
|
-
# 1. Idle trigger (500ms)
|
|
681
|
-
zmodload zsh/sched 2>/dev/null
|
|
682
|
-
sched +1 _dotfiles_deferred_hydration 2>/dev/null
|
|
683
|
-
|
|
684
|
-
# 2. First-action trigger (Prompt or Enter)
|
|
685
|
-
_dotfiles_add_precmd _dotfiles_deferred_hydration
|
|
686
|
-
_dotfiles_add_preexec _dotfiles_deferred_hydration
|
|
687
|
-
|
|
688
|
-
fi
|