@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,279 @@
|
|
|
1
|
+
# Tutorial: Deploy to a Fleet
|
|
2
|
+
|
|
3
|
+
Roll out `.dotfiles` across multiple workstations and verify they're in sync.
|
|
4
|
+
|
|
5
|
+
## Scenario
|
|
6
|
+
|
|
7
|
+
You have three hosts:
|
|
8
|
+
|
|
9
|
+
- **macbook-t2** — your MacBook (current host, already installed)
|
|
10
|
+
- **surface-pro** — your Linux laptop (new install)
|
|
11
|
+
- **geekom-a9** — your desktop NUC (new install)
|
|
12
|
+
|
|
13
|
+
Goal: all three running identical `.dotfiles` with per-host customization, with auditable cross-host attestation.
|
|
14
|
+
|
|
15
|
+
## Step 1: Per-Host Install
|
|
16
|
+
|
|
17
|
+
On each new host:
|
|
18
|
+
|
|
19
|
+
```sh
|
|
20
|
+
bash -c "$(curl -fsSL https://raw.githubusercontent.com/sebastienrousseau/dotfiles/master/install.sh)"
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
During `chezmoi init`, answer with the host's preset:
|
|
24
|
+
|
|
25
|
+
- Surface Pro → `machine = "surface-pro"`
|
|
26
|
+
- Geekom A9 → `machine = "geekom-a9"`
|
|
27
|
+
|
|
28
|
+
## Step 2: Exchange Signing Keys
|
|
29
|
+
|
|
30
|
+
Each host has its own SSH ED25519 key. To verify commits and attestations across the fleet, publish each host's public key to every other host.
|
|
31
|
+
|
|
32
|
+
**On each host, copy the public key:**
|
|
33
|
+
|
|
34
|
+
```sh
|
|
35
|
+
cat ~/.ssh/id_ed25519.pub
|
|
36
|
+
# ssh-ed25519 AAAAC3N...jkl5 user@macbook-t2
|
|
37
|
+
```
|
|
38
|
+
|
|
39
|
+
**Collect all three keys. Append them to `~/.ssh/allowed_signers` on every host:**
|
|
40
|
+
|
|
41
|
+
```
|
|
42
|
+
user@macbook-t2 ssh-ed25519 AAAAC3N...jkl5
|
|
43
|
+
user@surface-pro ssh-ed25519 AAAAC3N...abc7
|
|
44
|
+
user@geekom-a9 ssh-ed25519 AAAAC3N...def9
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
Optionally commit `allowed_signers` as a template so all hosts receive updates via `dot update`:
|
|
48
|
+
|
|
49
|
+
```sh
|
|
50
|
+
# On macbook-t2
|
|
51
|
+
chezmoi add ~/.ssh/allowed_signers
|
|
52
|
+
git add -A && git commit -sS -m "feat(ssh): add fleet signing keys"
|
|
53
|
+
git push
|
|
54
|
+
```
|
|
55
|
+
|
|
56
|
+
Now every other host gets the updated list on `dot update`.
|
|
57
|
+
|
|
58
|
+
## Step 3: Share the Age Key (for Shared Secrets)
|
|
59
|
+
|
|
60
|
+
If you want shared secrets decrypted on all three hosts, each host must have an Age key recipient in `.sops.yaml`.
|
|
61
|
+
|
|
62
|
+
Option A: Share one key across all hosts (simpler, less granular).
|
|
63
|
+
Option B: Each host has its own key; all three are listed as recipients (better operational security).
|
|
64
|
+
|
|
65
|
+
For Option B:
|
|
66
|
+
|
|
67
|
+
```sh
|
|
68
|
+
# On macbook-t2 (already set up)
|
|
69
|
+
grep "public key:" ~/.config/age/keys.txt
|
|
70
|
+
|
|
71
|
+
# On surface-pro
|
|
72
|
+
age-keygen -o ~/.config/age/keys.txt
|
|
73
|
+
grep "public key:" ~/.config/age/keys.txt
|
|
74
|
+
|
|
75
|
+
# On geekom-a9
|
|
76
|
+
age-keygen -o ~/.config/age/keys.txt
|
|
77
|
+
grep "public key:" ~/.config/age/keys.txt
|
|
78
|
+
```
|
|
79
|
+
|
|
80
|
+
Add all three public keys to `.sops.yaml`:
|
|
81
|
+
|
|
82
|
+
```yaml
|
|
83
|
+
creation_rules:
|
|
84
|
+
- path_regex: \.sops\.yaml$
|
|
85
|
+
age: >-
|
|
86
|
+
age1aaa...111, # macbook-t2
|
|
87
|
+
age1bbb...222, # surface-pro
|
|
88
|
+
age1ccc...333 # geekom-a9
|
|
89
|
+
```
|
|
90
|
+
|
|
91
|
+
Re-encrypt existing secrets for the new recipients:
|
|
92
|
+
|
|
93
|
+
```sh
|
|
94
|
+
# On macbook-t2
|
|
95
|
+
find . -name '*.sops.yaml' -exec sops updatekeys {} \;
|
|
96
|
+
git add .sops.yaml dot_config/*.sops.yaml
|
|
97
|
+
git commit -sS -m "chore(secrets): add fleet recipients"
|
|
98
|
+
git push
|
|
99
|
+
```
|
|
100
|
+
|
|
101
|
+
Other hosts on `dot update` decrypt with their own private key automatically.
|
|
102
|
+
|
|
103
|
+
## Step 4: Verify Fleet Alignment
|
|
104
|
+
|
|
105
|
+
From any host:
|
|
106
|
+
|
|
107
|
+
```sh
|
|
108
|
+
dot fleet attest
|
|
109
|
+
```
|
|
110
|
+
|
|
111
|
+
Expected output:
|
|
112
|
+
|
|
113
|
+
```
|
|
114
|
+
Fleet Attestation — v0.2.500
|
|
115
|
+
|
|
116
|
+
Host Git SHA Policy Tools OK Drift Verified
|
|
117
|
+
-------------- ---------- --------- ---------- ------- --------
|
|
118
|
+
macbook-t2 abc123d 0x7f2a… ✓ 0 ✓
|
|
119
|
+
surface-pro abc123d 0x7f2a… ✓ 0 ✓
|
|
120
|
+
geekom-a9 abc123d 0x7f2a… ✓ 0 ✓
|
|
121
|
+
-------------- ---------- --------- ---------- ------- --------
|
|
122
|
+
FLEET STATUS: 3/3 aligned
|
|
123
|
+
```
|
|
124
|
+
|
|
125
|
+
If any row shows drift or missing verification:
|
|
126
|
+
|
|
127
|
+
```sh
|
|
128
|
+
# Check which host is out of sync
|
|
129
|
+
dot fleet diff
|
|
130
|
+
|
|
131
|
+
# SSH into the affected host and fix
|
|
132
|
+
ssh surface-pro
|
|
133
|
+
dot doctor && dot heal
|
|
134
|
+
dot update
|
|
135
|
+
```
|
|
136
|
+
|
|
137
|
+
## Step 5: Per-Host Customization
|
|
138
|
+
|
|
139
|
+
Each host has its own `~/.config/chezmoi/chezmoi.toml` — use it for things that shouldn't propagate:
|
|
140
|
+
|
|
141
|
+
```toml
|
|
142
|
+
# surface-pro's chezmoi.toml
|
|
143
|
+
[data]
|
|
144
|
+
machine = "surface-pro"
|
|
145
|
+
theme = "dome-dark" # per-host default
|
|
146
|
+
default_shell = "fish"
|
|
147
|
+
terminal_font_size = 11 # smaller for HiDPI
|
|
148
|
+
```
|
|
149
|
+
|
|
150
|
+
```toml
|
|
151
|
+
# geekom-a9's chezmoi.toml
|
|
152
|
+
[data]
|
|
153
|
+
machine = "geekom-a9"
|
|
154
|
+
theme = "valley-dark" # different default
|
|
155
|
+
default_shell = "zsh"
|
|
156
|
+
terminal_font_size = 14 # larger for external 1440p
|
|
157
|
+
```
|
|
158
|
+
|
|
159
|
+
Both hosts render from the same templates, producing correct platform-appropriate output.
|
|
160
|
+
|
|
161
|
+
## Step 6: Fleet-Wide Updates
|
|
162
|
+
|
|
163
|
+
When you push a commit to master, each host pulls independently:
|
|
164
|
+
|
|
165
|
+
```sh
|
|
166
|
+
# On each host
|
|
167
|
+
dot update
|
|
168
|
+
```
|
|
169
|
+
|
|
170
|
+
`dot update` does:
|
|
171
|
+
|
|
172
|
+
1. `git pull --rebase --autostash` in `~/.dotfiles`
|
|
173
|
+
2. `chezmoi apply` with progress output
|
|
174
|
+
3. `dot heal` if apply detected drift
|
|
175
|
+
4. Reports changes applied
|
|
176
|
+
|
|
177
|
+
For simultaneous update across the fleet (requires SSH):
|
|
178
|
+
|
|
179
|
+
```sh
|
|
180
|
+
dot fleet sync
|
|
181
|
+
# Connects to each host in parallel
|
|
182
|
+
# Runs `dot update` via SSH
|
|
183
|
+
# Collects outcomes
|
|
184
|
+
```
|
|
185
|
+
|
|
186
|
+
## Step 7: Secrets Rotation
|
|
187
|
+
|
|
188
|
+
When a secret is compromised (or as part of routine rotation):
|
|
189
|
+
|
|
190
|
+
```sh
|
|
191
|
+
# 1. Edit the secret on any host
|
|
192
|
+
sops dot_config/credentials.sops.yaml
|
|
193
|
+
# Change the compromised value, save
|
|
194
|
+
|
|
195
|
+
# 2. Commit and push
|
|
196
|
+
git commit -sS -am "chore(secrets): rotate stripe key"
|
|
197
|
+
git push
|
|
198
|
+
|
|
199
|
+
# 3. All fleet hosts pick up the new value on next update
|
|
200
|
+
# On each host:
|
|
201
|
+
dot update
|
|
202
|
+
```
|
|
203
|
+
|
|
204
|
+
Since hosts all have the Age private key for themselves, decryption is automatic.
|
|
205
|
+
|
|
206
|
+
## Step 8: Decommission a Host
|
|
207
|
+
|
|
208
|
+
When retiring a host:
|
|
209
|
+
|
|
210
|
+
```sh
|
|
211
|
+
# 1. Remove the host's public key from allowed_signers
|
|
212
|
+
# Edit dot_ssh/allowed_signers.tmpl (on any host)
|
|
213
|
+
|
|
214
|
+
# 2. Remove the host's Age public key from .sops.yaml
|
|
215
|
+
|
|
216
|
+
# 3. Re-encrypt all SOPS files (remove the decommissioned recipient)
|
|
217
|
+
find . -name '*.sops.yaml' -exec sops updatekeys {} \;
|
|
218
|
+
|
|
219
|
+
# 4. Commit
|
|
220
|
+
git commit -sS -am "chore(fleet): decommission geekom-a9"
|
|
221
|
+
git push
|
|
222
|
+
|
|
223
|
+
# 5. On the decommissioned host: wipe the dotfiles state
|
|
224
|
+
rm -rf ~/.dotfiles ~/.local/bin/dot ~/.config/chezmoi ~/.config/age
|
|
225
|
+
```
|
|
226
|
+
|
|
227
|
+
## Troubleshooting
|
|
228
|
+
|
|
229
|
+
### "Fleet host unreachable"
|
|
230
|
+
|
|
231
|
+
`dot fleet` couldn't SSH to a host. Check:
|
|
232
|
+
|
|
233
|
+
```sh
|
|
234
|
+
ssh surface-pro 'dot version'
|
|
235
|
+
# If this fails, fix SSH connectivity first
|
|
236
|
+
```
|
|
237
|
+
|
|
238
|
+
### Drift on One Host
|
|
239
|
+
|
|
240
|
+
Run `dot heal` on that host:
|
|
241
|
+
|
|
242
|
+
```sh
|
|
243
|
+
ssh surface-pro 'dot heal'
|
|
244
|
+
```
|
|
245
|
+
|
|
246
|
+
If drift persists:
|
|
247
|
+
|
|
248
|
+
```sh
|
|
249
|
+
ssh surface-pro 'chezmoi diff | head -50'
|
|
250
|
+
# Inspect what's different
|
|
251
|
+
```
|
|
252
|
+
|
|
253
|
+
### Policy Hash Mismatch
|
|
254
|
+
|
|
255
|
+
One host has an older policy than the others. Usually means that host missed an update:
|
|
256
|
+
|
|
257
|
+
```sh
|
|
258
|
+
ssh surface-pro 'dot update'
|
|
259
|
+
```
|
|
260
|
+
|
|
261
|
+
### Attestation Signature Failed
|
|
262
|
+
|
|
263
|
+
The host's SSH key isn't in `~/.ssh/allowed_signers` on the verifying host. Fix by redistributing `allowed_signers`.
|
|
264
|
+
|
|
265
|
+
## Summary
|
|
266
|
+
|
|
267
|
+
A three-host fleet:
|
|
268
|
+
|
|
269
|
+
- Installs from one repository
|
|
270
|
+
- Has independent signing keys (each host verifies commits from others)
|
|
271
|
+
- Can share secrets across specific hosts via SOPS recipients
|
|
272
|
+
- Is auditable via `dot fleet attest`
|
|
273
|
+
- Updates independently with `dot update` (or in parallel with `dot fleet sync`)
|
|
274
|
+
|
|
275
|
+
## Next
|
|
276
|
+
|
|
277
|
+
- [Concept: Fleet Architecture](../01-concepts/04-fleet.md)
|
|
278
|
+
- [Reference: Fleet Commands](../03-reference/01-dot-cli.md#fleet)
|
|
279
|
+
- [Operations: Fleet Deployment](../../architecture/fleet-deployment.md)
|
|
@@ -0,0 +1,413 @@
|
|
|
1
|
+
# Reference: The `dot` CLI
|
|
2
|
+
|
|
3
|
+
Complete command reference. Every subcommand, every flag, every exit code.
|
|
4
|
+
|
|
5
|
+
## Invocation
|
|
6
|
+
|
|
7
|
+
```
|
|
8
|
+
dot [<command>] [<subcommand>] [<flags>] [<args>]
|
|
9
|
+
```
|
|
10
|
+
|
|
11
|
+
With no arguments, `dot` prints the overview (same as `dot help`).
|
|
12
|
+
|
|
13
|
+
## Global Flags
|
|
14
|
+
|
|
15
|
+
| Flag | Purpose |
|
|
16
|
+
|:---|:---|
|
|
17
|
+
| `-h`, `--help` | Show help for the command (or overview if no command given) |
|
|
18
|
+
| `-v`, `--verbose` | Verbose output |
|
|
19
|
+
| `--version` | Print the dotfiles version and exit |
|
|
20
|
+
| `--json` | Machine-readable JSON output (where supported) |
|
|
21
|
+
|
|
22
|
+
## Start Here
|
|
23
|
+
|
|
24
|
+
### `dot sync` / `dot apply`
|
|
25
|
+
|
|
26
|
+
Apply the tracked configuration to the machine. Aliases: `dot sync == dot apply`.
|
|
27
|
+
|
|
28
|
+
```
|
|
29
|
+
dot sync [--dry-run|-n] [--force|-f] [--verbose|-v]
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
| Flag | Effect |
|
|
33
|
+
|:---|:---|
|
|
34
|
+
| `--dry-run`, `-n` | Preview changes without applying |
|
|
35
|
+
| `--force`, `-f` | Skip confirmation prompts |
|
|
36
|
+
| `--verbose`, `-v` | Show per-file actions |
|
|
37
|
+
|
|
38
|
+
Exit codes: 0 (clean apply), 1 (drift reconciled), 2 (apply failed).
|
|
39
|
+
|
|
40
|
+
### `dot doctor`
|
|
41
|
+
|
|
42
|
+
Check the environment and surface issues.
|
|
43
|
+
|
|
44
|
+
```
|
|
45
|
+
dot doctor [--score|-s] [--heal|-H] [--json|-j] [--verbose|-v]
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
| Flag | Effect |
|
|
49
|
+
|:---|:---|
|
|
50
|
+
| `--score`, `-s` | Print numeric score (0-100) only |
|
|
51
|
+
| `--heal`, `-H` | Auto-fix detected issues |
|
|
52
|
+
| `--json`, `-j` | Machine-readable output |
|
|
53
|
+
| `--verbose`, `-v` | Show every check (default: failures only) |
|
|
54
|
+
|
|
55
|
+
Exit codes: 0 (healthy), 1 (warnings), 2 (critical failures).
|
|
56
|
+
|
|
57
|
+
### `dot learn`
|
|
58
|
+
|
|
59
|
+
Interactive guided tour of the environment. Takes ~5-10 minutes, covers shells, secrets, themes, performance, security. Press `q` to exit at any time.
|
|
60
|
+
|
|
61
|
+
### `dot help [<command>]`
|
|
62
|
+
|
|
63
|
+
Show the overview (no arg) or detailed help for a specific command.
|
|
64
|
+
|
|
65
|
+
## Daily Use
|
|
66
|
+
|
|
67
|
+
### `dot status` / `dot diff`
|
|
68
|
+
|
|
69
|
+
Show local drift or preview pending changes.
|
|
70
|
+
|
|
71
|
+
```
|
|
72
|
+
dot status # list changed managed files
|
|
73
|
+
dot diff [<path>] # show unified diff (all or one path)
|
|
74
|
+
```
|
|
75
|
+
|
|
76
|
+
### `dot edit`
|
|
77
|
+
|
|
78
|
+
Open the source directory in `$EDITOR`. Shorthand for `cd ~/.dotfiles && $EDITOR`.
|
|
79
|
+
|
|
80
|
+
### `dot upgrade`
|
|
81
|
+
|
|
82
|
+
Update tools, plugins, and dotfiles.
|
|
83
|
+
|
|
84
|
+
```
|
|
85
|
+
dot upgrade [--tools-only] [--dotfiles-only]
|
|
86
|
+
```
|
|
87
|
+
|
|
88
|
+
Runs `topgrade`-style upgrade of Mise tools, Nix flakes, homebrew (macOS), and pulls the latest `.dotfiles`.
|
|
89
|
+
|
|
90
|
+
### `dot commit`
|
|
91
|
+
|
|
92
|
+
Create an AI-assisted conventional commit from staged changes.
|
|
93
|
+
|
|
94
|
+
```
|
|
95
|
+
dot commit
|
|
96
|
+
```
|
|
97
|
+
|
|
98
|
+
Uses the configured AI provider (via `dot mode`) to generate a commit message matching the Conventional Commits spec.
|
|
99
|
+
|
|
100
|
+
### `dot search <term>`
|
|
101
|
+
|
|
102
|
+
Find commands by keyword.
|
|
103
|
+
|
|
104
|
+
```
|
|
105
|
+
dot search theme # lists all theme-related commands
|
|
106
|
+
dot search secret # lists all secret-related commands
|
|
107
|
+
```
|
|
108
|
+
|
|
109
|
+
## Inspect & Repair
|
|
110
|
+
|
|
111
|
+
### `dot heal`
|
|
112
|
+
|
|
113
|
+
Auto-repair missing tools, chezmoi drift, broken symlinks, and critical files.
|
|
114
|
+
|
|
115
|
+
```
|
|
116
|
+
dot heal [--dry-run|-n] [--force|-f] [--tool <name>]
|
|
117
|
+
```
|
|
118
|
+
|
|
119
|
+
See [Self-Healing concept](../01-concepts/05-self-healing.md).
|
|
120
|
+
|
|
121
|
+
### `dot rollback`
|
|
122
|
+
|
|
123
|
+
Return to a previous snapshot.
|
|
124
|
+
|
|
125
|
+
```
|
|
126
|
+
dot rollback # restore most recent snapshot
|
|
127
|
+
dot rollback status # list snapshots
|
|
128
|
+
dot rollback restore <n> # restore snapshot #n
|
|
129
|
+
dot rollback clean # delete snapshots older than 30 days
|
|
130
|
+
```
|
|
131
|
+
|
|
132
|
+
### `dot chaos`
|
|
133
|
+
|
|
134
|
+
Simulate corruption to test self-healing. **Destructive.** Use only in ephemeral environments.
|
|
135
|
+
|
|
136
|
+
```
|
|
137
|
+
dot chaos [symlink|config|tool|permission|all]
|
|
138
|
+
```
|
|
139
|
+
|
|
140
|
+
### `dot attest`
|
|
141
|
+
|
|
142
|
+
Export signed workstation evidence (see [Trust Model](../01-concepts/02-trust-model.md)).
|
|
143
|
+
|
|
144
|
+
```
|
|
145
|
+
dot attest [--output|-o <file>] [--sign|-s]
|
|
146
|
+
```
|
|
147
|
+
|
|
148
|
+
Default output: `~/.local/state/dotfiles/attestation/YYYY-MM-DD-HHMMSS.json`. With `--sign`, the JSON is signed with the user's SSH ED25519 key.
|
|
149
|
+
|
|
150
|
+
### `dot verify`
|
|
151
|
+
|
|
152
|
+
Verify integrity of the installation.
|
|
153
|
+
|
|
154
|
+
```
|
|
155
|
+
dot verify [--security|-s] [--attestation <path>]
|
|
156
|
+
```
|
|
157
|
+
|
|
158
|
+
| Flag | Effect |
|
|
159
|
+
|:---|:---|
|
|
160
|
+
| `--security`, `-s` | Run gitleaks + signature checks + policy hash |
|
|
161
|
+
| `--attestation <path>` | Verify an external attestation file |
|
|
162
|
+
|
|
163
|
+
### `dot lint`
|
|
164
|
+
|
|
165
|
+
Lint shell scripts (shellcheck, shfmt).
|
|
166
|
+
|
|
167
|
+
```
|
|
168
|
+
dot lint [--path <glob>] [--strict]
|
|
169
|
+
```
|
|
170
|
+
|
|
171
|
+
## Performance
|
|
172
|
+
|
|
173
|
+
### `dot benchmark`
|
|
174
|
+
|
|
175
|
+
Measure shell startup time.
|
|
176
|
+
|
|
177
|
+
```
|
|
178
|
+
dot benchmark [--detailed|-d] [--profile|-p] [--compare|-c] [--waterfall|-w] [--runs|-r <n>]
|
|
179
|
+
```
|
|
180
|
+
|
|
181
|
+
| Flag | Effect |
|
|
182
|
+
|:---|:---|
|
|
183
|
+
| `--detailed`, `-d` | Per-module timing breakdown |
|
|
184
|
+
| `--profile`, `-p` | Profile with `$SHELL -ixc ""` |
|
|
185
|
+
| `--compare`, `-c` | Compare against baseline |
|
|
186
|
+
| `--waterfall`, `-w` | Waterfall visualization |
|
|
187
|
+
| `--runs`, `-r <n>` | Number of hyperfine runs (default 10) |
|
|
188
|
+
|
|
189
|
+
Exit codes: 0 (<500ms target), 1 (regression).
|
|
190
|
+
|
|
191
|
+
### `dot perf`
|
|
192
|
+
|
|
193
|
+
Quick performance snapshot.
|
|
194
|
+
|
|
195
|
+
```
|
|
196
|
+
dot perf [--json|-j] [--profile|-p] [--runs|-r <n>] [--target|-t <ms>]
|
|
197
|
+
```
|
|
198
|
+
|
|
199
|
+
### `dot prewarm`
|
|
200
|
+
|
|
201
|
+
Regenerate shell init caches for fast startup.
|
|
202
|
+
|
|
203
|
+
### `dot cache-refresh`
|
|
204
|
+
|
|
205
|
+
Rebuild generated shell state (cold-start alternative to prewarm).
|
|
206
|
+
|
|
207
|
+
### `dot clean-cache`
|
|
208
|
+
|
|
209
|
+
Clear generated shell initialization caches. Next shell startup will be slow; use `dot prewarm` afterward.
|
|
210
|
+
|
|
211
|
+
### `dot score`
|
|
212
|
+
|
|
213
|
+
Show system health + security score.
|
|
214
|
+
|
|
215
|
+
### `dot metrics`
|
|
216
|
+
|
|
217
|
+
Show recent observability metrics (startup times, heal events, score history).
|
|
218
|
+
|
|
219
|
+
### `dot load-bench`
|
|
220
|
+
|
|
221
|
+
Measure heavy-layer (nvm, rbenv, direnv) readiness time.
|
|
222
|
+
|
|
223
|
+
## AI & Agents
|
|
224
|
+
|
|
225
|
+
### `dot ai`
|
|
226
|
+
|
|
227
|
+
Show installed AI tools with versions and status.
|
|
228
|
+
|
|
229
|
+
```
|
|
230
|
+
dot ai
|
|
231
|
+
```
|
|
232
|
+
|
|
233
|
+
### `dot mcp`
|
|
234
|
+
|
|
235
|
+
Inspect MCP policy and registry.
|
|
236
|
+
|
|
237
|
+
```
|
|
238
|
+
dot mcp [--strict|-s] [--json|-j]
|
|
239
|
+
```
|
|
240
|
+
|
|
241
|
+
With `--strict`, validates the active MCP registry matches the policy hash. Exit code 1 on mismatch.
|
|
242
|
+
|
|
243
|
+
### `dot mode [<profile>]`
|
|
244
|
+
|
|
245
|
+
Show or set the agent profile.
|
|
246
|
+
|
|
247
|
+
```
|
|
248
|
+
dot mode # show current profile
|
|
249
|
+
dot mode architect # switch to architect profile
|
|
250
|
+
dot mode list # list all profiles
|
|
251
|
+
```
|
|
252
|
+
|
|
253
|
+
Available profiles (see `dot_config/ai/patterns/`): `architect`, `hardener`, `refactor`. Custom profiles can be added by dropping `<name>.md` in the patterns directory.
|
|
254
|
+
|
|
255
|
+
### `dot agent`
|
|
256
|
+
|
|
257
|
+
Agent metadata, logs, checkpoints, and conformance reports.
|
|
258
|
+
|
|
259
|
+
```
|
|
260
|
+
dot agent status # current agent state
|
|
261
|
+
dot agent logs [--since <t>] # recent agent invocations
|
|
262
|
+
dot agent conformance # MCP policy conformance report
|
|
263
|
+
```
|
|
264
|
+
|
|
265
|
+
## Configuration
|
|
266
|
+
|
|
267
|
+
### `dot theme`
|
|
268
|
+
|
|
269
|
+
Switch terminal and desktop themes. See [Theme Engine](../01-concepts/03-theme-engine.md) and [Theming Guide](../../guides/THEMING.md).
|
|
270
|
+
|
|
271
|
+
```
|
|
272
|
+
dot theme # interactive picker
|
|
273
|
+
dot theme <name> # switch directly (e.g. dot theme tahoe-dark)
|
|
274
|
+
dot theme toggle # swap dark↔light within family
|
|
275
|
+
dot theme list # show paired themes with System/Custom source
|
|
276
|
+
dot theme rebuild [--force|--list] # regenerate from wallpapers
|
|
277
|
+
```
|
|
278
|
+
|
|
279
|
+
### `dot env`
|
|
280
|
+
|
|
281
|
+
Show managed tool versions.
|
|
282
|
+
|
|
283
|
+
```
|
|
284
|
+
dot env # all managed tools
|
|
285
|
+
dot env <tool> # single tool
|
|
286
|
+
```
|
|
287
|
+
|
|
288
|
+
### `dot profile [<name>]`
|
|
289
|
+
|
|
290
|
+
Show or switch the active profile.
|
|
291
|
+
|
|
292
|
+
```
|
|
293
|
+
dot profile # show active profile
|
|
294
|
+
dot profile list # all profiles
|
|
295
|
+
dot profile laptop # switch to 'laptop' profile
|
|
296
|
+
```
|
|
297
|
+
|
|
298
|
+
Profiles live in `.chezmoidata.toml` under `[profiles.<name>]`.
|
|
299
|
+
|
|
300
|
+
### `dot secrets`
|
|
301
|
+
|
|
302
|
+
Edit or manage encrypted secrets.
|
|
303
|
+
|
|
304
|
+
```
|
|
305
|
+
dot secrets list # all encrypted files
|
|
306
|
+
dot secrets edit <path> # open in $EDITOR (decrypted)
|
|
307
|
+
dot secrets rotate # re-encrypt with current recipients
|
|
308
|
+
dot secrets verify # integrity check (no decryption)
|
|
309
|
+
```
|
|
310
|
+
|
|
311
|
+
## Fleet
|
|
312
|
+
|
|
313
|
+
### `dot fleet`
|
|
314
|
+
|
|
315
|
+
Multi-node status, drift, and namespace.
|
|
316
|
+
|
|
317
|
+
```
|
|
318
|
+
dot fleet # show all known hosts
|
|
319
|
+
dot fleet attest # collect signed attestations
|
|
320
|
+
dot fleet diff # compare rendered config across hosts
|
|
321
|
+
dot fleet sync # run `dot update` on every host
|
|
322
|
+
```
|
|
323
|
+
|
|
324
|
+
Fleet hosts are configured in `~/.config/dotfiles/fleet.toml`.
|
|
325
|
+
|
|
326
|
+
## Reference
|
|
327
|
+
|
|
328
|
+
### `dot version`
|
|
329
|
+
|
|
330
|
+
Show the installed version.
|
|
331
|
+
|
|
332
|
+
```
|
|
333
|
+
dot version [--json]
|
|
334
|
+
```
|
|
335
|
+
|
|
336
|
+
### `dot manual`
|
|
337
|
+
|
|
338
|
+
Open or download the manual in multiple formats.
|
|
339
|
+
|
|
340
|
+
```
|
|
341
|
+
dot manual # open latest HTML manual in browser
|
|
342
|
+
dot manual pdf # download + open PDF
|
|
343
|
+
dot manual text # pipe ASCII text to pager
|
|
344
|
+
dot manual download <format> # save to current directory
|
|
345
|
+
dot manual --offline # use bundled offline copy (from `dot bundle`)
|
|
346
|
+
```
|
|
347
|
+
|
|
348
|
+
Formats: `html`, `html-multi`, `pdf`, `epub`, `text`, `markdown`.
|
|
349
|
+
|
|
350
|
+
### `dot add <path>`
|
|
351
|
+
|
|
352
|
+
Import a file into chezmoi's source directory.
|
|
353
|
+
|
|
354
|
+
```
|
|
355
|
+
dot add ~/.somefile # plaintext
|
|
356
|
+
dot add --encrypt ~/.somefile # encrypted with Age
|
|
357
|
+
dot add --template ~/.somefile # templatize
|
|
358
|
+
```
|
|
359
|
+
|
|
360
|
+
### `dot remove <path>`
|
|
361
|
+
|
|
362
|
+
Safely remove a managed file (removes from source and unmanages).
|
|
363
|
+
|
|
364
|
+
### `dot cd`
|
|
365
|
+
|
|
366
|
+
Print the source directory path. Useful for `cd $(dot cd)`.
|
|
367
|
+
|
|
368
|
+
### `dot bundle`
|
|
369
|
+
|
|
370
|
+
Create an offline portable archive.
|
|
371
|
+
|
|
372
|
+
```
|
|
373
|
+
dot bundle # default output ~/Downloads/
|
|
374
|
+
dot bundle --to <dir|file> # custom location
|
|
375
|
+
dot bundle --manual # include offline manual
|
|
376
|
+
dot bundle restore <bundle.tar.zst> # restore from bundle
|
|
377
|
+
```
|
|
378
|
+
|
|
379
|
+
### `dot packages`
|
|
380
|
+
|
|
381
|
+
Show installed packages and package managers.
|
|
382
|
+
|
|
383
|
+
```
|
|
384
|
+
dot packages
|
|
385
|
+
dot packages --manager mise|nix|brew|apt
|
|
386
|
+
```
|
|
387
|
+
|
|
388
|
+
## Environment Variables
|
|
389
|
+
|
|
390
|
+
| Variable | Purpose |
|
|
391
|
+
|:---|:---|
|
|
392
|
+
| `DOTFILES_VERBOSE=1` | Verbose output for all `dot` commands |
|
|
393
|
+
| `DOTFILES_NONINTERACTIVE=1` | Skip interactive prompts |
|
|
394
|
+
| `DOTFILES_SILENT=1` | Suppress non-error output |
|
|
395
|
+
| `DOTFILES_SOURCE_DIR` | Override the source directory |
|
|
396
|
+
| `DOTFILES_WALLPAPER_DIR` | Override `~/Pictures/Wallpapers/` |
|
|
397
|
+
| `DOTFILES_DEBUG=1` | Print timing info during shell init |
|
|
398
|
+
|
|
399
|
+
## Exit Codes
|
|
400
|
+
|
|
401
|
+
| Code | Meaning |
|
|
402
|
+
|:---|:---|
|
|
403
|
+
| 0 | Success |
|
|
404
|
+
| 1 | Warnings or recoverable errors |
|
|
405
|
+
| 2 | Critical failure — manual intervention required |
|
|
406
|
+
| 127 | Command not found |
|
|
407
|
+
|
|
408
|
+
## See Also
|
|
409
|
+
|
|
410
|
+
- [Configuration Files Reference](02-config-files.md)
|
|
411
|
+
- [Environment Reference](03-environment.md)
|
|
412
|
+
- [Template Variables](04-templates.md)
|
|
413
|
+
- [Feature Flags](05-feature-flags.md)
|