@sebastienrousseau/dotfiles 0.2.481 → 0.2.500
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +122 -32
- package/LICENSE +1 -1
- package/README.md +211 -242
- package/docs/.vitepress/reports/localization-readability-audit.md +69 -0
- package/docs/AI.md +102 -0
- package/docs/COPYRIGHT +2 -2
- package/docs/NAMING_CONVENTIONS.md +95 -0
- package/docs/README.md +58 -249
- package/docs/adr/ADR-004-cli-architecture.md +2 -2
- package/docs/adr/ADR-006-shell-selection.md +2 -2
- package/docs/adr/ADR-007-multi-shell-parity.md +53 -0
- package/docs/adr/ADR-008-alias-system-architecture.md +85 -0
- package/docs/adr/README.md +2 -3
- package/docs/architecture/ARCHITECTURE.md +113 -0
- package/docs/architecture/INTEROP.md +36 -0
- package/docs/architecture/REPO_LAYOUT.md +237 -0
- package/docs/architecture/WALKTHROUGH.md +82 -0
- package/docs/architecture/fleet-deployment.md +73 -0
- package/docs/archive/EUXIS_2026_REVIEW.md +119 -0
- package/docs/archive/MILESTONE_v0.2.493.md +43 -0
- package/docs/{PLAN.md → archive/PLAN.md} +1 -1
- package/docs/guides/INSTALL.md +140 -0
- package/docs/{NEOVIM_IDE_GUIDE.md → guides/NEOVIM_IDE_GUIDE.md} +12 -12
- package/docs/guides/THEMING.md +222 -0
- package/docs/{TROUBLESHOOTING.md → guides/TROUBLESHOOTING.md} +36 -0
- package/docs/{WSL2_NIX_TROUBLESHOOTING.md → guides/WSL2_NIX_TROUBLESHOOTING.md} +8 -8
- package/docs/index.md +39 -0
- package/docs/interop/A2A.md +32 -0
- package/docs/manual/00-introduction.md +85 -0
- package/docs/manual/01-concepts/01-architecture.md +134 -0
- package/docs/manual/01-concepts/02-trust-model.md +178 -0
- package/docs/manual/01-concepts/03-theme-engine.md +182 -0
- package/docs/manual/01-concepts/04-fleet.md +142 -0
- package/docs/manual/01-concepts/05-self-healing.md +197 -0
- package/docs/manual/02-tutorials/01-first-install.md +192 -0
- package/docs/manual/02-tutorials/02-add-wallpaper.md +211 -0
- package/docs/manual/02-tutorials/03-create-profile.md +238 -0
- package/docs/manual/02-tutorials/04-encrypt-secret.md +275 -0
- package/docs/manual/02-tutorials/05-deploy-fleet.md +279 -0
- package/docs/manual/03-reference/01-dot-cli.md +413 -0
- package/docs/manual/03-reference/02-config-files.md +259 -0
- package/docs/manual/03-reference/03-environment.md +120 -0
- package/docs/manual/03-reference/04-templates.md +184 -0
- package/docs/manual/03-reference/05-feature-flags.md +118 -0
- package/docs/manual/04-cookbook/01-recipes.md +281 -0
- package/docs/manual/04-cookbook/02-troubleshooting.md +319 -0
- package/docs/manual/04-cookbook/03-faq.md +167 -0
- package/docs/manual/05-appendices/A-platform-matrix.md +97 -0
- package/docs/manual/05-appendices/B-security-checklist.md +78 -0
- package/docs/manual/05-appendices/C-glossary.md +36 -0
- package/docs/manual/05-appendices/D-bibliography.md +54 -0
- package/docs/manual/05-appendices/E-license.md +34 -0
- package/docs/manual/_toc.yml +58 -0
- package/docs/manual/command-index.md +58 -0
- package/docs/manual/concept-index.md +164 -0
- package/docs/operations/ATTESTATION.md +39 -0
- package/docs/operations/MAINTENANCE.md +59 -0
- package/docs/operations/MIGRATION.md +101 -0
- package/docs/operations/OPERATIONS.md +164 -0
- package/docs/operations/RELIABILITY.md +116 -0
- package/docs/{ROADMAP.md → operations/ROADMAP.md} +11 -11
- package/docs/operations/TESTING.md +195 -0
- package/docs/operations/TRACEABILITY.md +31 -0
- package/docs/operations/TRUSTED_AGENT_WORKSTATION.md +61 -0
- package/docs/operations/VERSION_SYNC.md +344 -0
- package/docs/{ALIASES.md → reference/ALIASES.md} +2 -6
- package/docs/reference/ALIASES_CHEATSHEET.md +28 -0
- package/docs/reference/ALIASES_DEPRECATIONS.md +9 -0
- package/docs/reference/FEATURES.md +62 -0
- package/docs/reference/FONTS.md +108 -0
- package/docs/reference/PROFILES.md +65 -0
- package/docs/{SCREENSHOTS.md → reference/SCREENSHOTS.md} +26 -25
- package/docs/reference/SCRIPTS.md +67 -0
- package/docs/reference/SUPPORT_MATRIX.md +74 -0
- package/docs/reference/THEMES.md +113 -0
- package/docs/reference/TOOLS.md +105 -0
- package/docs/reference/UTILS.md +151 -0
- package/docs/security/AI_ACT_COMPLIANCE.md +90 -0
- package/docs/security/AUTOMATION_SECRETS.md +22 -0
- package/docs/security/COMPLIANCE.md +453 -0
- package/docs/security/ENCRYPTION.md +52 -0
- package/docs/security/FMEA.md +155 -0
- package/docs/security/INCIDENT_RESPONSE.md +575 -0
- package/docs/security/KEYS.md +45 -0
- package/docs/security/MCP_POLICY.md +69 -0
- package/docs/security/POLICY_RELEASES.md +33 -0
- package/docs/security/README.md +24 -0
- package/docs/security/SECRETS.md +146 -0
- package/docs/security/SECURITY.md +41 -0
- package/docs/security/SECURITY_CHECKLIST.md +44 -0
- package/docs/security/SOUP_REGISTER.md +32 -0
- package/docs/security/THREAT_MODEL.md +120 -0
- package/docs/security/VERIFICATION_VALIDATION.md +224 -0
- package/docs/themes/README.md +3 -17
- package/docs/themes/VISUAL_INTEGRITY_REPORT.md +26 -0
- package/docs/themes/hero-shot.svg +78 -0
- package/dot_config/.module-manifest.json +69 -0
- package/dot_config/ai/identity.md +20 -0
- package/dot_config/ai/patterns/architect.md +14 -0
- package/dot_config/ai/patterns/hardener.md +13 -0
- package/dot_config/ai/patterns/refactor.md +13 -0
- package/dot_config/aider/aider.conf.yml +1 -1
- package/dot_config/alacritty/alacritty.toml.tmpl +41 -469
- package/dot_config/atuin/config.toml +18 -1
- package/dot_config/bat/config +16 -1
- package/dot_config/claude/mcp_servers.json +3 -32
- package/dot_config/dotfiles/agent-card.json +29 -0
- package/dot_config/dotfiles/agent-profiles.json +92 -0
- package/dot_config/dotfiles/boot/README.md +1 -1
- package/dot_config/dotfiles/grub/README.md +1 -1
- package/dot_config/dotfiles/lock/README.md +1 -1
- package/dot_config/dotfiles/mcp-lock.json +33 -0
- package/dot_config/dotfiles/mcp-policy.json +52 -0
- package/dot_config/dotfiles/mcp-registry.json +47 -0
- package/dot_config/dotfiles/model-registry.json +20 -0
- package/dot_config/dotfiles/policy-bundles.json +38 -0
- package/dot_config/dotfiles/prompt-registry.json +16 -0
- package/dot_config/dotfiles/versions.env +18 -0
- package/dot_config/environment.d/50-ssh-agent.conf +2 -0
- package/dot_config/environment.d/90-wayland.conf +19 -0
- package/dot_config/firefox/user.js.tmpl +58 -0
- package/dot_config/fish/completions/dot-theme-sync.fish.tmpl +9 -0
- package/dot_config/fish/completions/dot.fish.tmpl +115 -0
- package/dot_config/fish/conf.d/000-perf-cache.fish +56 -0
- package/dot_config/fish/conf.d/aliases.fish.tmpl +77 -0
- package/dot_config/fish/conf.d/env.fish.tmpl +48 -0
- package/dot_config/fish/conf.d/functions.fish.tmpl +22 -0
- package/dot_config/fish/conf.d/init.fish.tmpl +151 -0
- package/dot_config/fish/config.fish.tmpl +44 -0
- package/dot_config/fish/fish_plugins +1 -0
- package/dot_config/fish/functions/_.fish +3 -0
- package/dot_config/fish/functions/_cached_eval.fish +58 -0
- package/dot_config/fish/functions/als.fish +46 -0
- package/dot_config/fish/functions/bg-upgrade.fish +7 -0
- package/dot_config/fish/functions/c.fish +3 -0
- package/dot_config/fish/functions/cat.fish +9 -0
- package/dot_config/fish/functions/d.fish +7 -0
- package/dot_config/fish/functions/dot.fish +34 -0
- package/dot_config/fish/functions/h.fish +3 -0
- package/dot_config/fish/functions/l.fish +7 -0
- package/dot_config/fish/functions/la.fish +7 -0
- package/dot_config/fish/functions/ll.fish +7 -0
- package/dot_config/fish/functions/log_error.fish +13 -0
- package/dot_config/fish/functions/log_info.fish +13 -0
- package/dot_config/fish/functions/lr.fish +7 -0
- package/dot_config/fish/functions/lra.fish +7 -0
- package/dot_config/fish/functions/ls.fish +7 -0
- package/dot_config/fish/functions/lt.fish +7 -0
- package/dot_config/fish/functions/lta.fish +7 -0
- package/dot_config/fish/functions/notify-run.fish +11 -0
- package/dot_config/fish/functions/q.fish +3 -0
- package/dot_config/fish/functions/silent-run.fish +7 -0
- package/dot_config/fish/functions/yy.fish +8 -0
- package/dot_config/fontconfig/fonts.conf.tmpl +13 -0
- package/dot_config/foot/foot.ini.tmpl +33 -0
- package/dot_config/fuzzel/fuzzel.ini.tmpl +18 -0
- package/dot_config/fzf/fzf.zsh +48 -0
- package/dot_config/ghostty/config.tmpl +69 -565
- package/dot_config/git/allowed_signers.tmpl +18 -0
- package/dot_config/git/commit-template +10 -0
- package/dot_config/gnupg/{gpg-agent.conf.tmpl → gpg-agent.conf} +3 -3
- package/dot_config/goose/config.yaml +2 -2
- package/dot_config/gtk-3.0/gtk.css.tmpl +59 -180
- package/dot_config/gtk-3.0/settings.ini.tmpl +5 -44
- package/dot_config/gtk-4.0/gtk.css.tmpl +79 -136
- package/dot_config/gtk-4.0/settings.ini.tmpl +5 -8
- package/dot_config/ipython/profile_default/ipython_config.py +19 -0
- package/dot_config/just/justfile +18 -0
- package/dot_config/kanshi/config.tmpl +22 -0
- package/dot_config/kitty/kitty.conf.tmpl +44 -508
- package/dot_config/lazygit/config.yml +18 -6
- package/dot_config/mako/config +47 -0
- package/dot_config/micro/settings.json +3 -0
- package/dot_config/mimeapps.list +77 -0
- package/dot_config/mise/config.toml +63 -5
- package/dot_config/mongosh/mongoshrc.js +1 -0
- package/dot_config/mpv/input.conf +47 -0
- package/dot_config/mpv/mpv.conf +47 -0
- package/dot_config/niri/config.kdl.tmpl +327 -0
- package/dot_config/nushell/aliases.nu +18 -0
- package/dot_config/nushell/completions.nu.tmpl +52 -0
- package/dot_config/nushell/config.nu.tmpl +86 -0
- package/dot_config/nushell/env.nu.tmpl +94 -0
- package/dot_config/nushell/functions.nu.tmpl +17 -0
- package/dot_config/nvim/init.lua +14 -0
- package/dot_config/nvim/lazy-lock.json +45 -14
- package/dot_config/nvim/lua/config/autocmds.lua +45 -1
- package/dot_config/nvim/lua/config/keymaps.lua +13 -8
- package/dot_config/nvim/lua/config/lazy.lua +22 -12
- package/dot_config/nvim/lua/config/options.lua +1 -0
- package/dot_config/nvim/lua/plugins/ai.lua +75 -0
- package/dot_config/nvim/lua/plugins/coding.lua +11 -29
- package/dot_config/nvim/lua/plugins/completion.lua +60 -0
- package/dot_config/nvim/lua/plugins/dap.lua +215 -4
- package/dot_config/nvim/lua/plugins/editor.lua +6 -10
- package/dot_config/nvim/lua/plugins/git.lua +1 -0
- package/dot_config/nvim/lua/plugins/lsp.lua +16 -81
- package/dot_config/nvim/lua/plugins/markdown.lua +1 -0
- package/dot_config/nvim/lua/plugins/rust.lua +1 -0
- package/dot_config/nvim/lua/plugins/sessions.lua +1 -0
- package/dot_config/nvim/lua/plugins/ui.lua +23 -51
- package/dot_config/paru/paru.conf +10 -0
- package/dot_config/powershell/Microsoft.PowerShell_profile.ps1.tmpl +81 -0
- package/dot_config/pueue/pueue.yml +34 -0
- package/dot_config/raycast/README.md +1 -1
- package/dot_config/ripgrep/ripgreprc +21 -0
- package/dot_config/shell/00-core-paths.sh.tmpl +62 -24
- package/dot_config/shell/05-core-safety.sh +47 -0
- package/dot_config/shell/10-secrets.sh +40 -0
- package/dot_config/shell/40-fzf-defaults.sh.tmpl +16 -0
- package/dot_config/shell/40-ls-colors.sh +48 -0
- package/dot_config/shell/50-logic-functions-core.sh.tmpl +10 -0
- package/dot_config/shell/51-logic-functions-extra.sh.tmpl +64 -0
- package/dot_config/shell/90-ux-aliases.sh.tmpl +90 -5
- package/dot_config/shell/91-ux-aliases-lazy.sh.tmpl +33 -2
- package/dot_config/shell/Brewfile.cli +8 -0
- package/dot_config/shell/README.md +9 -9
- package/dot_config/shell/als_data.txt.tmpl +65 -0
- package/dot_config/shell/custom/auto_ls.zsh +20 -0
- package/dot_config/shell/custom/context_suggest.zsh +50 -50
- package/dot_config/shell/custom/error_analysis.zsh +29 -29
- package/dot_config/starship.toml.tmpl +85 -7
- package/dot_config/swaylock/config +43 -0
- package/dot_config/systemd/user/dotfiles-maintenance.service +8 -0
- package/dot_config/systemd/user/dotfiles-maintenance.timer +11 -0
- package/dot_config/systemd/user/pueued.service +12 -0
- package/dot_config/systemd/user/ssh-agent.service +12 -0
- package/dot_config/tmux/tmux.conf.tmpl +80 -38
- package/dot_config/topgrade.toml.tmpl +54 -0
- package/dot_config/user-dirs.dirs +9 -0
- package/dot_config/vscode/settings.json.tmpl +9 -50
- package/dot_config/waybar/config.jsonc.tmpl +90 -0
- package/dot_config/waybar/style.css.tmpl +211 -0
- package/dot_config/wezterm/wezterm.lua.tmpl +31 -203
- package/dot_config/xdg-desktop-portal/niri-portals.conf +5 -0
- package/dot_config/yazi/keymap.toml +67 -0
- package/dot_config/yazi/theme.toml +102 -0
- package/dot_config/zathura/zathurarc +52 -0
- package/dot_config/zellij/{config.kdl → config.kdl.tmpl} +1 -1
- package/dot_config/zsh/dot_zprofile +1 -7
- package/dot_config/zsh/dot_zshenv +2 -3
- package/dot_config/zsh/dot_zshrc.tmpl +368 -69
- package/dot_config/zsh/rc.d/00-alias-shims.zsh +77 -0
- package/dot_config/zsh/rc.d/05-ssh-agent.zsh +17 -4
- package/dot_config/zsh/rc.d/10-env.zsh.tmpl +4 -4
- package/dot_config/zsh/rc.d/20-zinit.zsh +65 -0
- package/dot_config/zsh/rc.d/30-options.zsh.tmpl +101 -30
- package/dot_config/zsh/rc.d/99-alias-wrapper.zsh +32 -0
- package/dot_local/bin/__pycache__/executable_dot-load-benchmark-ptycpython-312.pyc +0 -0
- package/dot_local/bin/executable_ai-update +195 -0
- package/dot_local/bin/executable_ai_core +113 -91
- package/dot_local/bin/executable_antigravity +11 -0
- package/dot_local/bin/executable_b64 +61 -36
- package/dot_local/bin/executable_bm +77 -0
- package/dot_local/bin/executable_cb +39 -0
- package/dot_local/bin/executable_dot +543 -132
- package/dot_local/bin/executable_dot-ai +36 -0
- package/dot_local/bin/executable_dot-bootstrap +77 -0
- package/dot_local/bin/executable_dot-launch-or-focus +52 -0
- package/dot_local/bin/executable_dot-load-benchmark +31 -0
- package/dot_local/bin/executable_dot-load-benchmark-pty +77 -0
- package/dot_local/bin/executable_dot-theme-sync +952 -0
- package/dot_local/bin/executable_dot_completion +2 -0
- package/dot_local/bin/executable_dtags +28 -0
- package/dot_local/bin/executable_epoch +43 -38
- package/dot_local/bin/executable_extract +32 -99
- package/dot_local/bin/executable_gbd +52 -0
- package/dot_local/bin/executable_gd +42 -0
- package/dot_local/bin/executable_git-ai-commit +35 -20
- package/dot_local/bin/executable_git-ai-diff +33 -18
- package/dot_local/bin/executable_gl +101 -0
- package/dot_local/bin/executable_hash +56 -18
- package/dot_local/bin/executable_hashsum +160 -0
- package/dot_local/bin/executable_hex +44 -8
- package/dot_local/bin/executable_jsonv +34 -10
- package/dot_local/bin/executable_jwt +22 -6
- package/dot_local/bin/executable_kill-port +18 -2
- package/dot_local/bin/executable_lorem +21 -6
- package/dot_local/bin/executable_mkscript +35 -0
- package/dot_local/bin/executable_monitor +56 -0
- package/dot_local/bin/{executable_ip → executable_myip} +16 -2
- package/dot_local/bin/executable_notify +22 -0
- package/dot_local/bin/executable_open +36 -0
- package/dot_local/bin/executable_pw +27 -0
- package/dot_local/bin/executable_rec-start +46 -0
- package/dot_local/bin/executable_rec-stop +35 -0
- package/dot_local/bin/executable_regex +49 -13
- package/dot_local/bin/executable_start-niri +8 -0
- package/dot_local/bin/executable_tmux-sessionizer +276 -149
- package/dot_local/bin/executable_tour +112 -74
- package/dot_local/bin/executable_up +21 -0
- package/dot_local/bin/executable_update +45 -11
- package/dot_local/bin/executable_uuid +37 -7
- package/dot_local/bin/executable_win +32 -0
- package/dot_local/bin/executable_yamlv +25 -7
- package/dot_local/share/bash-completion/completions/dot +62 -44
- package/dot_local/share/icons/hicolor/128x128/apps/rousseau.png +0 -0
- package/dot_local/share/icons/hicolor/16x16/apps/rousseau.png +0 -0
- package/dot_local/share/icons/hicolor/24x24/apps/rousseau.png +0 -0
- package/dot_local/share/icons/hicolor/256x256/apps/rousseau.png +0 -0
- package/dot_local/share/icons/hicolor/32x32/apps/rousseau.png +0 -0
- package/dot_local/share/icons/hicolor/48x48/apps/rousseau.png +0 -0
- package/dot_local/share/icons/hicolor/512x512/apps/rousseau.png +0 -0
- package/dot_local/share/icons/hicolor/64x64/apps/rousseau.png +0 -0
- package/dot_local/share/icons/hicolor/96x96/apps/rousseau.png +0 -0
- package/dot_local/share/icons/hicolor/scalable/apps/rousseau.png +0 -0
- package/dot_local/share/man/man1/dot.1 +149 -0
- package/dot_local/share/mise/plugins/kiro-cli/bin/executable_download +64 -0
- package/dot_local/share/mise/plugins/kiro-cli/bin/executable_install +18 -0
- package/dot_local/share/mise/plugins/kiro-cli/bin/executable_list-all +13 -0
- package/dot_local/share/wayland-sessions/niri.desktop.tmpl +6 -0
- package/dot_local/share/zsh/completions/_dot +283 -0
- package/install.sh +297 -210
- package/package.json +17 -5
- package/scripts/ci/check-copyright-headers.sh +96 -0
- package/scripts/ci/guard-gitleaks-checkout.sh +57 -0
- package/scripts/ci/install-chezmoi-verified.sh +64 -0
- package/scripts/ci/validate-ci-config.sh +41 -39
- package/scripts/demo/record.sh +3 -2
- package/scripts/diagnostics/a2a-conformance.sh +162 -0
- package/scripts/diagnostics/alias-governance.sh +137 -0
- package/scripts/diagnostics/aliases-cheatsheet.sh +73 -0
- package/scripts/diagnostics/aliases-manifest.sh +31 -0
- package/scripts/diagnostics/benchmark.sh +209 -29
- package/scripts/diagnostics/conflicts.sh +72 -0
- package/scripts/diagnostics/doctor-unified.sh +38 -0
- package/scripts/diagnostics/doctor.sh +491 -65
- package/scripts/diagnostics/drift-dashboard.sh +17 -6
- package/scripts/diagnostics/health.sh +351 -110
- package/scripts/diagnostics/history-analysis.sh +12 -4
- package/scripts/diagnostics/mcp-doctor.sh +575 -0
- package/scripts/diagnostics/perf.sh +225 -0
- package/scripts/diagnostics/scorecard.sh +118 -0
- package/scripts/diagnostics/secret-governance.sh +58 -0
- package/scripts/diagnostics/security-score.sh +139 -93
- package/scripts/diagnostics/smoke-test.sh +87 -0
- package/scripts/diagnostics/snapshot.sh +89 -0
- package/scripts/diagnostics/verify.sh +107 -0
- package/scripts/diagnostics/verify_state.sh +2 -2
- package/scripts/diagnostics/version-locks.sh +79 -0
- package/scripts/diagnostics/workstation-attestation.sh +181 -0
- package/scripts/docs/build-manual.sh +883 -0
- package/scripts/docs/check-manual.sh +213 -0
- package/scripts/dot/commands/agent.sh +465 -0
- package/scripts/dot/commands/ai.sh +416 -0
- package/scripts/dot/commands/aliases.sh +250 -0
- package/scripts/dot/commands/appearance.sh +21 -4
- package/scripts/dot/commands/core.sh +59 -4
- package/scripts/dot/commands/diagnostics.sh +132 -3
- package/scripts/dot/commands/fleet.sh +399 -0
- package/scripts/dot/commands/lint.sh +177 -0
- package/scripts/dot/commands/manual.sh +168 -0
- package/scripts/dot/commands/meta.sh +148 -17
- package/scripts/dot/commands/patterns.sh +54 -0
- package/scripts/dot/commands/restore.sh +57 -35
- package/scripts/dot/commands/secrets.sh +151 -9
- package/scripts/dot/commands/security.sh +3 -0
- package/scripts/dot/commands/tools.sh +268 -27
- package/scripts/dot/data/alias-deprecations.tsv +2 -0
- package/scripts/dot/lib/bento.sh +49 -0
- package/scripts/dot/lib/log.sh +194 -0
- package/scripts/dot/lib/platform.sh +98 -0
- package/scripts/dot/lib/ui.sh +507 -0
- package/scripts/dot/lib/utils.sh +318 -18
- package/scripts/fonts/install-nerd-fonts.sh +19 -10
- package/scripts/fonts/patch-fonts.sh +1 -0
- package/scripts/git-hooks/install.sh +11 -0
- package/scripts/git-hooks/pre-commit +12 -0
- package/scripts/git-hooks/pre-commit-audit.sh +145 -0
- package/scripts/git-hooks/pre-push +29 -0
- package/scripts/git-hooks/prepare-commit-msg +29 -0
- package/scripts/lib/secrets_provider.sh +158 -0
- package/scripts/maintenance/check-updates.sh +131 -0
- package/scripts/ops/ai-setup.sh +55 -0
- package/scripts/ops/bundle.sh +77 -0
- package/scripts/ops/chaos.sh +49 -0
- package/scripts/ops/chezmoi-apply.sh +245 -17
- package/scripts/ops/chezmoi-diff.sh +1 -0
- package/scripts/ops/chezmoi-remove.sh +2 -0
- package/scripts/ops/chezmoi-update.sh +34 -2
- package/scripts/ops/heal-chezmoi.sh +51 -0
- package/scripts/ops/heal-system.sh +128 -0
- package/scripts/ops/heal-tools.sh +340 -0
- package/scripts/ops/heal.sh +98 -342
- package/scripts/ops/post-apply-repair.sh +106 -0
- package/scripts/ops/prewarm.sh +127 -0
- package/scripts/ops/release.sh +252 -0
- package/scripts/ops/rollback.sh +86 -28
- package/scripts/ops/setup.sh +137 -0
- package/scripts/ops/teleport.sh +2 -1
- package/scripts/qa/coverage-baseline.sh +60 -0
- package/scripts/qa/docs-coverage.sh +111 -0
- package/scripts/qa/reliability-audit.sh +138 -0
- package/scripts/qa/traceability-coverage.sh +116 -0
- package/scripts/qa/validate-examples.sh +26 -0
- package/scripts/qa/wsl-contract.sh +11 -0
- package/scripts/release/package-policy-bundles.sh +125 -0
- package/scripts/secrets/age-init.sh +1 -0
- package/scripts/secrets/create-secrets-file.sh +1 -0
- package/scripts/secrets/encrypt-ssh-key.sh +1 -0
- package/scripts/security/backup.sh +44 -4
- package/scripts/security/dns-doh.sh +36 -14
- package/scripts/security/encryption-check.sh +27 -12
- package/scripts/security/enforce-policies.sh +11 -16
- package/scripts/security/firewall.sh +76 -20
- package/scripts/security/lock-configs.sh +2 -2
- package/scripts/security/lock-screen.sh +40 -18
- package/scripts/security/manage-secrets.sh +42 -29
- package/scripts/security/ssh-cert.sh +203 -0
- package/scripts/security/telemetry-kill.sh +40 -18
- package/scripts/security/usb-safety.sh +37 -15
- package/scripts/theme/apply-gnome-theme.sh +87 -56
- package/scripts/theme/extract-theme.py +677 -0
- package/scripts/theme/install-boot-logo.sh +1 -0
- package/scripts/theme/install-catppuccin-themes.sh +57 -33
- package/scripts/theme/install-cursors.sh +1 -0
- package/scripts/theme/install-file-icons.sh +1 -0
- package/scripts/theme/install-grub-theme.sh +11 -1
- package/scripts/theme/install-lock-icon.sh +1 -0
- package/scripts/theme/merge-wallpaper.sh +141 -0
- package/scripts/theme/rebuild-themes.sh +309 -0
- package/scripts/theme/switch.sh +308 -137
- package/scripts/theme/wallpaper-rotate.sh +66 -12
- package/scripts/theme/wallpaper-sync.sh +386 -31
- package/scripts/tools/cmatrix.sh +1 -0
- package/scripts/tools/detect-collisions.py +1 -1
- package/scripts/tools/emoji-picker.sh +4 -1
- package/scripts/tools/figlet-banner.sh +1 -0
- package/scripts/tools/log-rotate.sh +2 -1
- package/scripts/tools/lolcat-wrap.sh +1 -0
- package/scripts/tools/pipes.sh +1 -0
- package/scripts/tuning/linux.sh +23 -13
- package/scripts/tuning/macos.sh +13 -4
- package/scripts/uninstall.sh +85 -0
- package/scripts/version-sync.sh +487 -0
- package/templates/chezmoi-data/geekom-a9.toml.example +21 -0
- package/templates/chezmoi-data/mac-m1.toml.example +16 -0
- package/templates/chezmoi-data/mac-t2-linux.toml.example +21 -0
- package/templates/chezmoi-data/surface-pro-7p.toml.example +21 -0
- package/templates/projects/go/.github/workflows/ci.yml +31 -0
- package/templates/projects/go/README.md +1 -1
- package/templates/projects/go/cmd/__PROJECT_NAME__/main.go +1 -0
- package/templates/projects/go/go.sum +0 -0
- package/templates/projects/molecule/README.md +1 -1
- package/templates/projects/node/.github/workflows/ci.yml +30 -0
- package/templates/projects/node/README.md +1 -1
- package/templates/projects/node/package-lock.json +12 -0
- package/templates/projects/node/src/index.js +1 -0
- package/templates/projects/packer/README.md +1 -1
- package/templates/projects/python/.github/workflows/ci.yml +34 -0
- package/templates/projects/python/README.md +1 -1
- package/templates/projects/python/src/__PROJECT_NAME__/__init__.py +1 -0
- package/templates/projects/python/tests/test_basic.py +1 -0
- package/docs/ARCHITECTURE.md +0 -229
- package/docs/COMPLIANCE.md +0 -47
- package/docs/FEATURES.md +0 -166
- package/docs/FONTS.md +0 -147
- package/docs/INSTALL.md +0 -119
- package/docs/KEYS.md +0 -40
- package/docs/OPERATIONS.md +0 -130
- package/docs/PR_DESCRIPTION.md +0 -149
- package/docs/SECRETS.md +0 -76
- package/docs/SECURITY.md +0 -30
- package/docs/SECURITY_CHECKLIST.md +0 -25
- package/docs/TASK.md +0 -99
- package/docs/TESTING.md +0 -190
- package/docs/TOOLS.md +0 -146
- package/docs/UTILS.md +0 -105
- package/docs/WALKTHROUGH.md +0 -165
- package/dot_config/clippy.toml +0 -55
- package/dot_config/dotfiles/versions.env.tmpl +0 -19
- package/dot_config/firefox/user.js +0 -8
- package/dot_config/git/config.tmpl +0 -77
- package/dot_config/go/aliases.sh +0 -61
- package/dot_config/go/env.sh +0 -24
- package/dot_config/ice/README.md +0 -13
- package/dot_config/ipython/profile_default/ipython_config.py.tmpl +0 -5
- package/dot_config/lsd/config.yaml +0 -19
- package/dot_config/nvim/snippets/all.lua +0 -9
- package/dot_config/nvim/snippets/python.lua +0 -16
- package/dot_config/shell/00-container-detect.sh +0 -53
- package/dot_config/shell/05-core-safety.sh.tmpl +0 -13
- package/dot_config/shell/40-ls-colors.sh.tmpl +0 -31
- package/dot_config/shell/90-theme-switch.sh +0 -70
- package/dot_config/topgrade/topgrade.toml.tmpl +0 -42
- package/dot_config/waybar/style.css +0 -8
- package/dot_config/zsh/rc.d/20-zinit.zsh.tmpl +0 -22
- package/dot_local/bin/executable_zig-install +0 -89
- package/dot_local/bin/voice_ops +0 -7
- package/scripts/ops/health-check.sh +0 -380
- package/scripts/tests/README.md +0 -241
- package/scripts/tests/benchmark.sh +0 -91
- package/scripts/tests/framework/assertions.sh +0 -283
- package/scripts/tests/framework/mocks.sh +0 -201
- package/scripts/tests/framework/test_runner.sh +0 -189
- package/scripts/tests/integration/test_install.sh +0 -237
- package/scripts/tests/performance/benchmark_runner.sh +0 -156
- package/scripts/tests/performance/regression_check.sh +0 -73
- package/scripts/tests/performance/stress_test.sh +0 -65
- package/scripts/tests/test-aliases.sh +0 -25
- package/scripts/tests/test-docker.sh +0 -48
- package/scripts/tests/unit/test_ai_aliases.sh +0 -158
- package/scripts/tests/unit/test_ai_cli_checks.sh +0 -47
- package/scripts/tests/unit/test_backup.sh +0 -227
- package/scripts/tests/unit/test_case_functions.sh +0 -238
- package/scripts/tests/unit/test_cd_aliases.sh +0 -367
- package/scripts/tests/unit/test_dot_cli.sh +0 -217
- package/scripts/tests/unit/test_encode64.sh +0 -67
- package/scripts/tests/unit/test_environment.sh +0 -78
- package/scripts/tests/unit/test_extract.sh +0 -163
- package/scripts/tests/unit/test_framework_edge_cases.sh +0 -113
- package/scripts/tests/unit/test_genpass.sh +0 -298
- package/scripts/tests/unit/test_install_edge_cases.sh +0 -167
- package/scripts/tests/unit/test_installers.sh +0 -172
- package/scripts/tests/unit/test_keygen.sh +0 -68
- package/scripts/tests/unit/test_logging.sh +0 -96
- package/scripts/tests/unit/test_os_detection_comprehensive.sh +0 -388
- package/scripts/tests/unit/test_package_managers_comprehensive.sh +0 -321
- package/scripts/tests/unit/test_prependpath.sh +0 -66
- package/scripts/tests/unit/test_prependpath_refactored.sh +0 -89
- package/scripts/tests/unit/test_rd.sh +0 -230
- package/scripts/tests/unit/test_security_fixes.sh +0 -130
- package/scripts/tests/unit/test_security_scripts.sh +0 -87
- package/scripts/tests/unit/test_template_validation.sh +0 -238
- package/scripts/tests/unit/test_utility_functions.sh +0 -144
- package/scripts/tests/unit/test_wave1_alias_split.sh +0 -132
- package/scripts/tests/unit/test_wave1_ci_pinning.sh +0 -61
- package/scripts/tests/unit/test_wave1_gitleaks_config.sh +0 -52
- package/scripts/tests/unit/test_wave1_heal_fixes.sh +0 -97
- package/scripts/tests/unit/test_wave1_install_gpg.sh +0 -35
- package/scripts/tests/unit/test_wave1_zshenv_path.sh +0 -89
- package/scripts/tests/unit/test_wave1_zshrc_lazy_hook.sh +0 -115
- package/scripts/tests/unit/test_wave2_dot_new_guard.sh +0 -75
- package/scripts/tests/unit/test_zipf.sh +0 -76
- /package/docs/{LEGACY_ROADMAP.md → archive/LEGACY_ROADMAP.md} +0 -0
- /package/docs/{REPO_AUDIT.md → archive/REPO_AUDIT.md} +0 -0
- /package/docs/{KEY_ROTATION.md → security/KEY_ROTATION.md} +0 -0
- /package/dot_config/ansible/{ansible.cfg.tmpl → ansible.cfg} +0 -0
- /package/dot_config/docker/{config.json.tmpl → config.json} +0 -0
- /package/dot_config/k9s/{config.yaml.tmpl → config.yaml} +0 -0
- /package/dot_config/pypoetry/{config.toml.tmpl → config.toml} +0 -0
- /package/dot_config/{pyrightconfig.json.tmpl → pyrightconfig.json} +0 -0
- /package/dot_config/tflint/{tflint.hcl.tmpl → tflint.hcl} +0 -0
- /package/dot_config/yarn/{yarnrc.yml.tmpl → yarnrc.yml} +0 -0
- /package/dot_config/zsh/rc.d/{40-bell.zsh.tmpl → 40-bell.zsh} +0 -0
- /package/dot_config/zsh/rc.d/{50-login-fortune.zsh.tmpl → 50-login-fortune.zsh} +0 -0
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
client:
|
|
2
|
+
restart_in_place: false
|
|
3
|
+
read_local_logs: true
|
|
4
|
+
show_confirmation_questions: false
|
|
5
|
+
edit_mode: toml
|
|
6
|
+
show_expanded_aliases: false
|
|
7
|
+
dark_mode: false
|
|
8
|
+
max_status_lines: null
|
|
9
|
+
status_time_format: '%H:%M:%S'
|
|
10
|
+
status_datetime_format: |-
|
|
11
|
+
%Y-%m-%d
|
|
12
|
+
%H:%M:%S
|
|
13
|
+
daemon:
|
|
14
|
+
pause_group_on_failure: false
|
|
15
|
+
pause_all_on_failure: false
|
|
16
|
+
compress_state_file: false
|
|
17
|
+
callback: null
|
|
18
|
+
env_vars: {}
|
|
19
|
+
callback_log_lines: 10
|
|
20
|
+
shell_command: null
|
|
21
|
+
shared:
|
|
22
|
+
pueue_directory: null
|
|
23
|
+
runtime_directory: null
|
|
24
|
+
alias_file: null
|
|
25
|
+
use_unix_socket: true
|
|
26
|
+
unix_socket_path: null
|
|
27
|
+
unix_socket_permissions: 448
|
|
28
|
+
host: 127.0.0.1
|
|
29
|
+
port: '6924'
|
|
30
|
+
pid_path: null
|
|
31
|
+
daemon_cert: null
|
|
32
|
+
daemon_key: null
|
|
33
|
+
shared_secret_path: null
|
|
34
|
+
profiles: {}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
# Copyright (c) 2015-2026 Dotfiles. All rights reserved.
|
|
2
|
+
# Smart case search
|
|
3
|
+
--smart-case
|
|
4
|
+
# Add custom type definitions
|
|
5
|
+
--type-add=web:*.{html,css,js,ts,tsx,jsx,vue,svelte}
|
|
6
|
+
--type-add=config:*.{toml,yaml,yml,json,ini,conf}
|
|
7
|
+
--type-add=shell:*.{sh,bash,zsh,fish}
|
|
8
|
+
# Max columns before truncation
|
|
9
|
+
--max-columns=200
|
|
10
|
+
--max-columns-preview
|
|
11
|
+
# Ignore common directories
|
|
12
|
+
--glob=!.git
|
|
13
|
+
--glob=!node_modules
|
|
14
|
+
--glob=!.venv
|
|
15
|
+
--glob=!target
|
|
16
|
+
--glob=!dist
|
|
17
|
+
--glob=!build
|
|
18
|
+
--glob=!*.min.js
|
|
19
|
+
--glob=!*.min.css
|
|
20
|
+
--glob=!package-lock.json
|
|
21
|
+
--glob=!yarn.lock
|
|
@@ -1,38 +1,74 @@
|
|
|
1
1
|
#!/usr/bin/env bash
|
|
2
|
+
## Construct PATH hierarchy for all language runtimes and tools.
|
|
3
|
+
##
|
|
4
|
+
## Sets PATH precedence: Local bin > Language runtimes > Homebrew > System.
|
|
5
|
+
## This file is generated by Chezmoi and should not be edited directly.
|
|
6
|
+
##
|
|
7
|
+
## # Data Flow
|
|
8
|
+
## ~/.zshenv (XDG vars) → 00-core-paths.sh (PATH) → tool-specific init
|
|
9
|
+
##
|
|
10
|
+
## # Platform Notes
|
|
11
|
+
## ### Platform: macOS
|
|
12
|
+
## - Adds /opt/homebrew/bin for Apple Silicon
|
|
13
|
+
## - Includes macOS application paths (VS Code, Little Snitch)
|
|
14
|
+
##
|
|
15
|
+
## ### Platform: Linux
|
|
16
|
+
## - Homebrew section skipped if /opt/homebrew absent
|
|
17
|
+
## - Standard FHS paths (/usr/bin, /usr/local/bin)
|
|
18
|
+
##
|
|
19
|
+
## ### Platform: WSL
|
|
20
|
+
## - Works with both Linux and Windows paths
|
|
21
|
+
## - Windows PATH inherited via interop
|
|
22
|
+
##
|
|
23
|
+
## # Dependencies
|
|
24
|
+
## - Bash 4+ for associative array PATH deduplication
|
|
25
|
+
## - Falls back to awk for Bash 3.x
|
|
26
|
+
##
|
|
27
|
+
## # Idempotency
|
|
28
|
+
## Safe to source multiple times. Deduplicates PATH entries.
|
|
2
29
|
|
|
3
|
-
#
|
|
4
|
-
|
|
30
|
+
# Helper: prepend path if directory exists (moves to front if already present)
|
|
31
|
+
path_prepend() {
|
|
32
|
+
local dir="$1"
|
|
33
|
+
[[ -n "$dir" && -d "$dir" ]] || return 0
|
|
34
|
+
# Remove existing entry (if any) then prepend — ensures correct precedence
|
|
35
|
+
PATH="${PATH/#"$dir:"/}" # leading
|
|
36
|
+
PATH="${PATH/%":$dir"/}" # trailing
|
|
37
|
+
PATH="${PATH//":$dir:"/:}" # middle
|
|
38
|
+
[[ "$PATH" == "$dir" ]] && PATH="" # sole entry
|
|
39
|
+
PATH="$dir${PATH:+:$PATH}"
|
|
40
|
+
}
|
|
5
41
|
|
|
6
42
|
# 1. System Paths (Prepend, but will be pushed down by later prepends)
|
|
7
|
-
|
|
43
|
+
PATH="/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:${PATH}"
|
|
8
44
|
|
|
9
45
|
# 2. Homebrew Paths (Prepend -> Higher Priority)
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
fi
|
|
46
|
+
path_prepend "/opt/homebrew/sbin"
|
|
47
|
+
path_prepend "/opt/homebrew/bin"
|
|
13
48
|
|
|
14
49
|
# 3. Language Runtimes
|
|
15
50
|
# Ruby (Homebrew)
|
|
16
|
-
|
|
17
|
-
export PATH="/opt/homebrew/opt/ruby/bin:${PATH}"
|
|
18
|
-
fi
|
|
51
|
+
path_prepend "/opt/homebrew/opt/ruby/bin"
|
|
19
52
|
# Ruby (User Gems)
|
|
20
|
-
|
|
53
|
+
path_prepend "${HOME}/.gem/ruby/bin"
|
|
21
54
|
|
|
22
55
|
# Python (Pipx)
|
|
23
56
|
export PIPX_HOME="${XDG_DATA_HOME:-$HOME/.local/share}/pipx"
|
|
24
57
|
export PIPX_BIN_DIR="${XDG_BIN_HOME:-$HOME/.local/bin}"
|
|
25
|
-
|
|
58
|
+
path_prepend "${PIPX_BIN_DIR}"
|
|
59
|
+
|
|
60
|
+
# .NET Tools
|
|
61
|
+
path_prepend "${HOME}/.dotnet/tools"
|
|
26
62
|
|
|
27
63
|
# Rust (Cargo)
|
|
28
|
-
|
|
64
|
+
path_prepend "${HOME}/.cargo/bin"
|
|
29
65
|
|
|
30
66
|
# Go
|
|
31
|
-
|
|
67
|
+
path_prepend "${HOME}/go/bin"
|
|
32
68
|
|
|
33
69
|
# Bun
|
|
34
70
|
export BUN_INSTALL="${HOME}/.bun"
|
|
35
|
-
|
|
71
|
+
path_prepend "${BUN_INSTALL}/bin"
|
|
36
72
|
|
|
37
73
|
# Kubeconfig merge logic (merge all configs in ~/.kube/config.d/)
|
|
38
74
|
# Lazy-loaded via kubectl wrapper to avoid startup cost
|
|
@@ -44,7 +80,7 @@ _lazy_load_kubeconfig() {
|
|
|
44
80
|
done
|
|
45
81
|
[[ -n "$kubeconfig_extra" ]] && export KUBECONFIG="${HOME}/.kube/config${kubeconfig_extra}"
|
|
46
82
|
fi
|
|
47
|
-
|
|
83
|
+
unset -f kubectl _lazy_load_kubeconfig 2>/dev/null
|
|
48
84
|
command kubectl "$@"
|
|
49
85
|
}
|
|
50
86
|
# Only wrap kubectl if config.d exists and kubectl is installed
|
|
@@ -57,19 +93,21 @@ if [[ -n "${KUBERNETES_SERVICE_HOST:-}" ]] || [[ -n "${KUBECONFIG:-}" ]]; then
|
|
|
57
93
|
fi
|
|
58
94
|
|
|
59
95
|
# Node.js (Global)
|
|
60
|
-
|
|
96
|
+
path_prepend "${HOME}/.node_modules/bin"
|
|
61
97
|
|
|
62
98
|
# Lua (Luarocks)
|
|
63
|
-
|
|
99
|
+
path_prepend "${HOME}/.luarocks/bin"
|
|
64
100
|
|
|
65
|
-
# 4.
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
101
|
+
# 4. macOS System Paths
|
|
102
|
+
{{- if eq .chezmoi.os "darwin" }}
|
|
103
|
+
path_prepend "/Library/Apple/usr/bin"
|
|
104
|
+
{{- end }}
|
|
69
105
|
|
|
70
|
-
# 5. Local Bin (Highest Priority)
|
|
71
|
-
|
|
72
|
-
|
|
106
|
+
# 5. Local Bin and Tools (Highest Priority)
|
|
107
|
+
path_prepend "${HOME}/.fzf/bin"
|
|
108
|
+
path_prepend "${HOME}/.local/bin"
|
|
109
|
+
path_prepend "${HOME}/.local/share/mise/shims"
|
|
110
|
+
path_prepend "${HOME}/bin"
|
|
73
111
|
|
|
74
112
|
# Deduplicate PATH (Keep first occurrence to maintain precedence)
|
|
75
113
|
# Standard Zsh handles this with 'typeset -U path', but for bash compatibility/subshells:
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
#!/usr/bin/env bash
|
|
2
|
+
# Copyright (c) 2015-2026 Dotfiles. All rights reserved.
|
|
3
|
+
|
|
4
|
+
# 05-safety.sh: Core Safety Settings
|
|
5
|
+
# Part of the "Core Layer"
|
|
6
|
+
|
|
7
|
+
# Set sane defaults for safety, though be careful with -e in interactive shell
|
|
8
|
+
# Use 'set -o pipefail' to catch pipeline errors if supported
|
|
9
|
+
if [[ -n "$BASH_VERSION" ]] || [[ -n "$ZSH_VERSION" ]]; then
|
|
10
|
+
set -o pipefail 2>/dev/null || true
|
|
11
|
+
fi
|
|
12
|
+
|
|
13
|
+
# Prevent file overwrite with redirection (force use of >|)
|
|
14
|
+
set -o noclobber
|
|
15
|
+
|
|
16
|
+
# Strict destructive-operation confirmation helper.
|
|
17
|
+
# Enabled when DOTFILES_ALIAS_STRICT_MODE=1.
|
|
18
|
+
dot_confirm_destructive() {
|
|
19
|
+
local action="${1:-destructive operation}"
|
|
20
|
+
local log_file="${DOTFILES_DESTRUCTIVE_LOG:-$HOME/.dotfiles_destruction.log}"
|
|
21
|
+
local ts
|
|
22
|
+
|
|
23
|
+
if [[ "${DOTFILES_ALIAS_STRICT_MODE:-0}" != "1" ]]; then
|
|
24
|
+
return 0
|
|
25
|
+
fi
|
|
26
|
+
|
|
27
|
+
if [[ ! -t 0 ]]; then
|
|
28
|
+
if [[ "${DOTFILES_FORCE_DESTRUCTIVE:-0}" == "1" ]]; then
|
|
29
|
+
ts="$(date -u +"%Y-%m-%dT%H:%M:%SZ" 2>/dev/null || date)"
|
|
30
|
+
printf "%s\tuser=%s\thost=%s\tpwd=%s\taction=%s\tmode=forced\n" \
|
|
31
|
+
"$ts" "${USER:-unknown}" "${HOSTNAME:-unknown}" "${PWD:-unknown}" "$action" >> "$log_file" 2>/dev/null || true
|
|
32
|
+
return 0
|
|
33
|
+
fi
|
|
34
|
+
echo "[STRICT] Refusing ${action} without TTY confirmation." >&2
|
|
35
|
+
return 1
|
|
36
|
+
fi
|
|
37
|
+
|
|
38
|
+
echo "[STRICT] About to run: ${action}" >&2
|
|
39
|
+
read -r -p "Type YES to continue: " confirm
|
|
40
|
+
if [[ "$confirm" == "YES" ]]; then
|
|
41
|
+
ts="$(date -u +"%Y-%m-%dT%H:%M:%SZ" 2>/dev/null || date)"
|
|
42
|
+
printf "%s\tuser=%s\thost=%s\tpwd=%s\taction=%s\tmode=confirmed\n" \
|
|
43
|
+
"$ts" "${USER:-unknown}" "${HOSTNAME:-unknown}" "${PWD:-unknown}" "$action" >> "$log_file" 2>/dev/null || true
|
|
44
|
+
return 0
|
|
45
|
+
fi
|
|
46
|
+
return 1
|
|
47
|
+
}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
#!/usr/bin/env bash
|
|
2
|
+
# Copyright (c) 2015-2026 Dotfiles. All rights reserved.
|
|
3
|
+
|
|
4
|
+
# 10-secrets.sh: Optional secret bucket auto-loader
|
|
5
|
+
# Loads configured secret buckets into the current shell via `dot env load`.
|
|
6
|
+
|
|
7
|
+
if [[ "${DOTFILES_SECRETS_AUTO_LOAD:-0}" != "1" ]]; then
|
|
8
|
+
return 0 2>/dev/null || exit 0
|
|
9
|
+
fi
|
|
10
|
+
|
|
11
|
+
if ! command -v dot >/dev/null 2>&1; then
|
|
12
|
+
return 0 2>/dev/null || exit 0
|
|
13
|
+
fi
|
|
14
|
+
|
|
15
|
+
_dot_secret_buckets=()
|
|
16
|
+
if [[ -n "${DOTFILES_SECRETS_BUCKET_NAMES:-}" ]]; then
|
|
17
|
+
while IFS= read -r _bucket; do
|
|
18
|
+
[[ -n "$_bucket" ]] || continue
|
|
19
|
+
_dot_secret_buckets+=("$_bucket")
|
|
20
|
+
done < <(printf '%s' "${DOTFILES_SECRETS_BUCKET_NAMES}" | tr ',' '\n')
|
|
21
|
+
fi
|
|
22
|
+
|
|
23
|
+
for _bucket in "${_dot_secret_buckets[@]}"; do
|
|
24
|
+
[[ -n "$_bucket" ]] || continue
|
|
25
|
+
_dot_secret_out="$(dot env load "$_bucket" 2>/dev/null || true)"
|
|
26
|
+
[[ -n "$_dot_secret_out" ]] || continue
|
|
27
|
+
case "$_dot_secret_out" in
|
|
28
|
+
export\ * | typeset\ * | unset\ *)
|
|
29
|
+
# Use process substitution instead of eval for safety
|
|
30
|
+
# shellcheck disable=SC1090
|
|
31
|
+
. /dev/stdin <<<"$_dot_secret_out"
|
|
32
|
+
;;
|
|
33
|
+
*)
|
|
34
|
+
# Ignore non-shell output
|
|
35
|
+
;;
|
|
36
|
+
esac
|
|
37
|
+
unset _dot_secret_out
|
|
38
|
+
done
|
|
39
|
+
|
|
40
|
+
unset _dot_secret_buckets _bucket
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
#!/usr/bin/env bash
|
|
2
|
+
# 🅳🅾🆃🅵🅸🅻🅴🆂 (v{{ .dotfiles_version }})
|
|
3
|
+
# FZF Shared Configuration for all shells (Zsh, Bash, Fish)
|
|
4
|
+
|
|
5
|
+
# Set FZF defaults to use 'fd' for speed and 'bat' for previews
|
|
6
|
+
export FZF_DEFAULT_COMMAND='fd --type f --strip-cwd-prefix --hidden --follow --exclude .git'
|
|
7
|
+
export FZF_CTRL_T_COMMAND="$FZF_DEFAULT_COMMAND"
|
|
8
|
+
|
|
9
|
+
# Sublime FZF Colors (Catppuccin Mocha)
|
|
10
|
+
export FZF_DEFAULT_OPTS="
|
|
11
|
+
--color=bg+:#313244,bg:#1e1e2e,spinner:#f5e0dc,hl:#f38ba8
|
|
12
|
+
--color=fg:#cdd6f4,header:#f38ba8,info:#cba6f7,pointer:#f5e0dc
|
|
13
|
+
--color=marker:#f5e0dc,fg+:#cdd6f4,prompt:#cba6f7,hl+:#f38ba8
|
|
14
|
+
--multi --layout=reverse --border --height=40%
|
|
15
|
+
--preview-window='right:60%:wrap'
|
|
16
|
+
--preview 'if [ -d {} ]; then eza --tree --level 2 --icons {} | head -200; else bat --style=numbers --color=always --line-range :500 {} 2>/dev/null || cat {} | head -500; fi'"
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
#!/usr/bin/env bash
|
|
2
|
+
# Copyright (c) 2015-2026 Dotfiles. All rights reserved.
|
|
3
|
+
|
|
4
|
+
# Set ls colors with GNU/BSD detection and caching
|
|
5
|
+
# GNU coreutils: LS_COLORS via dircolors
|
|
6
|
+
# BSD/macOS: LSCOLORS + CLICOLOR
|
|
7
|
+
|
|
8
|
+
_dircolors_cache="${XDG_CACHE_HOME:-$HOME/.cache}/shell/dircolors.sh"
|
|
9
|
+
|
|
10
|
+
_dircolors_cached_eval() {
|
|
11
|
+
local cmd="$1"
|
|
12
|
+
shift
|
|
13
|
+
if [ -f "$_dircolors_cache" ]; then
|
|
14
|
+
# shellcheck disable=SC1090
|
|
15
|
+
. "$_dircolors_cache"
|
|
16
|
+
else
|
|
17
|
+
mkdir -p "$(dirname "$_dircolors_cache")"
|
|
18
|
+
"$cmd" "$@" >"$_dircolors_cache" 2>/dev/null
|
|
19
|
+
# shellcheck disable=SC1090
|
|
20
|
+
. "$_dircolors_cache"
|
|
21
|
+
fi
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
if command -v dircolors >/dev/null 2>&1; then
|
|
25
|
+
if [ -f "${XDG_CONFIG_HOME:-$HOME/.config}/dircolors" ]; then
|
|
26
|
+
_dircolors_cached_eval dircolors -b "${XDG_CONFIG_HOME:-$HOME/.config}/dircolors"
|
|
27
|
+
else
|
|
28
|
+
_dircolors_cached_eval dircolors -b
|
|
29
|
+
fi
|
|
30
|
+
else
|
|
31
|
+
case "$(uname -s 2>/dev/null)" in
|
|
32
|
+
Darwin*)
|
|
33
|
+
export CLICOLOR=1
|
|
34
|
+
export LSCOLORS="ExFxCxDxBxegedabagacad"
|
|
35
|
+
if command -v gdircolors >/dev/null 2>&1; then
|
|
36
|
+
_dircolors_cached_eval gdircolors -b
|
|
37
|
+
fi
|
|
38
|
+
;;
|
|
39
|
+
esac
|
|
40
|
+
fi
|
|
41
|
+
|
|
42
|
+
unset -f _dircolors_cached_eval
|
|
43
|
+
unset _dircolors_cache
|
|
44
|
+
|
|
45
|
+
# Ensure LS_COLORS is set for Zsh completion when only LSCOLORS exists
|
|
46
|
+
if [ -z "${LS_COLORS:-}" ] && [ -n "${LSCOLORS:-}" ]; then
|
|
47
|
+
export LS_COLORS=""
|
|
48
|
+
fi
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
#!/usr/bin/env bash
|
|
2
|
+
|
|
3
|
+
# Core Functions (Generated by Chezmoi) - minimal set
|
|
4
|
+
|
|
5
|
+
{{- $globPattern := joinPath .chezmoi.sourceDir ".chezmoitemplates/functions/utils/*.sh" -}}
|
|
6
|
+
{{- $files := glob $globPattern -}}
|
|
7
|
+
{{- range $files -}}
|
|
8
|
+
{{- include . }}
|
|
9
|
+
{{- "\n" -}}
|
|
10
|
+
{{- end -}}
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
#!/usr/bin/env bash
|
|
2
|
+
|
|
3
|
+
# Extra Functions (Generated by Chezmoi) - loaded on demand
|
|
4
|
+
# Group-wise lazy loaders to reduce first-load cost.
|
|
5
|
+
|
|
6
|
+
{{ $root := . }}
|
|
7
|
+
{{ $groupsPath := joinPath $root.chezmoi.sourceDir ".chezmoitemplates/functions/groups.json" }}
|
|
8
|
+
{{ $groups := (fromJson (include $groupsPath)) }}
|
|
9
|
+
|
|
10
|
+
{{ range $group, $files := $groups }}
|
|
11
|
+
_dotfiles_load_group_{{ $group }}() {
|
|
12
|
+
unset -f _dotfiles_load_group_{{ $group }} 2>/dev/null
|
|
13
|
+
# shellcheck disable=SC1090
|
|
14
|
+
. /dev/stdin <<'__DOTFILES_EOF__'
|
|
15
|
+
{{ range $files }}
|
|
16
|
+
{{ $p := joinPath $root.chezmoi.sourceDir ".chezmoitemplates/functions" . }}
|
|
17
|
+
{{ include $p }}
|
|
18
|
+
|
|
19
|
+
{{ end }}
|
|
20
|
+
__DOTFILES_EOF__
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
{{ range $files }}
|
|
24
|
+
{{ $func := trimSuffix ".sh" (base .) }}
|
|
25
|
+
{{ $func }}() { _dotfiles_load_group_{{ $group }}; {{ $func }} "$@"; }
|
|
26
|
+
|
|
27
|
+
{{ end }}
|
|
28
|
+
{{ end }}
|
|
29
|
+
|
|
30
|
+
# Pueue Background Task Wrappers (2026 Strategy)
|
|
31
|
+
# Use these for long-running blocking tasks.
|
|
32
|
+
if command -v pueue >/dev/null 2>&1; then
|
|
33
|
+
# silent-run: Submit a command to pueue and forget about it.
|
|
34
|
+
silent-run() {
|
|
35
|
+
local cmd="$*"
|
|
36
|
+
if [[ -z "$cmd" ]]; then
|
|
37
|
+
echo "Usage: silent-run <command>"
|
|
38
|
+
return 1
|
|
39
|
+
fi
|
|
40
|
+
pueue add -- "$cmd"
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
# notify-run: Submit a command and notify when done.
|
|
44
|
+
notify-run() {
|
|
45
|
+
local cmd="$*"
|
|
46
|
+
if [[ -z "$cmd" ]]; then
|
|
47
|
+
echo "Usage: notify-run <command>"
|
|
48
|
+
return 1
|
|
49
|
+
fi
|
|
50
|
+
local task_id
|
|
51
|
+
task_id=$(pueue add --print-id -- "$cmd")
|
|
52
|
+
echo "Task $task_id submitted: $cmd"
|
|
53
|
+
(pueue wait "$task_id" && echo "✅ Task $task_id finished: $cmd") &!
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
# bg-upgrade: Background upgrade of all package managers.
|
|
57
|
+
bg-upgrade() {
|
|
58
|
+
echo "🚀 Starting background upgrades (Homebrew, Nix, Chezmoi)..."
|
|
59
|
+
if command -v brew >/dev/null; then silent-run "brew upgrade"; fi
|
|
60
|
+
if command -v nix >/dev/null; then silent-run "nix flake update"; fi
|
|
61
|
+
silent-run "chezmoi update"
|
|
62
|
+
echo "Check status with 'pueue status'"
|
|
63
|
+
}
|
|
64
|
+
fi
|
|
@@ -1,27 +1,112 @@
|
|
|
1
1
|
#!/usr/bin/env bash
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
2
|
+
## WARNING: Alias names must be unique across all alias source files in
|
|
3
|
+
## .chezmoitemplates/aliases/. Duplicates silently overwrite earlier
|
|
4
|
+
## definitions. Run the alias-conflict test to detect collisions.
|
|
5
|
+
##
|
|
6
|
+
## Core Aliases — Eager Load.
|
|
7
|
+
##
|
|
8
|
+
## High-frequency aliases loaded at shell startup (~40KB). Generated by Chezmoi
|
|
9
|
+
## from alias definition files in .chezmoitemplates/aliases/. Edit the source
|
|
10
|
+
## templates, not this file.
|
|
11
|
+
##
|
|
12
|
+
## # Data Flow
|
|
13
|
+
## .chezmoidata.toml (profile, buckets) → 90-ux-aliases.sh.tmpl → aliases
|
|
14
|
+
##
|
|
15
|
+
## # Chezmoi Variables
|
|
16
|
+
## | Variable | Default | Description |
|
|
17
|
+
## |----------|---------|-------------|
|
|
18
|
+
## | .aliases.profile | standard | minimal, standard, or full |
|
|
19
|
+
## | .aliases.buckets | all true | Enable/disable alias categories |
|
|
20
|
+
##
|
|
21
|
+
## # Core Categories (14)
|
|
22
|
+
## archives, cd, clear, configuration, default, diagnostics, disk-usage,
|
|
23
|
+
## editor, git, interactive, installer, mkdir, modern, ps, rsync, sudo, system
|
|
24
|
+
##
|
|
25
|
+
## # Platform Notes
|
|
26
|
+
## - macOS-specific aliases excluded from non-Darwin systems
|
|
27
|
+
## - Bash and Zsh compatible
|
|
28
|
+
##
|
|
29
|
+
## # Idempotency
|
|
30
|
+
## Safe to source multiple times. Aliases overwrite previous definitions.
|
|
5
31
|
if [ -n "${BASH_VERSION:-}" ]; then
|
|
6
32
|
shopt -s expand_aliases
|
|
7
33
|
fi
|
|
34
|
+
if [ -n "${ZSH_VERSION:-}" ]; then
|
|
35
|
+
setopt aliases
|
|
36
|
+
fi
|
|
8
37
|
|
|
9
|
-
{{ $coreCategories := list "cd" "clear" "configuration" "default" "diagnostics" "editor" "git" "interactive" "installer" "mkdir" "modern" "ps" "sudo" "compliance" -}}
|
|
38
|
+
{{ $coreCategories := list "archives" "cd" "clear" "configuration" "default" "diagnostics" "disk-usage" "editor" "git" "interactive" "installer" "mkdir" "modern" "ps" "rsync" "sudo" "system" "compliance" -}}
|
|
39
|
+
{{ $aliasProfile := lower (default "standard" (env "DOTFILES_ALIAS_PROFILE")) -}}
|
|
40
|
+
{{ $aliasBuckets := default (dict) .aliases.buckets -}}
|
|
10
41
|
{{ $globPattern := joinPath .chezmoi.sourceDir ".chezmoitemplates/aliases/**/*.aliases.sh" -}}
|
|
11
42
|
{{ $files := glob $globPattern -}}
|
|
12
43
|
{{ range $files -}}
|
|
13
44
|
{{ $name := . -}}
|
|
14
45
|
{{ $isCore := false -}}
|
|
46
|
+
{{ $bucketEnabled := true -}}
|
|
47
|
+
{{ if contains "/system/" $name -}}
|
|
48
|
+
{{ $bucketEnabled = default true (index $aliasBuckets "system") -}}
|
|
49
|
+
{{ end -}}
|
|
50
|
+
{{ if contains "/subversion/" $name -}}
|
|
51
|
+
{{ $bucketEnabled = default true (index $aliasBuckets "svn") -}}
|
|
52
|
+
{{ end -}}
|
|
53
|
+
{{ $isCoreMinimalExcluded := or (contains "/interactive/" $name) (contains "/sudo/" $name) -}}
|
|
54
|
+
{{ $includeByProfile := true -}}
|
|
55
|
+
{{ if and (eq $aliasProfile "minimal") $isCoreMinimalExcluded -}}
|
|
56
|
+
{{ $includeByProfile = false -}}
|
|
57
|
+
{{ end -}}
|
|
15
58
|
{{ range $coreCategories -}}
|
|
16
59
|
{{ if contains (printf "/%s/" .) $name -}}
|
|
17
60
|
{{ $isCore = true -}}
|
|
18
61
|
{{ end -}}
|
|
19
62
|
{{ end -}}
|
|
20
|
-
{{ if and $isCore (not (contains "/macOS/" $name)) }}
|
|
63
|
+
{{ if and $isCore (not (contains "/macOS/" $name)) (not (contains "/archives/" $name)) $includeByProfile $bucketEnabled }}
|
|
21
64
|
{{ include $name }}
|
|
22
65
|
{{ end -}}
|
|
23
66
|
{{ end }}
|
|
24
67
|
|
|
68
|
+
# Archive aliases loaded last among core aliases so extraction shortcuts
|
|
69
|
+
# take precedence over earlier generic shims.
|
|
70
|
+
{{- range $files -}}
|
|
71
|
+
{{- $name := . -}}
|
|
72
|
+
{{- if and (contains "/archives/" $name) (not (contains "/macOS/" $name)) }}
|
|
73
|
+
{{ include $name }}
|
|
74
|
+
{{- end -}}
|
|
75
|
+
{{- end }}
|
|
76
|
+
|
|
77
|
+
# Zsh fallback: if alias expansion is disabled, provide function shims.
|
|
78
|
+
_dotfiles_alias_shims() {
|
|
79
|
+
[[ -n "${_DOTFILES_ALIAS_SHIMS_LOADED:-}" ]] && return 0
|
|
80
|
+
_DOTFILES_ALIAS_SHIMS_LOADED=1
|
|
81
|
+
c() { clear_screen; }
|
|
82
|
+
q() { exit; }
|
|
83
|
+
e() { "${EDITOR:-nano}" "$@"; }
|
|
84
|
+
h() { history; }
|
|
85
|
+
l() { dot_ls "$@"; }
|
|
86
|
+
ll() { dot_ll "$@"; }
|
|
87
|
+
la() { dot_la "$@"; }
|
|
88
|
+
lt() { dot_lt "$@"; }
|
|
89
|
+
lr() { dot_lr "$@"; }
|
|
90
|
+
lra() { dot_lra "$@"; }
|
|
91
|
+
lta() { dot_lta "$@"; }
|
|
92
|
+
d() {
|
|
93
|
+
if command -v dot >/dev/null 2>&1; then
|
|
94
|
+
dot "$@"
|
|
95
|
+
elif command -v docker >/dev/null 2>&1; then
|
|
96
|
+
docker "$@"
|
|
97
|
+
fi
|
|
98
|
+
}
|
|
99
|
+
i() { command -v epoch >/dev/null 2>&1 && epoch "$@"; }
|
|
100
|
+
a() { command -v ai_core >/dev/null 2>&1 && ai_core query "$@"; }
|
|
101
|
+
_() { sudo "$@"; }
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
if [ -n "${ZSH_VERSION:-}" ]; then
|
|
105
|
+
if ! setopt | grep -q '^aliases$' || [[ "${DOTFILES_FORCE_ALIAS_SHIMS:-0}" == "1" ]]; then
|
|
106
|
+
_dotfiles_alias_shims
|
|
107
|
+
fi
|
|
108
|
+
fi
|
|
109
|
+
|
|
25
110
|
# OS-Specific Core Aliases
|
|
26
111
|
|
|
27
112
|
## macOS
|
|
@@ -6,18 +6,49 @@ if [ -n "${BASH_VERSION:-}" ]; then
|
|
|
6
6
|
shopt -s expand_aliases
|
|
7
7
|
fi
|
|
8
8
|
|
|
9
|
-
{{ $coreCategories := list "cd" "clear" "configuration" "default" "diagnostics" "editor" "git" "interactive" "installer" "mkdir" "modern" "ps" "sudo" "compliance" -}}
|
|
9
|
+
{{ $coreCategories := list "archives" "cd" "clear" "configuration" "default" "diagnostics" "disk-usage" "editor" "git" "interactive" "installer" "mkdir" "modern" "ps" "rsync" "sudo" "system" "compliance" -}}
|
|
10
|
+
{{ $aliasProfile := lower (default "standard" (env "DOTFILES_ALIAS_PROFILE")) -}}
|
|
11
|
+
{{ $ecosystems := lower (default "all" (env "DOTFILES_ALIAS_ECOSYSTEMS")) -}}
|
|
12
|
+
{{ $aliasBuckets := default (dict) .aliases.buckets -}}
|
|
10
13
|
{{ $globPattern := joinPath .chezmoi.sourceDir ".chezmoitemplates/aliases/**/*.aliases.sh" -}}
|
|
11
14
|
{{ $files := glob $globPattern -}}
|
|
12
15
|
{{ range $files -}}
|
|
13
16
|
{{ $name := . -}}
|
|
14
17
|
{{ $isCore := false -}}
|
|
18
|
+
{{ $bucketEnabled := true -}}
|
|
19
|
+
{{ if contains "/system/" $name -}}
|
|
20
|
+
{{ $bucketEnabled = default true (index $aliasBuckets "system") -}}
|
|
21
|
+
{{ end -}}
|
|
22
|
+
{{ if contains "/subversion/" $name -}}
|
|
23
|
+
{{ $bucketEnabled = default true (index $aliasBuckets "svn") -}}
|
|
24
|
+
{{ end -}}
|
|
25
|
+
{{ $isPython := contains "/python/" $name -}}
|
|
26
|
+
{{ $isNode := or (contains "/npm/" $name) (contains "/pnpm/" $name) (contains "/yarn/" $name) -}}
|
|
27
|
+
{{ $isRust := contains "/rust/" $name -}}
|
|
28
|
+
{{ $isNetwork := or (contains "/dig/" $name) (contains "/security/" $name) -}}
|
|
29
|
+
{{ $isLegacy := or (contains "/subversion/" $name) (contains "/vagrant/" $name) -}}
|
|
30
|
+
{{ $isEcosystem := or $isPython (or $isNode (or $isRust (or $isNetwork $isLegacy))) -}}
|
|
31
|
+
{{ $ecosystemEnabled := true -}}
|
|
32
|
+
{{ if not (eq $ecosystems "all") -}}
|
|
33
|
+
{{ $ecosystemEnabled = false -}}
|
|
34
|
+
{{ if and $isPython (contains "python" $ecosystems) -}}{{ $ecosystemEnabled = true -}}{{ end -}}
|
|
35
|
+
{{ if and $isNode (contains "node" $ecosystems) -}}{{ $ecosystemEnabled = true -}}{{ end -}}
|
|
36
|
+
{{ if and $isRust (contains "rust" $ecosystems) -}}{{ $ecosystemEnabled = true -}}{{ end -}}
|
|
37
|
+
{{ if and $isNetwork (contains "network" $ecosystems) -}}{{ $ecosystemEnabled = true -}}{{ end -}}
|
|
38
|
+
{{ if and $isLegacy (contains "legacy" $ecosystems) -}}{{ $ecosystemEnabled = true -}}{{ end -}}
|
|
39
|
+
{{ end -}}
|
|
40
|
+
{{ $isHeavy := or (contains "/security/" $name) (contains "/docker/" $name) (contains "/kubernetes/" $name) (contains "/terraform/" $name) (contains "/gcloud/" $name) -}}
|
|
41
|
+
{{ $isMinimalExcluded := or $isHeavy (contains "/ai/" $name) (contains "/benchmarks/" $name) -}}
|
|
42
|
+
{{ $includeByProfile := true -}}
|
|
43
|
+
{{ if and (eq $aliasProfile "minimal") $isMinimalExcluded -}}
|
|
44
|
+
{{ $includeByProfile = false -}}
|
|
45
|
+
{{ end -}}
|
|
15
46
|
{{ range $coreCategories -}}
|
|
16
47
|
{{ if contains (printf "/%s/" .) $name -}}
|
|
17
48
|
{{ $isCore = true -}}
|
|
18
49
|
{{ end -}}
|
|
19
50
|
{{ end -}}
|
|
20
|
-
{{ if and (not $isCore) (not (contains "/macOS/" $name)) }}
|
|
51
|
+
{{ if and (not $isCore) (not (contains "/macOS/" $name)) $includeByProfile (or (not $isEcosystem) $ecosystemEnabled) $bucketEnabled }}
|
|
21
52
|
{{ include $name }}
|
|
22
53
|
{{ end -}}
|
|
23
54
|
{{ end }}
|
|
@@ -25,11 +25,18 @@ brew "rename"
|
|
|
25
25
|
# Shell & Prompt
|
|
26
26
|
# -----------------------------------------------------------------------------
|
|
27
27
|
brew "zsh"
|
|
28
|
+
brew "nushell"
|
|
28
29
|
brew "starship"
|
|
29
30
|
brew "zoxide"
|
|
30
31
|
brew "atuin"
|
|
31
32
|
brew "direnv"
|
|
32
33
|
|
|
34
|
+
# -----------------------------------------------------------------------------
|
|
35
|
+
# Advanced Utilities
|
|
36
|
+
# -----------------------------------------------------------------------------
|
|
37
|
+
brew "pueue"
|
|
38
|
+
brew "wasmtime"
|
|
39
|
+
|
|
33
40
|
# -----------------------------------------------------------------------------
|
|
34
41
|
# Development
|
|
35
42
|
# -----------------------------------------------------------------------------
|
|
@@ -89,6 +96,7 @@ brew "fabric-ai"
|
|
|
89
96
|
# -----------------------------------------------------------------------------
|
|
90
97
|
# File & Text Processing
|
|
91
98
|
# -----------------------------------------------------------------------------
|
|
99
|
+
brew "yazi"
|
|
92
100
|
brew "hexyl"
|
|
93
101
|
brew "glow"
|
|
94
102
|
brew "gum"
|