@sebastienrousseau/dotfiles 0.2.502 → 0.2.503
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 +83 -9
- package/LICENSE +21 -1283
- package/README.md +5 -3
- package/docs/CONFIG_STRATEGY.md +124 -0
- package/docs/COPYRIGHT +1 -1
- package/docs/GOVERNANCE.md +98 -0
- package/docs/MAINTAINERS.md +41 -0
- package/docs/OPENCODE.md +127 -0
- package/docs/README.md +2 -0
- package/docs/STRUCTURE.md +102 -0
- package/docs/adr/ADR-011-nushell-tier3-keep.md +2 -2
- package/docs/architecture/AI_COST_OPTIMIZATION.md +143 -0
- package/docs/architecture/REPO_LAYOUT.md +8 -8
- package/docs/archive/MILESTONE_v0.2.493.md +1 -1
- package/docs/index.md +2 -2
- package/docs/interop/POWERSHELL.md +1 -1
- package/docs/manual/00-introduction.md +1 -1
- package/docs/manual/01-concepts/02-trust-model.md +1 -1
- package/docs/manual/03-reference/02-config-files.md +2 -2
- package/docs/manual/_toc.yml +1 -1
- package/docs/manual/command-index.md +72 -59
- package/docs/operations/CI_COMPOSITES.md +2 -2
- package/docs/operations/COMPLETIONS.md +2 -2
- package/docs/operations/COVERAGE.md +5 -5
- package/docs/operations/HARD_AUDIT_2026.md +11 -11
- package/docs/operations/MAINTENANCE.md +3 -3
- package/docs/operations/MANIFEST.md +127 -0
- package/docs/operations/RELEASE_PIPELINE.md +130 -0
- package/docs/operations/RFC_v0_2_503_reorganization.md +280 -0
- package/docs/operations/ROADMAP_2026.md +6 -6
- package/docs/operations/ROADMAP_V0_2_503.md +134 -0
- package/docs/operations/TESTING.md +17 -0
- package/docs/operations/TRACEABILITY.md +6 -3
- package/docs/operations/VERSION_SYNC.md +4 -4
- package/docs/reference/POWERSHELL_PARITY.md +8 -7
- package/docs/schema/dot-env-v1.json +110 -0
- package/docs/security/CI_EGRESS_ALLOWLIST.md +1 -1
- package/docs/security/CI_PINNING.md +17 -9
- package/docs/security/DEPS_DEV_EXCEPTIONS.md +2 -2
- package/docs/security/FUZZING.md +114 -0
- package/docs/security/INSTALL_VERIFICATION.md +2 -2
- package/docs/security/POLICY_RELEASES.md +2 -2
- package/docs/security/SCORECARD.md +58 -3
- package/docs/security/SHELL_EXEMPTIONS.md +4 -4
- package/docs/security/VERIFY_RELEASE.md +201 -0
- package/install.sh +27 -5
- package/package.json +1 -1
- package/scripts/README.md +123 -0
- package/scripts/ci/check-copyright-headers.sh +4 -93
- package/scripts/ci/check-shell-preamble.sh +4 -103
- package/scripts/ci/guard-gitleaks-checkout.sh +4 -54
- package/scripts/diagnostics/a2a-conformance.sh +4 -4
- package/scripts/diagnostics/alias-governance.sh +1 -1
- package/scripts/diagnostics/aliases-cheatsheet.sh +2 -2
- package/scripts/diagnostics/benchmark.sh +4 -4
- package/scripts/diagnostics/conflicts.sh +2 -2
- package/scripts/diagnostics/doctor-unified.sh +2 -2
- package/scripts/diagnostics/doctor.sh +10 -10
- package/scripts/diagnostics/drift-dashboard.sh +2 -2
- package/scripts/diagnostics/health.sh +4 -4
- package/scripts/diagnostics/history-analysis.sh +2 -2
- package/scripts/diagnostics/mcp-doctor.sh +10 -7
- package/scripts/diagnostics/perf.sh +4 -4
- package/scripts/diagnostics/scorecard.sh +4 -4
- package/scripts/diagnostics/security-score.sh +2 -2
- package/scripts/diagnostics/smoke-test.sh +2 -2
- package/scripts/diagnostics/snapshot.sh +2 -2
- package/scripts/diagnostics/verify.sh +4 -4
- package/scripts/diagnostics/version-locks.sh +2 -2
- package/scripts/diagnostics/workstation-attestation.sh +14 -14
- package/scripts/dot/commands/agent.sh +8 -0
- package/scripts/dot/commands/agents.sh +14 -4
- package/scripts/dot/commands/ai.sh +144 -25
- package/scripts/dot/commands/appearance.sh +2 -2
- package/scripts/dot/commands/core.sh +2 -2
- package/scripts/dot/commands/diagnostics.sh +5 -5
- package/scripts/dot/commands/env-emit.sh +202 -0
- package/scripts/dot/commands/fleet.sh +12 -11
- package/scripts/dot/commands/init.sh +4 -4
- package/scripts/dot/commands/lint.sh +9 -4
- package/scripts/dot/commands/manual.sh +3 -3
- package/scripts/dot/commands/meta.sh +12 -6
- package/scripts/dot/commands/patterns.sh +2 -2
- package/scripts/dot/commands/registry.sh +4 -4
- package/scripts/dot/commands/restore.sh +4 -4
- package/scripts/dot/commands/secrets.sh +4 -3
- package/scripts/dot/commands/security.sh +2 -2
- package/scripts/dot/commands/tools.sh +13 -3
- package/scripts/dot/powershell/Dot.psm1 +199 -0
- package/scripts/fonts/install-nerd-fonts.sh +2 -2
- package/scripts/git-hooks/pre-commit-audit.sh +2 -2
- package/scripts/git-hooks/pre-push +13 -0
- package/scripts/ops/ai-setup.sh +1 -1
- package/scripts/ops/bundle.sh +2 -2
- package/scripts/ops/chaos.sh +2 -2
- package/scripts/ops/chezmoi-apply.sh +4 -4
- package/scripts/ops/heal.sh +4 -4
- package/scripts/ops/post-apply-repair.sh +2 -2
- package/scripts/ops/prewarm.sh +2 -2
- package/scripts/ops/release.sh +4 -4
- package/scripts/ops/rollback.sh +4 -4
- package/scripts/ops/setup.sh +2 -2
- package/scripts/qa/check-version-consistency.sh +123 -0
- package/scripts/qa/coverage-baseline.sh +1 -1
- package/scripts/qa/docs-coverage.sh +2 -2
- package/scripts/qa/powershell-contract.ps1 +1 -1
- package/scripts/qa/scorecard-snapshot.sh +127 -0
- package/scripts/security/backup.sh +2 -2
- package/scripts/security/dns-doh.sh +4 -4
- package/scripts/security/encryption-check.sh +4 -4
- package/scripts/security/enforce-policies.sh +2 -2
- package/scripts/security/firewall.sh +4 -4
- package/scripts/security/lock-screen.sh +4 -4
- package/scripts/security/manage-secrets.sh +2 -2
- package/scripts/security/ssh-cert.sh +2 -2
- package/scripts/security/telemetry-kill.sh +4 -4
- package/scripts/security/usb-safety.sh +4 -4
- package/scripts/theme/extract-heic-frames.sh +114 -0
- package/scripts/theme/rebuild-themes.sh +8 -1
- package/scripts/theme/switch.sh +13 -6
- package/scripts/theme/wallpaper-sync.sh +297 -93
- package/scripts/tuning/linux.sh +2 -2
- package/scripts/tuning/macos.sh +2 -2
- package/scripts/version-sync.sh +55 -7
- package/dot_config/.module-manifest.json +0 -69
- package/dot_config/ai/identity.md +0 -23
- package/dot_config/ai/patterns/architect.md +0 -16
- package/dot_config/ai/patterns/hardener.md +0 -15
- package/dot_config/ai/patterns/refactor.md +0 -15
- package/dot_config/aider/aider.conf.yml +0 -32
- package/dot_config/alacritty/alacritty.toml.tmpl +0 -55
- package/dot_config/ansible/ansible.cfg +0 -11
- package/dot_config/atuin/config.toml.tmpl +0 -47
- package/dot_config/bat/config +0 -23
- package/dot_config/brave-flags.conf.tmpl +0 -7
- package/dot_config/btop/btop.conf +0 -16
- package/dot_config/btop/themes/tokyonight.theme +0 -34
- package/dot_config/bun/bunfig.toml.tmpl +0 -33
- package/dot_config/claude/mcp_servers.json +0 -20
- package/dot_config/containers/containers.conf +0 -14
- package/dot_config/curl/dot_curlrc +0 -18
- package/dot_config/dlv/config.yml +0 -39
- package/dot_config/docker/config.json +0 -15
- package/dot_config/dotfiles/agent-card.json +0 -29
- package/dot_config/dotfiles/agent-profiles.json +0 -92
- package/dot_config/dotfiles/boot/README.md +0 -13
- package/dot_config/dotfiles/grub/README.md +0 -13
- package/dot_config/dotfiles/lock/README.md +0 -13
- package/dot_config/dotfiles/mcp-lock.json +0 -33
- package/dot_config/dotfiles/mcp-policy.json +0 -52
- package/dot_config/dotfiles/mcp-registry.json +0 -47
- package/dot_config/dotfiles/model-registry.json +0 -20
- package/dot_config/dotfiles/policy-bundles.json +0 -38
- package/dot_config/dotfiles/prompt-registry.json +0 -16
- package/dot_config/dotfiles/versions.env +0 -18
- package/dot_config/duf/duf.conf +0 -6
- package/dot_config/duti/defaults.duti +0 -5
- package/dot_config/emoji/emoji.txt +0 -34
- package/dot_config/environment.d/50-ssh-agent.conf +0 -2
- package/dot_config/environment.d/90-wayland.conf +0 -19
- package/dot_config/fastfetch/config.jsonc +0 -28
- package/dot_config/firefox/user.js.tmpl +0 -58
- package/dot_config/fish/completions/dot-theme-sync.fish.tmpl +0 -9
- package/dot_config/fish/completions/dot.fish.tmpl +0 -115
- package/dot_config/fish/conf.d/000-perf-cache.fish +0 -56
- package/dot_config/fish/conf.d/aliases.fish.tmpl +0 -77
- package/dot_config/fish/conf.d/direnv.fish +0 -4
- package/dot_config/fish/conf.d/env.fish.tmpl +0 -48
- package/dot_config/fish/conf.d/functions.fish.tmpl +0 -22
- package/dot_config/fish/conf.d/init.fish.tmpl +0 -172
- package/dot_config/fish/conf.d/mise-activate.fish +0 -5
- package/dot_config/fish/config.fish.tmpl +0 -44
- package/dot_config/fish/fish_plugins +0 -1
- package/dot_config/fish/functions/_.fish +0 -3
- package/dot_config/fish/functions/_cached_eval.fish +0 -131
- package/dot_config/fish/functions/_cached_eval_clear.fish +0 -17
- package/dot_config/fish/functions/als.fish +0 -46
- package/dot_config/fish/functions/bg-upgrade.fish +0 -7
- package/dot_config/fish/functions/c.fish +0 -3
- package/dot_config/fish/functions/cat.fish +0 -9
- package/dot_config/fish/functions/d.fish +0 -7
- package/dot_config/fish/functions/dot.fish +0 -34
- package/dot_config/fish/functions/h.fish +0 -3
- package/dot_config/fish/functions/l.fish +0 -7
- package/dot_config/fish/functions/la.fish +0 -7
- package/dot_config/fish/functions/ll.fish +0 -7
- package/dot_config/fish/functions/log_error.fish +0 -13
- package/dot_config/fish/functions/log_info.fish +0 -13
- package/dot_config/fish/functions/lr.fish +0 -7
- package/dot_config/fish/functions/lra.fish +0 -7
- package/dot_config/fish/functions/ls.fish +0 -7
- package/dot_config/fish/functions/lt.fish +0 -7
- package/dot_config/fish/functions/lta.fish +0 -7
- package/dot_config/fish/functions/notify-run.fish +0 -11
- package/dot_config/fish/functions/q.fish +0 -3
- package/dot_config/fish/functions/silent-run.fish +0 -7
- package/dot_config/fish/functions/yy.fish +0 -8
- package/dot_config/flatpak/flatpak.list +0 -4
- package/dot_config/fontconfig/fonts.conf.tmpl +0 -57
- package/dot_config/foot/foot.ini.tmpl +0 -33
- package/dot_config/fuzzel/fuzzel.ini.tmpl +0 -18
- package/dot_config/fzf/fzf.zsh +0 -48
- package/dot_config/gem/gemrc +0 -9
- package/dot_config/gh/config.yml +0 -12
- package/dot_config/ghostty/config.tmpl +0 -165
- package/dot_config/git/allowed_signers.tmpl +0 -18
- package/dot_config/git/attributes +0 -12
- package/dot_config/git/commit-template +0 -10
- package/dot_config/git/hooks/executable_commit-msg +0 -146
- package/dot_config/git/ignore +0 -27
- package/dot_config/gnupg/gpg-agent.conf +0 -11
- package/dot_config/go/golangci.yml +0 -118
- package/dot_config/go/gopls.json +0 -30
- package/dot_config/goose/config.yaml +0 -29
- package/dot_config/gtk-3.0/gtk.css.tmpl +0 -184
- package/dot_config/gtk-3.0/settings.ini.tmpl +0 -27
- package/dot_config/gtk-4.0/gtk.css.tmpl +0 -252
- package/dot_config/gtk-4.0/settings.ini.tmpl +0 -18
- package/dot_config/htop/htoprc +0 -20
- package/dot_config/inputrc +0 -2
- package/dot_config/ipython/profile_default/ipython_config.py +0 -19
- package/dot_config/just/justfile +0 -122
- package/dot_config/k9s/config.yaml +0 -65
- package/dot_config/k9s/skins/catppuccin-mocha.yaml +0 -116
- package/dot_config/kanshi/config.tmpl +0 -22
- package/dot_config/karabiner/karabiner.json +0 -14
- package/dot_config/kitty/kitty.conf.tmpl +0 -53
- package/dot_config/lazydocker/config.yml +0 -186
- package/dot_config/lazygit/config.yml +0 -35
- package/dot_config/mako/config +0 -47
- package/dot_config/mas/masapps.txt +0 -5
- package/dot_config/micro/settings.json +0 -3
- package/dot_config/mimeapps.list +0 -77
- package/dot_config/minikube/config.json +0 -13
- package/dot_config/mise/config.toml +0 -99
- package/dot_config/mongosh/mongoshrc.js +0 -68
- package/dot_config/mpv/input.conf +0 -47
- package/dot_config/mpv/mpv.conf +0 -47
- package/dot_config/mycli/myclirc +0 -67
- package/dot_config/nano/nanorc +0 -28
- package/dot_config/ncdu/config +0 -12
- package/dot_config/niri/config.kdl.tmpl +0 -327
- package/dot_config/nushell/aliases.nu +0 -18
- package/dot_config/nushell/cached_eval.nu +0 -80
- package/dot_config/nushell/completions.nu.tmpl +0 -52
- package/dot_config/nushell/config.nu.tmpl +0 -86
- package/dot_config/nushell/env.nu.tmpl +0 -102
- package/dot_config/nushell/functions.nu.tmpl +0 -17
- package/dot_config/nvim/init.lua +0 -18
- package/dot_config/nvim/lazy-lock.json +0 -58
- package/dot_config/nvim/lua/config/autocmds.lua +0 -107
- package/dot_config/nvim/lua/config/keymaps.lua +0 -92
- package/dot_config/nvim/lua/config/lazy.lua +0 -44
- package/dot_config/nvim/lua/config/options.lua +0 -49
- package/dot_config/nvim/lua/plugins/ai.lua +0 -75
- package/dot_config/nvim/lua/plugins/coding.lua +0 -216
- package/dot_config/nvim/lua/plugins/completion.lua +0 -60
- package/dot_config/nvim/lua/plugins/dap.lua +0 -412
- package/dot_config/nvim/lua/plugins/editor.lua +0 -55
- package/dot_config/nvim/lua/plugins/git.lua +0 -10
- package/dot_config/nvim/lua/plugins/lsp.lua +0 -156
- package/dot_config/nvim/lua/plugins/markdown.lua +0 -18
- package/dot_config/nvim/lua/plugins/rust.lua +0 -34
- package/dot_config/nvim/lua/plugins/sessions.lua +0 -33
- package/dot_config/nvim/lua/plugins/ui.lua +0 -509
- package/dot_config/paru/paru.conf +0 -10
- package/dot_config/pip/pip.conf.tmpl +0 -32
- package/dot_config/powershell/Microsoft.PowerShell_profile.ps1.tmpl +0 -81
- package/dot_config/pueue/pueue.yml +0 -34
- package/dot_config/pypoetry/config.toml +0 -6
- package/dot_config/pyrightconfig.json +0 -5
- package/dot_config/raycast/README.md +0 -13
- package/dot_config/redis/redisclirc +0 -41
- package/dot_config/ripgrep/ripgreprc +0 -21
- package/dot_config/shell/00-core-paths.sh.tmpl +0 -141
- package/dot_config/shell/05-core-safety.sh +0 -48
- package/dot_config/shell/10-secrets.sh +0 -41
- package/dot_config/shell/40-fzf-defaults.sh.tmpl +0 -17
- package/dot_config/shell/40-ls-colors.sh +0 -49
- package/dot_config/shell/50-logic-functions-core.sh.tmpl +0 -11
- package/dot_config/shell/50-logic-functions.sh.tmpl +0 -11
- package/dot_config/shell/51-logic-functions-extra.sh.tmpl +0 -65
- package/dot_config/shell/90-ux-aliases.sh.tmpl +0 -121
- package/dot_config/shell/91-ux-aliases-lazy.sh.tmpl +0 -55
- package/dot_config/shell/Brewfile +0 -207
- package/dot_config/shell/Brewfile.cask +0 -92
- package/dot_config/shell/Brewfile.cli +0 -127
- package/dot_config/shell/README.md +0 -284
- package/dot_config/shell/als_data.txt.tmpl +0 -65
- package/dot_config/shell/custom/auto_ls.zsh +0 -20
- package/dot_config/shell/custom/context_suggest.zsh +0 -68
- package/dot_config/shell/custom/error_analysis.zsh +0 -45
- package/dot_config/sops/dot_sops.yaml +0 -23
- package/dot_config/starship.toml.tmpl +0 -202
- package/dot_config/swaylock/config +0 -43
- package/dot_config/systemd/user/dotfiles-maintenance.service +0 -8
- package/dot_config/systemd/user/dotfiles-maintenance.timer +0 -11
- package/dot_config/systemd/user/pueued.service +0 -12
- package/dot_config/systemd/user/ssh-agent.service +0 -12
- package/dot_config/task/Taskfile.yml +0 -86
- package/dot_config/tflint/tflint.hcl +0 -9
- package/dot_config/tmux/tmux.conf.tmpl +0 -223
- package/dot_config/topgrade.toml.tmpl +0 -54
- package/dot_config/user-dirs.dirs +0 -10
- package/dot_config/vscode/extensions.txt +0 -11
- package/dot_config/vscode/settings.json.tmpl +0 -82
- package/dot_config/waybar/config.jsonc.tmpl +0 -90
- package/dot_config/waybar/style.css.tmpl +0 -211
- package/dot_config/wezterm/wezterm.lua.tmpl +0 -64
- package/dot_config/wget/wgetrc +0 -12
- package/dot_config/xdg-desktop-portal/niri-portals.conf +0 -5
- package/dot_config/yarn/yarnrc.yml +0 -36
- package/dot_config/yazi/keymap.toml +0 -67
- package/dot_config/yazi/theme.toml +0 -102
- package/dot_config/yazi/yazi.toml +0 -40
- package/dot_config/zathura/zathurarc +0 -52
- package/dot_config/zellij/config.kdl.tmpl +0 -79
- package/dot_config/zsh/dot_zprofile +0 -7
- package/dot_config/zsh/dot_zshenv +0 -5
- package/dot_config/zsh/dot_zshrc.tmpl +0 -688
- package/dot_config/zsh/rc.d/00-alias-shims.zsh +0 -99
- package/dot_config/zsh/rc.d/05-ssh-agent.zsh +0 -18
- package/dot_config/zsh/rc.d/10-env.zsh.tmpl +0 -28
- package/dot_config/zsh/rc.d/20-zinit.zsh +0 -65
- package/dot_config/zsh/rc.d/30-options.zsh.tmpl +0 -214
- package/dot_config/zsh/rc.d/40-bell.zsh +0 -20
- package/dot_config/zsh/rc.d/50-login-fortune.zsh +0 -9
- package/dot_config/zsh/rc.d/99-alias-wrapper.zsh +0 -32
- package/dot_local/bin/executable_ai-update +0 -195
- package/dot_local/bin/executable_ai_core +0 -152
- package/dot_local/bin/executable_antigravity +0 -11
- package/dot_local/bin/executable_b64 +0 -84
- package/dot_local/bin/executable_bm +0 -79
- package/dot_local/bin/executable_cb +0 -39
- package/dot_local/bin/executable_dot +0 -636
- package/dot_local/bin/executable_dot-ai +0 -36
- package/dot_local/bin/executable_dot-bootstrap +0 -76
- package/dot_local/bin/executable_dot-launch-or-focus +0 -52
- package/dot_local/bin/executable_dot-load-benchmark +0 -31
- package/dot_local/bin/executable_dot-load-benchmark-pty +0 -77
- package/dot_local/bin/executable_dot-theme-sync +0 -952
- package/dot_local/bin/executable_dot_completion +0 -57
- package/dot_local/bin/executable_dtags +0 -28
- package/dot_local/bin/executable_epoch +0 -67
- package/dot_local/bin/executable_extract +0 -41
- package/dot_local/bin/executable_gbd +0 -52
- package/dot_local/bin/executable_gd +0 -42
- package/dot_local/bin/executable_git-ai-commit +0 -175
- package/dot_local/bin/executable_git-ai-diff +0 -169
- package/dot_local/bin/executable_gl +0 -101
- package/dot_local/bin/executable_hash +0 -161
- package/dot_local/bin/executable_hashsum +0 -160
- package/dot_local/bin/executable_hex +0 -115
- package/dot_local/bin/executable_jsonv +0 -78
- package/dot_local/bin/executable_jwt +0 -94
- package/dot_local/bin/executable_kill-port +0 -75
- package/dot_local/bin/executable_lorem +0 -118
- package/dot_local/bin/executable_mkscript +0 -35
- package/dot_local/bin/executable_monitor +0 -56
- package/dot_local/bin/executable_myip +0 -51
- package/dot_local/bin/executable_notify +0 -24
- package/dot_local/bin/executable_open +0 -38
- package/dot_local/bin/executable_pw +0 -27
- package/dot_local/bin/executable_rec-start +0 -46
- package/dot_local/bin/executable_rec-stop +0 -35
- package/dot_local/bin/executable_regex +0 -132
- package/dot_local/bin/executable_start-niri +0 -8
- package/dot_local/bin/executable_tmux-sessionizer +0 -314
- package/dot_local/bin/executable_tour +0 -177
- package/dot_local/bin/executable_up +0 -23
- package/dot_local/bin/executable_update +0 -142
- package/dot_local/bin/executable_uuid +0 -87
- package/dot_local/bin/executable_win +0 -32
- package/dot_local/bin/executable_yamlv +0 -57
- package/dot_local/share/bash-completion/completions/dot +0 -72
- 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 +0 -149
- package/dot_local/share/mise/plugins/kiro-cli/bin/executable_download +0 -64
- package/dot_local/share/mise/plugins/kiro-cli/bin/executable_install +0 -18
- package/dot_local/share/mise/plugins/kiro-cli/bin/executable_list-all +0 -13
- package/dot_local/share/wayland-sessions/niri.desktop.tmpl +0 -6
- package/dot_local/share/zsh/completions/.keep +0 -0
- package/dot_local/share/zsh/completions/_dot +0 -287
- package/scripts/ci/check-dangerous-chmod.sh +0 -19
- package/scripts/ci/check-deps-dev.sh +0 -236
- package/scripts/ci/check-insecure-tls.sh +0 -61
- package/scripts/ci/check-regression-traceability.sh +0 -67
- package/scripts/ci/dot-cli-startup-bench.sh +0 -126
- package/scripts/ci/install-chezmoi-verified.sh +0 -67
- package/scripts/ci/lint-reusable-pins.sh +0 -78
- package/scripts/ci/run-coverage.sh +0 -451
- package/scripts/ci/validate-chezmoidata.sh +0 -25
- package/scripts/ci/validate-ci-config.sh +0 -224
- package/scripts/ci/windows-smoke-test.ps1 +0 -136
- package/scripts/docs/build-manual.sh +0 -883
- package/scripts/docs/check-manual.sh +0 -213
- package/scripts/dot/lib/bento.sh +0 -50
- package/scripts/dot/lib/log.sh +0 -200
- package/scripts/dot/lib/platform.sh +0 -112
- package/scripts/dot/lib/ui.sh +0 -650
- package/scripts/dot/lib/utils.sh +0 -377
- package/scripts/maintenance/check-updates.sh +0 -131
- package/scripts/release/package-policy-bundles.sh +0 -125
package/README.md
CHANGED
|
@@ -10,10 +10,12 @@
|
|
|
10
10
|
|
|
11
11
|
<p align="center">
|
|
12
12
|
<a href="https://github.com/sebastienrousseau/dotfiles/actions"><img src="https://img.shields.io/github/actions/workflow/status/sebastienrousseau/dotfiles/ci.yml?style=for-the-badge&logo=github" alt="Build" /></a>
|
|
13
|
-
<a href="https://github.com/sebastienrousseau/dotfiles/releases/latest"><img src="https://img.shields.io/badge/Version-v0.2.
|
|
13
|
+
<a href="https://github.com/sebastienrousseau/dotfiles/releases/latest"><img src="https://img.shields.io/badge/Version-v0.2.503-blue?style=for-the-badge" alt="Version" /></a>
|
|
14
14
|
<a href="https://github.com/sebastienrousseau/dotfiles/releases"><img src="https://img.shields.io/github/downloads/sebastienrousseau/dotfiles/total?style=for-the-badge" alt="Downloads" /></a>
|
|
15
15
|
<a href="https://codespaces.new/sebastienrousseau/dotfiles"><img src="https://img.shields.io/badge/Open%20in-Codespaces-blue?style=for-the-badge&logo=github" alt="Open in GitHub Codespaces" /></a>
|
|
16
16
|
<a href="https://scorecard.dev/viewer/?uri=github.com/sebastienrousseau/dotfiles"><img src="https://img.shields.io/ossf-scorecard/github.com/sebastienrousseau/dotfiles?style=for-the-badge&label=OpenSSF%20Scorecard" alt="OpenSSF Scorecard" /></a>
|
|
17
|
+
<a href="https://www.bestpractices.dev/projects/new"><img src="https://img.shields.io/badge/OpenSSF%20Best%20Practices-in%20progress-yellow?style=for-the-badge" alt="OpenSSF Best Practices" /></a>
|
|
18
|
+
<a href="LICENSE"><img src="https://img.shields.io/badge/License-MIT-green?style=for-the-badge" alt="License: MIT" /></a>
|
|
17
19
|
</p>
|
|
18
20
|
|
|
19
21
|
---
|
|
@@ -50,7 +52,7 @@
|
|
|
50
52
|
|
|
51
53
|
```bash
|
|
52
54
|
curl -fsSL -o /tmp/dotfiles-install.sh \
|
|
53
|
-
https://raw.githubusercontent.com/sebastienrousseau/dotfiles/v0.2.
|
|
55
|
+
https://raw.githubusercontent.com/sebastienrousseau/dotfiles/v0.2.503/install.sh
|
|
54
56
|
echo "4c0303a2d88d5aed98428ab0da37618c9795af4dae0e6549646c2fce5235c280 /tmp/dotfiles-install.sh" \
|
|
55
57
|
| shasum -a 256 -c
|
|
56
58
|
bash /tmp/dotfiles-install.sh
|
|
@@ -185,7 +187,7 @@ Over 80 commands grouped by intent. Run `dot help` for the full reference.
|
|
|
185
187
|
| `dot fleet apply` | SSH out to every host in `~/.config/dotfiles/fleet.toml` |
|
|
186
188
|
| `dot registry list` | Browse reusable dotfile modules from the registry |
|
|
187
189
|
|
|
188
|
-
A [Claude Code skill](dot_claude/skills/dotfiles-bootstrap/SKILL.md) is also shipped — `/skills` discovers `dotfiles-bootstrap` and runs `dot init` with profile-aware safety defaults.
|
|
190
|
+
A [Claude Code skill](defaults/dot_claude/skills/dotfiles-bootstrap/SKILL.md) is also shipped — `/skills` discovers `dotfiles-bootstrap` and runs `dot init` with profile-aware safety defaults.
|
|
189
191
|
|
|
190
192
|
### Daily Use
|
|
191
193
|
|
|
@@ -0,0 +1,124 @@
|
|
|
1
|
+
# Configuration Management Strategy
|
|
2
|
+
|
|
3
|
+
## Overview
|
|
4
|
+
|
|
5
|
+
This document defines the configuration management approach for this development environment, consolidating multiple systems into a clear hierarchy.
|
|
6
|
+
|
|
7
|
+
## Configuration Systems
|
|
8
|
+
|
|
9
|
+
### Primary: Chezmoi
|
|
10
|
+
|
|
11
|
+
**Role:** Source of truth for all managed dotfiles
|
|
12
|
+
**Location:** `~/.dotfiles/` (chezmoi source directory)
|
|
13
|
+
**Managed Files:** 209 files/directories
|
|
14
|
+
|
|
15
|
+
Chezmoi handles:
|
|
16
|
+
|
|
17
|
+
- Shell configurations (.bashrc, .zshrc, .profile, .zshenv, .zprofile)
|
|
18
|
+
- Editor configs (.vimrc, nvim, VS Code settings)
|
|
19
|
+
- Tool configs (.gitconfig, .npmrc, .noderc, etc.)
|
|
20
|
+
- Application configs (~/.config/*)
|
|
21
|
+
- SSH configuration (~/.ssh/config, config.d/)
|
|
22
|
+
|
|
23
|
+
|
|
24
|
+
### Tertiary: Runtime/Application Data
|
|
25
|
+
|
|
26
|
+
**Role:** Auto-generated, not version controlled
|
|
27
|
+
**Examples:**
|
|
28
|
+
|
|
29
|
+
- `~/.cache/` - Application caches
|
|
30
|
+
- `~/.local/share/` - Application data
|
|
31
|
+
- `~/.cargo/`, `~/.rustup/` - Language toolchains
|
|
32
|
+
- `~/.npm/`, `~/.node_modules/` - Node.js packages
|
|
33
|
+
|
|
34
|
+
## Decision Matrix
|
|
35
|
+
|
|
36
|
+
| Configuration Type | Manager | Reason |
|
|
37
|
+
|-------------------|---------|--------|
|
|
38
|
+
| Shell dotfiles | Chezmoi | Templated, machine-specific |
|
|
39
|
+
| Editor configs | Chezmoi | Consistent across machines |
|
|
40
|
+
| Git config | Chezmoi | Templated (email, signing key) |
|
|
41
|
+
| SSH config | Chezmoi | Structured with config.d/ |
|
|
42
|
+
| Euxis framework | Git (separate) | Independent lifecycle |
|
|
43
|
+
| Language runtimes | mise | Version management |
|
|
44
|
+
| System packages | apt/snap | OS-level |
|
|
45
|
+
| Application data | None | Auto-generated |
|
|
46
|
+
|
|
47
|
+
## Chezmoi Configuration
|
|
48
|
+
|
|
49
|
+
### Data Variables (.chezmoidata.toml)
|
|
50
|
+
|
|
51
|
+
```toml
|
|
52
|
+
profile = "laptop" # Machine profile
|
|
53
|
+
theme = "tokyonight-night" # Color scheme
|
|
54
|
+
terminal_font_family = "JetBrains Mono"
|
|
55
|
+
terminal_font_size = 12
|
|
56
|
+
|
|
57
|
+
[features]
|
|
58
|
+
zsh = true # Enable zsh configs
|
|
59
|
+
nvim = true # Enable neovim configs
|
|
60
|
+
tmux = true # Enable tmux configs
|
|
61
|
+
gui = true # Enable GUI app configs
|
|
62
|
+
secrets = true # Enable secret management
|
|
63
|
+
```
|
|
64
|
+
|
|
65
|
+
### Template Patterns
|
|
66
|
+
|
|
67
|
+
Files ending in `.tmpl` are processed with Go templates:
|
|
68
|
+
|
|
69
|
+
- `dot_gitconfig.tmpl` - Injects name, email, signing key
|
|
70
|
+
- `dot_npmrc.tmpl` - Injects registry tokens
|
|
71
|
+
- `dot_noderc.tmpl` - Injects Node.js settings
|
|
72
|
+
|
|
73
|
+
### Ignored Patterns (.chezmoiignore.tmpl)
|
|
74
|
+
|
|
75
|
+
Machine-specific exclusions based on profile and features.
|
|
76
|
+
|
|
77
|
+
## Workflow
|
|
78
|
+
|
|
79
|
+
### Adding New Configuration
|
|
80
|
+
|
|
81
|
+
1. **Check if managed:** `chezmoi managed | grep <file>`
|
|
82
|
+
2. **If not managed:** `chezmoi add <file>`
|
|
83
|
+
3. **If templating needed:** Rename to `.tmpl`, add template logic
|
|
84
|
+
4. **Apply changes:** `chezmoi apply`
|
|
85
|
+
|
|
86
|
+
### Updating Configuration
|
|
87
|
+
|
|
88
|
+
1. **Edit source:** `chezmoi edit <file>` or edit in `~/.dotfiles/`
|
|
89
|
+
2. **Preview changes:** `chezmoi diff`
|
|
90
|
+
3. **Apply:** `chezmoi apply`
|
|
91
|
+
4. **Commit:** `cd ~/.dotfiles && git add -A && git commit`
|
|
92
|
+
|
|
93
|
+
### Syncing Across Machines
|
|
94
|
+
|
|
95
|
+
```bash
|
|
96
|
+
# On new machine
|
|
97
|
+
chezmoi init https://github.com/<user>/dotfiles.git
|
|
98
|
+
chezmoi apply
|
|
99
|
+
|
|
100
|
+
# On existing machine
|
|
101
|
+
chezmoi update
|
|
102
|
+
```
|
|
103
|
+
|
|
104
|
+
## Anti-Patterns to Avoid
|
|
105
|
+
|
|
106
|
+
1. **Manual edits to managed files** - Always edit via chezmoi or re-add after manual changes
|
|
107
|
+
2. **Duplicate configs** - Don't maintain parallel configs outside chezmoi
|
|
108
|
+
3. **Hardcoded machine-specific values** - Use templates and data variables
|
|
109
|
+
4. **Version controlling runtime data** - Keep ~/.cache, ~/.local/share out of version control
|
|
110
|
+
|
|
111
|
+
## File Ownership
|
|
112
|
+
|
|
113
|
+
| Path | Owner | Notes |
|
|
114
|
+
|------|-------|-------|
|
|
115
|
+
| `~/.dotfiles/` | chezmoi | Source of truth |
|
|
116
|
+
| `~/.*` (dotfiles) | chezmoi-applied | Don't edit directly |
|
|
117
|
+
| `~/.config/*` | Mixed | Check `chezmoi managed` |
|
|
118
|
+
| `~/.local/` | chezmoi (bin) + runtime | Partial management |
|
|
119
|
+
|
|
120
|
+
## Maintenance Schedule
|
|
121
|
+
|
|
122
|
+
- **Weekly:** `chezmoi update` to sync remote changes
|
|
123
|
+
- **Monthly:** Review `chezmoi unmanaged` for new configs to add
|
|
124
|
+
- **Quarterly:** Audit `.chezmoiignore` patterns
|
package/docs/COPYRIGHT
CHANGED
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
# Governance
|
|
2
|
+
|
|
3
|
+
## Model
|
|
4
|
+
|
|
5
|
+
**Single-maintainer steward.** The project is owned and decided
|
|
6
|
+
by one maintainer (see [`MAINTAINERS.md`](MAINTAINERS.md)). This document exists so
|
|
7
|
+
contributors and downstream consumers understand exactly how
|
|
8
|
+
decisions are made, how to influence them, and what guarantees
|
|
9
|
+
exist.
|
|
10
|
+
|
|
11
|
+
## Decision-making
|
|
12
|
+
|
|
13
|
+
| Decision class | Process | Veto |
|
|
14
|
+
|---|---|---|
|
|
15
|
+
| Bug fix | Open PR, maintainer reviews + merges. Tests required. | Maintainer |
|
|
16
|
+
| Feature addition | Open issue first to scope. Then PR. Larger changes need an RFC in `docs/operations/`. | Maintainer |
|
|
17
|
+
| Breaking change | RFC in `docs/operations/RFC_<topic>.md` + 2-week comment window + migration script + at least one minor-version deprecation. | Maintainer (with public reasoning) |
|
|
18
|
+
| Security policy | `.github/SECURITY.md` is the canonical reference. Disclosure-key rotation follows `docs/security/KEY_ROTATION.md`. | Maintainer + 30-day public notice |
|
|
19
|
+
| Dependency change | Pre-commit + CI must stay green. New runtime deps require RFC. | Maintainer |
|
|
20
|
+
| Release | Maintainer cuts tags. Convention: signed annotated tag, Cosign-signed SBOM, SLSA L3 provenance. | Maintainer |
|
|
21
|
+
|
|
22
|
+
## Contribution flow
|
|
23
|
+
|
|
24
|
+
1. **Issue** for non-trivial work. Confirm scope before coding.
|
|
25
|
+
2. **Branch** off `master`: `feat/<scope>`, `fix/<scope>`,
|
|
26
|
+
`docs/<scope>`, etc.
|
|
27
|
+
3. **PR** with description following the template:
|
|
28
|
+
- Summary (1–3 bullets)
|
|
29
|
+
- Test plan (checklist)
|
|
30
|
+
- Trailing Euxis signature block (required by
|
|
31
|
+
`pr-signature.yml`)
|
|
32
|
+
4. **CI** must pass before merge. Pre-commit hooks must not be
|
|
33
|
+
bypassed (`--no-verify` is rejected by the pre-push hook).
|
|
34
|
+
5. **Review** by the maintainer. Squash-merge is the project
|
|
35
|
+
default; merge-commit only for release PRs that need history
|
|
36
|
+
preserved (e.g., `feat/v0.X.YYY` aggregate PRs).
|
|
37
|
+
6. **Commit signing** is mandatory: SSH or GPG. Unsigned commits
|
|
38
|
+
are rejected at push.
|
|
39
|
+
|
|
40
|
+
See `CONTRIBUTING.md` for full code-style + commit-message
|
|
41
|
+
requirements.
|
|
42
|
+
|
|
43
|
+
## RFC process
|
|
44
|
+
|
|
45
|
+
For breaking changes or substantial new features:
|
|
46
|
+
|
|
47
|
+
1. Create `docs/operations/RFC_<short-name>.md` with sections:
|
|
48
|
+
- **Summary** (one paragraph)
|
|
49
|
+
- **Motivation** (why now, what's broken without it)
|
|
50
|
+
- **Detailed design** (concrete file paths, API shapes)
|
|
51
|
+
- **Backwards compatibility** (what breaks, migration path)
|
|
52
|
+
- **Alternatives considered** (with reasons rejected)
|
|
53
|
+
- **Unresolved questions**
|
|
54
|
+
2. Open a PR labelled `rfc` against `master`.
|
|
55
|
+
3. Comment window: 14 days minimum.
|
|
56
|
+
4. Maintainer renders a decision (accept / accept-with-changes /
|
|
57
|
+
reject) with public reasoning in the PR.
|
|
58
|
+
5. Accepted RFCs are merged as-is to `docs/operations/` and become
|
|
59
|
+
the implementation reference.
|
|
60
|
+
|
|
61
|
+
Active and historical RFCs are linked from
|
|
62
|
+
`docs/operations/README.md`.
|
|
63
|
+
|
|
64
|
+
## Code of conduct
|
|
65
|
+
|
|
66
|
+
Standard expectations: be kind, assume good faith, focus on the
|
|
67
|
+
work. Discriminatory or harassing behaviour is grounds for
|
|
68
|
+
permanent block. Report incidents to the maintainer via the
|
|
69
|
+
security disclosure channel (`security@sebastienrousseau.com`,
|
|
70
|
+
encrypted to the WKD-published GPG key).
|
|
71
|
+
|
|
72
|
+
## Forking
|
|
73
|
+
|
|
74
|
+
The project is MIT-licensed; fork freely. If your fork diverges
|
|
75
|
+
substantially and gains its own community, please rename it to
|
|
76
|
+
avoid downstream confusion ("dotfiles-X" or similar).
|
|
77
|
+
|
|
78
|
+
## Sustainability
|
|
79
|
+
|
|
80
|
+
The single-maintainer model has known weaknesses (bus factor,
|
|
81
|
+
review bandwidth, perspective). The project mitigates these by:
|
|
82
|
+
|
|
83
|
+
- **Comprehensive automation**: 75+ CI checks, pre-commit hooks,
|
|
84
|
+
shellcheck/shfmt/typos enforcement.
|
|
85
|
+
- **Documented architecture**: [`STRUCTURE.md`](STRUCTURE.md), `scripts/README.md`,
|
|
86
|
+
`architecture/`, `operations/HARD_AUDIT_2026.md`.
|
|
87
|
+
- **Cryptographic supply chain**: Cosign-signed SBOMs, SLSA L3
|
|
88
|
+
provenance, signed commits, WKD-published disclosure key.
|
|
89
|
+
- **Permissive license**: MIT — anyone can fork and continue.
|
|
90
|
+
- **Active issue triage**: targeted weekly cadence.
|
|
91
|
+
|
|
92
|
+
When the project gains regular contributors, this document will be
|
|
93
|
+
updated to reflect the shared-maintainer model.
|
|
94
|
+
|
|
95
|
+
## Reference
|
|
96
|
+
|
|
97
|
+
- [OpenSSF Best Practices criteria](https://www.bestpractices.dev/en/criteria/0) — this governance model is designed to satisfy the "passing" tier.
|
|
98
|
+
- [CNCF Project Governance template](https://contribute.cncf.io/maintainers/governance/) — adapted for solo maintainership.
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
# Maintainers
|
|
2
|
+
|
|
3
|
+
This project is maintained by a single primary maintainer with an
|
|
4
|
+
explicit, documented governance model (see [`GOVERNANCE.md`](GOVERNANCE.md)).
|
|
5
|
+
|
|
6
|
+
## Primary maintainer
|
|
7
|
+
|
|
8
|
+
- **Sebastien Rousseau** — <sebastian.rousseau@gmail.com>
|
|
9
|
+
- GitHub: [@sebastienrousseau](https://github.com/sebastienrousseau)
|
|
10
|
+
- Role: project owner, release manager, security disclosure contact
|
|
11
|
+
- Commit signing: SSH ED25519 (`SHA256:kIOPAavp1TCEauTr1tTIN3cv+tSs6F9m/4lZjuM9tqk`)
|
|
12
|
+
- GPG disclosure key fingerprint: `55AFAD364FD9DB3819E61F0C8D688FAFA9144693` (ed25519 + cv25519, expires 2029-05-15, published via WKD at `security@sebastienrousseau.com`)
|
|
13
|
+
|
|
14
|
+
## Active contributors
|
|
15
|
+
|
|
16
|
+
This is a solo-maintained project. Contributions are welcomed via
|
|
17
|
+
pull request (see `CONTRIBUTING.md`); the maintainer reviews and
|
|
18
|
+
merges. When the project gains additional regular committers their
|
|
19
|
+
names will land here with role and contact.
|
|
20
|
+
|
|
21
|
+
## Security contact
|
|
22
|
+
|
|
23
|
+
For coordinated vulnerability disclosure, follow `.github/SECURITY.md`.
|
|
24
|
+
TL;DR: encrypt your report to the WKD-published GPG key above and
|
|
25
|
+
email `security@sebastienrousseau.com`. Acknowledgement SLA: 72 hours.
|
|
26
|
+
|
|
27
|
+
## Backup / continuity
|
|
28
|
+
|
|
29
|
+
In the event the primary maintainer becomes unable to maintain the
|
|
30
|
+
project, the repository is published under the MIT license and may
|
|
31
|
+
be forked. The `chezmoi`-based architecture means existing user
|
|
32
|
+
installs continue to work indefinitely without upstream activity.
|
|
33
|
+
|
|
34
|
+
## Releases
|
|
35
|
+
|
|
36
|
+
| Release author | Cadence | Signing |
|
|
37
|
+
|---|---|---|
|
|
38
|
+
| Primary maintainer | ~weekly | Signed annotated git tag + Cosign-signed SBOM + SLSA L3 provenance |
|
|
39
|
+
|
|
40
|
+
See `docs/operations/HARD_AUDIT_2026.md` Part 7 for the
|
|
41
|
+
disclosure-key generation + WKD publication record.
|
package/docs/OPENCODE.md
ADDED
|
@@ -0,0 +1,127 @@
|
|
|
1
|
+
<!--
|
|
2
|
+
Role: Repo-scoped instructions for the OpenCode CLI when operating
|
|
3
|
+
inside this repository. Mirrors CLAUDE.md but targets OpenCode's
|
|
4
|
+
conventions/discovery.
|
|
5
|
+
Audience: OpenCode, this repo only.
|
|
6
|
+
|
|
7
|
+
Distinct from:
|
|
8
|
+
- CLAUDE.md — same intent, but for Claude Code.
|
|
9
|
+
- dot_claude/CLAUDE.md — PERSONAL cross-project Claude Code preferences,
|
|
10
|
+
deployed to ~/.claude/CLAUDE.md by chezmoi.
|
|
11
|
+
|
|
12
|
+
Keep CLAUDE.md and OPENCODE.md in sync on repo-level conventions (layout,
|
|
13
|
+
naming, CI, testing). If they drift, CLAUDE.md is the source of truth.
|
|
14
|
+
-->
|
|
15
|
+
|
|
16
|
+
# OPENCODE.md — AI Assistant Guidelines for Dotfiles Repository
|
|
17
|
+
|
|
18
|
+
## Chezmoi Source Directory Conventions
|
|
19
|
+
|
|
20
|
+
This is a **chezmoi-managed** dotfiles repository. Files here are *source templates*,
|
|
21
|
+
not the deployed config files. Understanding the naming conventions is critical.
|
|
22
|
+
|
|
23
|
+
### File Naming Rules
|
|
24
|
+
|
|
25
|
+
| Prefix/Suffix | Meaning |
|
|
26
|
+
|------------------|------------------------------------------------------|
|
|
27
|
+
| `dot_` | Deployed with a leading `.` (e.g., `dot_zshrc` -> `.zshrc`) |
|
|
28
|
+
| `executable_` | Deployed with `+x` permission |
|
|
29
|
+
| `private_` | Deployed with `0600` permissions |
|
|
30
|
+
| `.tmpl` | **Go template** — processed by chezmoi before deployment |
|
|
31
|
+
| `run_onchange_` | Script that runs when the target file changes |
|
|
32
|
+
| `encrypted_` | Age-encrypted file, decrypted at deploy time |
|
|
33
|
+
|
|
34
|
+
### Critical: Template vs Non-Template Files
|
|
35
|
+
|
|
36
|
+
Many shell config files exist **only** as `.tmpl` variants. When reading files:
|
|
37
|
+
|
|
38
|
+
- `dot_config/shell/00-core-paths.sh` does **NOT** exist
|
|
39
|
+
- `dot_config/shell/00-core-paths.sh.tmpl` **DOES** exist (this is the source)
|
|
40
|
+
|
|
41
|
+
**Rule**: If a `.sh` or `.zsh` file is not found, always try appending `.tmpl`.
|
|
42
|
+
|
|
43
|
+
Files that are templates (use Go template syntax like `{{ .variable }}`):
|
|
44
|
+
|
|
45
|
+
- `dot_config/shell/*.sh.tmpl` — all shell layer files
|
|
46
|
+
- `dot_config/zsh/dot_zshrc.tmpl` — main zsh config
|
|
47
|
+
- `dot_config/zsh/rc.d/*.tmpl` — zsh startup modules
|
|
48
|
+
- `dot_gitconfig.tmpl` — git configuration
|
|
49
|
+
- `private_dot_ssh/config.tmpl` — SSH configuration
|
|
50
|
+
- `dot_npmrc.tmpl` — npm configuration
|
|
51
|
+
- `private_dot_netrc.tmpl` — netrc credentials
|
|
52
|
+
|
|
53
|
+
Files that are **NOT** templates (plain files, no `.tmpl` suffix):
|
|
54
|
+
|
|
55
|
+
- `dot_config/shell/00-container-detect.sh` — plain shell script
|
|
56
|
+
- `dot_config/shell/90-theme-switch.sh` — plain shell script
|
|
57
|
+
- `dot_config/zsh/rc.d/00-alias-shims.zsh` — plain zsh
|
|
58
|
+
- `dot_config/zsh/rc.d/05-ssh-agent.zsh` — plain zsh
|
|
59
|
+
- Most files under `dot_config/nvim/`, `dot_config/starship.toml.tmpl`, etc.
|
|
60
|
+
|
|
61
|
+
### Reading Template Files
|
|
62
|
+
|
|
63
|
+
Template files contain Go template directives like:
|
|
64
|
+
|
|
65
|
+
```
|
|
66
|
+
{{ if eq .chezmoi.os "darwin" }}
|
|
67
|
+
# macOS-specific config
|
|
68
|
+
{{ end }}
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
Data variables come from `.chezmoidata.toml` (profiles, features, theme, tools).
|
|
72
|
+
User-specific values (git identity, age keys) come from `~/.config/chezmoi/chezmoi.toml`.
|
|
73
|
+
|
|
74
|
+
### Repository Layout
|
|
75
|
+
|
|
76
|
+
```
|
|
77
|
+
.chezmoidata.toml # Feature flags, profiles, version
|
|
78
|
+
.chezmoitemplates/ # Reusable template partials (aliases, functions, paths)
|
|
79
|
+
dot_config/ # XDG configs (~/.config/*) — largest directory
|
|
80
|
+
zsh/ # Zsh configuration
|
|
81
|
+
dot_zshrc.tmpl # Main zsh orchestrator
|
|
82
|
+
rc.d/ # Startup modules (sourced in order)
|
|
83
|
+
shell/ # POSIX shell layers (paths, safety, aliases, functions)
|
|
84
|
+
nvim/ # Neovim configuration (Lua)
|
|
85
|
+
mise/ # mise version manager config
|
|
86
|
+
starship.toml.tmpl # Starship prompt config
|
|
87
|
+
atuin/ # Atuin shell history
|
|
88
|
+
bat/ # bat (cat replacement) config
|
|
89
|
+
ghostty/ # Ghostty terminal config
|
|
90
|
+
kitty/ # Kitty terminal config
|
|
91
|
+
alacritty/ # Alacritty terminal config
|
|
92
|
+
dot_local/bin/ # User scripts (~/.local/bin)
|
|
93
|
+
scripts/ # Repo-only scripts (tests, ops, security, diagnostics)
|
|
94
|
+
docs/ # Documentation (30+ files)
|
|
95
|
+
install.sh # Bootstrap installer
|
|
96
|
+
```
|
|
97
|
+
|
|
98
|
+
### Shell Startup Chain
|
|
99
|
+
|
|
100
|
+
```
|
|
101
|
+
~/.zshenv (dot_zshenv) → XDG vars, PATH, ZDOTDIR
|
|
102
|
+
~/.config/zsh/.zshrc (dot_zshrc.tmpl) → Main orchestrator
|
|
103
|
+
→ rc.d/00-alias-shims.zsh → Single-letter fallback commands
|
|
104
|
+
→ rc.d/05-ssh-agent.zsh → SSH agent + YubiKey
|
|
105
|
+
→ rc.d/10-env.zsh.tmpl → Environment variables
|
|
106
|
+
→ rc.d/20-zinit.zsh.tmpl → Plugin manager (deferred)
|
|
107
|
+
→ rc.d/30-options.zsh.tmpl → History, keybindings, completions
|
|
108
|
+
→ rc.d/40-bell.zsh.tmpl → Bell settings
|
|
109
|
+
→ rc.d/50-login-fortune.zsh.tmpl → Login greeting
|
|
110
|
+
→ shell/00-core-paths.sh.tmpl → Full PATH construction
|
|
111
|
+
→ shell/05-core-safety.sh.tmpl → Safety defaults
|
|
112
|
+
→ shell/90-ux-aliases.sh.tmpl → Core aliases (eager)
|
|
113
|
+
→ [deferred] mise, atuin, starship, zoxide, fzf
|
|
114
|
+
→ [lazy] shell/91-ux-aliases-lazy.sh.tmpl → Tool aliases
|
|
115
|
+
```
|
|
116
|
+
|
|
117
|
+
### Key Data Files
|
|
118
|
+
|
|
119
|
+
- `.chezmoidata.toml` — All configuration: profiles, feature flags, tool settings
|
|
120
|
+
- `dot_config/mise/config.toml` — mise tool versions (node, python, go, rust, etc.)
|
|
121
|
+
- `dot_config/starship.toml.tmpl` — Prompt configuration
|
|
122
|
+
|
|
123
|
+
### Testing
|
|
124
|
+
|
|
125
|
+
- Test framework: `tests/framework/`
|
|
126
|
+
- Unit tests: `tests/unit/`
|
|
127
|
+
- Tests execute bash source files directly — they do NOT use Go template syntax
|
package/docs/README.md
CHANGED
|
@@ -54,6 +54,8 @@ Quick jumps into the Manual:
|
|
|
54
54
|
- [Naming conventions](NAMING_CONVENTIONS.md)
|
|
55
55
|
- [Architecture](architecture/ARCHITECTURE.md)
|
|
56
56
|
- [Repository layout](architecture/REPO_LAYOUT.md)
|
|
57
|
+
- [AI cost optimization](architecture/AI_COST_OPTIMIZATION.md)
|
|
58
|
+
- [Release pipeline](operations/RELEASE_PIPELINE.md)
|
|
57
59
|
- [Architecture decisions](adr/README.md)
|
|
58
60
|
|
|
59
61
|
## Repository map
|
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
# Repository Structure
|
|
2
|
+
|
|
3
|
+
This document maps every top-level path in the repository to its
|
|
4
|
+
purpose. Skim it once and you should be able to answer:
|
|
5
|
+
|
|
6
|
+
- **Where is the `dot` CLI?** → `bin/dot` (the source-of-truth file). At runtime it lives at `~/.local/bin/dot`.
|
|
7
|
+
- **Why are there 20+ `dot_*` files at root?** → chezmoi convention: a `dot_X` source file deploys to `~/.X` on apply. Same for `executable_*` (gains `+x`), `private_*` (`0600`), `run_onchange_*` (re-runs when source changes).
|
|
8
|
+
- **What's the framework vs. the maintainer's personal config?** → Everything under `scripts/`, `install/`, `tools/`, `lib/`, and `defaults/.chezmoitemplates/` is framework code. Everything under `defaults/dot_config/`, `defaults/dot_warp/`, `defaults/private_dot_ssh/` is user-facing default configuration (chezmoi auto-rebases via `.chezmoiroot`).
|
|
9
|
+
|
|
10
|
+
The Debian/aws-cli-style root layout shipped in **v0.2.503**:
|
|
11
|
+
`bin/` (dispatcher), `lib/` (shared bash libs), `defaults/`
|
|
12
|
+
(all chezmoi-tracked source files, rebased via
|
|
13
|
+
`.chezmoiroot`). Repo root now hosts only project/CI/docs paths.
|
|
14
|
+
See `docs/operations/ROADMAP_V0_2_503.md` for the full history.
|
|
15
|
+
|
|
16
|
+
---
|
|
17
|
+
|
|
18
|
+
## Top-level paths
|
|
19
|
+
|
|
20
|
+
| Path | Kind | Purpose |
|
|
21
|
+
|------|------|---------|
|
|
22
|
+
| **CLI + framework** | | |
|
|
23
|
+
| `dot_local/bin/` | framework | `executable_dot` (CLI entrypoint) and helper scripts. Deploys to `~/.local/bin/`. |
|
|
24
|
+
| `dot_local/share/` | framework | Man pages, zsh completions. Deploys to `~/.local/share/`. |
|
|
25
|
+
| `scripts/` | framework | Runtime-invoked scripts (`dot` CLI dispatch + specialised subtrees). See `scripts/README.md`. |
|
|
26
|
+
| `tools/` | repo-ops | Repo-only ops: CI helpers, release, maintenance, docs-generation. Not distributable. See `tools/README.md`. |
|
|
27
|
+
| `lib/dot/` | framework | Shared bash library sourced by every `dot` subcommand and the dispatcher. Reorganised here from `scripts/dot/lib/` per RFC Phase 1. See `lib/dot/README.md`. |
|
|
28
|
+
| `lib/` | framework | Library tree (`lib/dot/` + third-party `lib/wasm-tools/`). |
|
|
29
|
+
| `install/` | framework | Bootstrap logic + distribution-channel manifests (`homebrew/`, `scoop/`, `aur/`). See `install/README.md`. `install/provision/` runs on `chezmoi apply` via `run_onchange_*` triggers. |
|
|
30
|
+
| `install.sh` | framework | Top-level installer. SHA256-verified chezmoi fetch + initial apply. |
|
|
31
|
+
| `.chezmoitemplates/` | framework | Reusable Go-template partials (aliases, functions, paths). Sourced by `dot_*.tmpl` files. |
|
|
32
|
+
| **User-facing defaults** | | |
|
|
33
|
+
| `dot_bashrc`, `dot_zshrc`, `dot_zshenv`, `dot_zprofile`, `dot_profile`, `dot_vimrc`, etc. | defaults | Shell + editor rc files. Deploy to `~/.X`. |
|
|
34
|
+
| `dot_config/` | defaults | XDG config (`~/.config/*`). Largest tree — 80+ tool configs. |
|
|
35
|
+
| `dot_local/` (non-bin/share) | defaults | Per-user state files for tools (`dot_local/state/`, etc.). |
|
|
36
|
+
| `dot_cargo/`, `dot_etc/`, `dot_warp/` | defaults | Tool-specific roots (cargo, system etc, Warp terminal). |
|
|
37
|
+
| `private_dot_ssh/` | defaults | SSH config — chezmoi `private_` prefix forces 0600. Does NOT contain private keys. |
|
|
38
|
+
| `dot_claude/` | defaults | Claude Code per-user skills and config. |
|
|
39
|
+
| **Templates + data** | | |
|
|
40
|
+
| `templates/` | framework | Non-chezmoi templates (e.g. for `dot agents render`). |
|
|
41
|
+
| `.chezmoidata/` | data | Hardware presets (`macbook-t2`, `surface-pro`) read by templates. |
|
|
42
|
+
| `.chezmoidata.toml` | data | Feature flags + version. Single source-of-truth for `dotfiles_version`. |
|
|
43
|
+
| `.chezmoi.toml.tmpl` | framework | Per-host chezmoi config generated on first apply. |
|
|
44
|
+
| `.chezmoiignore` / `.chezmoiignore.tmpl` | framework | Tells chezmoi which paths NOT to deploy. |
|
|
45
|
+
| **Docs + tests** | | |
|
|
46
|
+
| `docs/` | docs | All documentation: `manual/` (user guide), `operations/` (audits, roadmaps), `reference/` (lookup tables), `security/`. |
|
|
47
|
+
| `tests/` | tests | Test suite: `framework/` (runner + assertions + mocks), `unit/`, `integration/`, `regression/`, `fuzz/`, `snapshots/`. |
|
|
48
|
+
| `examples/` | docs | Standalone examples (mise plugin, AI patterns, ops scripts). |
|
|
49
|
+
| **CI + release** | | |
|
|
50
|
+
| `.github/` | ci | GitHub Actions workflows + issue/PR templates + repo-level SECURITY/CODEOWNERS. |
|
|
51
|
+
| `.devcontainer/` | ci | Dev Container spec for reproducible contributor onboarding. |
|
|
52
|
+
| `Dockerfile.test` | ci | Container baseline for the CI test job. |
|
|
53
|
+
| `.pre-commit-config.yaml` → `config/pre-commit-config.yaml` | ci | Pre-commit hooks (shellcheck, shfmt, luacheck, gitleaks, typos, conventional-commits). |
|
|
54
|
+
| `flake.nix` / `flake.lock` | ci | Nix flake for reproducible dev shell. |
|
|
55
|
+
| `mise.toml` / `mise-versions.lock.json` | ci | Pinned tool versions (mise as the package manager). |
|
|
56
|
+
| **Misc + agents** | | |
|
|
57
|
+
| `AGENTS.md` | docs | Cross-harness AI agent context (the standard read by Codex/Cursor/etc.). |
|
|
58
|
+
| `.cursor/`, `.codex/`, `.windsurf/`, `.zed/`, `.roo/`, `.clinerules`, `.aider.conf.yml`, `.continuerc.json`, `.jules/`, `.gemini/` | agents | Per-harness AGENTS.md renderings. Generated by `dot agents render`. Each one points back at `CLAUDE.md` as canonical. |
|
|
59
|
+
| `CLAUDE.md` | docs | Project guidelines (the canonical source — `dot agents render` propagates it). |
|
|
60
|
+
| `CONTRIBUTING.md` | docs | Contributor guide (must stay at root for GitHub auto-discovery). |
|
|
61
|
+
| `docs/CONFIG_STRATEGY.md`, `docs/OPENCODE.md` | docs | Strategy + OpenCode-CLI guidance. Moved out of root for cleanliness in v0.2.503. |
|
|
62
|
+
| `README.md` / `CHANGELOG.md` / `LICENSE` | docs | Standard project files. |
|
|
63
|
+
| `Justfile.tmpl` / `Makefile` | dev | Task runners. |
|
|
64
|
+
| `dist/` | build | Build artefacts directory. |
|
|
65
|
+
| `coverage/`, `nightly-reports/` | build | CI output directories (gitignored). |
|
|
66
|
+
| `nix/` | build | Nix flake source. |
|
|
67
|
+
| `.well-known/` | misc | RFC-compliant `.well-known/` content (currently used for WKD GPG key publication). |
|
|
68
|
+
| `.version-sync-backup/` | misc | Backup directory used by `scripts/version-sync.sh` during release prep. |
|
|
69
|
+
|
|
70
|
+
## Chezmoi naming contract
|
|
71
|
+
|
|
72
|
+
| Prefix / suffix | Effect on deployment |
|
|
73
|
+
|---|---|
|
|
74
|
+
| `dot_foo` | Deploys as `.foo` (the `dot_` is consumed). |
|
|
75
|
+
| `executable_foo` | Adds `+x` permission. |
|
|
76
|
+
| `private_foo` | Sets `0600` permission. |
|
|
77
|
+
| `run_onchange_foo.sh` | Script re-executes when its hash changes. |
|
|
78
|
+
| `*.tmpl` | Processed as a Go template with chezmoi data before deployment. |
|
|
79
|
+
|
|
80
|
+
**Critical gotcha:** `executable_dot_foo` deploys as `.foo` (not
|
|
81
|
+
`dot_foo`). The `dot_` prefix is consumed by chezmoi after the
|
|
82
|
+
`executable_` prefix. Renaming a deployed file silently can leave
|
|
83
|
+
stale state in `~/.config/chezmoi/`.
|
|
84
|
+
|
|
85
|
+
## Where to make changes
|
|
86
|
+
|
|
87
|
+
| Goal | File(s) to edit |
|
|
88
|
+
|------|----------------|
|
|
89
|
+
| Add a new `dot <subcommand>` | `scripts/dot/commands/<subcommand>.sh` + dispatch in `bin/dot` + entry in `docs/manual/03-reference/01-dot-cli.md` + entry in `docs/manual/command-index.md`. |
|
|
90
|
+
| Change an alias | `.chezmoitemplates/aliases/<file>.aliases.sh` (sourced by `dot_zshrc.tmpl`, etc.). |
|
|
91
|
+
| Add a feature flag | `[features]` block in `.chezmoidata.toml` + doc entry in `docs/manual/03-reference/05-feature-flags.md`. |
|
|
92
|
+
| Add a new file deployed to `~/.X` | Create `dot_X` at root (or under a chezmoi-managed subtree). |
|
|
93
|
+
| Add a new chezmoi template | `dot_X.tmpl` at root, then use `{{ }}` for chezmoi data. |
|
|
94
|
+
| Add a CI workflow | `.github/workflows/<name>.yml`. |
|
|
95
|
+
| Add a test | `tests/unit/<domain>/test_<name>.sh` or `tests/integration/test_<name>.sh`. |
|
|
96
|
+
|
|
97
|
+
## See also
|
|
98
|
+
|
|
99
|
+
- `scripts/README.md` — map of the `scripts/` subtree.
|
|
100
|
+
- `CONTRIBUTING.md` — code-style + commit-message + signing requirements.
|
|
101
|
+
- `CLAUDE.md` — AI-assistant guidelines (the canonical source for `dot agents render`).
|
|
102
|
+
- `docs/operations/ROADMAP_V0_2_503.md` — current release scope, including the v0.2.503 reorganisation plan.
|
|
@@ -137,8 +137,8 @@ plugin system, bash bridge for aliases) await an actual user request.
|
|
|
137
137
|
|
|
138
138
|
## References
|
|
139
139
|
|
|
140
|
-
- [`dot_config/nushell/cached_eval.nu`](../../dot_config/nushell/cached_eval.nu) — the new module.
|
|
141
|
-
- [`dot_config/nushell/env.nu.tmpl`](../../dot_config/nushell/env.nu.tmpl) — adopter.
|
|
140
|
+
- [`dot_config/nushell/cached_eval.nu`](../../defaults/dot_config/nushell/cached_eval.nu) — the new module.
|
|
141
|
+
- [`dot_config/nushell/env.nu.tmpl`](../../defaults/dot_config/nushell/env.nu.tmpl) — adopter.
|
|
142
142
|
- ADR-007 (Multi-Shell Parity Strategy) — establishes the tier definitions.
|
|
143
143
|
- ADR-002 (Shell Performance Optimization Strategy) — establishes `_cached_eval` semantics this module ports.
|
|
144
144
|
- Issue [#880](https://github.com/sebastienrousseau/dotfiles/issues/880).
|