@sebastienrousseau/dotfiles 0.2.499 → 0.2.501
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 +452 -0
- package/LICENSE +1283 -0
- package/README.md +322 -0
- package/docs/.vitepress/reports/localization-readability-audit.md +73 -0
- package/docs/AI.md +108 -0
- package/docs/CNAME +1 -0
- package/docs/COPYRIGHT +4 -3
- package/docs/NAMING_CONVENTIONS.md +102 -0
- package/docs/README.md +82 -0
- package/docs/_config.yml +59 -0
- package/docs/adr/ADR-001-ci-cd-pipeline.md +118 -0
- package/docs/adr/ADR-002-shell-performance.md +130 -0
- package/docs/adr/ADR-003-security-first.md +158 -0
- package/docs/adr/ADR-004-cli-architecture.md +171 -0
- package/docs/adr/ADR-005-chezmoi-choice.md +99 -0
- package/docs/adr/ADR-006-shell-selection.md +124 -0
- package/docs/adr/ADR-007-multi-shell-parity.md +62 -0
- package/docs/adr/ADR-008-alias-system-architecture.md +95 -0
- package/docs/adr/ADR-009-wallpaper-driven-theming.md +131 -0
- package/docs/adr/ADR-010-starship-transient-prompt.md +144 -0
- package/docs/adr/ADR-011-nushell-tier3-keep.md +144 -0
- package/docs/adr/README.md +39 -0
- package/docs/architecture/ARCHITECTURE.md +117 -0
- package/docs/architecture/INTEROP.md +44 -0
- package/docs/architecture/REPO_LAYOUT.md +241 -0
- package/docs/architecture/WALKTHROUGH.md +86 -0
- package/docs/architecture/fleet-deployment.md +77 -0
- package/docs/archive/EUXIS_2026_REVIEW.md +127 -0
- package/docs/archive/LEGACY_ROADMAP.md +160 -0
- package/docs/archive/MILESTONE_v0.2.493.md +47 -0
- package/docs/{PLAN.md → archive/PLAN.md} +50 -12
- package/docs/archive/REPO_AUDIT.md +31 -0
- package/docs/guides/INSTALL.md +144 -0
- package/docs/guides/NEOVIM_IDE_GUIDE.md +61 -0
- package/docs/guides/THEMING.md +230 -0
- package/docs/guides/TROUBLESHOOTING.md +176 -0
- package/docs/guides/WSL2_NIX_TROUBLESHOOTING.md +792 -0
- package/docs/index.md +43 -0
- package/docs/interop/A2A.md +39 -0
- package/docs/interop/POWERSHELL.md +102 -0
- package/docs/manual/00-introduction.md +89 -0
- package/docs/manual/01-concepts/01-architecture.md +138 -0
- package/docs/manual/01-concepts/02-trust-model.md +182 -0
- package/docs/manual/01-concepts/03-theme-engine.md +186 -0
- package/docs/manual/01-concepts/04-fleet.md +148 -0
- package/docs/manual/01-concepts/05-self-healing.md +204 -0
- package/docs/manual/02-tutorials/01-first-install.md +197 -0
- package/docs/manual/02-tutorials/02-add-wallpaper.md +216 -0
- package/docs/manual/02-tutorials/03-create-profile.md +244 -0
- package/docs/manual/02-tutorials/04-encrypt-secret.md +281 -0
- package/docs/manual/02-tutorials/05-deploy-fleet.md +283 -0
- package/docs/manual/03-reference/01-dot-cli.md +417 -0
- package/docs/manual/03-reference/02-config-files.md +265 -0
- package/docs/manual/03-reference/03-environment.md +124 -0
- package/docs/manual/03-reference/04-templates.md +190 -0
- package/docs/manual/03-reference/05-feature-flags.md +128 -0
- package/docs/manual/04-cookbook/01-recipes.md +285 -0
- package/docs/manual/04-cookbook/02-troubleshooting.md +351 -0
- package/docs/manual/04-cookbook/03-faq.md +175 -0
- package/docs/manual/05-appendices/A-platform-matrix.md +101 -0
- package/docs/manual/05-appendices/B-security-checklist.md +84 -0
- package/docs/manual/05-appendices/C-glossary.md +40 -0
- package/docs/manual/05-appendices/D-bibliography.md +58 -0
- package/docs/manual/05-appendices/E-license.md +38 -0
- package/docs/manual/_toc.yml +58 -0
- package/docs/manual/command-index.md +62 -0
- package/docs/manual/concept-index.md +168 -0
- package/docs/operations/ATTESTATION.md +44 -0
- package/docs/operations/CI_CADENCE.md +107 -0
- package/docs/operations/CI_COMPOSITES.md +156 -0
- package/docs/operations/COMPLETIONS.md +123 -0
- package/docs/operations/COVERAGE.md +148 -0
- package/docs/operations/DRIFT.md +107 -0
- package/docs/operations/MAINTENANCE.md +63 -0
- package/docs/operations/MIGRATION.md +109 -0
- package/docs/operations/OPERATIONS.md +188 -0
- package/docs/operations/PERFORMANCE.md +133 -0
- package/docs/operations/RELIABILITY.md +122 -0
- package/docs/{ROADMAP.md → operations/ROADMAP.md} +57 -39
- package/docs/operations/TESTING.md +199 -0
- package/docs/operations/TRACEABILITY.md +35 -0
- package/docs/operations/TRUSTED_AGENT_WORKSTATION.md +65 -0
- package/docs/operations/VERSION_SYNC.md +393 -0
- package/docs/reference/ALIASES.md +131 -0
- package/docs/reference/ALIASES_CHEATSHEET.md +32 -0
- package/docs/reference/ALIASES_DEPRECATIONS.md +13 -0
- package/docs/reference/FEATURES.md +66 -0
- package/docs/reference/FONTS.md +112 -0
- package/docs/reference/PROFILES.md +69 -0
- package/docs/reference/SCREENSHOTS.md +121 -0
- package/docs/reference/SCRIPTS.md +71 -0
- package/docs/reference/SUPPORT_MATRIX.md +80 -0
- package/docs/reference/THEMES.md +117 -0
- package/docs/reference/TOOLS.md +109 -0
- package/docs/reference/UTILS.md +155 -0
- package/docs/security/AI_ACT_COMPLIANCE.md +94 -0
- package/docs/security/AUDIT_BYPASS.md +103 -0
- package/docs/security/AUTOMATION_SECRETS.md +26 -0
- package/docs/security/CI_EGRESS_ALLOWLIST.md +127 -0
- package/docs/security/COMPLIANCE.md +458 -0
- package/docs/security/DEPS_DEV_EXCEPTIONS.md +86 -0
- package/docs/security/ENCRYPTION.md +57 -0
- package/docs/security/FMEA.md +159 -0
- package/docs/security/HISTORY_FILTERING.md +132 -0
- package/docs/security/INCIDENT_RESPONSE.md +579 -0
- package/docs/security/INSTALL_VERIFICATION.md +122 -0
- package/docs/security/KEYS.md +49 -0
- package/docs/security/KEY_ROTATION.md +223 -0
- package/docs/security/MCP_POLICY.md +78 -0
- package/docs/security/POLICY_RELEASES.md +37 -0
- package/docs/security/README.md +28 -0
- package/docs/security/SCORECARD.md +80 -0
- package/docs/security/SECRETS.md +158 -0
- package/docs/security/SECURITY.md +45 -0
- package/docs/security/SECURITY_CHECKLIST.md +55 -0
- package/docs/security/SHELL_EXEMPTIONS.md +145 -0
- package/docs/security/SOUP_REGISTER.md +36 -0
- package/docs/security/THREAT_MODEL.md +130 -0
- package/docs/security/VERIFICATION_VALIDATION.md +228 -0
- package/docs/themes/README.md +10 -0
- package/docs/themes/VISUAL_INTEGRITY_REPORT.md +30 -0
- package/docs/themes/hero-shot.svg +78 -0
- package/dot_config/.module-manifest.json +69 -0
- package/dot_config/ai/identity.md +23 -0
- package/dot_config/ai/patterns/architect.md +16 -0
- package/dot_config/ai/patterns/hardener.md +15 -0
- package/dot_config/ai/patterns/refactor.md +15 -0
- package/dot_config/aider/aider.conf.yml +32 -0
- package/dot_config/alacritty/alacritty.toml.tmpl +55 -0
- package/dot_config/ansible/ansible.cfg +11 -0
- package/dot_config/atuin/config.toml.tmpl +47 -0
- package/dot_config/bat/config +23 -0
- package/dot_config/brave-flags.conf.tmpl +7 -0
- package/dot_config/btop/btop.conf +16 -0
- package/dot_config/btop/themes/tokyonight.theme +34 -0
- package/dot_config/bun/bunfig.toml.tmpl +33 -0
- package/dot_config/claude/mcp_servers.json +20 -0
- package/dot_config/containers/containers.conf +14 -0
- package/dot_config/curl/dot_curlrc +18 -0
- package/dot_config/dlv/config.yml +39 -0
- package/dot_config/docker/config.json +15 -0
- package/dot_config/dotfiles/agent-card.json +29 -0
- package/dot_config/dotfiles/agent-profiles.json +92 -0
- package/dot_config/dotfiles/boot/README.md +13 -0
- package/dot_config/dotfiles/grub/README.md +13 -0
- package/dot_config/dotfiles/lock/README.md +13 -0
- package/dot_config/dotfiles/mcp-lock.json +33 -0
- package/dot_config/dotfiles/mcp-policy.json +52 -0
- package/dot_config/dotfiles/mcp-registry.json +47 -0
- package/dot_config/dotfiles/model-registry.json +20 -0
- package/dot_config/dotfiles/policy-bundles.json +38 -0
- package/dot_config/dotfiles/prompt-registry.json +16 -0
- package/dot_config/dotfiles/versions.env +18 -0
- package/dot_config/duf/duf.conf +6 -0
- package/dot_config/duti/defaults.duti +5 -0
- package/dot_config/emoji/emoji.txt +34 -0
- package/dot_config/environment.d/50-ssh-agent.conf +2 -0
- package/dot_config/environment.d/90-wayland.conf +19 -0
- package/dot_config/fastfetch/config.jsonc +28 -0
- package/dot_config/firefox/user.js.tmpl +58 -0
- package/dot_config/fish/completions/dot-theme-sync.fish.tmpl +9 -0
- package/dot_config/fish/completions/dot.fish.tmpl +115 -0
- package/dot_config/fish/conf.d/000-perf-cache.fish +56 -0
- package/dot_config/fish/conf.d/aliases.fish.tmpl +77 -0
- package/dot_config/fish/conf.d/env.fish.tmpl +48 -0
- package/dot_config/fish/conf.d/functions.fish.tmpl +22 -0
- package/dot_config/fish/conf.d/init.fish.tmpl +172 -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 +131 -0
- package/dot_config/fish/functions/_cached_eval_clear.fish +17 -0
- package/dot_config/fish/functions/als.fish +46 -0
- package/dot_config/fish/functions/bg-upgrade.fish +7 -0
- package/dot_config/fish/functions/c.fish +3 -0
- package/dot_config/fish/functions/cat.fish +9 -0
- package/dot_config/fish/functions/d.fish +7 -0
- package/dot_config/fish/functions/dot.fish +34 -0
- package/dot_config/fish/functions/h.fish +3 -0
- package/dot_config/fish/functions/l.fish +7 -0
- package/dot_config/fish/functions/la.fish +7 -0
- package/dot_config/fish/functions/ll.fish +7 -0
- package/dot_config/fish/functions/log_error.fish +13 -0
- package/dot_config/fish/functions/log_info.fish +13 -0
- package/dot_config/fish/functions/lr.fish +7 -0
- package/dot_config/fish/functions/lra.fish +7 -0
- package/dot_config/fish/functions/ls.fish +7 -0
- package/dot_config/fish/functions/lt.fish +7 -0
- package/dot_config/fish/functions/lta.fish +7 -0
- package/dot_config/fish/functions/notify-run.fish +11 -0
- package/dot_config/fish/functions/q.fish +3 -0
- package/dot_config/fish/functions/silent-run.fish +7 -0
- package/dot_config/fish/functions/yy.fish +8 -0
- package/dot_config/flatpak/flatpak.list +4 -0
- package/dot_config/fontconfig/fonts.conf.tmpl +57 -0
- package/dot_config/foot/foot.ini.tmpl +33 -0
- package/dot_config/fuzzel/fuzzel.ini.tmpl +18 -0
- package/dot_config/fzf/fzf.zsh +48 -0
- package/dot_config/gem/gemrc +9 -0
- package/dot_config/gh/config.yml +12 -0
- package/dot_config/ghostty/config.tmpl +165 -0
- package/dot_config/git/allowed_signers.tmpl +18 -0
- package/dot_config/git/attributes +12 -0
- package/dot_config/git/commit-template +10 -0
- package/dot_config/git/hooks/executable_commit-msg +146 -0
- package/dot_config/git/ignore +27 -0
- package/dot_config/gnupg/gpg-agent.conf +11 -0
- package/dot_config/go/golangci.yml +118 -0
- package/dot_config/go/gopls.json +30 -0
- package/dot_config/goose/config.yaml +29 -0
- package/dot_config/gtk-3.0/gtk.css.tmpl +184 -0
- package/dot_config/gtk-3.0/settings.ini.tmpl +27 -0
- package/dot_config/gtk-4.0/gtk.css.tmpl +252 -0
- package/dot_config/gtk-4.0/settings.ini.tmpl +18 -0
- package/dot_config/htop/htoprc +20 -0
- package/dot_config/inputrc +2 -0
- package/dot_config/ipython/profile_default/ipython_config.py +19 -0
- package/dot_config/just/justfile +122 -0
- package/dot_config/k9s/config.yaml +65 -0
- package/dot_config/k9s/skins/catppuccin-mocha.yaml +116 -0
- package/dot_config/kanshi/config.tmpl +22 -0
- package/dot_config/karabiner/karabiner.json +14 -0
- package/dot_config/kitty/kitty.conf.tmpl +53 -0
- package/dot_config/lazydocker/config.yml +186 -0
- package/dot_config/lazygit/config.yml +35 -0
- package/dot_config/mako/config +47 -0
- package/dot_config/mas/masapps.txt +5 -0
- package/dot_config/micro/settings.json +3 -0
- package/dot_config/mimeapps.list +77 -0
- package/dot_config/minikube/config.json +13 -0
- package/dot_config/mise/config.toml +99 -0
- package/dot_config/mongosh/mongoshrc.js +68 -0
- package/dot_config/mpv/input.conf +47 -0
- package/dot_config/mpv/mpv.conf +47 -0
- package/dot_config/mycli/myclirc +67 -0
- package/dot_config/nano/nanorc +28 -0
- package/dot_config/ncdu/config +12 -0
- package/dot_config/niri/config.kdl.tmpl +327 -0
- package/dot_config/nushell/aliases.nu +18 -0
- package/dot_config/nushell/cached_eval.nu +80 -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 +102 -0
- package/dot_config/nushell/functions.nu.tmpl +17 -0
- package/dot_config/nvim/init.lua +18 -0
- package/dot_config/nvim/lazy-lock.json +58 -0
- package/dot_config/nvim/lua/config/autocmds.lua +107 -0
- package/dot_config/nvim/lua/config/keymaps.lua +92 -0
- package/dot_config/nvim/lua/config/lazy.lua +44 -0
- package/dot_config/nvim/lua/config/options.lua +49 -0
- package/dot_config/nvim/lua/plugins/ai.lua +75 -0
- package/dot_config/nvim/lua/plugins/coding.lua +216 -0
- package/dot_config/nvim/lua/plugins/completion.lua +60 -0
- package/dot_config/nvim/lua/plugins/dap.lua +412 -0
- package/dot_config/nvim/lua/plugins/editor.lua +55 -0
- package/dot_config/nvim/lua/plugins/git.lua +10 -0
- package/dot_config/nvim/lua/plugins/lsp.lua +156 -0
- package/dot_config/nvim/lua/plugins/markdown.lua +18 -0
- package/dot_config/nvim/lua/plugins/rust.lua +34 -0
- package/dot_config/nvim/lua/plugins/sessions.lua +33 -0
- package/dot_config/nvim/lua/plugins/ui.lua +509 -0
- package/dot_config/paru/paru.conf +10 -0
- package/dot_config/pip/pip.conf.tmpl +32 -0
- package/dot_config/powershell/Microsoft.PowerShell_profile.ps1.tmpl +81 -0
- package/dot_config/pueue/pueue.yml +34 -0
- package/dot_config/pypoetry/config.toml +6 -0
- package/dot_config/pyrightconfig.json +5 -0
- package/dot_config/raycast/README.md +13 -0
- package/dot_config/redis/redisclirc +41 -0
- package/dot_config/ripgrep/ripgreprc +21 -0
- package/dot_config/shell/00-core-paths.sh.tmpl +134 -0
- package/dot_config/shell/05-core-safety.sh +48 -0
- package/dot_config/shell/10-secrets.sh +41 -0
- package/dot_config/shell/40-fzf-defaults.sh.tmpl +17 -0
- package/dot_config/shell/40-ls-colors.sh +49 -0
- package/dot_config/shell/50-logic-functions-core.sh.tmpl +11 -0
- package/dot_config/shell/50-logic-functions.sh.tmpl +11 -0
- package/dot_config/shell/51-logic-functions-extra.sh.tmpl +65 -0
- package/dot_config/shell/90-ux-aliases.sh.tmpl +121 -0
- package/dot_config/shell/91-ux-aliases-lazy.sh.tmpl +55 -0
- package/dot_config/shell/Brewfile +207 -0
- package/dot_config/shell/Brewfile.cask +92 -0
- package/dot_config/shell/Brewfile.cli +127 -0
- package/dot_config/shell/README.md +284 -0
- package/dot_config/shell/als_data.txt.tmpl +65 -0
- package/dot_config/shell/custom/auto_ls.zsh +20 -0
- package/dot_config/shell/custom/context_suggest.zsh +68 -0
- package/dot_config/shell/custom/error_analysis.zsh +45 -0
- package/dot_config/sops/dot_sops.yaml +23 -0
- package/dot_config/starship.toml.tmpl +202 -0
- package/dot_config/swaylock/config +43 -0
- package/dot_config/systemd/user/dotfiles-maintenance.service +8 -0
- package/dot_config/systemd/user/dotfiles-maintenance.timer +11 -0
- package/dot_config/systemd/user/pueued.service +12 -0
- package/dot_config/systemd/user/ssh-agent.service +12 -0
- package/dot_config/task/Taskfile.yml +86 -0
- package/dot_config/tflint/tflint.hcl +9 -0
- package/dot_config/tmux/tmux.conf.tmpl +223 -0
- package/dot_config/topgrade.toml.tmpl +54 -0
- package/dot_config/user-dirs.dirs +10 -0
- package/dot_config/vscode/extensions.txt +11 -0
- package/dot_config/vscode/settings.json.tmpl +82 -0
- package/dot_config/waybar/config.jsonc.tmpl +90 -0
- package/dot_config/waybar/style.css.tmpl +211 -0
- package/dot_config/wezterm/wezterm.lua.tmpl +64 -0
- package/dot_config/wget/wgetrc +12 -0
- package/dot_config/xdg-desktop-portal/niri-portals.conf +5 -0
- package/dot_config/yarn/yarnrc.yml +36 -0
- package/dot_config/yazi/keymap.toml +67 -0
- package/dot_config/yazi/theme.toml +102 -0
- package/dot_config/yazi/yazi.toml +40 -0
- package/dot_config/zathura/zathurarc +52 -0
- package/dot_config/zellij/config.kdl.tmpl +79 -0
- package/dot_config/zsh/dot_zprofile +7 -0
- package/dot_config/zsh/dot_zshenv +5 -0
- package/dot_config/zsh/dot_zshrc.tmpl +635 -0
- package/dot_config/zsh/rc.d/00-alias-shims.zsh +99 -0
- package/dot_config/zsh/rc.d/05-ssh-agent.zsh +18 -0
- package/dot_config/zsh/rc.d/10-env.zsh.tmpl +28 -0
- package/dot_config/zsh/rc.d/20-zinit.zsh +65 -0
- package/dot_config/zsh/rc.d/30-options.zsh.tmpl +214 -0
- package/dot_config/zsh/rc.d/40-bell.zsh +20 -0
- package/dot_config/zsh/rc.d/50-login-fortune.zsh +9 -0
- package/dot_config/zsh/rc.d/99-alias-wrapper.zsh +32 -0
- package/dot_local/bin/executable_ai-update +195 -0
- package/dot_local/bin/executable_ai_core +152 -0
- package/dot_local/bin/executable_antigravity +11 -0
- package/dot_local/bin/executable_b64 +84 -0
- package/dot_local/bin/executable_bm +79 -0
- package/dot_local/bin/executable_cb +39 -0
- package/dot_local/bin/executable_dot +596 -0
- package/dot_local/bin/executable_dot-ai +36 -0
- package/dot_local/bin/executable_dot-bootstrap +77 -0
- package/dot_local/bin/executable_dot-launch-or-focus +52 -0
- package/dot_local/bin/executable_dot-load-benchmark +31 -0
- package/dot_local/bin/executable_dot-load-benchmark-pty +77 -0
- package/dot_local/bin/executable_dot-theme-sync +952 -0
- package/dot_local/bin/executable_dot_completion +57 -0
- package/dot_local/bin/executable_dtags +28 -0
- package/dot_local/bin/executable_epoch +67 -0
- package/dot_local/bin/executable_extract +41 -0
- package/dot_local/bin/executable_gbd +52 -0
- package/dot_local/bin/executable_gd +42 -0
- package/dot_local/bin/executable_git-ai-commit +175 -0
- package/dot_local/bin/executable_git-ai-diff +169 -0
- package/dot_local/bin/executable_gl +101 -0
- package/dot_local/bin/executable_hash +161 -0
- package/dot_local/bin/executable_hashsum +160 -0
- package/dot_local/bin/executable_hex +115 -0
- package/dot_local/bin/executable_jsonv +78 -0
- package/dot_local/bin/executable_jwt +94 -0
- package/dot_local/bin/executable_kill-port +75 -0
- package/dot_local/bin/executable_lorem +118 -0
- package/dot_local/bin/executable_mkscript +35 -0
- package/dot_local/bin/executable_monitor +56 -0
- package/dot_local/bin/executable_myip +51 -0
- package/dot_local/bin/executable_notify +24 -0
- package/dot_local/bin/executable_open +38 -0
- package/dot_local/bin/executable_pw +27 -0
- package/dot_local/bin/executable_rec-start +46 -0
- package/dot_local/bin/executable_rec-stop +35 -0
- package/dot_local/bin/executable_regex +132 -0
- package/dot_local/bin/executable_start-niri +8 -0
- package/dot_local/bin/executable_tmux-sessionizer +314 -0
- package/dot_local/bin/executable_tour +177 -0
- package/dot_local/bin/executable_up +23 -0
- package/dot_local/bin/executable_update +142 -0
- package/dot_local/bin/executable_uuid +87 -0
- package/dot_local/bin/executable_win +32 -0
- package/dot_local/bin/executable_yamlv +57 -0
- package/dot_local/share/bash-completion/completions/dot +72 -0
- package/dot_local/share/icons/hicolor/128x128/apps/rousseau.png +0 -0
- package/dot_local/share/icons/hicolor/16x16/apps/rousseau.png +0 -0
- package/dot_local/share/icons/hicolor/24x24/apps/rousseau.png +0 -0
- package/dot_local/share/icons/hicolor/256x256/apps/rousseau.png +0 -0
- package/dot_local/share/icons/hicolor/32x32/apps/rousseau.png +0 -0
- package/dot_local/share/icons/hicolor/48x48/apps/rousseau.png +0 -0
- package/dot_local/share/icons/hicolor/512x512/apps/rousseau.png +0 -0
- package/dot_local/share/icons/hicolor/64x64/apps/rousseau.png +0 -0
- package/dot_local/share/icons/hicolor/96x96/apps/rousseau.png +0 -0
- package/dot_local/share/icons/hicolor/scalable/apps/rousseau.png +0 -0
- package/dot_local/share/man/man1/dot.1 +149 -0
- package/dot_local/share/mise/plugins/kiro-cli/bin/executable_download +64 -0
- package/dot_local/share/mise/plugins/kiro-cli/bin/executable_install +18 -0
- package/dot_local/share/mise/plugins/kiro-cli/bin/executable_list-all +13 -0
- package/dot_local/share/wayland-sessions/niri.desktop.tmpl +6 -0
- package/dot_local/share/zsh/completions/.keep +0 -0
- package/dot_local/share/zsh/completions/_dot +283 -0
- package/install.sh +350 -0
- package/package.json +1 -1
- package/scripts/ci/check-copyright-headers.sh +96 -0
- package/scripts/ci/check-dangerous-chmod.sh +19 -0
- package/scripts/ci/check-deps-dev.sh +236 -0
- package/scripts/ci/check-insecure-tls.sh +61 -0
- package/scripts/ci/check-regression-traceability.sh +67 -0
- package/scripts/ci/check-shell-preamble.sh +106 -0
- package/scripts/ci/guard-gitleaks-checkout.sh +57 -0
- package/scripts/ci/install-chezmoi-verified.sh +64 -0
- package/scripts/ci/run-coverage.sh +362 -0
- package/scripts/ci/validate-chezmoidata.sh +25 -0
- package/scripts/ci/validate-ci-config.sh +224 -0
- package/scripts/demo/record.sh +42 -0
- package/scripts/diagnostics/a2a-conformance.sh +162 -0
- package/scripts/diagnostics/alias-governance.sh +137 -0
- package/scripts/diagnostics/aliases-cheatsheet.sh +73 -0
- package/scripts/diagnostics/aliases-manifest.sh +31 -0
- package/scripts/diagnostics/benchmark.sh +381 -0
- package/scripts/diagnostics/conflicts.sh +72 -0
- package/scripts/diagnostics/doctor-unified.sh +38 -0
- package/scripts/diagnostics/doctor.sh +709 -0
- package/scripts/diagnostics/drift-dashboard.sh +201 -0
- package/scripts/diagnostics/health.sh +614 -0
- package/scripts/diagnostics/history-analysis.sh +85 -0
- package/scripts/diagnostics/mcp-doctor.sh +575 -0
- package/scripts/diagnostics/perf.sh +452 -0
- package/scripts/diagnostics/scorecard.sh +118 -0
- package/scripts/diagnostics/secret-governance.sh +58 -0
- package/scripts/diagnostics/security-score.sh +438 -0
- package/scripts/diagnostics/smoke-test.sh +87 -0
- package/scripts/diagnostics/snapshot.sh +89 -0
- package/scripts/diagnostics/verify.sh +107 -0
- package/scripts/{verify_state.sh → diagnostics/verify_state.sh} +22 -22
- package/scripts/diagnostics/version-locks.sh +79 -0
- package/scripts/diagnostics/workstation-attestation.sh +186 -0
- package/scripts/docs/build-manual.sh +883 -0
- package/scripts/docs/check-manual.sh +213 -0
- package/scripts/dot/commands/agent.sh +474 -0
- package/scripts/dot/commands/ai.sh +481 -0
- package/scripts/dot/commands/aliases.sh +250 -0
- package/scripts/dot/commands/appearance.sh +80 -0
- package/scripts/dot/commands/core.sh +185 -0
- package/scripts/dot/commands/diagnostics.sh +229 -0
- package/scripts/dot/commands/fleet.sh +399 -0
- package/scripts/dot/commands/lint.sh +177 -0
- package/scripts/dot/commands/manual.sh +168 -0
- package/scripts/dot/commands/meta.sh +248 -0
- package/scripts/dot/commands/patterns.sh +54 -0
- package/scripts/dot/commands/restore.sh +231 -0
- package/scripts/dot/commands/secrets.sh +223 -0
- package/scripts/dot/commands/security.sh +76 -0
- package/scripts/dot/commands/tools.sh +469 -0
- package/scripts/dot/data/alias-deprecations.tsv +2 -0
- package/scripts/dot/lib/bento.sh +50 -0
- package/scripts/dot/lib/log.sh +200 -0
- package/scripts/dot/lib/platform.sh +99 -0
- package/scripts/dot/lib/ui.sh +518 -0
- package/scripts/dot/lib/utils.sh +377 -0
- package/scripts/fonts/install-nerd-fonts.sh +68 -0
- package/scripts/fonts/patch-fonts.sh +35 -0
- package/scripts/git-hooks/install.sh +11 -0
- package/scripts/git-hooks/pre-commit +12 -0
- package/scripts/git-hooks/pre-commit-audit.sh +145 -0
- package/scripts/git-hooks/pre-push +92 -0
- package/scripts/git-hooks/prepare-commit-msg +29 -0
- package/scripts/lib/secrets_provider.sh +158 -0
- package/scripts/maintenance/check-updates.sh +131 -0
- package/scripts/ops/ai-setup.sh +55 -0
- package/scripts/ops/bundle.sh +77 -0
- package/scripts/ops/chaos.sh +49 -0
- package/scripts/ops/chezmoi-apply.sh +270 -0
- package/scripts/ops/chezmoi-diff.sh +15 -0
- package/scripts/ops/chezmoi-remove.sh +45 -0
- package/scripts/ops/chezmoi-update.sh +48 -0
- package/scripts/ops/heal-chezmoi.sh +86 -0
- package/scripts/ops/heal-system.sh +128 -0
- package/scripts/ops/heal-tools.sh +340 -0
- package/scripts/ops/heal.sh +222 -0
- package/scripts/ops/post-apply-repair.sh +106 -0
- package/scripts/ops/prewarm.sh +127 -0
- package/scripts/ops/release.sh +252 -0
- package/scripts/ops/rollback.sh +589 -0
- package/scripts/ops/setup.sh +137 -0
- package/scripts/ops/teleport.sh +33 -0
- package/scripts/qa/coverage-baseline.sh +60 -0
- package/scripts/qa/docs-coverage.sh +111 -0
- package/scripts/qa/powershell-contract.ps1 +95 -0
- package/scripts/qa/reliability-audit.sh +138 -0
- package/scripts/qa/traceability-coverage.sh +116 -0
- package/scripts/qa/validate-examples.sh +26 -0
- package/scripts/qa/wsl-contract.sh +11 -0
- package/scripts/release/package-policy-bundles.sh +125 -0
- package/scripts/secrets/age-init.sh +70 -0
- package/scripts/secrets/create-secrets-file.sh +45 -0
- package/scripts/secrets/encrypt-ssh-key.sh +43 -0
- package/scripts/security/backup.sh +57 -0
- package/scripts/security/dns-doh.sh +51 -0
- package/scripts/security/encryption-check.sh +54 -0
- package/scripts/security/enforce-policies.sh +334 -0
- package/scripts/security/firewall.sh +90 -0
- package/scripts/security/lock-configs.sh +57 -0
- package/scripts/security/lock-screen.sh +55 -0
- package/scripts/security/manage-secrets.sh +428 -0
- package/scripts/security/ssh-cert.sh +203 -0
- package/scripts/security/telemetry-kill.sh +50 -0
- package/scripts/security/usb-safety.sh +51 -0
- package/scripts/theme/apply-gnome-theme.sh +328 -0
- package/scripts/theme/extract-theme.py +677 -0
- package/scripts/theme/install-boot-logo.sh +62 -0
- package/scripts/theme/install-catppuccin-themes.sh +370 -0
- package/scripts/theme/install-cursors.sh +25 -0
- package/scripts/theme/install-file-icons.sh +26 -0
- package/scripts/theme/install-grub-theme.sh +61 -0
- package/scripts/theme/install-lock-icon.sh +30 -0
- package/scripts/theme/merge-wallpaper.sh +145 -0
- package/scripts/theme/rebuild-themes.sh +309 -0
- package/scripts/theme/switch.sh +431 -0
- package/scripts/theme/wallpaper-rotate.sh +136 -0
- package/scripts/theme/wallpaper-sync.sh +397 -0
- package/scripts/tools/cmatrix.sh +21 -0
- package/scripts/{detect-collisions.py → tools/detect-collisions.py} +2 -2
- package/scripts/tools/emoji-picker.sh +48 -0
- package/scripts/tools/figlet-banner.sh +18 -0
- package/scripts/tools/log-rotate.sh +30 -0
- package/scripts/tools/lolcat-wrap.sh +19 -0
- package/scripts/tools/pipes.sh +48 -0
- package/scripts/tuning/linux.sh +185 -0
- package/scripts/tuning/macos.sh +55 -0
- package/scripts/uninstall.sh +85 -0
- package/scripts/version-sync.sh +487 -0
- package/templates/chezmoi-data/geekom-a9.toml.example +21 -0
- package/templates/chezmoi-data/mac-m1.toml.example +16 -0
- package/templates/chezmoi-data/mac-t2-linux.toml.example +21 -0
- package/templates/chezmoi-data/surface-pro-7p.toml.example +21 -0
- package/templates/projects/go/.github/workflows/ci.yml +31 -0
- package/templates/projects/go/README.md +4 -0
- package/templates/projects/go/cmd/__PROJECT_NAME__/main.go +1 -0
- package/templates/projects/go/go.sum +0 -0
- package/templates/projects/molecule/README.md +7 -0
- package/templates/projects/molecule/converge.yml +7 -0
- package/templates/projects/molecule/molecule.yml +16 -0
- package/templates/projects/node/.github/workflows/ci.yml +30 -0
- package/templates/projects/node/README.md +4 -0
- package/templates/projects/node/package-lock.json +12 -0
- package/templates/projects/node/src/index.js +1 -0
- package/templates/projects/packer/README.md +15 -0
- package/templates/projects/packer/main.pkr.hcl +15 -0
- package/templates/projects/python/.github/workflows/ci.yml +34 -0
- package/templates/projects/python/README.md +4 -0
- package/templates/projects/python/pyproject.toml +15 -0
- package/templates/projects/python/src/__PROJECT_NAME__/__init__.py +1 -0
- package/templates/projects/python/tests/test_basic.py +1 -0
- package/docs/ARCHITECTURE.md +0 -62
- package/docs/COMPLIANCE.md +0 -47
- package/docs/OPERATIONS.md +0 -103
- package/docs/PR_DESCRIPTION.md +0 -150
- package/docs/ROADMAP_legacy.md +0 -556
- package/docs/SECURITY_CHECKLIST.md +0 -25
- package/docs/TASK.md +0 -99
- package/docs/WALKTHROUGH.md +0 -46
- package/scripts/backup.sh +0 -142
- package/scripts/banner.sh +0 -20
- package/scripts/benchmark.sh +0 -20
- package/scripts/build.sh +0 -41
- package/scripts/clean.sh +0 -31
- package/scripts/compile.sh +0 -54
- package/scripts/copy.sh +0 -108
- package/scripts/doctor.sh +0 -79
- package/scripts/dotfiles.sh +0 -63
- package/scripts/download.sh +0 -35
- package/scripts/help.sh +0 -57
- package/scripts/lock-configs.sh +0 -57
- package/scripts/package.sh +0 -46
- package/scripts/ssh.sh +0 -55
- package/scripts/teleport.sh +0 -23
- package/scripts/test-aliases.sh +0 -25
- package/scripts/test_smoke.sh +0 -88
- package/scripts/unpack.sh +0 -28
package/docs/README.md
ADDED
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
---
|
|
2
|
+
render_with_liquid: false
|
|
3
|
+
---
|
|
4
|
+
|
|
5
|
+
# Documentation
|
|
6
|
+
|
|
7
|
+
Start here. Then go deeper.
|
|
8
|
+
|
|
9
|
+
## The Manual
|
|
10
|
+
|
|
11
|
+
The complete reference is the `.dotfiles` Manual — a multi-format book covering every concept, tutorial, reference, and recipe.
|
|
12
|
+
|
|
13
|
+
- Online: <https://sebastienrousseau.github.io/dotfiles/manual/> (HTML, PDF, EPUB, ASCII)
|
|
14
|
+
- Locally: `dot manual` opens the HTML in your browser
|
|
15
|
+
- Sources: [`docs/manual/`](manual/)
|
|
16
|
+
|
|
17
|
+
Quick jumps into the Manual:
|
|
18
|
+
|
|
19
|
+
- [Introduction](manual/00-introduction.md) — who, what, how
|
|
20
|
+
- [Concepts](manual/01-concepts/) — architecture, trust model, theme engine, fleet, self-healing
|
|
21
|
+
- [Tutorials](manual/02-tutorials/) — first install, wallpaper→theme, profiles, secrets, fleet
|
|
22
|
+
- [Reference](manual/03-reference/) — CLI, config files, environment, templates, feature flags
|
|
23
|
+
- [Cookbook](manual/04-cookbook/) — 40+ recipes, troubleshooting, FAQ
|
|
24
|
+
|
|
25
|
+
## Start
|
|
26
|
+
|
|
27
|
+
- [Install](guides/INSTALL.md)
|
|
28
|
+
- [Troubleshooting](guides/TROUBLESHOOTING.md)
|
|
29
|
+
- [Support matrix](reference/SUPPORT_MATRIX.md)
|
|
30
|
+
|
|
31
|
+
## Daily use
|
|
32
|
+
|
|
33
|
+
- [Utilities and `dot` CLI](reference/UTILS.md)
|
|
34
|
+
- [Operations](operations/OPERATIONS.md)
|
|
35
|
+
- [Trusted agent workstation](operations/TRUSTED_AGENT_WORKSTATION.md)
|
|
36
|
+
- [Workstation attestation](operations/ATTESTATION.md)
|
|
37
|
+
- [Interoperability](architecture/INTEROP.md)
|
|
38
|
+
- [Agent interoperability](interop/A2A.md)
|
|
39
|
+
- [AI integrations](AI.md)
|
|
40
|
+
|
|
41
|
+
## Security and trust
|
|
42
|
+
|
|
43
|
+
- [Security overview](security/SECURITY.md)
|
|
44
|
+
- [Security checklist](security/SECURITY_CHECKLIST.md)
|
|
45
|
+
- [Policy bundle releases](security/POLICY_RELEASES.md)
|
|
46
|
+
- [Secrets](security/SECRETS.md)
|
|
47
|
+
- [Compliance](security/COMPLIANCE.md)
|
|
48
|
+
- [Threat model](security/THREAT_MODEL.md)
|
|
49
|
+
|
|
50
|
+
## Build and maintain
|
|
51
|
+
|
|
52
|
+
- [Testing](operations/TESTING.md)
|
|
53
|
+
- [Reliability](operations/RELIABILITY.md)
|
|
54
|
+
- [Naming conventions](NAMING_CONVENTIONS.md)
|
|
55
|
+
- [Architecture](architecture/ARCHITECTURE.md)
|
|
56
|
+
- [Repository layout](architecture/REPO_LAYOUT.md)
|
|
57
|
+
- [Architecture decisions](adr/README.md)
|
|
58
|
+
|
|
59
|
+
## Repository map
|
|
60
|
+
|
|
61
|
+
| Path | Purpose |
|
|
62
|
+
| :--- | :--- |
|
|
63
|
+
| `docs/` | Guides, reference, security, and architecture |
|
|
64
|
+
| `scripts/` | Repo-only scripts and `dot` command internals |
|
|
65
|
+
| `install/` | Installer and provisioning helpers |
|
|
66
|
+
| `dot_config/` | Managed user configuration files |
|
|
67
|
+
| `dot_local/` | Managed local executables |
|
|
68
|
+
| `examples/` | Executable examples |
|
|
69
|
+
| `tests/` | Unit, integration, and framework coverage |
|
|
70
|
+
|
|
71
|
+
## Platform guides
|
|
72
|
+
|
|
73
|
+
- [WSL2 and Nix](guides/WSL2_NIX_TROUBLESHOOTING.md)
|
|
74
|
+
- [Neovim IDE](guides/NEOVIM_IDE_GUIDE.md)
|
|
75
|
+
|
|
76
|
+
## Reference
|
|
77
|
+
|
|
78
|
+
- [Features](reference/FEATURES.md)
|
|
79
|
+
- [Tools](reference/TOOLS.md)
|
|
80
|
+
- [Aliases](reference/ALIASES.md)
|
|
81
|
+
- [Roadmap](operations/ROADMAP.md)
|
|
82
|
+
- [Version sync](operations/VERSION_SYNC.md)
|
package/docs/_config.yml
ADDED
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
title: ".dotfiles"
|
|
2
|
+
description: "Cross-platform, signed, local-first dotfiles for macOS, Linux, and WSL — published at doc.dotfiles.io."
|
|
3
|
+
url: "https://doc.dotfiles.io"
|
|
4
|
+
baseurl: ""
|
|
5
|
+
|
|
6
|
+
# Jekyll renders this site from docs/ — see .github/workflows/pages.yml.
|
|
7
|
+
# Theme is the GitHub-hosted Cayman skin (zero-Gemfile setup); switch to
|
|
8
|
+
# `remote_theme: just-the-docs/just-the-docs` later if a richer
|
|
9
|
+
# navigation/search UX is wanted (requires plugin allowlist update on
|
|
10
|
+
# GH Pages side).
|
|
11
|
+
theme: jekyll-theme-cayman
|
|
12
|
+
|
|
13
|
+
plugins:
|
|
14
|
+
- jekyll-relative-links
|
|
15
|
+
- jekyll-seo-tag
|
|
16
|
+
- jekyll-sitemap
|
|
17
|
+
- jekyll-redirect-from
|
|
18
|
+
# Renders `README.md` as the directory index where present (matches
|
|
19
|
+
# the GitHub-browse experience for users coming from the repo links
|
|
20
|
+
# in docs/index.md).
|
|
21
|
+
- jekyll-readme-index
|
|
22
|
+
|
|
23
|
+
relative_links:
|
|
24
|
+
enabled: true
|
|
25
|
+
collections: true
|
|
26
|
+
|
|
27
|
+
# Treat *.md as pages so cross-page links work without trailing-slash
|
|
28
|
+
# kludges; include CNAME so the published artifact preserves it across
|
|
29
|
+
# workflow deploys.
|
|
30
|
+
include:
|
|
31
|
+
- CNAME
|
|
32
|
+
- .well-known
|
|
33
|
+
|
|
34
|
+
exclude:
|
|
35
|
+
- "*.tmpl"
|
|
36
|
+
- "manual/_toc.yml"
|
|
37
|
+
- "scripts/"
|
|
38
|
+
- "Gemfile"
|
|
39
|
+
- "Gemfile.lock"
|
|
40
|
+
- "vendor/"
|
|
41
|
+
|
|
42
|
+
markdown: kramdown
|
|
43
|
+
kramdown:
|
|
44
|
+
input: GFM
|
|
45
|
+
syntax_highlighter: rouge
|
|
46
|
+
hard_wrap: false
|
|
47
|
+
|
|
48
|
+
# Many of our docs include chezmoi/Go-template snippets like
|
|
49
|
+
# `{{ .variable }}` inside fenced code blocks. Liquid runs BEFORE
|
|
50
|
+
# kramdown sees those fences and would try to resolve the placeholders
|
|
51
|
+
# as Liquid expressions (silently dropping them from the output). Each
|
|
52
|
+
# .md file therefore carries explicit `render_with_liquid: false` in
|
|
53
|
+
# its frontmatter — a site-wide default in this block was not honored
|
|
54
|
+
# reliably, so we keep the kill-switch per-page instead.
|
|
55
|
+
defaults:
|
|
56
|
+
- scope:
|
|
57
|
+
path: ""
|
|
58
|
+
values:
|
|
59
|
+
layout: default
|
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
---
|
|
2
|
+
render_with_liquid: false
|
|
3
|
+
---
|
|
4
|
+
{% raw %}
|
|
5
|
+
|
|
6
|
+
# ADR-001: Multi-stage CI/CD Pipeline Design
|
|
7
|
+
|
|
8
|
+
**Status**: Accepted
|
|
9
|
+
**Date**: 2026-02-09
|
|
10
|
+
**Authors**: @sebastienrousseau
|
|
11
|
+
|
|
12
|
+
## Context
|
|
13
|
+
|
|
14
|
+
The dotfiles repository requires a CI/CD pipeline that:
|
|
15
|
+
|
|
16
|
+
- Validates changes across multiple platforms (Linux, macOS)
|
|
17
|
+
- Runs security scans to detect secrets and vulnerabilities
|
|
18
|
+
- Tests shell scripts, Lua configurations, and Nix expressions
|
|
19
|
+
- Maintains fast feedback loops for developers
|
|
20
|
+
- Minimizes GitHub Actions costs (runner minutes)
|
|
21
|
+
|
|
22
|
+
Traditional approaches run all checks on every commit, leading to:
|
|
23
|
+
|
|
24
|
+
- Wasted compute on unrelated changes (e.g., running Lua linting when only docs change)
|
|
25
|
+
- High costs from macOS runners ($0.08/min vs $0.008/min for Linux)
|
|
26
|
+
- Long feedback times from sequential job execution
|
|
27
|
+
|
|
28
|
+
## Decision
|
|
29
|
+
|
|
30
|
+
Implement a **5-stage progressive CI pipeline** with path-based filtering:
|
|
31
|
+
|
|
32
|
+
### Stage 1: Change Detection
|
|
33
|
+
|
|
34
|
+
Use `dorny/paths-filter` to detect which file categories changed:
|
|
35
|
+
|
|
36
|
+
- `shell`: *.sh, scripts/**, install/**
|
|
37
|
+
- `lua`: dot_config/nvim/**, *.lua
|
|
38
|
+
- `nix`: nix/**, *.nix
|
|
39
|
+
- `config`: dot_*/**, .chezmoitemplates/**
|
|
40
|
+
|
|
41
|
+
### Stage 2: Lint (Parallel, Conditional)
|
|
42
|
+
|
|
43
|
+
- **lint-shell**: Only runs if shell files changed
|
|
44
|
+
- **lint-lua**: Only runs if Lua files changed
|
|
45
|
+
- Run in parallel to minimize wall-clock time
|
|
46
|
+
|
|
47
|
+
### Stage 3: Security (Always on PRs)
|
|
48
|
+
|
|
49
|
+
- **secrets-scan**: Gitleaks on every PR (critical)
|
|
50
|
+
- **link-check**: Only on schedule (expensive)
|
|
51
|
+
|
|
52
|
+
### Stage 4: Test (Conditional Matrix)
|
|
53
|
+
|
|
54
|
+
- Linux-only for PRs (cheapest)
|
|
55
|
+
- Full matrix (Linux + macOS) on schedule/manual trigger
|
|
56
|
+
- Docker container tests for installation validation
|
|
57
|
+
|
|
58
|
+
### Stage 5: Quality (Schedule/Manual Only)
|
|
59
|
+
|
|
60
|
+
- Idempotency verification
|
|
61
|
+
- Performance benchmarks
|
|
62
|
+
- Nix flake checks
|
|
63
|
+
|
|
64
|
+
### Cost Optimization Strategies
|
|
65
|
+
|
|
66
|
+
1. **Path filters**: Skip jobs when files don't match
|
|
67
|
+
2. **Concurrency groups**: Cancel in-progress runs on new pushes
|
|
68
|
+
3. **Conditional matrices**: Expensive OS testing only on schedule
|
|
69
|
+
4. **Aggressive caching**: Tools, dependencies, databases
|
|
70
|
+
|
|
71
|
+
## Consequences
|
|
72
|
+
|
|
73
|
+
### Positive
|
|
74
|
+
|
|
75
|
+
- ~50% reduction in GitHub Actions minutes
|
|
76
|
+
- Fast feedback for most changes (1-3 minutes)
|
|
77
|
+
- Comprehensive testing still available via schedule/manual
|
|
78
|
+
- Clear separation of concerns between stages
|
|
79
|
+
|
|
80
|
+
### Negative
|
|
81
|
+
|
|
82
|
+
- Complexity in workflow configuration
|
|
83
|
+
- Some bugs might only surface in scheduled runs
|
|
84
|
+
- Path filter maintenance required as repo structure evolves
|
|
85
|
+
|
|
86
|
+
### Neutral
|
|
87
|
+
|
|
88
|
+
- Developers can trigger full CI manually with `workflow_dispatch`
|
|
89
|
+
- Breaking changes to CI require testing across all stages
|
|
90
|
+
|
|
91
|
+
## Implementation
|
|
92
|
+
|
|
93
|
+
```yaml
|
|
94
|
+
# Key patterns used
|
|
95
|
+
on:
|
|
96
|
+
push:
|
|
97
|
+
paths:
|
|
98
|
+
- '**.sh' # Only trigger on shell changes
|
|
99
|
+
|
|
100
|
+
concurrency:
|
|
101
|
+
group: ${{ github.workflow }}-${{ github.ref }}
|
|
102
|
+
cancel-in-progress: true
|
|
103
|
+
|
|
104
|
+
jobs:
|
|
105
|
+
changes:
|
|
106
|
+
outputs:
|
|
107
|
+
shell: ${{ steps.filter.outputs.shell }}
|
|
108
|
+
|
|
109
|
+
lint-shell:
|
|
110
|
+
needs: changes
|
|
111
|
+
if: needs.changes.outputs.shell == 'true'
|
|
112
|
+
```
|
|
113
|
+
|
|
114
|
+
## References
|
|
115
|
+
|
|
116
|
+
- [GitHub Actions Path Filtering](https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#onpushpull_requestpull_request_targetpathspaths-ignore)
|
|
117
|
+
- [dorny/paths-filter](https://github.com/dorny/paths-filter)
|
|
118
|
+
{% endraw %}
|
|
@@ -0,0 +1,130 @@
|
|
|
1
|
+
---
|
|
2
|
+
render_with_liquid: false
|
|
3
|
+
---
|
|
4
|
+
|
|
5
|
+
# ADR-002: Shell Performance Optimization Strategy
|
|
6
|
+
|
|
7
|
+
**Status**: Accepted
|
|
8
|
+
**Date**: 2026-02-09
|
|
9
|
+
**Authors**: @sebastienrousseau
|
|
10
|
+
|
|
11
|
+
## Context
|
|
12
|
+
|
|
13
|
+
Shell startup time directly impacts developer productivity. Every new terminal,
|
|
14
|
+
tmux pane, or shell command execution incurs this cost. With rich shell
|
|
15
|
+
configurations (completions, prompts, plugins), startup can easily exceed 1-2
|
|
16
|
+
seconds.
|
|
17
|
+
|
|
18
|
+
Goals:
|
|
19
|
+
|
|
20
|
+
- Target startup time: <500ms for interactive shells
|
|
21
|
+
- Maintain full functionality (completions, syntax highlighting, git info)
|
|
22
|
+
- Support both zsh and bash
|
|
23
|
+
- Work across macOS and Linux
|
|
24
|
+
|
|
25
|
+
## Decision
|
|
26
|
+
|
|
27
|
+
Implement a **multi-layer performance optimization strategy**:
|
|
28
|
+
|
|
29
|
+
### Layer 1: Compilation and Caching
|
|
30
|
+
|
|
31
|
+
```bash
|
|
32
|
+
# Compile zsh files to .zwc format
|
|
33
|
+
_cached_eval() {
|
|
34
|
+
local cache="$HOME/.cache/zsh/$1.zwc"
|
|
35
|
+
if [[ ! -f "$cache" || "$2" -nt "$cache" ]]; then
|
|
36
|
+
eval "$($2)" > "$cache.tmp"
|
|
37
|
+
zcompile "$cache.tmp" "$cache"
|
|
38
|
+
fi
|
|
39
|
+
source "$cache"
|
|
40
|
+
}
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
- Compile frequently-sourced files to bytecode
|
|
44
|
+
- Cache command output (brew shellenv, mise activate)
|
|
45
|
+
- Invalidate cache when source files change
|
|
46
|
+
|
|
47
|
+
### Layer 2: Lazy Loading
|
|
48
|
+
|
|
49
|
+
Defer loading of heavy components until first use:
|
|
50
|
+
|
|
51
|
+
```bash
|
|
52
|
+
# Lazy load completions
|
|
53
|
+
function kubectl() {
|
|
54
|
+
unfunction kubectl
|
|
55
|
+
source <(kubectl completion zsh)
|
|
56
|
+
kubectl "$@"
|
|
57
|
+
}
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
- Completions loaded on first command use
|
|
61
|
+
- NVM/RVM loaded only when node/ruby commands invoked
|
|
62
|
+
- Heavy plugins deferred via zinit's `wait` modifier
|
|
63
|
+
|
|
64
|
+
### Layer 3: Zinit Turbo Mode
|
|
65
|
+
|
|
66
|
+
```zsh
|
|
67
|
+
zinit ice wait lucid
|
|
68
|
+
zinit light zsh-users/zsh-autosuggestions
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
- Plugins load asynchronously after prompt
|
|
72
|
+
- Critical plugins (syntax highlighting) load synchronously
|
|
73
|
+
- Most plugins have 0ms impact on startup
|
|
74
|
+
|
|
75
|
+
### Layer 4: Conditional Loading
|
|
76
|
+
|
|
77
|
+
```bash
|
|
78
|
+
# Only load if command exists
|
|
79
|
+
[[ -x /opt/homebrew/bin/brew ]] && eval "$(/opt/homebrew/bin/brew shellenv)"
|
|
80
|
+
|
|
81
|
+
# Skip in non-interactive shells
|
|
82
|
+
[[ $- != *i* ]] && return
|
|
83
|
+
```
|
|
84
|
+
|
|
85
|
+
- Platform-specific code guarded by OS detection
|
|
86
|
+
- Heavy features opt-in via environment variables
|
|
87
|
+
- Non-interactive shells get minimal config
|
|
88
|
+
|
|
89
|
+
### Monitoring
|
|
90
|
+
|
|
91
|
+
Benchmark script to track startup time:
|
|
92
|
+
|
|
93
|
+
```bash
|
|
94
|
+
hyperfine --warmup 3 --runs 10 "zsh -i -c exit"
|
|
95
|
+
```
|
|
96
|
+
|
|
97
|
+
CI enforces 500ms threshold with warnings.
|
|
98
|
+
|
|
99
|
+
## Consequences
|
|
100
|
+
|
|
101
|
+
### Positive
|
|
102
|
+
|
|
103
|
+
- Consistent <500ms startup across platforms
|
|
104
|
+
- Full functionality preserved
|
|
105
|
+
- Easy to add new tools without performance regression
|
|
106
|
+
- Clear patterns for contributors to follow
|
|
107
|
+
|
|
108
|
+
### Negative
|
|
109
|
+
|
|
110
|
+
- First invocation of lazy-loaded commands is slower
|
|
111
|
+
- Cache invalidation bugs can cause stale behavior
|
|
112
|
+
- Complexity in understanding load order
|
|
113
|
+
|
|
114
|
+
### Neutral
|
|
115
|
+
|
|
116
|
+
- Profiling required when adding new plugins
|
|
117
|
+
- Trade-off between convenience and performance explicit
|
|
118
|
+
|
|
119
|
+
## Measurements
|
|
120
|
+
|
|
121
|
+
| Configuration | Startup Time |
|
|
122
|
+
|---------------|--------------|
|
|
123
|
+
| Vanilla zsh | ~50ms |
|
|
124
|
+
| With oh-my-zsh | ~800ms |
|
|
125
|
+
| This approach | ~200-400ms |
|
|
126
|
+
|
|
127
|
+
## References
|
|
128
|
+
|
|
129
|
+
- [Zsh Startup Optimization](https://htr3n.github.io/2018/07/faster-zsh/)
|
|
130
|
+
- [Zinit Turbo Mode](https://zdharma-continuum.github.io/zinit/wiki/INTRODUCTION/)
|
|
@@ -0,0 +1,158 @@
|
|
|
1
|
+
---
|
|
2
|
+
render_with_liquid: false
|
|
3
|
+
---
|
|
4
|
+
|
|
5
|
+
# ADR-003: Security-First Approach
|
|
6
|
+
|
|
7
|
+
**Status**: Accepted
|
|
8
|
+
**Date**: 2026-02-09
|
|
9
|
+
**Authors**: @sebastienrousseau
|
|
10
|
+
|
|
11
|
+
## Context
|
|
12
|
+
|
|
13
|
+
Dotfiles repositories present unique security challenges:
|
|
14
|
+
|
|
15
|
+
- They configure system behavior and permissions
|
|
16
|
+
- They may contain or reference secrets (API keys, tokens)
|
|
17
|
+
- They execute scripts with user privileges
|
|
18
|
+
- They're often cloned to multiple machines
|
|
19
|
+
|
|
20
|
+
A security breach in dotfiles can compromise all systems using them.
|
|
21
|
+
|
|
22
|
+
## Decision
|
|
23
|
+
|
|
24
|
+
Implement a **defense-in-depth security model** with multiple layers:
|
|
25
|
+
|
|
26
|
+
### Layer 1: Secrets Protection
|
|
27
|
+
|
|
28
|
+
**Never commit secrets:**
|
|
29
|
+
|
|
30
|
+
```bash
|
|
31
|
+
# .gitleaks.toml - block common secret patterns
|
|
32
|
+
[[rules]]
|
|
33
|
+
id = "generic-api-key"
|
|
34
|
+
regex = '''(?i)(api[_-]?key|apikey)\s*[:=]\s*['"]?([a-zA-Z0-9]{20,})'''
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
**Encrypted secrets with age:**
|
|
38
|
+
|
|
39
|
+
```bash
|
|
40
|
+
# Secrets stored encrypted, decrypted at apply time
|
|
41
|
+
chezmoi.encryption = "age"
|
|
42
|
+
chezmoi.age.identity = "~/.config/chezmoi/key.txt"
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
**CI enforcement:**
|
|
46
|
+
|
|
47
|
+
- Gitleaks runs on every PR
|
|
48
|
+
- TruffleHog for verified secrets detection
|
|
49
|
+
- Block merge if secrets detected
|
|
50
|
+
|
|
51
|
+
### Layer 2: Input Validation
|
|
52
|
+
|
|
53
|
+
**Path traversal prevention:**
|
|
54
|
+
|
|
55
|
+
```bash
|
|
56
|
+
# Validate all user inputs
|
|
57
|
+
if [[ ! "$template_lang" =~ ^[a-zA-Z0-9_-]+$ ]]; then
|
|
58
|
+
die "Invalid template name: $template_lang"
|
|
59
|
+
fi
|
|
60
|
+
```
|
|
61
|
+
|
|
62
|
+
**Safe file operations:**
|
|
63
|
+
|
|
64
|
+
```bash
|
|
65
|
+
# Use absolute paths, validate before operations
|
|
66
|
+
local real_path
|
|
67
|
+
real_path="$(realpath -m "$user_input")"
|
|
68
|
+
if [[ "$real_path" != "$allowed_base"/* ]]; then
|
|
69
|
+
die "Path outside allowed directory"
|
|
70
|
+
fi
|
|
71
|
+
```
|
|
72
|
+
|
|
73
|
+
### Layer 3: Opt-in System Modifications
|
|
74
|
+
|
|
75
|
+
**Dangerous operations require explicit consent:**
|
|
76
|
+
|
|
77
|
+
```bash
|
|
78
|
+
# Security scripts are opt-in
|
|
79
|
+
if [ "${DOTFILES_SECURITY:-0}" != "1" ]; then
|
|
80
|
+
echo "Security hardening is opt-in. Set DOTFILES_SECURITY=1 to enable."
|
|
81
|
+
exit 0
|
|
82
|
+
fi
|
|
83
|
+
```
|
|
84
|
+
|
|
85
|
+
**Comprehensive logging:**
|
|
86
|
+
|
|
87
|
+
```bash
|
|
88
|
+
# All system modifications logged
|
|
89
|
+
log_security_change() {
|
|
90
|
+
echo "[$(date -Iseconds)] $1" >> "$HOME/.local/share/dotfiles-security.log"
|
|
91
|
+
}
|
|
92
|
+
```
|
|
93
|
+
|
|
94
|
+
### Layer 4: CI Security Scanning
|
|
95
|
+
|
|
96
|
+
**Multi-tool approach:**
|
|
97
|
+
|
|
98
|
+
- **Gitleaks**: Secrets in git history
|
|
99
|
+
- **Shellcheck**: Shell script vulnerabilities
|
|
100
|
+
- **Checkov**: Infrastructure misconfigurations
|
|
101
|
+
- **Trivy**: Container vulnerabilities (when applicable)
|
|
102
|
+
- **CodeQL**: Static analysis for Python/JavaScript
|
|
103
|
+
|
|
104
|
+
**Weekly deep scans:**
|
|
105
|
+
|
|
106
|
+
```yaml
|
|
107
|
+
schedule:
|
|
108
|
+
- cron: '0 2 * * 0' # Weekly security audit
|
|
109
|
+
```
|
|
110
|
+
|
|
111
|
+
### Layer 5: Minimal Privileges
|
|
112
|
+
|
|
113
|
+
**Scripts request only needed permissions:**
|
|
114
|
+
|
|
115
|
+
```bash
|
|
116
|
+
# Don't run as root unless necessary
|
|
117
|
+
if [ "$(id -u)" = "0" ]; then
|
|
118
|
+
die "This script should not run as root"
|
|
119
|
+
fi
|
|
120
|
+
|
|
121
|
+
# Use sudo only for specific commands
|
|
122
|
+
sudo sysctl -w net.ipv4.tcp_keepalive_time=60
|
|
123
|
+
```
|
|
124
|
+
|
|
125
|
+
## Consequences
|
|
126
|
+
|
|
127
|
+
### Positive
|
|
128
|
+
|
|
129
|
+
- Secrets never enter git history
|
|
130
|
+
- System modifications are auditable
|
|
131
|
+
- Multiple layers catch different vulnerability types
|
|
132
|
+
- Contributors have clear security patterns to follow
|
|
133
|
+
|
|
134
|
+
### Negative
|
|
135
|
+
|
|
136
|
+
- Additional complexity in scripts
|
|
137
|
+
- Encrypted secrets require key management
|
|
138
|
+
- Some features disabled by default (friction)
|
|
139
|
+
|
|
140
|
+
### Neutral
|
|
141
|
+
|
|
142
|
+
- Security vs convenience trade-offs explicit
|
|
143
|
+
- Regular security audits via scheduled CI
|
|
144
|
+
|
|
145
|
+
## Security Checklist for Contributors
|
|
146
|
+
|
|
147
|
+
- [ ] No hardcoded secrets (use environment variables or age encryption)
|
|
148
|
+
- [ ] Validate all user inputs
|
|
149
|
+
- [ ] Use absolute paths for file operations
|
|
150
|
+
- [ ] Document any system modifications
|
|
151
|
+
- [ ] Test scripts with shellcheck
|
|
152
|
+
- [ ] Add appropriate permission checks
|
|
153
|
+
|
|
154
|
+
## References
|
|
155
|
+
|
|
156
|
+
- [OWASP Secure Coding Practices](https://owasp.org/www-project-secure-coding-practices-quick-reference-guide/)
|
|
157
|
+
- [Age Encryption](https://github.com/FiloSottile/age)
|
|
158
|
+
- [Gitleaks](https://github.com/gitleaks/gitleaks)
|