@sebastienrousseau/dotfiles 0.2.481 → 0.2.500
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +122 -32
- package/LICENSE +1 -1
- package/README.md +211 -242
- package/docs/.vitepress/reports/localization-readability-audit.md +69 -0
- package/docs/AI.md +102 -0
- package/docs/COPYRIGHT +2 -2
- package/docs/NAMING_CONVENTIONS.md +95 -0
- package/docs/README.md +58 -249
- package/docs/adr/ADR-004-cli-architecture.md +2 -2
- package/docs/adr/ADR-006-shell-selection.md +2 -2
- package/docs/adr/ADR-007-multi-shell-parity.md +53 -0
- package/docs/adr/ADR-008-alias-system-architecture.md +85 -0
- package/docs/adr/README.md +2 -3
- package/docs/architecture/ARCHITECTURE.md +113 -0
- package/docs/architecture/INTEROP.md +36 -0
- package/docs/architecture/REPO_LAYOUT.md +237 -0
- package/docs/architecture/WALKTHROUGH.md +82 -0
- package/docs/architecture/fleet-deployment.md +73 -0
- package/docs/archive/EUXIS_2026_REVIEW.md +119 -0
- package/docs/archive/MILESTONE_v0.2.493.md +43 -0
- package/docs/{PLAN.md → archive/PLAN.md} +1 -1
- package/docs/guides/INSTALL.md +140 -0
- package/docs/{NEOVIM_IDE_GUIDE.md → guides/NEOVIM_IDE_GUIDE.md} +12 -12
- package/docs/guides/THEMING.md +222 -0
- package/docs/{TROUBLESHOOTING.md → guides/TROUBLESHOOTING.md} +36 -0
- package/docs/{WSL2_NIX_TROUBLESHOOTING.md → guides/WSL2_NIX_TROUBLESHOOTING.md} +8 -8
- package/docs/index.md +39 -0
- package/docs/interop/A2A.md +32 -0
- package/docs/manual/00-introduction.md +85 -0
- package/docs/manual/01-concepts/01-architecture.md +134 -0
- package/docs/manual/01-concepts/02-trust-model.md +178 -0
- package/docs/manual/01-concepts/03-theme-engine.md +182 -0
- package/docs/manual/01-concepts/04-fleet.md +142 -0
- package/docs/manual/01-concepts/05-self-healing.md +197 -0
- package/docs/manual/02-tutorials/01-first-install.md +192 -0
- package/docs/manual/02-tutorials/02-add-wallpaper.md +211 -0
- package/docs/manual/02-tutorials/03-create-profile.md +238 -0
- package/docs/manual/02-tutorials/04-encrypt-secret.md +275 -0
- package/docs/manual/02-tutorials/05-deploy-fleet.md +279 -0
- package/docs/manual/03-reference/01-dot-cli.md +413 -0
- package/docs/manual/03-reference/02-config-files.md +259 -0
- package/docs/manual/03-reference/03-environment.md +120 -0
- package/docs/manual/03-reference/04-templates.md +184 -0
- package/docs/manual/03-reference/05-feature-flags.md +118 -0
- package/docs/manual/04-cookbook/01-recipes.md +281 -0
- package/docs/manual/04-cookbook/02-troubleshooting.md +319 -0
- package/docs/manual/04-cookbook/03-faq.md +167 -0
- package/docs/manual/05-appendices/A-platform-matrix.md +97 -0
- package/docs/manual/05-appendices/B-security-checklist.md +78 -0
- package/docs/manual/05-appendices/C-glossary.md +36 -0
- package/docs/manual/05-appendices/D-bibliography.md +54 -0
- package/docs/manual/05-appendices/E-license.md +34 -0
- package/docs/manual/_toc.yml +58 -0
- package/docs/manual/command-index.md +58 -0
- package/docs/manual/concept-index.md +164 -0
- package/docs/operations/ATTESTATION.md +39 -0
- package/docs/operations/MAINTENANCE.md +59 -0
- package/docs/operations/MIGRATION.md +101 -0
- package/docs/operations/OPERATIONS.md +164 -0
- package/docs/operations/RELIABILITY.md +116 -0
- package/docs/{ROADMAP.md → operations/ROADMAP.md} +11 -11
- package/docs/operations/TESTING.md +195 -0
- package/docs/operations/TRACEABILITY.md +31 -0
- package/docs/operations/TRUSTED_AGENT_WORKSTATION.md +61 -0
- package/docs/operations/VERSION_SYNC.md +344 -0
- package/docs/{ALIASES.md → reference/ALIASES.md} +2 -6
- package/docs/reference/ALIASES_CHEATSHEET.md +28 -0
- package/docs/reference/ALIASES_DEPRECATIONS.md +9 -0
- package/docs/reference/FEATURES.md +62 -0
- package/docs/reference/FONTS.md +108 -0
- package/docs/reference/PROFILES.md +65 -0
- package/docs/{SCREENSHOTS.md → reference/SCREENSHOTS.md} +26 -25
- package/docs/reference/SCRIPTS.md +67 -0
- package/docs/reference/SUPPORT_MATRIX.md +74 -0
- package/docs/reference/THEMES.md +113 -0
- package/docs/reference/TOOLS.md +105 -0
- package/docs/reference/UTILS.md +151 -0
- package/docs/security/AI_ACT_COMPLIANCE.md +90 -0
- package/docs/security/AUTOMATION_SECRETS.md +22 -0
- package/docs/security/COMPLIANCE.md +453 -0
- package/docs/security/ENCRYPTION.md +52 -0
- package/docs/security/FMEA.md +155 -0
- package/docs/security/INCIDENT_RESPONSE.md +575 -0
- package/docs/security/KEYS.md +45 -0
- package/docs/security/MCP_POLICY.md +69 -0
- package/docs/security/POLICY_RELEASES.md +33 -0
- package/docs/security/README.md +24 -0
- package/docs/security/SECRETS.md +146 -0
- package/docs/security/SECURITY.md +41 -0
- package/docs/security/SECURITY_CHECKLIST.md +44 -0
- package/docs/security/SOUP_REGISTER.md +32 -0
- package/docs/security/THREAT_MODEL.md +120 -0
- package/docs/security/VERIFICATION_VALIDATION.md +224 -0
- package/docs/themes/README.md +3 -17
- package/docs/themes/VISUAL_INTEGRITY_REPORT.md +26 -0
- package/docs/themes/hero-shot.svg +78 -0
- package/dot_config/.module-manifest.json +69 -0
- package/dot_config/ai/identity.md +20 -0
- package/dot_config/ai/patterns/architect.md +14 -0
- package/dot_config/ai/patterns/hardener.md +13 -0
- package/dot_config/ai/patterns/refactor.md +13 -0
- package/dot_config/aider/aider.conf.yml +1 -1
- package/dot_config/alacritty/alacritty.toml.tmpl +41 -469
- package/dot_config/atuin/config.toml +18 -1
- package/dot_config/bat/config +16 -1
- package/dot_config/claude/mcp_servers.json +3 -32
- package/dot_config/dotfiles/agent-card.json +29 -0
- package/dot_config/dotfiles/agent-profiles.json +92 -0
- package/dot_config/dotfiles/boot/README.md +1 -1
- package/dot_config/dotfiles/grub/README.md +1 -1
- package/dot_config/dotfiles/lock/README.md +1 -1
- package/dot_config/dotfiles/mcp-lock.json +33 -0
- package/dot_config/dotfiles/mcp-policy.json +52 -0
- package/dot_config/dotfiles/mcp-registry.json +47 -0
- package/dot_config/dotfiles/model-registry.json +20 -0
- package/dot_config/dotfiles/policy-bundles.json +38 -0
- package/dot_config/dotfiles/prompt-registry.json +16 -0
- package/dot_config/dotfiles/versions.env +18 -0
- package/dot_config/environment.d/50-ssh-agent.conf +2 -0
- package/dot_config/environment.d/90-wayland.conf +19 -0
- package/dot_config/firefox/user.js.tmpl +58 -0
- package/dot_config/fish/completions/dot-theme-sync.fish.tmpl +9 -0
- package/dot_config/fish/completions/dot.fish.tmpl +115 -0
- package/dot_config/fish/conf.d/000-perf-cache.fish +56 -0
- package/dot_config/fish/conf.d/aliases.fish.tmpl +77 -0
- package/dot_config/fish/conf.d/env.fish.tmpl +48 -0
- package/dot_config/fish/conf.d/functions.fish.tmpl +22 -0
- package/dot_config/fish/conf.d/init.fish.tmpl +151 -0
- package/dot_config/fish/config.fish.tmpl +44 -0
- package/dot_config/fish/fish_plugins +1 -0
- package/dot_config/fish/functions/_.fish +3 -0
- package/dot_config/fish/functions/_cached_eval.fish +58 -0
- package/dot_config/fish/functions/als.fish +46 -0
- package/dot_config/fish/functions/bg-upgrade.fish +7 -0
- package/dot_config/fish/functions/c.fish +3 -0
- package/dot_config/fish/functions/cat.fish +9 -0
- package/dot_config/fish/functions/d.fish +7 -0
- package/dot_config/fish/functions/dot.fish +34 -0
- package/dot_config/fish/functions/h.fish +3 -0
- package/dot_config/fish/functions/l.fish +7 -0
- package/dot_config/fish/functions/la.fish +7 -0
- package/dot_config/fish/functions/ll.fish +7 -0
- package/dot_config/fish/functions/log_error.fish +13 -0
- package/dot_config/fish/functions/log_info.fish +13 -0
- package/dot_config/fish/functions/lr.fish +7 -0
- package/dot_config/fish/functions/lra.fish +7 -0
- package/dot_config/fish/functions/ls.fish +7 -0
- package/dot_config/fish/functions/lt.fish +7 -0
- package/dot_config/fish/functions/lta.fish +7 -0
- package/dot_config/fish/functions/notify-run.fish +11 -0
- package/dot_config/fish/functions/q.fish +3 -0
- package/dot_config/fish/functions/silent-run.fish +7 -0
- package/dot_config/fish/functions/yy.fish +8 -0
- package/dot_config/fontconfig/fonts.conf.tmpl +13 -0
- package/dot_config/foot/foot.ini.tmpl +33 -0
- package/dot_config/fuzzel/fuzzel.ini.tmpl +18 -0
- package/dot_config/fzf/fzf.zsh +48 -0
- package/dot_config/ghostty/config.tmpl +69 -565
- package/dot_config/git/allowed_signers.tmpl +18 -0
- package/dot_config/git/commit-template +10 -0
- package/dot_config/gnupg/{gpg-agent.conf.tmpl → gpg-agent.conf} +3 -3
- package/dot_config/goose/config.yaml +2 -2
- package/dot_config/gtk-3.0/gtk.css.tmpl +59 -180
- package/dot_config/gtk-3.0/settings.ini.tmpl +5 -44
- package/dot_config/gtk-4.0/gtk.css.tmpl +79 -136
- package/dot_config/gtk-4.0/settings.ini.tmpl +5 -8
- package/dot_config/ipython/profile_default/ipython_config.py +19 -0
- package/dot_config/just/justfile +18 -0
- package/dot_config/kanshi/config.tmpl +22 -0
- package/dot_config/kitty/kitty.conf.tmpl +44 -508
- package/dot_config/lazygit/config.yml +18 -6
- package/dot_config/mako/config +47 -0
- package/dot_config/micro/settings.json +3 -0
- package/dot_config/mimeapps.list +77 -0
- package/dot_config/mise/config.toml +63 -5
- package/dot_config/mongosh/mongoshrc.js +1 -0
- package/dot_config/mpv/input.conf +47 -0
- package/dot_config/mpv/mpv.conf +47 -0
- package/dot_config/niri/config.kdl.tmpl +327 -0
- package/dot_config/nushell/aliases.nu +18 -0
- package/dot_config/nushell/completions.nu.tmpl +52 -0
- package/dot_config/nushell/config.nu.tmpl +86 -0
- package/dot_config/nushell/env.nu.tmpl +94 -0
- package/dot_config/nushell/functions.nu.tmpl +17 -0
- package/dot_config/nvim/init.lua +14 -0
- package/dot_config/nvim/lazy-lock.json +45 -14
- package/dot_config/nvim/lua/config/autocmds.lua +45 -1
- package/dot_config/nvim/lua/config/keymaps.lua +13 -8
- package/dot_config/nvim/lua/config/lazy.lua +22 -12
- package/dot_config/nvim/lua/config/options.lua +1 -0
- package/dot_config/nvim/lua/plugins/ai.lua +75 -0
- package/dot_config/nvim/lua/plugins/coding.lua +11 -29
- package/dot_config/nvim/lua/plugins/completion.lua +60 -0
- package/dot_config/nvim/lua/plugins/dap.lua +215 -4
- package/dot_config/nvim/lua/plugins/editor.lua +6 -10
- package/dot_config/nvim/lua/plugins/git.lua +1 -0
- package/dot_config/nvim/lua/plugins/lsp.lua +16 -81
- package/dot_config/nvim/lua/plugins/markdown.lua +1 -0
- package/dot_config/nvim/lua/plugins/rust.lua +1 -0
- package/dot_config/nvim/lua/plugins/sessions.lua +1 -0
- package/dot_config/nvim/lua/plugins/ui.lua +23 -51
- package/dot_config/paru/paru.conf +10 -0
- package/dot_config/powershell/Microsoft.PowerShell_profile.ps1.tmpl +81 -0
- package/dot_config/pueue/pueue.yml +34 -0
- package/dot_config/raycast/README.md +1 -1
- package/dot_config/ripgrep/ripgreprc +21 -0
- package/dot_config/shell/00-core-paths.sh.tmpl +62 -24
- package/dot_config/shell/05-core-safety.sh +47 -0
- package/dot_config/shell/10-secrets.sh +40 -0
- package/dot_config/shell/40-fzf-defaults.sh.tmpl +16 -0
- package/dot_config/shell/40-ls-colors.sh +48 -0
- package/dot_config/shell/50-logic-functions-core.sh.tmpl +10 -0
- package/dot_config/shell/51-logic-functions-extra.sh.tmpl +64 -0
- package/dot_config/shell/90-ux-aliases.sh.tmpl +90 -5
- package/dot_config/shell/91-ux-aliases-lazy.sh.tmpl +33 -2
- package/dot_config/shell/Brewfile.cli +8 -0
- package/dot_config/shell/README.md +9 -9
- package/dot_config/shell/als_data.txt.tmpl +65 -0
- package/dot_config/shell/custom/auto_ls.zsh +20 -0
- package/dot_config/shell/custom/context_suggest.zsh +50 -50
- package/dot_config/shell/custom/error_analysis.zsh +29 -29
- package/dot_config/starship.toml.tmpl +85 -7
- package/dot_config/swaylock/config +43 -0
- package/dot_config/systemd/user/dotfiles-maintenance.service +8 -0
- package/dot_config/systemd/user/dotfiles-maintenance.timer +11 -0
- package/dot_config/systemd/user/pueued.service +12 -0
- package/dot_config/systemd/user/ssh-agent.service +12 -0
- package/dot_config/tmux/tmux.conf.tmpl +80 -38
- package/dot_config/topgrade.toml.tmpl +54 -0
- package/dot_config/user-dirs.dirs +9 -0
- package/dot_config/vscode/settings.json.tmpl +9 -50
- package/dot_config/waybar/config.jsonc.tmpl +90 -0
- package/dot_config/waybar/style.css.tmpl +211 -0
- package/dot_config/wezterm/wezterm.lua.tmpl +31 -203
- package/dot_config/xdg-desktop-portal/niri-portals.conf +5 -0
- package/dot_config/yazi/keymap.toml +67 -0
- package/dot_config/yazi/theme.toml +102 -0
- package/dot_config/zathura/zathurarc +52 -0
- package/dot_config/zellij/{config.kdl → config.kdl.tmpl} +1 -1
- package/dot_config/zsh/dot_zprofile +1 -7
- package/dot_config/zsh/dot_zshenv +2 -3
- package/dot_config/zsh/dot_zshrc.tmpl +368 -69
- package/dot_config/zsh/rc.d/00-alias-shims.zsh +77 -0
- package/dot_config/zsh/rc.d/05-ssh-agent.zsh +17 -4
- package/dot_config/zsh/rc.d/10-env.zsh.tmpl +4 -4
- package/dot_config/zsh/rc.d/20-zinit.zsh +65 -0
- package/dot_config/zsh/rc.d/30-options.zsh.tmpl +101 -30
- package/dot_config/zsh/rc.d/99-alias-wrapper.zsh +32 -0
- package/dot_local/bin/__pycache__/executable_dot-load-benchmark-ptycpython-312.pyc +0 -0
- package/dot_local/bin/executable_ai-update +195 -0
- package/dot_local/bin/executable_ai_core +113 -91
- package/dot_local/bin/executable_antigravity +11 -0
- package/dot_local/bin/executable_b64 +61 -36
- package/dot_local/bin/executable_bm +77 -0
- package/dot_local/bin/executable_cb +39 -0
- package/dot_local/bin/executable_dot +543 -132
- package/dot_local/bin/executable_dot-ai +36 -0
- package/dot_local/bin/executable_dot-bootstrap +77 -0
- package/dot_local/bin/executable_dot-launch-or-focus +52 -0
- package/dot_local/bin/executable_dot-load-benchmark +31 -0
- package/dot_local/bin/executable_dot-load-benchmark-pty +77 -0
- package/dot_local/bin/executable_dot-theme-sync +952 -0
- package/dot_local/bin/executable_dot_completion +2 -0
- package/dot_local/bin/executable_dtags +28 -0
- package/dot_local/bin/executable_epoch +43 -38
- package/dot_local/bin/executable_extract +32 -99
- package/dot_local/bin/executable_gbd +52 -0
- package/dot_local/bin/executable_gd +42 -0
- package/dot_local/bin/executable_git-ai-commit +35 -20
- package/dot_local/bin/executable_git-ai-diff +33 -18
- package/dot_local/bin/executable_gl +101 -0
- package/dot_local/bin/executable_hash +56 -18
- package/dot_local/bin/executable_hashsum +160 -0
- package/dot_local/bin/executable_hex +44 -8
- package/dot_local/bin/executable_jsonv +34 -10
- package/dot_local/bin/executable_jwt +22 -6
- package/dot_local/bin/executable_kill-port +18 -2
- package/dot_local/bin/executable_lorem +21 -6
- package/dot_local/bin/executable_mkscript +35 -0
- package/dot_local/bin/executable_monitor +56 -0
- package/dot_local/bin/{executable_ip → executable_myip} +16 -2
- package/dot_local/bin/executable_notify +22 -0
- package/dot_local/bin/executable_open +36 -0
- package/dot_local/bin/executable_pw +27 -0
- package/dot_local/bin/executable_rec-start +46 -0
- package/dot_local/bin/executable_rec-stop +35 -0
- package/dot_local/bin/executable_regex +49 -13
- package/dot_local/bin/executable_start-niri +8 -0
- package/dot_local/bin/executable_tmux-sessionizer +276 -149
- package/dot_local/bin/executable_tour +112 -74
- package/dot_local/bin/executable_up +21 -0
- package/dot_local/bin/executable_update +45 -11
- package/dot_local/bin/executable_uuid +37 -7
- package/dot_local/bin/executable_win +32 -0
- package/dot_local/bin/executable_yamlv +25 -7
- package/dot_local/share/bash-completion/completions/dot +62 -44
- package/dot_local/share/icons/hicolor/128x128/apps/rousseau.png +0 -0
- package/dot_local/share/icons/hicolor/16x16/apps/rousseau.png +0 -0
- package/dot_local/share/icons/hicolor/24x24/apps/rousseau.png +0 -0
- package/dot_local/share/icons/hicolor/256x256/apps/rousseau.png +0 -0
- package/dot_local/share/icons/hicolor/32x32/apps/rousseau.png +0 -0
- package/dot_local/share/icons/hicolor/48x48/apps/rousseau.png +0 -0
- package/dot_local/share/icons/hicolor/512x512/apps/rousseau.png +0 -0
- package/dot_local/share/icons/hicolor/64x64/apps/rousseau.png +0 -0
- package/dot_local/share/icons/hicolor/96x96/apps/rousseau.png +0 -0
- package/dot_local/share/icons/hicolor/scalable/apps/rousseau.png +0 -0
- package/dot_local/share/man/man1/dot.1 +149 -0
- package/dot_local/share/mise/plugins/kiro-cli/bin/executable_download +64 -0
- package/dot_local/share/mise/plugins/kiro-cli/bin/executable_install +18 -0
- package/dot_local/share/mise/plugins/kiro-cli/bin/executable_list-all +13 -0
- package/dot_local/share/wayland-sessions/niri.desktop.tmpl +6 -0
- package/dot_local/share/zsh/completions/_dot +283 -0
- package/install.sh +297 -210
- package/package.json +17 -5
- package/scripts/ci/check-copyright-headers.sh +96 -0
- package/scripts/ci/guard-gitleaks-checkout.sh +57 -0
- package/scripts/ci/install-chezmoi-verified.sh +64 -0
- package/scripts/ci/validate-ci-config.sh +41 -39
- package/scripts/demo/record.sh +3 -2
- package/scripts/diagnostics/a2a-conformance.sh +162 -0
- package/scripts/diagnostics/alias-governance.sh +137 -0
- package/scripts/diagnostics/aliases-cheatsheet.sh +73 -0
- package/scripts/diagnostics/aliases-manifest.sh +31 -0
- package/scripts/diagnostics/benchmark.sh +209 -29
- package/scripts/diagnostics/conflicts.sh +72 -0
- package/scripts/diagnostics/doctor-unified.sh +38 -0
- package/scripts/diagnostics/doctor.sh +491 -65
- package/scripts/diagnostics/drift-dashboard.sh +17 -6
- package/scripts/diagnostics/health.sh +351 -110
- package/scripts/diagnostics/history-analysis.sh +12 -4
- package/scripts/diagnostics/mcp-doctor.sh +575 -0
- package/scripts/diagnostics/perf.sh +225 -0
- package/scripts/diagnostics/scorecard.sh +118 -0
- package/scripts/diagnostics/secret-governance.sh +58 -0
- package/scripts/diagnostics/security-score.sh +139 -93
- package/scripts/diagnostics/smoke-test.sh +87 -0
- package/scripts/diagnostics/snapshot.sh +89 -0
- package/scripts/diagnostics/verify.sh +107 -0
- package/scripts/diagnostics/verify_state.sh +2 -2
- package/scripts/diagnostics/version-locks.sh +79 -0
- package/scripts/diagnostics/workstation-attestation.sh +181 -0
- package/scripts/docs/build-manual.sh +883 -0
- package/scripts/docs/check-manual.sh +213 -0
- package/scripts/dot/commands/agent.sh +465 -0
- package/scripts/dot/commands/ai.sh +416 -0
- package/scripts/dot/commands/aliases.sh +250 -0
- package/scripts/dot/commands/appearance.sh +21 -4
- package/scripts/dot/commands/core.sh +59 -4
- package/scripts/dot/commands/diagnostics.sh +132 -3
- package/scripts/dot/commands/fleet.sh +399 -0
- package/scripts/dot/commands/lint.sh +177 -0
- package/scripts/dot/commands/manual.sh +168 -0
- package/scripts/dot/commands/meta.sh +148 -17
- package/scripts/dot/commands/patterns.sh +54 -0
- package/scripts/dot/commands/restore.sh +57 -35
- package/scripts/dot/commands/secrets.sh +151 -9
- package/scripts/dot/commands/security.sh +3 -0
- package/scripts/dot/commands/tools.sh +268 -27
- package/scripts/dot/data/alias-deprecations.tsv +2 -0
- package/scripts/dot/lib/bento.sh +49 -0
- package/scripts/dot/lib/log.sh +194 -0
- package/scripts/dot/lib/platform.sh +98 -0
- package/scripts/dot/lib/ui.sh +507 -0
- package/scripts/dot/lib/utils.sh +318 -18
- package/scripts/fonts/install-nerd-fonts.sh +19 -10
- package/scripts/fonts/patch-fonts.sh +1 -0
- package/scripts/git-hooks/install.sh +11 -0
- package/scripts/git-hooks/pre-commit +12 -0
- package/scripts/git-hooks/pre-commit-audit.sh +145 -0
- package/scripts/git-hooks/pre-push +29 -0
- package/scripts/git-hooks/prepare-commit-msg +29 -0
- package/scripts/lib/secrets_provider.sh +158 -0
- package/scripts/maintenance/check-updates.sh +131 -0
- package/scripts/ops/ai-setup.sh +55 -0
- package/scripts/ops/bundle.sh +77 -0
- package/scripts/ops/chaos.sh +49 -0
- package/scripts/ops/chezmoi-apply.sh +245 -17
- package/scripts/ops/chezmoi-diff.sh +1 -0
- package/scripts/ops/chezmoi-remove.sh +2 -0
- package/scripts/ops/chezmoi-update.sh +34 -2
- package/scripts/ops/heal-chezmoi.sh +51 -0
- package/scripts/ops/heal-system.sh +128 -0
- package/scripts/ops/heal-tools.sh +340 -0
- package/scripts/ops/heal.sh +98 -342
- package/scripts/ops/post-apply-repair.sh +106 -0
- package/scripts/ops/prewarm.sh +127 -0
- package/scripts/ops/release.sh +252 -0
- package/scripts/ops/rollback.sh +86 -28
- package/scripts/ops/setup.sh +137 -0
- package/scripts/ops/teleport.sh +2 -1
- package/scripts/qa/coverage-baseline.sh +60 -0
- package/scripts/qa/docs-coverage.sh +111 -0
- package/scripts/qa/reliability-audit.sh +138 -0
- package/scripts/qa/traceability-coverage.sh +116 -0
- package/scripts/qa/validate-examples.sh +26 -0
- package/scripts/qa/wsl-contract.sh +11 -0
- package/scripts/release/package-policy-bundles.sh +125 -0
- package/scripts/secrets/age-init.sh +1 -0
- package/scripts/secrets/create-secrets-file.sh +1 -0
- package/scripts/secrets/encrypt-ssh-key.sh +1 -0
- package/scripts/security/backup.sh +44 -4
- package/scripts/security/dns-doh.sh +36 -14
- package/scripts/security/encryption-check.sh +27 -12
- package/scripts/security/enforce-policies.sh +11 -16
- package/scripts/security/firewall.sh +76 -20
- package/scripts/security/lock-configs.sh +2 -2
- package/scripts/security/lock-screen.sh +40 -18
- package/scripts/security/manage-secrets.sh +42 -29
- package/scripts/security/ssh-cert.sh +203 -0
- package/scripts/security/telemetry-kill.sh +40 -18
- package/scripts/security/usb-safety.sh +37 -15
- package/scripts/theme/apply-gnome-theme.sh +87 -56
- package/scripts/theme/extract-theme.py +677 -0
- package/scripts/theme/install-boot-logo.sh +1 -0
- package/scripts/theme/install-catppuccin-themes.sh +57 -33
- package/scripts/theme/install-cursors.sh +1 -0
- package/scripts/theme/install-file-icons.sh +1 -0
- package/scripts/theme/install-grub-theme.sh +11 -1
- package/scripts/theme/install-lock-icon.sh +1 -0
- package/scripts/theme/merge-wallpaper.sh +141 -0
- package/scripts/theme/rebuild-themes.sh +309 -0
- package/scripts/theme/switch.sh +308 -137
- package/scripts/theme/wallpaper-rotate.sh +66 -12
- package/scripts/theme/wallpaper-sync.sh +386 -31
- package/scripts/tools/cmatrix.sh +1 -0
- package/scripts/tools/detect-collisions.py +1 -1
- package/scripts/tools/emoji-picker.sh +4 -1
- package/scripts/tools/figlet-banner.sh +1 -0
- package/scripts/tools/log-rotate.sh +2 -1
- package/scripts/tools/lolcat-wrap.sh +1 -0
- package/scripts/tools/pipes.sh +1 -0
- package/scripts/tuning/linux.sh +23 -13
- package/scripts/tuning/macos.sh +13 -4
- package/scripts/uninstall.sh +85 -0
- package/scripts/version-sync.sh +487 -0
- package/templates/chezmoi-data/geekom-a9.toml.example +21 -0
- package/templates/chezmoi-data/mac-m1.toml.example +16 -0
- package/templates/chezmoi-data/mac-t2-linux.toml.example +21 -0
- package/templates/chezmoi-data/surface-pro-7p.toml.example +21 -0
- package/templates/projects/go/.github/workflows/ci.yml +31 -0
- package/templates/projects/go/README.md +1 -1
- package/templates/projects/go/cmd/__PROJECT_NAME__/main.go +1 -0
- package/templates/projects/go/go.sum +0 -0
- package/templates/projects/molecule/README.md +1 -1
- package/templates/projects/node/.github/workflows/ci.yml +30 -0
- package/templates/projects/node/README.md +1 -1
- package/templates/projects/node/package-lock.json +12 -0
- package/templates/projects/node/src/index.js +1 -0
- package/templates/projects/packer/README.md +1 -1
- package/templates/projects/python/.github/workflows/ci.yml +34 -0
- package/templates/projects/python/README.md +1 -1
- package/templates/projects/python/src/__PROJECT_NAME__/__init__.py +1 -0
- package/templates/projects/python/tests/test_basic.py +1 -0
- package/docs/ARCHITECTURE.md +0 -229
- package/docs/COMPLIANCE.md +0 -47
- package/docs/FEATURES.md +0 -166
- package/docs/FONTS.md +0 -147
- package/docs/INSTALL.md +0 -119
- package/docs/KEYS.md +0 -40
- package/docs/OPERATIONS.md +0 -130
- package/docs/PR_DESCRIPTION.md +0 -149
- package/docs/SECRETS.md +0 -76
- package/docs/SECURITY.md +0 -30
- package/docs/SECURITY_CHECKLIST.md +0 -25
- package/docs/TASK.md +0 -99
- package/docs/TESTING.md +0 -190
- package/docs/TOOLS.md +0 -146
- package/docs/UTILS.md +0 -105
- package/docs/WALKTHROUGH.md +0 -165
- package/dot_config/clippy.toml +0 -55
- package/dot_config/dotfiles/versions.env.tmpl +0 -19
- package/dot_config/firefox/user.js +0 -8
- package/dot_config/git/config.tmpl +0 -77
- package/dot_config/go/aliases.sh +0 -61
- package/dot_config/go/env.sh +0 -24
- package/dot_config/ice/README.md +0 -13
- package/dot_config/ipython/profile_default/ipython_config.py.tmpl +0 -5
- package/dot_config/lsd/config.yaml +0 -19
- package/dot_config/nvim/snippets/all.lua +0 -9
- package/dot_config/nvim/snippets/python.lua +0 -16
- package/dot_config/shell/00-container-detect.sh +0 -53
- package/dot_config/shell/05-core-safety.sh.tmpl +0 -13
- package/dot_config/shell/40-ls-colors.sh.tmpl +0 -31
- package/dot_config/shell/90-theme-switch.sh +0 -70
- package/dot_config/topgrade/topgrade.toml.tmpl +0 -42
- package/dot_config/waybar/style.css +0 -8
- package/dot_config/zsh/rc.d/20-zinit.zsh.tmpl +0 -22
- package/dot_local/bin/executable_zig-install +0 -89
- package/dot_local/bin/voice_ops +0 -7
- package/scripts/ops/health-check.sh +0 -380
- package/scripts/tests/README.md +0 -241
- package/scripts/tests/benchmark.sh +0 -91
- package/scripts/tests/framework/assertions.sh +0 -283
- package/scripts/tests/framework/mocks.sh +0 -201
- package/scripts/tests/framework/test_runner.sh +0 -189
- package/scripts/tests/integration/test_install.sh +0 -237
- package/scripts/tests/performance/benchmark_runner.sh +0 -156
- package/scripts/tests/performance/regression_check.sh +0 -73
- package/scripts/tests/performance/stress_test.sh +0 -65
- package/scripts/tests/test-aliases.sh +0 -25
- package/scripts/tests/test-docker.sh +0 -48
- package/scripts/tests/unit/test_ai_aliases.sh +0 -158
- package/scripts/tests/unit/test_ai_cli_checks.sh +0 -47
- package/scripts/tests/unit/test_backup.sh +0 -227
- package/scripts/tests/unit/test_case_functions.sh +0 -238
- package/scripts/tests/unit/test_cd_aliases.sh +0 -367
- package/scripts/tests/unit/test_dot_cli.sh +0 -217
- package/scripts/tests/unit/test_encode64.sh +0 -67
- package/scripts/tests/unit/test_environment.sh +0 -78
- package/scripts/tests/unit/test_extract.sh +0 -163
- package/scripts/tests/unit/test_framework_edge_cases.sh +0 -113
- package/scripts/tests/unit/test_genpass.sh +0 -298
- package/scripts/tests/unit/test_install_edge_cases.sh +0 -167
- package/scripts/tests/unit/test_installers.sh +0 -172
- package/scripts/tests/unit/test_keygen.sh +0 -68
- package/scripts/tests/unit/test_logging.sh +0 -96
- package/scripts/tests/unit/test_os_detection_comprehensive.sh +0 -388
- package/scripts/tests/unit/test_package_managers_comprehensive.sh +0 -321
- package/scripts/tests/unit/test_prependpath.sh +0 -66
- package/scripts/tests/unit/test_prependpath_refactored.sh +0 -89
- package/scripts/tests/unit/test_rd.sh +0 -230
- package/scripts/tests/unit/test_security_fixes.sh +0 -130
- package/scripts/tests/unit/test_security_scripts.sh +0 -87
- package/scripts/tests/unit/test_template_validation.sh +0 -238
- package/scripts/tests/unit/test_utility_functions.sh +0 -144
- package/scripts/tests/unit/test_wave1_alias_split.sh +0 -132
- package/scripts/tests/unit/test_wave1_ci_pinning.sh +0 -61
- package/scripts/tests/unit/test_wave1_gitleaks_config.sh +0 -52
- package/scripts/tests/unit/test_wave1_heal_fixes.sh +0 -97
- package/scripts/tests/unit/test_wave1_install_gpg.sh +0 -35
- package/scripts/tests/unit/test_wave1_zshenv_path.sh +0 -89
- package/scripts/tests/unit/test_wave1_zshrc_lazy_hook.sh +0 -115
- package/scripts/tests/unit/test_wave2_dot_new_guard.sh +0 -75
- package/scripts/tests/unit/test_zipf.sh +0 -76
- /package/docs/{LEGACY_ROADMAP.md → archive/LEGACY_ROADMAP.md} +0 -0
- /package/docs/{REPO_AUDIT.md → archive/REPO_AUDIT.md} +0 -0
- /package/docs/{KEY_ROTATION.md → security/KEY_ROTATION.md} +0 -0
- /package/dot_config/ansible/{ansible.cfg.tmpl → ansible.cfg} +0 -0
- /package/dot_config/docker/{config.json.tmpl → config.json} +0 -0
- /package/dot_config/k9s/{config.yaml.tmpl → config.yaml} +0 -0
- /package/dot_config/pypoetry/{config.toml.tmpl → config.toml} +0 -0
- /package/dot_config/{pyrightconfig.json.tmpl → pyrightconfig.json} +0 -0
- /package/dot_config/tflint/{tflint.hcl.tmpl → tflint.hcl} +0 -0
- /package/dot_config/yarn/{yarnrc.yml.tmpl → yarnrc.yml} +0 -0
- /package/dot_config/zsh/rc.d/{40-bell.zsh.tmpl → 40-bell.zsh} +0 -0
- /package/dot_config/zsh/rc.d/{50-login-fortune.zsh.tmpl → 50-login-fortune.zsh} +0 -0
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
# ADR-008: Alias System Architecture
|
|
2
|
+
|
|
3
|
+
## Status
|
|
4
|
+
|
|
5
|
+
Accepted
|
|
6
|
+
|
|
7
|
+
## Date
|
|
8
|
+
|
|
9
|
+
2026-03-08
|
|
10
|
+
|
|
11
|
+
## Context
|
|
12
|
+
|
|
13
|
+
The dotfiles manage 98 alias files across 30+ categories (git, docker, kubernetes, python, security, etc.). These need to load fast, support per-machine toggling, and work across Zsh, Bash, Fish, and Nushell.
|
|
14
|
+
|
|
15
|
+
**Design questions:**
|
|
16
|
+
1. How to organize alias files for maintainability?
|
|
17
|
+
2. How to control which aliases load on which machines?
|
|
18
|
+
3. How to balance startup speed with alias availability?
|
|
19
|
+
4. How to bridge POSIX aliases to non-POSIX shells?
|
|
20
|
+
|
|
21
|
+
## Decision
|
|
22
|
+
|
|
23
|
+
### Organization
|
|
24
|
+
|
|
25
|
+
Aliases are organized by tool/domain in `.chezmoitemplates/aliases/<category>/<name>.aliases.sh`:
|
|
26
|
+
|
|
27
|
+
```text
|
|
28
|
+
aliases/
|
|
29
|
+
git/git.aliases.sh, signing.aliases.sh
|
|
30
|
+
docker/docker.aliases.sh
|
|
31
|
+
kubernetes/kubernetes.aliases.sh
|
|
32
|
+
security/crypto-utils.aliases.sh, ssh-keys.aliases.sh, ...
|
|
33
|
+
default/default.aliases.sh
|
|
34
|
+
...
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
### Profile Tiers
|
|
38
|
+
|
|
39
|
+
Three profiles control alias scope (set in `.chezmoidata.toml`):
|
|
40
|
+
|
|
41
|
+
| Profile | Scope | Use Case |
|
|
42
|
+
|---------|-------|----------|
|
|
43
|
+
| `minimal` | Core only, excludes interactive/sudo | Servers, containers |
|
|
44
|
+
| `standard` | All core + selected ecosystem | Laptops, workstations |
|
|
45
|
+
| `full` | Everything including heavy/specialized | Dev machines |
|
|
46
|
+
|
|
47
|
+
### Bucket Toggles
|
|
48
|
+
|
|
49
|
+
Per-category flags in `.chezmoidata.toml` under `[aliases.buckets]`:
|
|
50
|
+
```toml
|
|
51
|
+
[aliases.buckets]
|
|
52
|
+
system = true
|
|
53
|
+
svn = false # disable on machines without SVN
|
|
54
|
+
```
|
|
55
|
+
|
|
56
|
+
### Two-Phase Loading
|
|
57
|
+
|
|
58
|
+
1. **Eager (90-ux-aliases.sh):** Core categories loaded at shell startup (~40KB). Includes: archives, cd, clear, configuration, default, diagnostics, disk-usage, editor, git, interactive, installer, mkdir, modern, ps, rsync, sudo, system.
|
|
59
|
+
|
|
60
|
+
2. **Lazy (91-ux-aliases-lazy.sh):** Ecosystem aliases deferred until first prompt via `precmd` hook. Includes: docker, kubernetes, terraform, gcloud, python, npm, rust, security, etc.
|
|
61
|
+
|
|
62
|
+
### Function Groups (groups.json)
|
|
63
|
+
|
|
64
|
+
Functions use a parallel system with `groups.json` as a registry:
|
|
65
|
+
- Groups: api, curl, text, system, files, interactive, nav, security, misc
|
|
66
|
+
- Lazy-loaded per group on first invocation
|
|
67
|
+
- Stub functions replaced with real implementations on first call
|
|
68
|
+
|
|
69
|
+
## Consequences
|
|
70
|
+
|
|
71
|
+
### Positive
|
|
72
|
+
- Adding aliases is self-service: create a file in the right category
|
|
73
|
+
- Per-machine customization without forking
|
|
74
|
+
- Lazy loading keeps startup under 200ms even with 98 alias files
|
|
75
|
+
- `groups.json` enables automated bridge generation for Fish/Nushell
|
|
76
|
+
|
|
77
|
+
### Negative
|
|
78
|
+
- Alias definitions wrap in functions (`set_default_aliases()`) for sourcing safety, adding complexity
|
|
79
|
+
- Two-phase loading means some aliases aren't available until after first prompt
|
|
80
|
+
- Profile/bucket system requires understanding .chezmoidata.toml
|
|
81
|
+
|
|
82
|
+
### Trade-offs
|
|
83
|
+
- Chose file-per-category over monolithic alias file for maintainability
|
|
84
|
+
- Chose runtime extraction for Fish/Nushell over maintaining parallel definitions
|
|
85
|
+
- Chose lazy loading over compile-time bundling for flexibility
|
package/docs/adr/README.md
CHANGED
|
@@ -13,6 +13,8 @@ significant architectural decisions made in this project.
|
|
|
13
13
|
| [ADR-004](ADR-004-cli-architecture.md) | Chezmoi + Custom CLI Wrapper Architecture | Accepted |
|
|
14
14
|
| [ADR-005](ADR-005-chezmoi-choice.md) | Chezmoi as Dotfiles Manager | Accepted |
|
|
15
15
|
| [ADR-006](ADR-006-shell-selection.md) | Zsh as Default Shell | Accepted |
|
|
16
|
+
| [ADR-007](ADR-007-multi-shell-parity.md) | Multi-Shell Parity Strategy | Accepted |
|
|
17
|
+
| [ADR-008](ADR-008-alias-system-architecture.md) | Alias System Architecture | Accepted |
|
|
16
18
|
|
|
17
19
|
## ADR Format
|
|
18
20
|
|
|
@@ -28,6 +30,3 @@ Each ADR follows this structure:
|
|
|
28
30
|
- [Documenting Architecture Decisions](https://cognitect.com/blog/2011/11/15/documenting-architecture-decisions)
|
|
29
31
|
- [ADR Tools](https://github.com/npryce/adr-tools)
|
|
30
32
|
|
|
31
|
-
---
|
|
32
|
-
|
|
33
|
-
Made with ❤️ by [Sebastien Rousseau](https://github.com/sebastienrousseau)
|
|
@@ -0,0 +1,113 @@
|
|
|
1
|
+
# Architecture
|
|
2
|
+
|
|
3
|
+
Core architectural decisions and system design of the dotfiles shell distribution.
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
## Philosophy
|
|
8
|
+
|
|
9
|
+
- **XDG-First**: Configuration lives under `~/.config/` to keep the home directory clean.
|
|
10
|
+
- **Multi-Shell**: First-class support for Zsh, Fish, and Nushell with a shared logic core.
|
|
11
|
+
- **Fast Startup**: Heavy features are deferred or autoloaded to keep the first prompt under 50ms.
|
|
12
|
+
- **Deterministic**: Nix Flakes provide bit-for-bit identical environments across machines.
|
|
13
|
+
- **Non-Blocking**: Background daemons (Pueue) handle upgrades and builds without stalling the shell.
|
|
14
|
+
|
|
15
|
+
## System Layout
|
|
16
|
+
|
|
17
|
+
```text
|
|
18
|
+
~/.dotfiles/
|
|
19
|
+
├── dot_config/ # Managed application configurations (~/.config/)
|
|
20
|
+
│ ├── zsh/ # Modular Zsh rc.d architecture
|
|
21
|
+
│ ├── fish/ # Autoloading Fish configuration
|
|
22
|
+
│ ├── nushell/ # Structured data shell config
|
|
23
|
+
│ ├── shell/ # Shared logic (aliases, paths, functions)
|
|
24
|
+
│ └── ... # 50+ tool configurations (nvim, tmux, ghostty, etc.)
|
|
25
|
+
├── dot_local/ # Local binaries and scripts (~/.local/bin/)
|
|
26
|
+
├── .chezmoitemplates/ # Unified source for aliases, functions, and paths
|
|
27
|
+
├── scripts/ # Internal libraries and diagnostics
|
|
28
|
+
├── nix/ # Nix Flake for deterministic toolchains
|
|
29
|
+
├── lib/wasm-tools/ # Rust source for Wasm utilities
|
|
30
|
+
└── install.sh # Universal bootstrap script (zero dependencies)
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
---
|
|
34
|
+
|
|
35
|
+
## Shell Startup Strategies
|
|
36
|
+
|
|
37
|
+
### Shared: `_cached_eval`
|
|
38
|
+
|
|
39
|
+
Across Zsh, Fish, and Bash, an idempotent caching wrapper avoids redundant tool initialization (Starship, Zoxide, Atuin).
|
|
40
|
+
|
|
41
|
+
1. **Intercept** — check if a cached version of the tool's `eval` output exists in `~/.cache/shell/`.
|
|
42
|
+
2. **Validate** — compare the cache timestamp against the tool binary's mtime.
|
|
43
|
+
3. **Bypass** — if valid, `source` the cached text directly, saving 20-50ms per tool.
|
|
44
|
+
|
|
45
|
+
### Lazy-Hydration Model
|
|
46
|
+
|
|
47
|
+
To reach a fluid first-prompt target (< 50ms), the shell uses a three-phase startup:
|
|
48
|
+
|
|
49
|
+
1. **Phase 1 (Visual Paint)** — render the prompt immediately using static escape codes.
|
|
50
|
+
2. **Phase 2 (Async Hydration)** — dispatch tool initializations (mise, atuin, etc.) to background workers.
|
|
51
|
+
3. **Phase 3 (On-Demand Activation)** — environment hydration occurs on first user interaction or after 500ms of idle time.
|
|
52
|
+
|
|
53
|
+
---
|
|
54
|
+
|
|
55
|
+
## Artifact Mode
|
|
56
|
+
|
|
57
|
+
A minimal environment triggered by `DOTFILES_ARTIFACT_MODE=1`.
|
|
58
|
+
|
|
59
|
+
- **Minimalist UI** — strips prompt complexity, leaving only a green `->`.
|
|
60
|
+
- **Intelligence Surface** — an async Bento-style dashboard rendered via `bento.sh` that provides environment context (Node version, cloud status, Git health) without blocking the main thread.
|
|
61
|
+
- **Redraw Signaling** — uses `SIGWINCH` to return control after background hydration completes.
|
|
62
|
+
|
|
63
|
+
---
|
|
64
|
+
|
|
65
|
+
## Ultra-Fast Mode
|
|
66
|
+
|
|
67
|
+
Set `DOTFILES_ULTRA_FAST=1` to skip all non-essential initialization. Only core paths, aliases, and the prompt are loaded. Useful for:
|
|
68
|
+
|
|
69
|
+
- CI/CD pipelines where full shell setup is unnecessary
|
|
70
|
+
- Rapid scripting sessions where startup latency matters
|
|
71
|
+
- Benchmarking baseline shell performance
|
|
72
|
+
|
|
73
|
+
---
|
|
74
|
+
|
|
75
|
+
## Debug and Trace Modes
|
|
76
|
+
|
|
77
|
+
### DOTFILES_DEBUG=1
|
|
78
|
+
|
|
79
|
+
Enables verbose diagnostic output during shell startup. Prints which files are sourced and their load times.
|
|
80
|
+
|
|
81
|
+
### DOTFILES_TRACE=1
|
|
82
|
+
|
|
83
|
+
Enables `set -x` tracing for the entire shell startup sequence. Output is written to `~/.local/state/dotfiles/debug.log` for post-mortem analysis.
|
|
84
|
+
|
|
85
|
+
---
|
|
86
|
+
|
|
87
|
+
## Function Groups (groups.json)
|
|
88
|
+
|
|
89
|
+
Functions are organized into groups defined in `.chezmoitemplates/functions/groups.json`:
|
|
90
|
+
|
|
91
|
+
| Group | Functions | Description |
|
|
92
|
+
|-------|-----------|-------------|
|
|
93
|
+
| `api` | apihealth, apilatency, apiload | API testing utilities |
|
|
94
|
+
| `curl` | curlheader, curlstatus, curltime, httpdebug | HTTP debugging |
|
|
95
|
+
| `text` | encode64, kebabcase, lowercase, titlecase, ... | Text transformation |
|
|
96
|
+
| `system` | environment, freespace, hostinfo, myproc, sysinfo | System introspection |
|
|
97
|
+
| `files` | backup, extract, hexdump, hiddenfiles, size, zipf | File operations |
|
|
98
|
+
| `interactive` | banner, emoji, matrix, rainbow, stopwatch | Terminal fun |
|
|
99
|
+
| `nav` | cdls, goto, ql | Navigation shortcuts |
|
|
100
|
+
| `security` | genpass, keygen, mount_read_only | Security utilities |
|
|
101
|
+
| `misc` | dothelp, view-source, prependpath, caffeine | Miscellaneous |
|
|
102
|
+
|
|
103
|
+
Groups are lazy-loaded: stub functions are defined at startup, and the real implementation is loaded on first invocation. This keeps startup fast while providing 52+ functions on demand.
|
|
104
|
+
|
|
105
|
+
The `groups.json` schema maps group names to arrays of relative paths (including subdirectory):
|
|
106
|
+
|
|
107
|
+
```json
|
|
108
|
+
{
|
|
109
|
+
"group_name": ["group_name/function1.sh", "group_name/function2.sh"]
|
|
110
|
+
}
|
|
111
|
+
```
|
|
112
|
+
|
|
113
|
+
Each `.sh` file lives in a subdirectory matching its group and defines a single function with the same name as the file (minus `.sh` extension).
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
# Cross-Platform Interoperability
|
|
2
|
+
|
|
3
|
+
How dotfiles commands and shims map across macOS, Linux, and WSL2.
|
|
4
|
+
|
|
5
|
+
## Command Mapping
|
|
6
|
+
|
|
7
|
+
| Alias / Command | macOS | Linux (Debian/Arch) | WSL2 (Windows Host) |
|
|
8
|
+
| :--- | :--- | :--- | :--- |
|
|
9
|
+
| `cb` (Clipboard) | `pbcopy` / `pbpaste` | `xclip` / `wl-copy` | `clip.exe` / `powershell.exe` |
|
|
10
|
+
| `open` | `open` | `xdg-open` | `wslview` / `explorer.exe` |
|
|
11
|
+
| `notify` | `osascript` (AppleScript) | `notify-send` / `gum log` | `powershell.exe` (Toast) / `gum` |
|
|
12
|
+
| `win` (Paths) | N/A | N/A | `wslpath` |
|
|
13
|
+
| `browser` | `open` | `xdg-open` | `powershell.exe Start-Process` |
|
|
14
|
+
|
|
15
|
+
## Infrastructure Parity
|
|
16
|
+
|
|
17
|
+
| Feature | macOS | Linux | WSL2 |
|
|
18
|
+
| :--- | :--- | :--- | :--- |
|
|
19
|
+
| **Package Manager** | Homebrew (`brew`) | `apt` / `pacman` / `nix` | `apt` + Windows binaries |
|
|
20
|
+
| **Shell Startup** | Async lazy-hydration | Async lazy-hydration | Async (optimized for IO) |
|
|
21
|
+
| **Environment** | native plist / launchctl | systemd / dbus | systemd (if enabled) / init |
|
|
22
|
+
| **Hardware** | Secure Enclave | TPM 2.0 / LUKS | Windows Hello bridge |
|
|
23
|
+
|
|
24
|
+
## Troubleshooting
|
|
25
|
+
|
|
26
|
+
### WSL2 IO Latency
|
|
27
|
+
Keep projects in the Linux filesystem (`~/...`), not under `/mnt/c/`.
|
|
28
|
+
|
|
29
|
+
### WSL2 Windows Binary Path
|
|
30
|
+
If you've disabled WSL path sharing, make sure Windows-side binaries like `clip.exe` and `explorer.exe` are still reachable in `$PATH`.
|
|
31
|
+
|
|
32
|
+
### macOS Permissions
|
|
33
|
+
Grant your terminal "Full Disk Access" in System Settings so dotfiles can manage all configurations.
|
|
34
|
+
|
|
35
|
+
### Linux GUI Fallbacks
|
|
36
|
+
In headless environments, GUI commands like `cb` and `open` fall back to `gum log` or terminal bell instead of hanging.
|
|
@@ -0,0 +1,237 @@
|
|
|
1
|
+
<!-- Copyright (c) 2015-2026 Dotfiles. All rights reserved. -->
|
|
2
|
+
|
|
3
|
+
# Repository Layout
|
|
4
|
+
|
|
5
|
+
A map of every top-level folder and file in this repo, grouped by purpose.
|
|
6
|
+
Use this when you're not sure where something belongs or why a particular
|
|
7
|
+
directory exists.
|
|
8
|
+
|
|
9
|
+
For naming conventions (file prefixes, run-script numbering tiers), see
|
|
10
|
+
[`../NAMING_CONVENTIONS.md`](../NAMING_CONVENTIONS.md). For the broader
|
|
11
|
+
architectural rationale (philosophy, startup model, flake strategy), see
|
|
12
|
+
[`ARCHITECTURE.md`](ARCHITECTURE.md). For the configuration-management
|
|
13
|
+
strategy at a higher level, see [`../../CONFIG_STRATEGY.md`](../../CONFIG_STRATEGY.md).
|
|
14
|
+
|
|
15
|
+
---
|
|
16
|
+
|
|
17
|
+
## 1. Chezmoi source tree — the actual dotfiles
|
|
18
|
+
|
|
19
|
+
Chezmoi reads this directory and deploys to `$HOME`. Filename **prefixes**
|
|
20
|
+
carry semantics:
|
|
21
|
+
|
|
22
|
+
| Prefix | Effect | Example |
|
|
23
|
+
|------------------|---------------------------------------------|----------------------------------------------------|
|
|
24
|
+
| `dot_` | Deployed with a leading `.` | `dot_gitconfig.tmpl` → `~/.gitconfig` |
|
|
25
|
+
| `private_` | Sets `0600` perms on deploy | `private_dot_ssh/` → `~/.ssh/` |
|
|
26
|
+
| `executable_` | Sets `+x` on deploy | `executable_dot` → `~/.local/bin/dot` |
|
|
27
|
+
| `run_onchange_` | Runs once when its content hash changes | `run_onchange_20-ghostty-config.sh.tmpl` |
|
|
28
|
+
| `.tmpl` | Rendered as a Go template at apply time | `dot_npmrc.tmpl` |
|
|
29
|
+
|
|
30
|
+
> **Gotcha:** `executable_dot_foo` deploys as `.foo` (not `dot_foo`). Chezmoi
|
|
31
|
+
> consumes the `dot_` prefix even when stacked with `executable_`.
|
|
32
|
+
|
|
33
|
+
### Chezmoi data and templates
|
|
34
|
+
|
|
35
|
+
| Path | Role |
|
|
36
|
+
|-----------------------------|----------------------------------------------------------------------------------------------|
|
|
37
|
+
| `.chezmoi.toml.tmpl` | Init-time prompts (name, email, signing key). |
|
|
38
|
+
| `.chezmoidata.toml` | **Source of truth** for version, profile, default theme, shell, feature flags. |
|
|
39
|
+
| `.chezmoidata/` | Split data files: `themes.toml`, `keybinds.toml`, `hardware.toml`. |
|
|
40
|
+
| `.chezmoiignore.tmpl` | Feature-flag-gated "don't deploy these to `$HOME`" list. |
|
|
41
|
+
| `.chezmoitemplates/` | Reusable template partials (`aliases/`, `functions/`, `paths/`, `desktop/`). Not deployed. |
|
|
42
|
+
|
|
43
|
+
### Shell rc files (root level)
|
|
44
|
+
|
|
45
|
+
| Path | Target | Purpose |
|
|
46
|
+
|---|---|---|
|
|
47
|
+
| `dot_bashrc`, `dot_profile` | `~/.bashrc`, `~/.profile` | Bash startup |
|
|
48
|
+
| `dot_zshenv`, `dot_zprofile`, `dot_zshrc` | `~/.zshenv` etc. | Zsh startup chain (see [`ARCHITECTURE.md`](ARCHITECTURE.md) for order) |
|
|
49
|
+
| `dot_vimrc`, `dot_inputrc`, `dot_psqlrc`, `dot_sqliterc`, `dot_Xresources` | `~/.*` | Classic per-tool dotfiles |
|
|
50
|
+
| `dot_gitconfig.tmpl`, `dot_npmrc.tmpl` | `~/.gitconfig`, `~/.npmrc` | Templated — identity/tokens injected at apply |
|
|
51
|
+
| `dot_cargo/config.toml.tmpl` | `~/.cargo/config.toml` | Rust build dirs redirected to `/tmp` |
|
|
52
|
+
| `dot_fdignore`, `dot_noderc`, `dot_rustfmt.toml` | `~/.*` | Per-tool config |
|
|
53
|
+
| `private_dot_netrc.tmpl`, `private_dot_ssh/` | `~/.netrc`, `~/.ssh/` | 0600 files |
|
|
54
|
+
|
|
55
|
+
### Large chezmoi directories
|
|
56
|
+
|
|
57
|
+
| Path | Target | Notes |
|
|
58
|
+
|---------------|-------------------|----------------------------------------------------------------------------------------------|
|
|
59
|
+
| `dot_config/` | `~/.config/` | **Largest** — fish, zsh, nvim, ghostty, tmux, niri, mise, and ~90 other app configs. |
|
|
60
|
+
| `dot_local/bin/` | `~/.local/bin/` | Every `dot-*` subcommand and helper script (the `dot` CLI lives here). |
|
|
61
|
+
| `dot_local/share/` | `~/.local/share/` | Fonts and shared data. |
|
|
62
|
+
| `dot_etc/opt/chrome/policies/` | `~/etc/opt/chrome/policies/` | Managed Chrome enterprise policies. |
|
|
63
|
+
|
|
64
|
+
### `run_onchange_*` hooks at the root
|
|
65
|
+
|
|
66
|
+
Scripts triggered when their content changes. Numbering follows the
|
|
67
|
+
convention in [`../NAMING_CONVENTIONS.md`](../NAMING_CONVENTIONS.md):
|
|
68
|
+
|
|
69
|
+
- `run_onchange_20-ghostty-config.sh.tmpl` — re-renders Ghostty config
|
|
70
|
+
- `run_onchange_21-topgrade-config.sh.tmpl` — refreshes topgrade config
|
|
71
|
+
- `run_onchange_after_fonts.sh` — post-deploy font cache refresh
|
|
72
|
+
|
|
73
|
+
---
|
|
74
|
+
|
|
75
|
+
## 2. AI-assistant files — **three** files, three distinct roles
|
|
76
|
+
|
|
77
|
+
This is the most common source of confusion in the repo. All three files
|
|
78
|
+
exist on purpose and don't overlap:
|
|
79
|
+
|
|
80
|
+
| File | Deployed to | Audience | Scope |
|
|
81
|
+
|-------------------------------|-----------------------|------------------------------------------------------------------|-------------------------------|
|
|
82
|
+
| `dot_claude/CLAUDE.md` | `~/.claude/CLAUDE.md` | Claude Code, in **any** cwd on this machine | Personal, cross-project |
|
|
83
|
+
| `CLAUDE.md` (repo root) | Not deployed | Claude Code, when cwd is **this** repo | Repo-scoped guidance |
|
|
84
|
+
| `OPENCODE.md` (repo root) | Not deployed | OpenCode CLI, when cwd is **this** repo | Repo-scoped guidance (mirror) |
|
|
85
|
+
| `.claude/settings.local.json` | Not deployed, **not tracked** | Claude Code | Per-machine permission allowlist |
|
|
86
|
+
|
|
87
|
+
Each of the three tracked files carries a header comment explaining its
|
|
88
|
+
role to prevent drift. Keep that header in place when editing.
|
|
89
|
+
|
|
90
|
+
---
|
|
91
|
+
|
|
92
|
+
## 3. Agent-protocol surface
|
|
93
|
+
|
|
94
|
+
Standards-compliant discovery endpoints that let external agents and tools
|
|
95
|
+
find this workstation's agent capabilities:
|
|
96
|
+
|
|
97
|
+
| Path | Purpose |
|
|
98
|
+
|-------------------------------------|-----------------------------------------------------------------------------|
|
|
99
|
+
| `.well-known/agent-card.json` | A2A v0.3 agent card — skills, capabilities, URL |
|
|
100
|
+
| `.well-known/agent.json` | Legacy pointer card, kept for back-compat |
|
|
101
|
+
| `.well-known/mcp/server-card.json` | MCP server discovery manifest |
|
|
102
|
+
|
|
103
|
+
---
|
|
104
|
+
|
|
105
|
+
## 4. CI/CD and repo metadata
|
|
106
|
+
|
|
107
|
+
| Path | Purpose |
|
|
108
|
+
|------------------------------------------------------------------|----------------------------------------------------------------|
|
|
109
|
+
| `.github/workflows/` | 20+ workflows: `ci.yml`, `ci-enforced.yml`, reusable lints, release pipelines |
|
|
110
|
+
| `.github/workflows/reusable-*.yml` | Shared workflow fragments (`shell-lint`, `lua-lint`, `nix-lint`, `copyright-lint`, `test-suite`, `secrets-scan`, `security-baseline`) |
|
|
111
|
+
| `.github/ISSUE_TEMPLATE/`, `PULL_REQUEST_TEMPLATE.md`, `CODEOWNERS`, `SECURITY.md`, `CONTRIBUTING.md`, `CODE-OF-CONDUCT.md`, `FUNDING.yml` | Standard GitHub metadata |
|
|
112
|
+
| `.github/security-policies/` | Org-level security policy files |
|
|
113
|
+
| `.github/branch-protection-config.json`, `BRANCH_PROTECTION.md` | Codified branch-protection settings |
|
|
114
|
+
| `.github/dependabot.yml` | Dependency bump schedule |
|
|
115
|
+
| `.devcontainer/` | GitHub Codespaces + VS Code dev container |
|
|
116
|
+
| `Dockerfile.test`, `tests/Dockerfile.sandbox` | Ubuntu sandboxes for integration / e2e tests |
|
|
117
|
+
|
|
118
|
+
---
|
|
119
|
+
|
|
120
|
+
## 5. Build, bootstrap, and dev tooling
|
|
121
|
+
|
|
122
|
+
| Path | Purpose |
|
|
123
|
+
|-----------------------------------------|--------------------------------------------------------------------------------|
|
|
124
|
+
| `install.sh` | Top-level one-liner installer |
|
|
125
|
+
| `install/provision/`, `install/lib/` | Platform-specific install helpers invoked by `install.sh` |
|
|
126
|
+
| `Makefile`, `Justfile.tmpl`, `treefmt.toml` | Convenience runners |
|
|
127
|
+
| `mise.toml`, `mise-versions.lock.json` | Mise toolchain versions (locked) |
|
|
128
|
+
| `flake.nix`, `flake.lock` (root) | Root Nix flake for `direnv` + repo dev shell |
|
|
129
|
+
| `nix/flake.nix`, `nix/home.nix` | Separate flake for Home Manager activation (used by `dot upgrade` and `ci-enforced.yml → lint-nix`) |
|
|
130
|
+
| `lib/wasm-tools/` | Vendored WebAssembly tooling (build output gitignored) |
|
|
131
|
+
| `.envrc` | `direnv` hook into the root flake |
|
|
132
|
+
|
|
133
|
+
---
|
|
134
|
+
|
|
135
|
+
## 6. Scripts (`scripts/`) — repo-local, never deployed
|
|
136
|
+
|
|
137
|
+
Nothing under `scripts/` ends up in `$HOME`. It's all tooling for running
|
|
138
|
+
the repo itself.
|
|
139
|
+
|
|
140
|
+
| Subdir | Purpose |
|
|
141
|
+
|-------------------------------------------|-----------------------------------------------------------------|
|
|
142
|
+
| `scripts/ci/` | CI helpers (`check-copyright-headers.sh`, `install-chezmoi-verified.sh`, `validate-ci-config.sh`) |
|
|
143
|
+
| `scripts/dot/commands/` | Subcommand implementations for the `dot` CLI |
|
|
144
|
+
| `scripts/docs/` | Manual build pipeline (`build-manual.sh`, `check-manual.sh`) |
|
|
145
|
+
| `scripts/theme/` | K-Means CIELAB theme engine + HEIC merge/convert |
|
|
146
|
+
| `scripts/ops/`, `scripts/maintenance/`, `scripts/release/` | Operator tooling |
|
|
147
|
+
| `scripts/diagnostics/`, `scripts/qa/`, `scripts/security/`, `scripts/secrets/` | Domain-scoped scripts |
|
|
148
|
+
| `scripts/fonts/`, `scripts/demo/`, `scripts/git-hooks/`, `scripts/tools/`, `scripts/tuning/`, `scripts/lib/` | Supporting scripts |
|
|
149
|
+
| `scripts/uninstall.sh`, `scripts/version-sync.sh` | Top-level ops entrypoints |
|
|
150
|
+
|
|
151
|
+
---
|
|
152
|
+
|
|
153
|
+
## 7. Documentation (`docs/`)
|
|
154
|
+
|
|
155
|
+
| Path | Purpose |
|
|
156
|
+
|---------------------------------------|----------------------------------------------------------------------------|
|
|
157
|
+
| `docs/manual/` | 26-page GNU-Stow-style reference manual (the v0.2.500 feature) |
|
|
158
|
+
| `docs/architecture/` | This file + core architecture docs (ARCHITECTURE, INTEROP, fleet, walkthrough) |
|
|
159
|
+
| `docs/operations/` | Runbooks, traceability matrix, migration notes |
|
|
160
|
+
| `docs/reference/` | Command/config reference material |
|
|
161
|
+
| `docs/guides/` | Long-form how-tos |
|
|
162
|
+
| `docs/security/` | Threat model, disclosure policy, audit records |
|
|
163
|
+
| `docs/adr/` | Architecture Decision Records |
|
|
164
|
+
| `docs/themes/` | Theme catalogue / screenshots |
|
|
165
|
+
| `docs/interop/` | Agent/MCP interop notes |
|
|
166
|
+
| `docs/archive/` | Superseded docs kept for history |
|
|
167
|
+
| `docs/NAMING_CONVENTIONS.md` | Naming bible (file prefixes, run-script numbering tiers) |
|
|
168
|
+
| `docs/index.md`, `docs/README.md`, `docs/AI.md`, `docs/COPYRIGHT` | Entry points |
|
|
169
|
+
|
|
170
|
+
---
|
|
171
|
+
|
|
172
|
+
## 8. Tests (`tests/`)
|
|
173
|
+
|
|
174
|
+
| Path | Purpose |
|
|
175
|
+
|-------------------------------------------|--------------------------------------------------------------------------------------------|
|
|
176
|
+
| `tests/framework/` | `test_runner.sh`, `assertions.sh`, `mocks.sh` — the custom shell-test framework |
|
|
177
|
+
| `tests/unit/` | Unit tests organised by domain: `aliases/`, `ci/`, `docs/`, `dot-cli/`, `fish/`, `functions/`, `install/`, `nvim/`, `ops/`, `secrets/`, `security/`, `shell/`, `theme/`, `tools/`, `diagnostics/`, `misc/`, `nushell/` |
|
|
178
|
+
| `tests/integration/` | End-to-end install and apply flows |
|
|
179
|
+
| `tests/regression/` | Guardrail tests for previously-broken behaviours |
|
|
180
|
+
| `tests/performance/` | `benchmark_runner.sh` and friends |
|
|
181
|
+
| `tests/benchmark.sh`, `tests/test-aliases.sh`, `tests/test-docker.sh` | Top-level entrypoints |
|
|
182
|
+
| `tests/Dockerfile.sandbox` | Fresh-Ubuntu sandbox image for integration tests |
|
|
183
|
+
|
|
184
|
+
Tests execute shell source files directly — **do not** use Go template
|
|
185
|
+
syntax in non-`.tmpl` files, or the test framework will choke on the curly
|
|
186
|
+
braces.
|
|
187
|
+
|
|
188
|
+
---
|
|
189
|
+
|
|
190
|
+
## 9. Other top-level
|
|
191
|
+
|
|
192
|
+
| Path | Purpose |
|
|
193
|
+
|-------------------------------------------|------------------------------------------------------------------------------|
|
|
194
|
+
| `config/` | Repo-local tool configs: `cliff.toml` (changelog), `gitleaks.toml`, `pre-commit-config.yaml`, `stylua.toml`, `trivyignore` |
|
|
195
|
+
| `templates/chezmoi-data/`, `templates/projects/` | Starter scaffolding for new machines / new projects |
|
|
196
|
+
| `examples/` | 14 standalone demo scripts used by the manual and tutorials |
|
|
197
|
+
| `CHANGELOG.md`, `LICENSE`, `README.md` | Standard |
|
|
198
|
+
| `CONFIG_STRATEGY.md` | High-level "how configuration management works here" overview |
|
|
199
|
+
| `.gitattributes`, `.gitignore`, `.gitleaksignore`, `.editorconfig`, `.secrets.baseline`, `.sops.yaml`, `.luacheckrc` | Repo-level tool configs |
|
|
200
|
+
| `.pre-commit-config.yaml` → `config/pre-commit-config.yaml` | Symlink so `pre-commit` finds the canonical config |
|
|
201
|
+
|
|
202
|
+
---
|
|
203
|
+
|
|
204
|
+
## 10. Local-only artefacts (gitignored — if you see them, don't commit them)
|
|
205
|
+
|
|
206
|
+
The following paths can appear during local work but are excluded from
|
|
207
|
+
version control. If one of them ever shows up in `git status`, check the
|
|
208
|
+
`.gitignore` entry rather than adding the file:
|
|
209
|
+
|
|
210
|
+
| Path | Source |
|
|
211
|
+
|--------------------------|------------------------------------------------------------------------------|
|
|
212
|
+
| `_build/` | Output of `scripts/docs/build-manual.sh` |
|
|
213
|
+
| `.pnpm-store/` | pnpm's content-addressable store (should never appear here) |
|
|
214
|
+
| `.claude/` | Claude Code per-machine state (`settings.local.json` permission allowlists) |
|
|
215
|
+
| `node_modules/` | Node dependency trees from repo-local scripts |
|
|
216
|
+
| `.version-sync-backup/` | Timestamped backups from `version-sync.sh` |
|
|
217
|
+
| `lib/wasm-tools/target/` | Rust build artefacts for the vendored wasm tooling |
|
|
218
|
+
| `dot_etc/machines/` | Host-specific installer overrides |
|
|
219
|
+
|
|
220
|
+
---
|
|
221
|
+
|
|
222
|
+
## How to decide where a new file belongs
|
|
223
|
+
|
|
224
|
+
A quick decision tree for common cases:
|
|
225
|
+
|
|
226
|
+
- **New app config that lives under `~/.config/<app>/`** → `dot_config/<app>/` (see `docs/NAMING_CONVENTIONS.md` → "Adding New Modules").
|
|
227
|
+
- **New user-facing CLI script** → `dot_local/bin/executable_<name>`.
|
|
228
|
+
- **New `dot` subcommand** → implementation in `scripts/dot/commands/<name>.sh`, routing in `dot_local/bin/executable_dot`.
|
|
229
|
+
- **New repo-only automation** (CI helper, maintenance task, release step) → `scripts/<domain>/<name>.sh`.
|
|
230
|
+
- **New test** → `tests/unit/<domain>/test_<feature>.sh` (follow `test_{domain}_{feature}.sh` naming).
|
|
231
|
+
- **New doc** → pick the narrowest of `docs/architecture/`, `docs/reference/`, `docs/guides/`, `docs/operations/`, `docs/security/`.
|
|
232
|
+
- **New alias file** → `.chezmoitemplates/aliases/<category>/<tool>.aliases.sh` (see conventions doc).
|
|
233
|
+
- **New run-once hook** → `run_onchange_<NN>-<verb>-<noun>.sh.tmpl` at the root, using the numbering tier appropriate to its category.
|
|
234
|
+
|
|
235
|
+
If none of the above fits, stop and ask in an issue or PR before
|
|
236
|
+
introducing a new top-level directory. The current layout is deliberate
|
|
237
|
+
and one-off additions cost everyone later.
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
# Walkthrough
|
|
2
|
+
|
|
3
|
+
A hands-on tour of the dotfiles after installation. Run each step in your terminal to get comfortable with what's available.
|
|
4
|
+
|
|
5
|
+
## Step 1: Verify Installation
|
|
6
|
+
|
|
7
|
+
Make sure everything landed correctly:
|
|
8
|
+
|
|
9
|
+
```bash
|
|
10
|
+
dot --version
|
|
11
|
+
dot doctor
|
|
12
|
+
dot status
|
|
13
|
+
```
|
|
14
|
+
|
|
15
|
+
`dot doctor` catches common problems early. If something's off, it'll tell you.
|
|
16
|
+
|
|
17
|
+
## Step 2: Explore the Shell
|
|
18
|
+
|
|
19
|
+
The shell ships with modern replacements wired in:
|
|
20
|
+
|
|
21
|
+
```bash
|
|
22
|
+
z dotfiles # Jump to ~/.dotfiles (zoxide)
|
|
23
|
+
z - # Go back
|
|
24
|
+
|
|
25
|
+
<Ctrl-R> # Fuzzy search command history (fzf)
|
|
26
|
+
<Ctrl-T> # Fuzzy find files
|
|
27
|
+
|
|
28
|
+
ls # Aliased to eza
|
|
29
|
+
cat file.txt # Aliased to bat
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
## Step 3: Git Workflow
|
|
33
|
+
|
|
34
|
+
```bash
|
|
35
|
+
gst # git status
|
|
36
|
+
lg # Pretty log graph
|
|
37
|
+
ga . # git add
|
|
38
|
+
gcm "message" # git commit -m
|
|
39
|
+
lgui # Launch lazygit
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
## Step 4: Tmux
|
|
43
|
+
|
|
44
|
+
Prefix is `Ctrl-a`:
|
|
45
|
+
|
|
46
|
+
```bash
|
|
47
|
+
<Ctrl-a> c # New window
|
|
48
|
+
<Ctrl-a> | # Split vertically
|
|
49
|
+
<Ctrl-a> - # Split horizontally
|
|
50
|
+
<Ctrl-a> h/j/k/l # Navigate panes (vim-style)
|
|
51
|
+
<Ctrl-a> f # Fuzzy session switcher
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
## Step 5: Neovim
|
|
55
|
+
|
|
56
|
+
```bash
|
|
57
|
+
nvim .
|
|
58
|
+
|
|
59
|
+
# Inside Neovim:
|
|
60
|
+
<Space> # Leader — shows command palette
|
|
61
|
+
<Space>ff # Find files
|
|
62
|
+
<Space>fg # Live grep
|
|
63
|
+
<Space>e # Toggle file tree
|
|
64
|
+
```
|
|
65
|
+
|
|
66
|
+
## Step 6: Docker
|
|
67
|
+
|
|
68
|
+
```bash
|
|
69
|
+
dps # List running containers
|
|
70
|
+
dco up -d # docker compose up
|
|
71
|
+
dlogsf container # Follow container logs
|
|
72
|
+
lzd # Launch lazydocker
|
|
73
|
+
```
|
|
74
|
+
|
|
75
|
+
## Step 7: Kubernetes (if enabled)
|
|
76
|
+
|
|
77
|
+
```bash
|
|
78
|
+
k get pods # kubectl
|
|
79
|
+
kctx # Switch context
|
|
80
|
+
kn # Switch namespace
|
|
81
|
+
k9 # Launch k9s
|
|
82
|
+
```
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
# Fleet Deployment Architecture
|
|
2
|
+
|
|
3
|
+
## Deployment Flow
|
|
4
|
+
|
|
5
|
+
```mermaid
|
|
6
|
+
---
|
|
7
|
+
title: Fleet Deployment Architecture
|
|
8
|
+
---
|
|
9
|
+
flowchart TD
|
|
10
|
+
subgraph repo["Git Repository (SSOT)"]
|
|
11
|
+
data[".chezmoidata.toml<br/>theme, profile, machine, features"]
|
|
12
|
+
wallpapers["~/Pictures/Wallpapers/ + System<br/>wallpapers (source of truth)"]
|
|
13
|
+
engine_k["K-Means CIELAB engine<br/>extract-theme.py + rebuild-themes.sh"]
|
|
14
|
+
themes[".chezmoidata/themes.toml<br/>auto-generated, WCAG AAA"]
|
|
15
|
+
hw[".chezmoidata/hardware.toml<br/>machine presets: T2, Surface, Geekom"]
|
|
16
|
+
keys[".chezmoidata/keybinds.toml<br/>modifier hierarchy matrix"]
|
|
17
|
+
tpl[".chezmoitemplates/<br/>reusable partials"]
|
|
18
|
+
configs["dot_config/<br/>50+ app configs as .tmpl"]
|
|
19
|
+
wallpapers --> engine_k --> themes
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
repo --> engine["Chezmoi Template Engine<br/>chezmoi apply"]
|
|
23
|
+
|
|
24
|
+
engine --> t2["MacBook T2<br/>scale 2.0 | macOS"]
|
|
25
|
+
engine --> sp["Surface Pro<br/>scale 1.5 | Linux"]
|
|
26
|
+
engine --> gk["Geekom A9<br/>scale 1.0 | Linux"]
|
|
27
|
+
|
|
28
|
+
subgraph apps["App Configs (per machine)"]
|
|
29
|
+
niri["Niri (WM)"]
|
|
30
|
+
ghostty["Ghostty (Term)"]
|
|
31
|
+
tmux["Tmux (Mux)"]
|
|
32
|
+
nvim["Neovim (Edit)"]
|
|
33
|
+
gtk["GTK (UI)"]
|
|
34
|
+
end
|
|
35
|
+
|
|
36
|
+
t2 --> apps
|
|
37
|
+
sp --> apps
|
|
38
|
+
gk --> apps
|
|
39
|
+
|
|
40
|
+
themes -. "colors" .-> niri & ghostty & tmux & nvim & gtk
|
|
41
|
+
|
|
42
|
+
subgraph hotreload["IPC Hot-Reload Path"]
|
|
43
|
+
direction LR
|
|
44
|
+
user(["User runs dot-theme-sync"]) --> ipc["dot-theme-sync<br/>writes theme choice"]
|
|
45
|
+
ipc --> reload_niri["niri: IPC reload"]
|
|
46
|
+
ipc --> reload_ghostty["ghostty: config reload"]
|
|
47
|
+
ipc --> reload_gtk["GTK: gsettings"]
|
|
48
|
+
ipc --> reload_tmux["tmux: source-file"]
|
|
49
|
+
ipc --> reload_nvim["nvim: RPC colorscheme"]
|
|
50
|
+
end
|
|
51
|
+
|
|
52
|
+
style repo fill:#313244,stroke:#cba6f7,color:#cdd6f4
|
|
53
|
+
style engine fill:#45475a,stroke:#89b4fa,color:#cdd6f4
|
|
54
|
+
style apps fill:#313244,stroke:#a6e3a1,color:#cdd6f4
|
|
55
|
+
style hotreload fill:#313244,stroke:#f9e2af,color:#cdd6f4
|
|
56
|
+
```
|
|
57
|
+
|
|
58
|
+
> **Note — Keybind Modifier Hierarchy:** Each input layer owns a
|
|
59
|
+
> non-overlapping modifier prefix. The compositor (Super) never collides
|
|
60
|
+
> with the multiplexer (Ctrl+a prefix), which never collides with the
|
|
61
|
+
> editor (Space leader). `Ctrl+h/j/k/l` is the sole shared binding,
|
|
62
|
+
> resolved by `tmux-vim-navigator` interop.
|
|
63
|
+
|
|
64
|
+
## Keybind Conflict Resolution Matrix
|
|
65
|
+
|
|
66
|
+
| Modifier | Layer | Owner | Examples |
|
|
67
|
+
|---|---|---|---|
|
|
68
|
+
| `Super` (Mod) | Compositor | Niri | `Super+1`-`9` workspaces, `Super+Enter` terminal |
|
|
69
|
+
| `Alt` | Window Switch | Niri | `Alt+Tab`, `Alt+grave` |
|
|
70
|
+
| `Ctrl+a` prefix | Multiplexer | Tmux | `Ctrl+a h/j/k/l` panes, `Ctrl+a N` new window |
|
|
71
|
+
| `Ctrl+h/j/k/l` | Smart Navigation | Tmux / Neovim | Seamless pane/split traversal |
|
|
72
|
+
| `Ctrl+c/v/t/w` | Terminal | Ghostty | Copy, paste, new tab, close |
|
|
73
|
+
| `Space` (leader) | Editor | Neovim | `Space+ff` find, `Space+ca` code action |
|