@sebastienrousseau/dotfiles 0.2.499 → 0.2.500
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +375 -0
- package/LICENSE +1283 -0
- package/README.md +284 -0
- package/docs/.vitepress/reports/localization-readability-audit.md +69 -0
- package/docs/AI.md +102 -0
- package/docs/COPYRIGHT +4 -3
- package/docs/NAMING_CONVENTIONS.md +95 -0
- package/docs/README.md +78 -0
- package/docs/adr/ADR-001-ci-cd-pipeline.md +101 -0
- package/docs/adr/ADR-002-shell-performance.md +121 -0
- package/docs/adr/ADR-003-security-first.md +140 -0
- package/docs/adr/ADR-004-cli-architecture.md +157 -0
- package/docs/adr/ADR-005-chezmoi-choice.md +89 -0
- package/docs/adr/ADR-006-shell-selection.md +115 -0
- package/docs/adr/ADR-007-multi-shell-parity.md +53 -0
- package/docs/adr/ADR-008-alias-system-architecture.md +85 -0
- package/docs/adr/README.md +32 -0
- package/docs/architecture/ARCHITECTURE.md +113 -0
- package/docs/architecture/INTEROP.md +36 -0
- package/docs/architecture/REPO_LAYOUT.md +237 -0
- package/docs/architecture/WALKTHROUGH.md +82 -0
- package/docs/architecture/fleet-deployment.md +73 -0
- package/docs/archive/EUXIS_2026_REVIEW.md +119 -0
- package/docs/archive/LEGACY_ROADMAP.md +142 -0
- package/docs/archive/MILESTONE_v0.2.493.md +43 -0
- package/docs/{PLAN.md → archive/PLAN.md} +4 -4
- package/docs/archive/REPO_AUDIT.md +23 -0
- package/docs/guides/INSTALL.md +140 -0
- package/docs/guides/NEOVIM_IDE_GUIDE.md +52 -0
- package/docs/guides/THEMING.md +222 -0
- package/docs/guides/TROUBLESHOOTING.md +148 -0
- package/docs/guides/WSL2_NIX_TROUBLESHOOTING.md +723 -0
- package/docs/index.md +39 -0
- package/docs/interop/A2A.md +32 -0
- package/docs/manual/00-introduction.md +85 -0
- package/docs/manual/01-concepts/01-architecture.md +134 -0
- package/docs/manual/01-concepts/02-trust-model.md +178 -0
- package/docs/manual/01-concepts/03-theme-engine.md +182 -0
- package/docs/manual/01-concepts/04-fleet.md +142 -0
- package/docs/manual/01-concepts/05-self-healing.md +197 -0
- package/docs/manual/02-tutorials/01-first-install.md +192 -0
- package/docs/manual/02-tutorials/02-add-wallpaper.md +211 -0
- package/docs/manual/02-tutorials/03-create-profile.md +238 -0
- package/docs/manual/02-tutorials/04-encrypt-secret.md +275 -0
- package/docs/manual/02-tutorials/05-deploy-fleet.md +279 -0
- package/docs/manual/03-reference/01-dot-cli.md +413 -0
- package/docs/manual/03-reference/02-config-files.md +259 -0
- package/docs/manual/03-reference/03-environment.md +120 -0
- package/docs/manual/03-reference/04-templates.md +184 -0
- package/docs/manual/03-reference/05-feature-flags.md +118 -0
- package/docs/manual/04-cookbook/01-recipes.md +281 -0
- package/docs/manual/04-cookbook/02-troubleshooting.md +319 -0
- package/docs/manual/04-cookbook/03-faq.md +167 -0
- package/docs/manual/05-appendices/A-platform-matrix.md +97 -0
- package/docs/manual/05-appendices/B-security-checklist.md +78 -0
- package/docs/manual/05-appendices/C-glossary.md +36 -0
- package/docs/manual/05-appendices/D-bibliography.md +54 -0
- package/docs/manual/05-appendices/E-license.md +34 -0
- package/docs/manual/_toc.yml +58 -0
- package/docs/manual/command-index.md +58 -0
- package/docs/manual/concept-index.md +164 -0
- package/docs/operations/ATTESTATION.md +39 -0
- package/docs/operations/MAINTENANCE.md +59 -0
- package/docs/operations/MIGRATION.md +101 -0
- package/docs/operations/OPERATIONS.md +164 -0
- package/docs/operations/RELIABILITY.md +116 -0
- package/docs/{ROADMAP.md → operations/ROADMAP.md} +22 -22
- package/docs/operations/TESTING.md +195 -0
- package/docs/operations/TRACEABILITY.md +31 -0
- package/docs/operations/TRUSTED_AGENT_WORKSTATION.md +61 -0
- package/docs/operations/VERSION_SYNC.md +344 -0
- package/docs/reference/ALIASES.md +124 -0
- package/docs/reference/ALIASES_CHEATSHEET.md +28 -0
- package/docs/reference/ALIASES_DEPRECATIONS.md +9 -0
- package/docs/reference/FEATURES.md +62 -0
- package/docs/reference/FONTS.md +108 -0
- package/docs/reference/PROFILES.md +65 -0
- package/docs/reference/SCREENSHOTS.md +117 -0
- package/docs/reference/SCRIPTS.md +67 -0
- package/docs/reference/SUPPORT_MATRIX.md +74 -0
- package/docs/reference/THEMES.md +113 -0
- package/docs/reference/TOOLS.md +105 -0
- package/docs/reference/UTILS.md +151 -0
- package/docs/security/AI_ACT_COMPLIANCE.md +90 -0
- package/docs/security/AUTOMATION_SECRETS.md +22 -0
- package/docs/security/COMPLIANCE.md +453 -0
- package/docs/security/ENCRYPTION.md +52 -0
- package/docs/security/FMEA.md +155 -0
- package/docs/security/INCIDENT_RESPONSE.md +575 -0
- package/docs/security/KEYS.md +45 -0
- package/docs/security/KEY_ROTATION.md +219 -0
- package/docs/security/MCP_POLICY.md +69 -0
- package/docs/security/POLICY_RELEASES.md +33 -0
- package/docs/security/README.md +24 -0
- package/docs/security/SECRETS.md +146 -0
- package/docs/security/SECURITY.md +41 -0
- package/docs/security/SECURITY_CHECKLIST.md +44 -0
- package/docs/security/SOUP_REGISTER.md +32 -0
- package/docs/security/THREAT_MODEL.md +120 -0
- package/docs/security/VERIFICATION_VALIDATION.md +224 -0
- package/docs/themes/README.md +6 -0
- package/docs/themes/VISUAL_INTEGRITY_REPORT.md +26 -0
- package/docs/themes/hero-shot.svg +78 -0
- package/dot_config/.module-manifest.json +69 -0
- package/dot_config/ai/identity.md +20 -0
- package/dot_config/ai/patterns/architect.md +14 -0
- package/dot_config/ai/patterns/hardener.md +13 -0
- package/dot_config/ai/patterns/refactor.md +13 -0
- package/dot_config/aider/aider.conf.yml +32 -0
- package/dot_config/alacritty/alacritty.toml.tmpl +55 -0
- package/dot_config/ansible/ansible.cfg +11 -0
- package/dot_config/atuin/config.toml +40 -0
- package/dot_config/bat/config +23 -0
- package/dot_config/brave-flags.conf.tmpl +7 -0
- package/dot_config/btop/btop.conf +16 -0
- package/dot_config/btop/themes/tokyonight.theme +34 -0
- package/dot_config/bun/bunfig.toml.tmpl +33 -0
- package/dot_config/claude/mcp_servers.json +20 -0
- package/dot_config/containers/containers.conf +14 -0
- package/dot_config/curl/dot_curlrc +18 -0
- package/dot_config/dlv/config.yml +39 -0
- package/dot_config/docker/config.json +15 -0
- package/dot_config/dotfiles/agent-card.json +29 -0
- package/dot_config/dotfiles/agent-profiles.json +92 -0
- package/dot_config/dotfiles/boot/README.md +11 -0
- package/dot_config/dotfiles/grub/README.md +11 -0
- package/dot_config/dotfiles/lock/README.md +11 -0
- package/dot_config/dotfiles/mcp-lock.json +33 -0
- package/dot_config/dotfiles/mcp-policy.json +52 -0
- package/dot_config/dotfiles/mcp-registry.json +47 -0
- package/dot_config/dotfiles/model-registry.json +20 -0
- package/dot_config/dotfiles/policy-bundles.json +38 -0
- package/dot_config/dotfiles/prompt-registry.json +16 -0
- package/dot_config/dotfiles/versions.env +18 -0
- package/dot_config/duf/duf.conf +6 -0
- package/dot_config/duti/defaults.duti +5 -0
- package/dot_config/emoji/emoji.txt +34 -0
- package/dot_config/environment.d/50-ssh-agent.conf +2 -0
- package/dot_config/environment.d/90-wayland.conf +19 -0
- package/dot_config/fastfetch/config.jsonc +28 -0
- package/dot_config/firefox/user.js.tmpl +58 -0
- package/dot_config/fish/completions/dot-theme-sync.fish.tmpl +9 -0
- package/dot_config/fish/completions/dot.fish.tmpl +115 -0
- package/dot_config/fish/conf.d/000-perf-cache.fish +56 -0
- package/dot_config/fish/conf.d/aliases.fish.tmpl +77 -0
- package/dot_config/fish/conf.d/env.fish.tmpl +48 -0
- package/dot_config/fish/conf.d/functions.fish.tmpl +22 -0
- package/dot_config/fish/conf.d/init.fish.tmpl +151 -0
- package/dot_config/fish/config.fish.tmpl +44 -0
- package/dot_config/fish/fish_plugins +1 -0
- package/dot_config/fish/functions/_.fish +3 -0
- package/dot_config/fish/functions/_cached_eval.fish +58 -0
- package/dot_config/fish/functions/als.fish +46 -0
- package/dot_config/fish/functions/bg-upgrade.fish +7 -0
- package/dot_config/fish/functions/c.fish +3 -0
- package/dot_config/fish/functions/cat.fish +9 -0
- package/dot_config/fish/functions/d.fish +7 -0
- package/dot_config/fish/functions/dot.fish +34 -0
- package/dot_config/fish/functions/h.fish +3 -0
- package/dot_config/fish/functions/l.fish +7 -0
- package/dot_config/fish/functions/la.fish +7 -0
- package/dot_config/fish/functions/ll.fish +7 -0
- package/dot_config/fish/functions/log_error.fish +13 -0
- package/dot_config/fish/functions/log_info.fish +13 -0
- package/dot_config/fish/functions/lr.fish +7 -0
- package/dot_config/fish/functions/lra.fish +7 -0
- package/dot_config/fish/functions/ls.fish +7 -0
- package/dot_config/fish/functions/lt.fish +7 -0
- package/dot_config/fish/functions/lta.fish +7 -0
- package/dot_config/fish/functions/notify-run.fish +11 -0
- package/dot_config/fish/functions/q.fish +3 -0
- package/dot_config/fish/functions/silent-run.fish +7 -0
- package/dot_config/fish/functions/yy.fish +8 -0
- package/dot_config/flatpak/flatpak.list +4 -0
- package/dot_config/fontconfig/fonts.conf.tmpl +57 -0
- package/dot_config/foot/foot.ini.tmpl +33 -0
- package/dot_config/fuzzel/fuzzel.ini.tmpl +18 -0
- package/dot_config/fzf/fzf.zsh +48 -0
- package/dot_config/gem/gemrc +9 -0
- package/dot_config/gh/config.yml +12 -0
- package/dot_config/ghostty/config.tmpl +165 -0
- package/dot_config/git/allowed_signers.tmpl +18 -0
- package/dot_config/git/attributes +12 -0
- package/dot_config/git/commit-template +10 -0
- package/dot_config/git/ignore +27 -0
- package/dot_config/gnupg/gpg-agent.conf +11 -0
- package/dot_config/go/golangci.yml +118 -0
- package/dot_config/go/gopls.json +30 -0
- package/dot_config/goose/config.yaml +29 -0
- package/dot_config/gtk-3.0/gtk.css.tmpl +184 -0
- package/dot_config/gtk-3.0/settings.ini.tmpl +27 -0
- package/dot_config/gtk-4.0/gtk.css.tmpl +252 -0
- package/dot_config/gtk-4.0/settings.ini.tmpl +18 -0
- package/dot_config/htop/htoprc +20 -0
- package/dot_config/inputrc +2 -0
- package/dot_config/ipython/profile_default/ipython_config.py +19 -0
- package/dot_config/just/justfile +122 -0
- package/dot_config/k9s/config.yaml +65 -0
- package/dot_config/k9s/skins/catppuccin-mocha.yaml +116 -0
- package/dot_config/kanshi/config.tmpl +22 -0
- package/dot_config/karabiner/karabiner.json +14 -0
- package/dot_config/kitty/kitty.conf.tmpl +53 -0
- package/dot_config/lazydocker/config.yml +186 -0
- package/dot_config/lazygit/config.yml +35 -0
- package/dot_config/mako/config +47 -0
- package/dot_config/mas/masapps.txt +5 -0
- package/dot_config/micro/settings.json +3 -0
- package/dot_config/mimeapps.list +77 -0
- package/dot_config/minikube/config.json +13 -0
- package/dot_config/mise/config.toml +99 -0
- package/dot_config/mongosh/mongoshrc.js +68 -0
- package/dot_config/mpv/input.conf +47 -0
- package/dot_config/mpv/mpv.conf +47 -0
- package/dot_config/mycli/myclirc +67 -0
- package/dot_config/nano/nanorc +28 -0
- package/dot_config/ncdu/config +12 -0
- package/dot_config/niri/config.kdl.tmpl +327 -0
- package/dot_config/nushell/aliases.nu +18 -0
- package/dot_config/nushell/completions.nu.tmpl +52 -0
- package/dot_config/nushell/config.nu.tmpl +86 -0
- package/dot_config/nushell/env.nu.tmpl +94 -0
- package/dot_config/nushell/functions.nu.tmpl +17 -0
- package/dot_config/nvim/init.lua +18 -0
- package/dot_config/nvim/lazy-lock.json +58 -0
- package/dot_config/nvim/lua/config/autocmds.lua +107 -0
- package/dot_config/nvim/lua/config/keymaps.lua +92 -0
- package/dot_config/nvim/lua/config/lazy.lua +44 -0
- package/dot_config/nvim/lua/config/options.lua +49 -0
- package/dot_config/nvim/lua/plugins/ai.lua +75 -0
- package/dot_config/nvim/lua/plugins/coding.lua +216 -0
- package/dot_config/nvim/lua/plugins/completion.lua +60 -0
- package/dot_config/nvim/lua/plugins/dap.lua +412 -0
- package/dot_config/nvim/lua/plugins/editor.lua +55 -0
- package/dot_config/nvim/lua/plugins/git.lua +10 -0
- package/dot_config/nvim/lua/plugins/lsp.lua +156 -0
- package/dot_config/nvim/lua/plugins/markdown.lua +18 -0
- package/dot_config/nvim/lua/plugins/rust.lua +34 -0
- package/dot_config/nvim/lua/plugins/sessions.lua +33 -0
- package/dot_config/nvim/lua/plugins/ui.lua +509 -0
- package/dot_config/paru/paru.conf +10 -0
- package/dot_config/pip/pip.conf.tmpl +32 -0
- package/dot_config/powershell/Microsoft.PowerShell_profile.ps1.tmpl +81 -0
- package/dot_config/pueue/pueue.yml +34 -0
- package/dot_config/pypoetry/config.toml +6 -0
- package/dot_config/pyrightconfig.json +5 -0
- package/dot_config/raycast/README.md +13 -0
- package/dot_config/redis/redisclirc +41 -0
- package/dot_config/ripgrep/ripgreprc +21 -0
- package/dot_config/shell/00-core-paths.sh.tmpl +133 -0
- package/dot_config/shell/05-core-safety.sh +47 -0
- package/dot_config/shell/10-secrets.sh +40 -0
- package/dot_config/shell/40-fzf-defaults.sh.tmpl +16 -0
- package/dot_config/shell/40-ls-colors.sh +48 -0
- package/dot_config/shell/50-logic-functions-core.sh.tmpl +10 -0
- package/dot_config/shell/50-logic-functions.sh.tmpl +10 -0
- package/dot_config/shell/51-logic-functions-extra.sh.tmpl +64 -0
- package/dot_config/shell/90-ux-aliases.sh.tmpl +120 -0
- package/dot_config/shell/91-ux-aliases-lazy.sh.tmpl +54 -0
- package/dot_config/shell/Brewfile +207 -0
- package/dot_config/shell/Brewfile.cask +92 -0
- package/dot_config/shell/Brewfile.cli +127 -0
- package/dot_config/shell/README.md +267 -0
- package/dot_config/shell/als_data.txt.tmpl +65 -0
- package/dot_config/shell/custom/auto_ls.zsh +20 -0
- package/dot_config/shell/custom/context_suggest.zsh +68 -0
- package/dot_config/shell/custom/error_analysis.zsh +45 -0
- package/dot_config/sops/dot_sops.yaml +23 -0
- package/dot_config/starship.toml.tmpl +202 -0
- package/dot_config/swaylock/config +43 -0
- package/dot_config/systemd/user/dotfiles-maintenance.service +8 -0
- package/dot_config/systemd/user/dotfiles-maintenance.timer +11 -0
- package/dot_config/systemd/user/pueued.service +12 -0
- package/dot_config/systemd/user/ssh-agent.service +12 -0
- package/dot_config/task/Taskfile.yml +86 -0
- package/dot_config/tflint/tflint.hcl +9 -0
- package/dot_config/tmux/tmux.conf.tmpl +223 -0
- package/dot_config/topgrade.toml.tmpl +54 -0
- package/dot_config/user-dirs.dirs +9 -0
- package/dot_config/vscode/extensions.txt +11 -0
- package/dot_config/vscode/settings.json.tmpl +82 -0
- package/dot_config/waybar/config.jsonc.tmpl +90 -0
- package/dot_config/waybar/style.css.tmpl +211 -0
- package/dot_config/wezterm/wezterm.lua.tmpl +64 -0
- package/dot_config/wget/wgetrc +12 -0
- package/dot_config/xdg-desktop-portal/niri-portals.conf +5 -0
- package/dot_config/yarn/yarnrc.yml +36 -0
- package/dot_config/yazi/keymap.toml +67 -0
- package/dot_config/yazi/theme.toml +102 -0
- package/dot_config/yazi/yazi.toml +40 -0
- package/dot_config/zathura/zathurarc +52 -0
- package/dot_config/zellij/config.kdl.tmpl +79 -0
- package/dot_config/zsh/dot_zprofile +7 -0
- package/dot_config/zsh/dot_zshenv +5 -0
- package/dot_config/zsh/dot_zshrc.tmpl +498 -0
- package/dot_config/zsh/rc.d/00-alias-shims.zsh +77 -0
- package/dot_config/zsh/rc.d/05-ssh-agent.zsh +18 -0
- package/dot_config/zsh/rc.d/10-env.zsh.tmpl +28 -0
- package/dot_config/zsh/rc.d/20-zinit.zsh +65 -0
- package/dot_config/zsh/rc.d/30-options.zsh.tmpl +194 -0
- package/dot_config/zsh/rc.d/40-bell.zsh +20 -0
- package/dot_config/zsh/rc.d/50-login-fortune.zsh +9 -0
- package/dot_config/zsh/rc.d/99-alias-wrapper.zsh +32 -0
- package/dot_local/bin/__pycache__/executable_dot-load-benchmark-ptycpython-312.pyc +0 -0
- package/dot_local/bin/executable_ai-update +195 -0
- package/dot_local/bin/executable_ai_core +152 -0
- package/dot_local/bin/executable_antigravity +11 -0
- package/dot_local/bin/executable_b64 +84 -0
- package/dot_local/bin/executable_bm +77 -0
- package/dot_local/bin/executable_cb +39 -0
- package/dot_local/bin/executable_dot +589 -0
- package/dot_local/bin/executable_dot-ai +36 -0
- package/dot_local/bin/executable_dot-bootstrap +77 -0
- package/dot_local/bin/executable_dot-launch-or-focus +52 -0
- package/dot_local/bin/executable_dot-load-benchmark +31 -0
- package/dot_local/bin/executable_dot-load-benchmark-pty +77 -0
- package/dot_local/bin/executable_dot-theme-sync +952 -0
- package/dot_local/bin/executable_dot_completion +57 -0
- package/dot_local/bin/executable_dtags +28 -0
- package/dot_local/bin/executable_epoch +67 -0
- package/dot_local/bin/executable_extract +41 -0
- package/dot_local/bin/executable_gbd +52 -0
- package/dot_local/bin/executable_gd +42 -0
- package/dot_local/bin/executable_git-ai-commit +175 -0
- package/dot_local/bin/executable_git-ai-diff +169 -0
- package/dot_local/bin/executable_gl +101 -0
- package/dot_local/bin/executable_hash +161 -0
- package/dot_local/bin/executable_hashsum +160 -0
- package/dot_local/bin/executable_hex +115 -0
- package/dot_local/bin/executable_jsonv +78 -0
- package/dot_local/bin/executable_jwt +94 -0
- package/dot_local/bin/executable_kill-port +75 -0
- package/dot_local/bin/executable_lorem +118 -0
- package/dot_local/bin/executable_mkscript +35 -0
- package/dot_local/bin/executable_monitor +56 -0
- package/dot_local/bin/executable_myip +51 -0
- package/dot_local/bin/executable_notify +22 -0
- package/dot_local/bin/executable_open +36 -0
- package/dot_local/bin/executable_pw +27 -0
- package/dot_local/bin/executable_rec-start +46 -0
- package/dot_local/bin/executable_rec-stop +35 -0
- package/dot_local/bin/executable_regex +132 -0
- package/dot_local/bin/executable_start-niri +8 -0
- package/dot_local/bin/executable_tmux-sessionizer +314 -0
- package/dot_local/bin/executable_tour +175 -0
- package/dot_local/bin/executable_up +21 -0
- package/dot_local/bin/executable_update +142 -0
- package/dot_local/bin/executable_uuid +87 -0
- package/dot_local/bin/executable_win +32 -0
- package/dot_local/bin/executable_yamlv +57 -0
- package/dot_local/share/bash-completion/completions/dot +72 -0
- package/dot_local/share/icons/hicolor/128x128/apps/rousseau.png +0 -0
- package/dot_local/share/icons/hicolor/16x16/apps/rousseau.png +0 -0
- package/dot_local/share/icons/hicolor/24x24/apps/rousseau.png +0 -0
- package/dot_local/share/icons/hicolor/256x256/apps/rousseau.png +0 -0
- package/dot_local/share/icons/hicolor/32x32/apps/rousseau.png +0 -0
- package/dot_local/share/icons/hicolor/48x48/apps/rousseau.png +0 -0
- package/dot_local/share/icons/hicolor/512x512/apps/rousseau.png +0 -0
- package/dot_local/share/icons/hicolor/64x64/apps/rousseau.png +0 -0
- package/dot_local/share/icons/hicolor/96x96/apps/rousseau.png +0 -0
- package/dot_local/share/icons/hicolor/scalable/apps/rousseau.png +0 -0
- package/dot_local/share/man/man1/dot.1 +149 -0
- package/dot_local/share/mise/plugins/kiro-cli/bin/executable_download +64 -0
- package/dot_local/share/mise/plugins/kiro-cli/bin/executable_install +18 -0
- package/dot_local/share/mise/plugins/kiro-cli/bin/executable_list-all +13 -0
- package/dot_local/share/wayland-sessions/niri.desktop.tmpl +6 -0
- package/dot_local/share/zsh/completions/.keep +0 -0
- package/dot_local/share/zsh/completions/_dot +283 -0
- package/install.sh +342 -0
- package/package.json +1 -1
- package/scripts/ci/check-copyright-headers.sh +96 -0
- package/scripts/ci/guard-gitleaks-checkout.sh +57 -0
- package/scripts/ci/install-chezmoi-verified.sh +64 -0
- package/scripts/ci/validate-ci-config.sh +224 -0
- package/scripts/demo/record.sh +42 -0
- package/scripts/diagnostics/a2a-conformance.sh +162 -0
- package/scripts/diagnostics/alias-governance.sh +137 -0
- package/scripts/diagnostics/aliases-cheatsheet.sh +73 -0
- package/scripts/diagnostics/aliases-manifest.sh +31 -0
- package/scripts/diagnostics/benchmark.sh +381 -0
- package/scripts/diagnostics/conflicts.sh +72 -0
- package/scripts/diagnostics/doctor-unified.sh +38 -0
- package/scripts/diagnostics/doctor.sh +541 -0
- package/scripts/diagnostics/drift-dashboard.sh +37 -0
- package/scripts/diagnostics/health.sh +597 -0
- package/scripts/diagnostics/history-analysis.sh +85 -0
- package/scripts/diagnostics/mcp-doctor.sh +575 -0
- package/scripts/diagnostics/perf.sh +225 -0
- package/scripts/diagnostics/scorecard.sh +118 -0
- package/scripts/diagnostics/secret-governance.sh +58 -0
- package/scripts/diagnostics/security-score.sh +438 -0
- package/scripts/diagnostics/smoke-test.sh +87 -0
- package/scripts/diagnostics/snapshot.sh +89 -0
- package/scripts/diagnostics/verify.sh +107 -0
- package/scripts/{verify_state.sh → diagnostics/verify_state.sh} +22 -22
- package/scripts/diagnostics/version-locks.sh +79 -0
- package/scripts/diagnostics/workstation-attestation.sh +181 -0
- package/scripts/docs/build-manual.sh +883 -0
- package/scripts/docs/check-manual.sh +213 -0
- package/scripts/dot/commands/agent.sh +465 -0
- package/scripts/dot/commands/ai.sh +416 -0
- package/scripts/dot/commands/aliases.sh +250 -0
- package/scripts/dot/commands/appearance.sh +80 -0
- package/scripts/dot/commands/core.sh +185 -0
- package/scripts/dot/commands/diagnostics.sh +229 -0
- package/scripts/dot/commands/fleet.sh +399 -0
- package/scripts/dot/commands/lint.sh +177 -0
- package/scripts/dot/commands/manual.sh +168 -0
- package/scripts/dot/commands/meta.sh +248 -0
- package/scripts/dot/commands/patterns.sh +54 -0
- package/scripts/dot/commands/restore.sh +231 -0
- package/scripts/dot/commands/secrets.sh +223 -0
- package/scripts/dot/commands/security.sh +76 -0
- package/scripts/dot/commands/tools.sh +469 -0
- package/scripts/dot/data/alias-deprecations.tsv +2 -0
- package/scripts/dot/lib/bento.sh +49 -0
- package/scripts/dot/lib/log.sh +194 -0
- package/scripts/dot/lib/platform.sh +98 -0
- package/scripts/dot/lib/ui.sh +507 -0
- package/scripts/dot/lib/utils.sh +372 -0
- package/scripts/fonts/install-nerd-fonts.sh +68 -0
- package/scripts/fonts/patch-fonts.sh +35 -0
- package/scripts/git-hooks/install.sh +11 -0
- package/scripts/git-hooks/pre-commit +12 -0
- package/scripts/git-hooks/pre-commit-audit.sh +145 -0
- package/scripts/git-hooks/pre-push +29 -0
- package/scripts/git-hooks/prepare-commit-msg +29 -0
- package/scripts/lib/secrets_provider.sh +158 -0
- package/scripts/maintenance/check-updates.sh +131 -0
- package/scripts/ops/ai-setup.sh +55 -0
- package/scripts/ops/bundle.sh +77 -0
- package/scripts/ops/chaos.sh +49 -0
- package/scripts/ops/chezmoi-apply.sh +270 -0
- package/scripts/ops/chezmoi-diff.sh +15 -0
- package/scripts/ops/chezmoi-remove.sh +45 -0
- package/scripts/ops/chezmoi-update.sh +48 -0
- package/scripts/ops/heal-chezmoi.sh +51 -0
- package/scripts/ops/heal-system.sh +128 -0
- package/scripts/ops/heal-tools.sh +340 -0
- package/scripts/ops/heal.sh +222 -0
- package/scripts/ops/post-apply-repair.sh +106 -0
- package/scripts/ops/prewarm.sh +127 -0
- package/scripts/ops/release.sh +252 -0
- package/scripts/ops/rollback.sh +589 -0
- package/scripts/ops/setup.sh +137 -0
- package/scripts/ops/teleport.sh +33 -0
- package/scripts/qa/coverage-baseline.sh +60 -0
- package/scripts/qa/docs-coverage.sh +111 -0
- package/scripts/qa/reliability-audit.sh +138 -0
- package/scripts/qa/traceability-coverage.sh +116 -0
- package/scripts/qa/validate-examples.sh +26 -0
- package/scripts/qa/wsl-contract.sh +11 -0
- package/scripts/release/package-policy-bundles.sh +125 -0
- package/scripts/secrets/age-init.sh +70 -0
- package/scripts/secrets/create-secrets-file.sh +45 -0
- package/scripts/secrets/encrypt-ssh-key.sh +43 -0
- package/scripts/security/backup.sh +57 -0
- package/scripts/security/dns-doh.sh +51 -0
- package/scripts/security/encryption-check.sh +54 -0
- package/scripts/security/enforce-policies.sh +334 -0
- package/scripts/security/firewall.sh +90 -0
- package/scripts/security/lock-configs.sh +57 -0
- package/scripts/security/lock-screen.sh +55 -0
- package/scripts/security/manage-secrets.sh +428 -0
- package/scripts/security/ssh-cert.sh +203 -0
- package/scripts/security/telemetry-kill.sh +50 -0
- package/scripts/security/usb-safety.sh +51 -0
- package/scripts/theme/apply-gnome-theme.sh +328 -0
- package/scripts/theme/extract-theme.py +677 -0
- package/scripts/theme/install-boot-logo.sh +62 -0
- package/scripts/theme/install-catppuccin-themes.sh +370 -0
- package/scripts/theme/install-cursors.sh +25 -0
- package/scripts/theme/install-file-icons.sh +26 -0
- package/scripts/theme/install-grub-theme.sh +61 -0
- package/scripts/theme/install-lock-icon.sh +30 -0
- package/scripts/theme/merge-wallpaper.sh +141 -0
- package/scripts/theme/rebuild-themes.sh +309 -0
- package/scripts/theme/switch.sh +421 -0
- package/scripts/theme/wallpaper-rotate.sh +136 -0
- package/scripts/theme/wallpaper-sync.sh +397 -0
- package/scripts/tools/cmatrix.sh +21 -0
- package/scripts/{detect-collisions.py → tools/detect-collisions.py} +2 -2
- package/scripts/tools/emoji-picker.sh +48 -0
- package/scripts/tools/figlet-banner.sh +18 -0
- package/scripts/tools/log-rotate.sh +30 -0
- package/scripts/tools/lolcat-wrap.sh +19 -0
- package/scripts/tools/pipes.sh +48 -0
- package/scripts/tuning/linux.sh +185 -0
- package/scripts/tuning/macos.sh +55 -0
- package/scripts/uninstall.sh +85 -0
- package/scripts/version-sync.sh +487 -0
- package/templates/chezmoi-data/geekom-a9.toml.example +21 -0
- package/templates/chezmoi-data/mac-m1.toml.example +16 -0
- package/templates/chezmoi-data/mac-t2-linux.toml.example +21 -0
- package/templates/chezmoi-data/surface-pro-7p.toml.example +21 -0
- package/templates/projects/go/.github/workflows/ci.yml +31 -0
- package/templates/projects/go/README.md +4 -0
- package/templates/projects/go/cmd/__PROJECT_NAME__/main.go +1 -0
- package/templates/projects/go/go.sum +0 -0
- package/templates/projects/molecule/README.md +7 -0
- package/templates/projects/molecule/converge.yml +7 -0
- package/templates/projects/molecule/molecule.yml +16 -0
- package/templates/projects/node/.github/workflows/ci.yml +30 -0
- package/templates/projects/node/README.md +4 -0
- package/templates/projects/node/package-lock.json +12 -0
- package/templates/projects/node/src/index.js +1 -0
- package/templates/projects/packer/README.md +15 -0
- package/templates/projects/packer/main.pkr.hcl +15 -0
- package/templates/projects/python/.github/workflows/ci.yml +34 -0
- package/templates/projects/python/README.md +4 -0
- package/templates/projects/python/pyproject.toml +15 -0
- package/templates/projects/python/src/__PROJECT_NAME__/__init__.py +1 -0
- package/templates/projects/python/tests/test_basic.py +1 -0
- package/docs/ARCHITECTURE.md +0 -62
- package/docs/COMPLIANCE.md +0 -47
- package/docs/OPERATIONS.md +0 -103
- package/docs/PR_DESCRIPTION.md +0 -150
- package/docs/ROADMAP_legacy.md +0 -556
- package/docs/SECURITY_CHECKLIST.md +0 -25
- package/docs/TASK.md +0 -99
- package/docs/WALKTHROUGH.md +0 -46
- package/scripts/backup.sh +0 -142
- package/scripts/banner.sh +0 -20
- package/scripts/benchmark.sh +0 -20
- package/scripts/build.sh +0 -41
- package/scripts/clean.sh +0 -31
- package/scripts/compile.sh +0 -54
- package/scripts/copy.sh +0 -108
- package/scripts/doctor.sh +0 -79
- package/scripts/dotfiles.sh +0 -63
- package/scripts/download.sh +0 -35
- package/scripts/help.sh +0 -57
- package/scripts/lock-configs.sh +0 -57
- package/scripts/package.sh +0 -46
- package/scripts/ssh.sh +0 -55
- package/scripts/teleport.sh +0 -23
- package/scripts/test-aliases.sh +0 -25
- package/scripts/test_smoke.sh +0 -88
- package/scripts/unpack.sh +0 -28
|
@@ -0,0 +1,167 @@
|
|
|
1
|
+
# Cookbook: Frequently Asked Questions
|
|
2
|
+
|
|
3
|
+
## General
|
|
4
|
+
|
|
5
|
+
### Why use this over stow, yadm, or a plain Git repo?
|
|
6
|
+
|
|
7
|
+
Because it's not just a dotfiles manager. It's a workstation baseline with:
|
|
8
|
+
|
|
9
|
+
- Cryptographic attestation
|
|
10
|
+
- AI/MCP policy enforcement
|
|
11
|
+
- Wallpaper-driven theme engine (WCAG AAA)
|
|
12
|
+
- Self-healing + chaos testing
|
|
13
|
+
- Fleet management
|
|
14
|
+
- Per-platform rendering via chezmoi templates
|
|
15
|
+
|
|
16
|
+
If you only need to symlink `.bashrc`, use stow. If you're operating a fleet of signed, attested, AI-aware workstations, use this.
|
|
17
|
+
|
|
18
|
+
### Does it work on Windows?
|
|
19
|
+
|
|
20
|
+
Only via WSL2. Native Windows PowerShell support exists for baseline parity (aliases, prompt), but the full feature set (chezmoi, Mise, theme engine) requires WSL2.
|
|
21
|
+
|
|
22
|
+
### Is it production-ready?
|
|
23
|
+
|
|
24
|
+
Yes — it's the author's daily driver across multiple hosts and receives regular releases (see `CHANGELOG.md`). CI enforces 100% test coverage, zero-warning linting, WCAG AAA for themes, SBOM + CVE scanning, and signed commits on every merge.
|
|
25
|
+
|
|
26
|
+
### Can I fork it and use it without attribution?
|
|
27
|
+
|
|
28
|
+
Yes — MIT License. Attribution is appreciated but not required.
|
|
29
|
+
|
|
30
|
+
## Themes
|
|
31
|
+
|
|
32
|
+
### Why K-Means in CIELAB instead of RGB?
|
|
33
|
+
|
|
34
|
+
CIELAB distances approximate human perception. A Δ in RGB might look identical to your eye in one part of the color space and very different in another. Clustering in Lab produces palettes where "close" colors actually look close. See [Theme Engine](../01-concepts/03-theme-engine.md).
|
|
35
|
+
|
|
36
|
+
### Why not pre-built themes like Catppuccin or Rosé Pine?
|
|
37
|
+
|
|
38
|
+
Two reasons:
|
|
39
|
+
1. **Maintenance** — 100+ themes × 20+ applications = thousands of template variables to keep in sync. Generation from wallpapers eliminates that.
|
|
40
|
+
2. **User agency** — users bring their own wallpapers. The theme adapts to them, not the other way around.
|
|
41
|
+
|
|
42
|
+
The engine can still produce Catppuccin-like output: give it a Catppuccin wallpaper and you get Catppuccin-aligned terminal colors.
|
|
43
|
+
|
|
44
|
+
### Does it ship wallpapers?
|
|
45
|
+
|
|
46
|
+
No. Apple/Microsoft/distro-vendor wallpapers are copyrighted. The repo discovers wallpapers that are already on the user's system (at `~/Pictures/Wallpapers/` or the OS's system wallpaper directory). Users bring their own images.
|
|
47
|
+
|
|
48
|
+
### How do I control the accent color?
|
|
49
|
+
|
|
50
|
+
You don't directly — the accent hue is extracted from the wallpaper. But `_compute_accent()` picks the most chromatic cluster, then darkens it until white text meets 7:1 contrast. If you want a specific accent, choose a wallpaper with that hue dominant.
|
|
51
|
+
|
|
52
|
+
### Can I use my own theme without a wallpaper?
|
|
53
|
+
|
|
54
|
+
Not directly — the engine expects a source image. You could:
|
|
55
|
+
1. Pick a wallpaper whose palette you want
|
|
56
|
+
2. Let the engine generate the theme
|
|
57
|
+
3. Lock the generated `.toml` entry by copying to a non-regenerated path
|
|
58
|
+
|
|
59
|
+
But this defeats the point. If you have a specific palette in mind, generate a solid-color or gradient image with those colors and use that.
|
|
60
|
+
|
|
61
|
+
## Secrets
|
|
62
|
+
|
|
63
|
+
### Why Age instead of GPG?
|
|
64
|
+
|
|
65
|
+
GPG is notoriously complex. Age is simpler, uses modern crypto (X25519 + ChaCha20-Poly1305), and has no legacy baggage. It's the tool [SOPS recommends](https://github.com/getsops/sops#encrypting-using-age).
|
|
66
|
+
|
|
67
|
+
### Why commit encrypted secrets at all?
|
|
68
|
+
|
|
69
|
+
- **Traceable** — Git history shows when secrets changed
|
|
70
|
+
- **Auditable** — ciphertext is testable without decryption
|
|
71
|
+
- **Portable** — clone the repo anywhere, decrypt with your key
|
|
72
|
+
- **No external dependency** — no Vault/AWS Secrets Manager/etc.
|
|
73
|
+
|
|
74
|
+
The alternative (storing secrets outside the repo) creates sync headaches across fleet hosts. Encrypted-at-rest-in-repo is simpler and just as secure if keys are managed correctly.
|
|
75
|
+
|
|
76
|
+
### What if I lose my Age private key?
|
|
77
|
+
|
|
78
|
+
You lose access to all secrets encrypted only for that key. Recovery requires another recipient (another host with a valid key) to decrypt and re-encrypt. Fleet setups use multiple recipients for this reason — see [Deploy to Fleet](../02-tutorials/05-deploy-fleet.md).
|
|
79
|
+
|
|
80
|
+
## AI & Agents
|
|
81
|
+
|
|
82
|
+
### Does this require an API key?
|
|
83
|
+
|
|
84
|
+
No. The AI tools (Claude Code, Codex, Copilot) are installed but require their own authentication. `dot ai` shows what's present without invoking any remote service.
|
|
85
|
+
|
|
86
|
+
### What is MCP?
|
|
87
|
+
|
|
88
|
+
The [Model Context Protocol](https://modelcontextprotocol.io/) is a standard for connecting AI models to tools and data sources. `.dotfiles` includes policy enforcement for MCP-aware agents: allowlists, attestation, and signed registries. See [Trust Model](../01-concepts/02-trust-model.md).
|
|
89
|
+
|
|
90
|
+
### Can I add my own agent profile?
|
|
91
|
+
|
|
92
|
+
Yes. Drop a Markdown file in `dot_config/ai/patterns/`. Each file describes a profile (architect, hardener, etc.). `dot mode <name>` switches between them.
|
|
93
|
+
|
|
94
|
+
## Fleet
|
|
95
|
+
|
|
96
|
+
### How many hosts can I manage?
|
|
97
|
+
|
|
98
|
+
No hard limit. The `dot fleet` commands SSH sequentially by default, so large fleets (>20 hosts) benefit from parallel invocation. For industrial scale, pair with Ansible/Nix/Puppet; `.dotfiles` handles the user-level config, not system administration.
|
|
99
|
+
|
|
100
|
+
### Do I need a central server?
|
|
101
|
+
|
|
102
|
+
No. Everything is Git-based. No central orchestration service, no daemon. Each host pulls independently.
|
|
103
|
+
|
|
104
|
+
### Can two hosts have different themes?
|
|
105
|
+
|
|
106
|
+
Yes. Each host's `~/.config/chezmoi/chezmoi.toml` can set its own `theme`. This is per-host override — not shared in the repo.
|
|
107
|
+
|
|
108
|
+
## Performance
|
|
109
|
+
|
|
110
|
+
### Why is my shell startup 800ms when the budget is 500ms?
|
|
111
|
+
|
|
112
|
+
Check what's loaded:
|
|
113
|
+
|
|
114
|
+
```sh
|
|
115
|
+
DOTFILES_DEBUG=1 zsh -i -c exit 2>&1 | grep -E '\[debug [0-9]+ms\]'
|
|
116
|
+
```
|
|
117
|
+
|
|
118
|
+
Common culprits:
|
|
119
|
+
- nvm loading Node on every shell (use lazy loading)
|
|
120
|
+
- `mise activate` with aggressive hook-env (set `activate_aggressive = false`)
|
|
121
|
+
- Plugin manager scanning for updates
|
|
122
|
+
|
|
123
|
+
Run `dot benchmark --detailed` to attribute cost.
|
|
124
|
+
|
|
125
|
+
### Can I disable prewarming?
|
|
126
|
+
|
|
127
|
+
Yes — but your cold shell startup will be slow. Remove the prewarm invocation from your shell profile or skip `dot prewarm` after apply.
|
|
128
|
+
|
|
129
|
+
## Troubleshooting Community
|
|
130
|
+
|
|
131
|
+
### Where do I report bugs?
|
|
132
|
+
|
|
133
|
+
GitHub issues: <https://github.com/sebastienrousseau/dotfiles/issues>. Include output of `dot doctor --json` and your platform.
|
|
134
|
+
|
|
135
|
+
### Where do I ask usage questions?
|
|
136
|
+
|
|
137
|
+
GitHub discussions, or mention in the issue you open. The maintainer responds best to issues with clear repro steps.
|
|
138
|
+
|
|
139
|
+
### Is there a Discord / Slack?
|
|
140
|
+
|
|
141
|
+
Not currently.
|
|
142
|
+
|
|
143
|
+
## Philosophy
|
|
144
|
+
|
|
145
|
+
### Why so much emphasis on attestation?
|
|
146
|
+
|
|
147
|
+
Because AI agents operating on your workstation can do anything you can. Attestation is the audit trail — who ran what, when, with which policy. Without it, agent operations are black boxes.
|
|
148
|
+
|
|
149
|
+
### Why MIT License?
|
|
150
|
+
|
|
151
|
+
To maximize adoption and contribution. MIT is compatible with commercial use; copyleft alternatives would restrict who can use the code.
|
|
152
|
+
|
|
153
|
+
### Why no GUI configurator?
|
|
154
|
+
|
|
155
|
+
Text + Git is the optimal interface for a workstation baseline:
|
|
156
|
+
- Versioned (Git history)
|
|
157
|
+
- Reproducible (same input → same output)
|
|
158
|
+
- Auditable (diff-able)
|
|
159
|
+
- Scriptable (any `dot` command can be invoked programmatically)
|
|
160
|
+
|
|
161
|
+
A GUI adds complexity without benefit over editing `.chezmoidata.toml` directly.
|
|
162
|
+
|
|
163
|
+
## See Also
|
|
164
|
+
|
|
165
|
+
- [Troubleshooting](02-troubleshooting.md)
|
|
166
|
+
- [Recipes](01-recipes.md)
|
|
167
|
+
- [GitHub Discussions](https://github.com/sebastienrousseau/dotfiles/discussions)
|
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
# Appendix A: Platform Support Matrix
|
|
2
|
+
|
|
3
|
+
## Supported Platforms
|
|
4
|
+
|
|
5
|
+
| OS | Version | Support | Notes |
|
|
6
|
+
|:---|:---|:---:|:---|
|
|
7
|
+
| macOS | 14 (Sonoma) | ✓ full | Primary development platform |
|
|
8
|
+
| macOS | 15 (Sequoia) | ✓ full | |
|
|
9
|
+
| macOS | 26 (Tahoe) | ✓ full | |
|
|
10
|
+
| Ubuntu | 22.04 LTS | ✓ full | |
|
|
11
|
+
| Ubuntu | 24.04 LTS | ✓ full | CI reference platform |
|
|
12
|
+
| Debian | 12 (Bookworm) | ✓ full | |
|
|
13
|
+
| Debian | 13 (Trixie) | ✓ full | |
|
|
14
|
+
| Arch Linux | rolling | ✓ full | |
|
|
15
|
+
| CachyOS | rolling | ✓ full | Arch-based |
|
|
16
|
+
| Fedora | 39 | ✓ | Less tested |
|
|
17
|
+
| Fedora | 40, 41 | ✓ | Less tested |
|
|
18
|
+
| openSUSE | Tumbleweed | ✓ | Less tested |
|
|
19
|
+
| Alpine | 3.20 | ⚠ partial | POSIX shells only; no Fish |
|
|
20
|
+
| WSL2 | Ubuntu 22.04+ | ✓ full | Windows 11 host |
|
|
21
|
+
| WSL2 | Debian | ✓ full | |
|
|
22
|
+
| Windows PowerShell | 7.5+ | ⚠ baseline | Aliases + prompt; no chezmoi |
|
|
23
|
+
| FreeBSD | 14 | ✗ untested | |
|
|
24
|
+
| Termux (Android) | latest | ✗ untested | |
|
|
25
|
+
|
|
26
|
+
## Supported Shells
|
|
27
|
+
|
|
28
|
+
| Shell | Version | Support |
|
|
29
|
+
|:---|:---|:---:|
|
|
30
|
+
| Fish | 3.6+ | ✓ primary |
|
|
31
|
+
| Zsh | 5.9+ | ✓ full |
|
|
32
|
+
| Bash | 5.0+ | ✓ full |
|
|
33
|
+
| Nushell | 0.90+ | ✓ full |
|
|
34
|
+
| PowerShell | 7.5+ | ⚠ baseline |
|
|
35
|
+
|
|
36
|
+
## Supported Architectures
|
|
37
|
+
|
|
38
|
+
| Arch | Status |
|
|
39
|
+
|:---:|:---:|
|
|
40
|
+
| amd64 / x86_64 | ✓ |
|
|
41
|
+
| arm64 / aarch64 | ✓ |
|
|
42
|
+
| armv7 | ⚠ best-effort |
|
|
43
|
+
| riscv64 | ✗ untested |
|
|
44
|
+
|
|
45
|
+
## Required Binaries
|
|
46
|
+
|
|
47
|
+
| Binary | Purpose | Install |
|
|
48
|
+
|:---|:---|:---|
|
|
49
|
+
| `git` | Version control | System package manager |
|
|
50
|
+
| `curl` | Installer | System package manager |
|
|
51
|
+
| `chezmoi` | Template engine | Installer downloads verified binary |
|
|
52
|
+
|
|
53
|
+
## Optional Binaries (installed by Mise on first apply)
|
|
54
|
+
|
|
55
|
+
| Binary | Purpose |
|
|
56
|
+
|:---|:---|
|
|
57
|
+
| `mise` | Runtime version manager |
|
|
58
|
+
| `age` | Secret encryption |
|
|
59
|
+
| `sops` | YAML secret encryption |
|
|
60
|
+
| `pandoc` | Manual generation |
|
|
61
|
+
| `shellcheck` | Shell linting |
|
|
62
|
+
| `shfmt` | Shell formatting |
|
|
63
|
+
| `starship` | Prompt |
|
|
64
|
+
| `fzf` | Fuzzy finder |
|
|
65
|
+
| `zoxide` | Smart `cd` |
|
|
66
|
+
| `atuin` | Shell history sync |
|
|
67
|
+
| `delta` | Git diff pager |
|
|
68
|
+
| `lazygit` | TUI Git client |
|
|
69
|
+
| `neovim` | Editor |
|
|
70
|
+
|
|
71
|
+
## Tested CI Environments
|
|
72
|
+
|
|
73
|
+
| Environment | Workflow |
|
|
74
|
+
|:---|:---|
|
|
75
|
+
| macOS 14 (GHA) | `ci.yml`, `ci-enforced.yml` |
|
|
76
|
+
| Ubuntu 24.04 (GHA) | `ci.yml`, `ci-enforced.yml` |
|
|
77
|
+
| GitHub Codespaces | `devcontainer-prebuild.yml` |
|
|
78
|
+
| Docker Ubuntu 24.04 | `ci.yml` test-docker job |
|
|
79
|
+
|
|
80
|
+
## Feature Matrix
|
|
81
|
+
|
|
82
|
+
| Feature | macOS | Linux | WSL2 |
|
|
83
|
+
|:---|:---:|:---:|:---:|
|
|
84
|
+
| Shell configs (zsh/fish/bash/nu) | ✓ | ✓ | ✓ |
|
|
85
|
+
| Terminal emulator configs | ✓ | ✓ | ✗ (host handles) |
|
|
86
|
+
| Theme engine (K-Means) | ✓ | ✓ | ✓ |
|
|
87
|
+
| Dynamic HEIC dark/light | ✓ native | ⚠ HEIC→PNG converted | ✗ |
|
|
88
|
+
| Neovim + LSP | ✓ | ✓ | ✓ |
|
|
89
|
+
| AI tools (Claude, Codex, etc.) | ✓ | ✓ | ✓ |
|
|
90
|
+
| MCP policy enforcement | ✓ | ✓ | ✓ |
|
|
91
|
+
| Attestation | ✓ | ✓ | ✓ |
|
|
92
|
+
| Fleet (SSH-based) | ✓ | ✓ | ⚠ |
|
|
93
|
+
| AeroSpace (WM) | ✓ | ✗ | ✗ |
|
|
94
|
+
| Niri (WM) | ✗ | ✓ | ✗ |
|
|
95
|
+
| GNOME gsettings | ✗ | ✓ | ⚠ |
|
|
96
|
+
| Build artifact redirect | ✓ | ✓ | ✓ |
|
|
97
|
+
| Self-healing (`dot heal`) | ✓ | ✓ | ✓ |
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
# Appendix B: Security Checklist
|
|
2
|
+
|
|
3
|
+
Run this checklist after a fresh install and quarterly afterwards.
|
|
4
|
+
|
|
5
|
+
## Pre-Install
|
|
6
|
+
|
|
7
|
+
- [ ] Download `install.sh` over HTTPS only
|
|
8
|
+
- [ ] Inspect `install.sh` before running (optional, recommended for untrusted environments)
|
|
9
|
+
- [ ] Ensure SSH signing key exists and is backed up (`~/.ssh/id_ed25519`)
|
|
10
|
+
- [ ] Ensure Age key is backed up if reinstalling (`~/.config/age/keys.txt`)
|
|
11
|
+
|
|
12
|
+
## Post-Install
|
|
13
|
+
|
|
14
|
+
- [ ] Run `dot doctor` — expect score ≥90
|
|
15
|
+
- [ ] Run `dot verify --security` — all checks pass
|
|
16
|
+
- [ ] Verify commit signing: `cd ~/.dotfiles && git verify-commit HEAD`
|
|
17
|
+
- [ ] Confirm `~/.ssh/allowed_signers` contains your public key
|
|
18
|
+
- [ ] Check that `~/.config/age/keys.txt` permissions are `0600`
|
|
19
|
+
- [ ] Run `dot mcp --strict` — policy matches registry
|
|
20
|
+
|
|
21
|
+
## Ongoing (monthly)
|
|
22
|
+
|
|
23
|
+
- [ ] `dot upgrade` — pick up security patches
|
|
24
|
+
- [ ] `dot verify --security` — confirm no new leaks
|
|
25
|
+
- [ ] Review `~/.local/state/dotfiles/mcp-violations.log` — any unexpected entries?
|
|
26
|
+
- [ ] Review recent attestations — `ls ~/.local/state/dotfiles/attestation/ | tail -10`
|
|
27
|
+
- [ ] Rotate Age key if compromised or as part of scheduled rotation
|
|
28
|
+
|
|
29
|
+
## Ongoing (quarterly)
|
|
30
|
+
|
|
31
|
+
- [ ] Rotate SSH signing key
|
|
32
|
+
- [ ] Audit `~/.ssh/allowed_signers` — remove former team members
|
|
33
|
+
- [ ] Review SOPS recipient list in `.sops.yaml`
|
|
34
|
+
- [ ] Run `dot chaos` in a test container — verify heal works
|
|
35
|
+
- [ ] Update pinned tool versions in `mise.toml`
|
|
36
|
+
- [ ] Run fleet attestation — confirm all hosts aligned
|
|
37
|
+
|
|
38
|
+
## Incident Response
|
|
39
|
+
|
|
40
|
+
If a secret leak is detected:
|
|
41
|
+
|
|
42
|
+
1. **Contain** — remove from history, force-push
|
|
43
|
+
```sh
|
|
44
|
+
git filter-repo --path <file> --invert-paths
|
|
45
|
+
git push --force
|
|
46
|
+
```
|
|
47
|
+
2. **Rotate** — change the leaked secret upstream (Stripe key, SSH key, etc.)
|
|
48
|
+
3. **Audit** — check who/what had access
|
|
49
|
+
4. **Notify** — inform affected parties if required
|
|
50
|
+
|
|
51
|
+
If a host is compromised:
|
|
52
|
+
|
|
53
|
+
1. **Revoke** — remove the host's public key from `~/.ssh/allowed_signers` on all other fleet hosts
|
|
54
|
+
2. **Re-encrypt** — `sops updatekeys` with the host excluded from recipients
|
|
55
|
+
3. **Attest** — run `dot fleet attest` to verify revocation propagated
|
|
56
|
+
4. **Wipe** — if the host is recoverable, `rm -rf ~/.config/age ~/.dotfiles` and reinstall
|
|
57
|
+
|
|
58
|
+
## Gates Enforced by CI
|
|
59
|
+
|
|
60
|
+
Every PR to master must pass:
|
|
61
|
+
|
|
62
|
+
- [x] SSH-signed commits
|
|
63
|
+
- [x] Shellcheck zero warnings (severity=error)
|
|
64
|
+
- [x] Gitleaks scan
|
|
65
|
+
- [x] Detect-secrets baseline diff
|
|
66
|
+
- [x] TruffleHog verified scan
|
|
67
|
+
- [x] Copyright headers present
|
|
68
|
+
- [x] 100% unit test coverage
|
|
69
|
+
- [x] Reliability tests (macOS + Ubuntu)
|
|
70
|
+
- [x] Checkov infra scan
|
|
71
|
+
- [x] Version sync (bumped across all files)
|
|
72
|
+
|
|
73
|
+
## See Also
|
|
74
|
+
|
|
75
|
+
- [Trust Model](../01-concepts/02-trust-model.md)
|
|
76
|
+
- [Encrypt a Secret tutorial](../02-tutorials/04-encrypt-secret.md)
|
|
77
|
+
- [Security Policy](../../security/SECURITY.md)
|
|
78
|
+
- [Incident Response Playbook](../../security/INCIDENT_RESPONSE.md)
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
# Appendix C: Glossary
|
|
2
|
+
|
|
3
|
+
| Term | Definition |
|
|
4
|
+
|:---|:---|
|
|
5
|
+
| **Age** | Modern file-encryption tool using X25519 + ChaCha20-Poly1305. Stores secrets in the repository encrypted at rest. |
|
|
6
|
+
| **Agent Profile** | A named behaviour template for AI agents (e.g. architect, hardener). Stored in `dot_config/ai/patterns/`. |
|
|
7
|
+
| **ANSI Colors** | The 16 foreground/background color slots (c0 through c15) used by terminal emulators. |
|
|
8
|
+
| **Apple Desktop APR** | XMP metadata in dynamic HEIC wallpapers mapping image indices to light/dark appearance modes. |
|
|
9
|
+
| **Attestation** | Signed JSON document asserting machine identity, policy, tool versions, and Git state at a point in time. |
|
|
10
|
+
| **Baseline (security)** | Reference state used by `detect-secrets` to distinguish new leaks from known acceptable patterns. |
|
|
11
|
+
| **Chaos** | Intentional corruption (`dot chaos`) used to verify `dot heal` recovers to a healthy state. |
|
|
12
|
+
| **Chezmoi** | The templating engine handling per-platform rendering and applying configuration to `$HOME`. |
|
|
13
|
+
| **CIELAB** | Color space designed for perceptual uniformity. Used by the theme engine for K-Means clustering. |
|
|
14
|
+
| **CycloneDX** | SBOM format used by the repository for machine-readable dependency inventories. |
|
|
15
|
+
| **Dank Material Shell (DMS)** | A shell for the Niri Wayland compositor that provides polished theming hooks. |
|
|
16
|
+
| **Drift** | Local changes to managed files that diverge from the source tree. Detected by `dot status`. |
|
|
17
|
+
| **Dynamic HEIC** | Apple's single-file wallpaper format that contains both light and dark variants with appearance metadata. |
|
|
18
|
+
| **Fleet** | Two or more workstations sharing a single `.dotfiles` source repository. |
|
|
19
|
+
| **Gitleaks** | Secret-pattern scanner that blocks commits containing obvious secret patterns. |
|
|
20
|
+
| **Golden Ratio** | 1.618... Used as the target brightness ratio between dark and light theme variants. |
|
|
21
|
+
| **Heal** | The `dot heal` command's action of auto-fixing drift, missing tools, and broken symlinks. |
|
|
22
|
+
| **Idempotent** | Property where running an operation twice has the same result as running it once. |
|
|
23
|
+
| **K-Means** | Clustering algorithm partitioning data into k groups by proximity to centroids. Used for dominant color extraction. |
|
|
24
|
+
| **K-Means++** | Variant of K-Means with smart initialization that reduces sensitivity to random seeding. |
|
|
25
|
+
| **MCP** | Model Context Protocol — standard for connecting AI models to external tools and data. |
|
|
26
|
+
| **Mise** | User-space language and tool version manager. Replaces asdf, nvm, rbenv, pyenv. |
|
|
27
|
+
| **Nix Flakes** | Nix's reproducible-build system. Used for strict repeatability when Mise's approximations aren't enough. |
|
|
28
|
+
| **Niri** | Wayland compositor with scrollable tiling layout. |
|
|
29
|
+
| **Policy Hash** | SHA-256 of the active MCP policy JSON. Included in attestations for drift detection. |
|
|
30
|
+
| **Prewarm** | `dot prewarm` regenerates shell init caches, eliminating slow first-shell startup. |
|
|
31
|
+
| **Profile** | Named collection of settings in `.chezmoidata.toml` selectable via `dot profile`. |
|
|
32
|
+
| **SOPS** | "Secrets OPerationS" — YAML-aware envelope encryption tool that wraps Age (or PGP/AWS KMS). |
|
|
33
|
+
| **SBOM** | Software Bill of Materials — machine-readable dependency list, generated by Syft, scanned by Grype. |
|
|
34
|
+
| **Trust Anchor** | The root public key from which all other trust derives. For `.dotfiles`, the user's SSH ED25519 signing key. |
|
|
35
|
+
| **WCAG AAA** | Web Content Accessibility Guidelines Level AAA — 7:1 text contrast ratio, the highest accessibility tier. |
|
|
36
|
+
| **XDG Base Directory** | Spec defining `~/.config`, `~/.cache`, `~/.local/share`, `~/.local/state` for app data locations. |
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
# Appendix D: Bibliography
|
|
2
|
+
|
|
3
|
+
Cited works and recommended reading.
|
|
4
|
+
|
|
5
|
+
## Algorithms
|
|
6
|
+
|
|
7
|
+
- **MacQueen, J. (1967).** *Some methods for classification and analysis of multivariate observations.* Proceedings of the Fifth Berkeley Symposium on Mathematical Statistics and Probability. — The original K-Means paper.
|
|
8
|
+
- **Arthur, D. & Vassilvitskii, S. (2007).** *K-Means++: The advantages of careful seeding.* ACM-SIAM Symposium on Discrete Algorithms. <https://theory.stanford.edu/~sergei/papers/kMeansPP-soda.pdf>
|
|
9
|
+
- **Heckbert, P. (1982).** *Color image quantization for frame buffer display.* Computer Graphics 16(3). — Median cut algorithm, the alternative to K-Means.
|
|
10
|
+
|
|
11
|
+
## Color Science
|
|
12
|
+
|
|
13
|
+
- **CIE (1976).** *Recommendations on uniform color spaces, color-difference equations, psychometric color terms.* Supplement No. 2 to CIE Publication No. 15. — Defines CIELAB.
|
|
14
|
+
- **Lindbloom, B. J.** *RGB/XYZ matrices.* <http://www.brucelindbloom.com/index.html?Eqn_RGB_XYZ_Matrix.html> — sRGB → XYZ conversion reference.
|
|
15
|
+
- **Fairchild, M. D. (2013).** *Color Appearance Models, 3rd Edition.* Wiley. — Comprehensive treatment of perceptual color spaces.
|
|
16
|
+
|
|
17
|
+
## Accessibility
|
|
18
|
+
|
|
19
|
+
- **W3C (2023).** *Web Content Accessibility Guidelines (WCAG) 2.2.* <https://www.w3.org/TR/WCAG22/> — Accessibility standards including contrast ratios.
|
|
20
|
+
- **W3C.** *Techniques for WCAG 2.2: G17 Using a contrast ratio of at least 7:1.* <https://www.w3.org/WAI/WCAG22/Techniques/general/G17>
|
|
21
|
+
|
|
22
|
+
## Cryptography
|
|
23
|
+
|
|
24
|
+
- **Valsorda, F. (2020).** *age: A simple, modern and secure encryption tool.* <https://age-encryption.org/>
|
|
25
|
+
- **Mozilla.** *SOPS: Secrets OPerationS.* <https://github.com/getsops/sops>
|
|
26
|
+
- **Barnes, R., et al. (2023).** *RFC 9420: The Messaging Layer Security (MLS) Protocol.* — Modern group-key agreement, relevant to multi-recipient encryption.
|
|
27
|
+
|
|
28
|
+
## Protocols
|
|
29
|
+
|
|
30
|
+
- **Anthropic.** *Model Context Protocol specification.* <https://modelcontextprotocol.io/>
|
|
31
|
+
- **OpenID Foundation.** *Model Context Protocol A2A (Agent-to-Agent).* — Referenced in `dot_config/dotfiles/agent-card.json`.
|
|
32
|
+
|
|
33
|
+
## Tools & Systems
|
|
34
|
+
|
|
35
|
+
- **Twpayne, T.** *chezmoi: Manage your dotfiles across multiple machines.* <https://chezmoi.io>
|
|
36
|
+
- **jdxcode.** *mise: Dev tools, env vars, task runner.* <https://mise.jdx.dev/>
|
|
37
|
+
- **NixOS.** *Nix Flakes.* <https://nixos.wiki/wiki/Flakes>
|
|
38
|
+
- **Microsoft / CycloneDX.** *CycloneDX SBOM specification.* <https://cyclonedx.org/>
|
|
39
|
+
- **Anchore.** *Syft + Grype.* <https://github.com/anchore/syft>, <https://github.com/anchore/grype>
|
|
40
|
+
|
|
41
|
+
## Shell Performance
|
|
42
|
+
|
|
43
|
+
- **Yoo, D.** *How to benchmark shell startup time.* <https://web.archive.org/web/2023/https://hermann.blog/benchmark-shell-startup-time>
|
|
44
|
+
- **Zsh manual.** *Startup files: zshenv, zprofile, zshrc.* <https://zsh.sourceforge.io/Doc/Release/Files.html>
|
|
45
|
+
|
|
46
|
+
## Documentation Systems
|
|
47
|
+
|
|
48
|
+
- **GNU Stow documentation.** <https://www.gnu.org/software/stow/manual/> — Inspiration for this manual's multi-format publishing model.
|
|
49
|
+
- **Pandoc.** *Universal document converter.* <https://pandoc.org/>
|
|
50
|
+
- **GNU Texinfo.** <https://www.gnu.org/software/texinfo/> — The original GNU documentation system.
|
|
51
|
+
|
|
52
|
+
## Author
|
|
53
|
+
|
|
54
|
+
- **Rousseau, S.** *Dotfiles v0.2.500.* <https://github.com/sebastienrousseau/dotfiles>
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
# Appendix E: License
|
|
2
|
+
|
|
3
|
+
## MIT License
|
|
4
|
+
|
|
5
|
+
Copyright (c) 2015-2026 Sebastien Rousseau
|
|
6
|
+
|
|
7
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
|
|
8
|
+
|
|
9
|
+
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
|
|
10
|
+
|
|
11
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
|
12
|
+
|
|
13
|
+
## Third-Party Licenses
|
|
14
|
+
|
|
15
|
+
This repository references, configures, or wraps many third-party tools. Each tool retains its own license:
|
|
16
|
+
|
|
17
|
+
| Tool | License |
|
|
18
|
+
|:---|:---|
|
|
19
|
+
| Chezmoi | MIT |
|
|
20
|
+
| Mise | MIT |
|
|
21
|
+
| Nix | LGPL-2.1 |
|
|
22
|
+
| Age | BSD-3-Clause |
|
|
23
|
+
| SOPS | MPL-2.0 |
|
|
24
|
+
| Fish shell | GPL-2.0 |
|
|
25
|
+
| Zsh | Zsh License (MIT-like) |
|
|
26
|
+
| Neovim | Apache-2.0 |
|
|
27
|
+
| ImageMagick | ImageMagick License (Apache-2.0-like) |
|
|
28
|
+
| Pandoc | GPL-2.0+ |
|
|
29
|
+
|
|
30
|
+
Wallpapers referenced from `/System/Library/Desktop Pictures/` or `/usr/share/backgrounds/` retain their original vendors' licenses (Apple, Microsoft, distribution vendors). They are not redistributed by this repository — they are discovered and processed in place.
|
|
31
|
+
|
|
32
|
+
## Contributions
|
|
33
|
+
|
|
34
|
+
Contributions are accepted under the MIT License. By submitting a pull request, you assert that your contribution is your own work (or properly attributed) and that it may be relicensed under MIT.
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
# Master ordering for build-manual.sh
|
|
2
|
+
# Determines concatenation order for single-page HTML/PDF/EPUB
|
|
3
|
+
title: "The .dotfiles Manual"
|
|
4
|
+
subtitle: "A Trusted Agent Workstation for macOS, Linux, and WSL"
|
|
5
|
+
version: "0.2.500"
|
|
6
|
+
|
|
7
|
+
sections:
|
|
8
|
+
- file: 00-introduction.md
|
|
9
|
+
title: "Introduction"
|
|
10
|
+
|
|
11
|
+
- group: "Concepts"
|
|
12
|
+
prefix: "01-concepts"
|
|
13
|
+
files:
|
|
14
|
+
- 01-architecture.md
|
|
15
|
+
- 02-trust-model.md
|
|
16
|
+
- 03-theme-engine.md
|
|
17
|
+
- 04-fleet.md
|
|
18
|
+
- 05-self-healing.md
|
|
19
|
+
|
|
20
|
+
- group: "Tutorials"
|
|
21
|
+
prefix: "02-tutorials"
|
|
22
|
+
files:
|
|
23
|
+
- 01-first-install.md
|
|
24
|
+
- 02-add-wallpaper.md
|
|
25
|
+
- 03-create-profile.md
|
|
26
|
+
- 04-encrypt-secret.md
|
|
27
|
+
- 05-deploy-fleet.md
|
|
28
|
+
|
|
29
|
+
- group: "Reference"
|
|
30
|
+
prefix: "03-reference"
|
|
31
|
+
files:
|
|
32
|
+
- 01-dot-cli.md
|
|
33
|
+
- 02-config-files.md
|
|
34
|
+
- 03-environment.md
|
|
35
|
+
- 04-templates.md
|
|
36
|
+
- 05-feature-flags.md
|
|
37
|
+
|
|
38
|
+
- group: "Cookbook"
|
|
39
|
+
prefix: "04-cookbook"
|
|
40
|
+
files:
|
|
41
|
+
- 01-recipes.md
|
|
42
|
+
- 02-troubleshooting.md
|
|
43
|
+
- 03-faq.md
|
|
44
|
+
|
|
45
|
+
- group: "Appendices"
|
|
46
|
+
prefix: "05-appendices"
|
|
47
|
+
files:
|
|
48
|
+
- A-platform-matrix.md
|
|
49
|
+
- B-security-checklist.md
|
|
50
|
+
- C-glossary.md
|
|
51
|
+
- D-bibliography.md
|
|
52
|
+
- E-license.md
|
|
53
|
+
|
|
54
|
+
- file: concept-index.md
|
|
55
|
+
title: "Concept Index"
|
|
56
|
+
|
|
57
|
+
- file: command-index.md
|
|
58
|
+
title: "Command Index"
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
# Command Index
|
|
2
|
+
|
|
3
|
+
Alphabetical list of `dot` subcommands referenced in the manual.
|
|
4
|
+
|
|
5
|
+
- `dot agent`
|
|
6
|
+
- `dot ai`
|
|
7
|
+
- `dot apply --dry-run`
|
|
8
|
+
- `dot apply`
|
|
9
|
+
- `dot attest`
|
|
10
|
+
- `dot benchmark --detailed`
|
|
11
|
+
- `dot benchmark`
|
|
12
|
+
- `dot bundle`
|
|
13
|
+
- `dot cache-refresh`
|
|
14
|
+
- `dot cd`
|
|
15
|
+
- `dot chaos`
|
|
16
|
+
- `dot clean-cache`
|
|
17
|
+
- `dot commit`
|
|
18
|
+
- `dot diff`
|
|
19
|
+
- `dot doctor --json`
|
|
20
|
+
- `dot doctor`
|
|
21
|
+
- `dot drift`
|
|
22
|
+
- `dot edit`
|
|
23
|
+
- `dot env`
|
|
24
|
+
- `dot fleet attest`
|
|
25
|
+
- `dot fleet diff`
|
|
26
|
+
- `dot fleet sync`
|
|
27
|
+
- `dot fleet`
|
|
28
|
+
- `dot heal`
|
|
29
|
+
- `dot help`
|
|
30
|
+
- `dot learn`
|
|
31
|
+
- `dot lint`
|
|
32
|
+
- `dot load-bench`
|
|
33
|
+
- `dot manual text`
|
|
34
|
+
- `dot manual`
|
|
35
|
+
- `dot mcp --strict`
|
|
36
|
+
- `dot mcp`
|
|
37
|
+
- `dot metrics`
|
|
38
|
+
- `dot mode`
|
|
39
|
+
- `dot packages`
|
|
40
|
+
- `dot perf`
|
|
41
|
+
- `dot prewarm`
|
|
42
|
+
- `dot profile`
|
|
43
|
+
- `dot rollback`
|
|
44
|
+
- `dot score`
|
|
45
|
+
- `dot secrets rotate`
|
|
46
|
+
- `dot secrets`
|
|
47
|
+
- `dot status`
|
|
48
|
+
- `dot sync`
|
|
49
|
+
- `dot theme list`
|
|
50
|
+
- `dot theme rebuild`
|
|
51
|
+
- `dot theme toggle`
|
|
52
|
+
- `dot theme`
|
|
53
|
+
- `dot tune`
|
|
54
|
+
- `dot update`
|
|
55
|
+
- `dot upgrade`
|
|
56
|
+
- `dot verify --security`
|
|
57
|
+
- `dot verify`
|
|
58
|
+
- `dot version`
|