@sebastienrousseau/dotfiles 0.2.499 → 0.2.501
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +452 -0
- package/LICENSE +1283 -0
- package/README.md +322 -0
- package/docs/.vitepress/reports/localization-readability-audit.md +73 -0
- package/docs/AI.md +108 -0
- package/docs/CNAME +1 -0
- package/docs/COPYRIGHT +4 -3
- package/docs/NAMING_CONVENTIONS.md +102 -0
- package/docs/README.md +82 -0
- package/docs/_config.yml +59 -0
- package/docs/adr/ADR-001-ci-cd-pipeline.md +118 -0
- package/docs/adr/ADR-002-shell-performance.md +130 -0
- package/docs/adr/ADR-003-security-first.md +158 -0
- package/docs/adr/ADR-004-cli-architecture.md +171 -0
- package/docs/adr/ADR-005-chezmoi-choice.md +99 -0
- package/docs/adr/ADR-006-shell-selection.md +124 -0
- package/docs/adr/ADR-007-multi-shell-parity.md +62 -0
- package/docs/adr/ADR-008-alias-system-architecture.md +95 -0
- package/docs/adr/ADR-009-wallpaper-driven-theming.md +131 -0
- package/docs/adr/ADR-010-starship-transient-prompt.md +144 -0
- package/docs/adr/ADR-011-nushell-tier3-keep.md +144 -0
- package/docs/adr/README.md +39 -0
- package/docs/architecture/ARCHITECTURE.md +117 -0
- package/docs/architecture/INTEROP.md +44 -0
- package/docs/architecture/REPO_LAYOUT.md +241 -0
- package/docs/architecture/WALKTHROUGH.md +86 -0
- package/docs/architecture/fleet-deployment.md +77 -0
- package/docs/archive/EUXIS_2026_REVIEW.md +127 -0
- package/docs/archive/LEGACY_ROADMAP.md +160 -0
- package/docs/archive/MILESTONE_v0.2.493.md +47 -0
- package/docs/{PLAN.md → archive/PLAN.md} +50 -12
- package/docs/archive/REPO_AUDIT.md +31 -0
- package/docs/guides/INSTALL.md +144 -0
- package/docs/guides/NEOVIM_IDE_GUIDE.md +61 -0
- package/docs/guides/THEMING.md +230 -0
- package/docs/guides/TROUBLESHOOTING.md +176 -0
- package/docs/guides/WSL2_NIX_TROUBLESHOOTING.md +792 -0
- package/docs/index.md +43 -0
- package/docs/interop/A2A.md +39 -0
- package/docs/interop/POWERSHELL.md +102 -0
- package/docs/manual/00-introduction.md +89 -0
- package/docs/manual/01-concepts/01-architecture.md +138 -0
- package/docs/manual/01-concepts/02-trust-model.md +182 -0
- package/docs/manual/01-concepts/03-theme-engine.md +186 -0
- package/docs/manual/01-concepts/04-fleet.md +148 -0
- package/docs/manual/01-concepts/05-self-healing.md +204 -0
- package/docs/manual/02-tutorials/01-first-install.md +197 -0
- package/docs/manual/02-tutorials/02-add-wallpaper.md +216 -0
- package/docs/manual/02-tutorials/03-create-profile.md +244 -0
- package/docs/manual/02-tutorials/04-encrypt-secret.md +281 -0
- package/docs/manual/02-tutorials/05-deploy-fleet.md +283 -0
- package/docs/manual/03-reference/01-dot-cli.md +417 -0
- package/docs/manual/03-reference/02-config-files.md +265 -0
- package/docs/manual/03-reference/03-environment.md +124 -0
- package/docs/manual/03-reference/04-templates.md +190 -0
- package/docs/manual/03-reference/05-feature-flags.md +128 -0
- package/docs/manual/04-cookbook/01-recipes.md +285 -0
- package/docs/manual/04-cookbook/02-troubleshooting.md +351 -0
- package/docs/manual/04-cookbook/03-faq.md +175 -0
- package/docs/manual/05-appendices/A-platform-matrix.md +101 -0
- package/docs/manual/05-appendices/B-security-checklist.md +84 -0
- package/docs/manual/05-appendices/C-glossary.md +40 -0
- package/docs/manual/05-appendices/D-bibliography.md +58 -0
- package/docs/manual/05-appendices/E-license.md +38 -0
- package/docs/manual/_toc.yml +58 -0
- package/docs/manual/command-index.md +62 -0
- package/docs/manual/concept-index.md +168 -0
- package/docs/operations/ATTESTATION.md +44 -0
- package/docs/operations/CI_CADENCE.md +107 -0
- package/docs/operations/CI_COMPOSITES.md +156 -0
- package/docs/operations/COMPLETIONS.md +123 -0
- package/docs/operations/COVERAGE.md +148 -0
- package/docs/operations/DRIFT.md +107 -0
- package/docs/operations/MAINTENANCE.md +63 -0
- package/docs/operations/MIGRATION.md +109 -0
- package/docs/operations/OPERATIONS.md +188 -0
- package/docs/operations/PERFORMANCE.md +133 -0
- package/docs/operations/RELIABILITY.md +122 -0
- package/docs/{ROADMAP.md → operations/ROADMAP.md} +57 -39
- package/docs/operations/TESTING.md +199 -0
- package/docs/operations/TRACEABILITY.md +35 -0
- package/docs/operations/TRUSTED_AGENT_WORKSTATION.md +65 -0
- package/docs/operations/VERSION_SYNC.md +393 -0
- package/docs/reference/ALIASES.md +131 -0
- package/docs/reference/ALIASES_CHEATSHEET.md +32 -0
- package/docs/reference/ALIASES_DEPRECATIONS.md +13 -0
- package/docs/reference/FEATURES.md +66 -0
- package/docs/reference/FONTS.md +112 -0
- package/docs/reference/PROFILES.md +69 -0
- package/docs/reference/SCREENSHOTS.md +121 -0
- package/docs/reference/SCRIPTS.md +71 -0
- package/docs/reference/SUPPORT_MATRIX.md +80 -0
- package/docs/reference/THEMES.md +117 -0
- package/docs/reference/TOOLS.md +109 -0
- package/docs/reference/UTILS.md +155 -0
- package/docs/security/AI_ACT_COMPLIANCE.md +94 -0
- package/docs/security/AUDIT_BYPASS.md +103 -0
- package/docs/security/AUTOMATION_SECRETS.md +26 -0
- package/docs/security/CI_EGRESS_ALLOWLIST.md +127 -0
- package/docs/security/COMPLIANCE.md +458 -0
- package/docs/security/DEPS_DEV_EXCEPTIONS.md +86 -0
- package/docs/security/ENCRYPTION.md +57 -0
- package/docs/security/FMEA.md +159 -0
- package/docs/security/HISTORY_FILTERING.md +132 -0
- package/docs/security/INCIDENT_RESPONSE.md +579 -0
- package/docs/security/INSTALL_VERIFICATION.md +122 -0
- package/docs/security/KEYS.md +49 -0
- package/docs/security/KEY_ROTATION.md +223 -0
- package/docs/security/MCP_POLICY.md +78 -0
- package/docs/security/POLICY_RELEASES.md +37 -0
- package/docs/security/README.md +28 -0
- package/docs/security/SCORECARD.md +80 -0
- package/docs/security/SECRETS.md +158 -0
- package/docs/security/SECURITY.md +45 -0
- package/docs/security/SECURITY_CHECKLIST.md +55 -0
- package/docs/security/SHELL_EXEMPTIONS.md +145 -0
- package/docs/security/SOUP_REGISTER.md +36 -0
- package/docs/security/THREAT_MODEL.md +130 -0
- package/docs/security/VERIFICATION_VALIDATION.md +228 -0
- package/docs/themes/README.md +10 -0
- package/docs/themes/VISUAL_INTEGRITY_REPORT.md +30 -0
- package/docs/themes/hero-shot.svg +78 -0
- package/dot_config/.module-manifest.json +69 -0
- package/dot_config/ai/identity.md +23 -0
- package/dot_config/ai/patterns/architect.md +16 -0
- package/dot_config/ai/patterns/hardener.md +15 -0
- package/dot_config/ai/patterns/refactor.md +15 -0
- package/dot_config/aider/aider.conf.yml +32 -0
- package/dot_config/alacritty/alacritty.toml.tmpl +55 -0
- package/dot_config/ansible/ansible.cfg +11 -0
- package/dot_config/atuin/config.toml.tmpl +47 -0
- package/dot_config/bat/config +23 -0
- package/dot_config/brave-flags.conf.tmpl +7 -0
- package/dot_config/btop/btop.conf +16 -0
- package/dot_config/btop/themes/tokyonight.theme +34 -0
- package/dot_config/bun/bunfig.toml.tmpl +33 -0
- package/dot_config/claude/mcp_servers.json +20 -0
- package/dot_config/containers/containers.conf +14 -0
- package/dot_config/curl/dot_curlrc +18 -0
- package/dot_config/dlv/config.yml +39 -0
- package/dot_config/docker/config.json +15 -0
- package/dot_config/dotfiles/agent-card.json +29 -0
- package/dot_config/dotfiles/agent-profiles.json +92 -0
- package/dot_config/dotfiles/boot/README.md +13 -0
- package/dot_config/dotfiles/grub/README.md +13 -0
- package/dot_config/dotfiles/lock/README.md +13 -0
- package/dot_config/dotfiles/mcp-lock.json +33 -0
- package/dot_config/dotfiles/mcp-policy.json +52 -0
- package/dot_config/dotfiles/mcp-registry.json +47 -0
- package/dot_config/dotfiles/model-registry.json +20 -0
- package/dot_config/dotfiles/policy-bundles.json +38 -0
- package/dot_config/dotfiles/prompt-registry.json +16 -0
- package/dot_config/dotfiles/versions.env +18 -0
- package/dot_config/duf/duf.conf +6 -0
- package/dot_config/duti/defaults.duti +5 -0
- package/dot_config/emoji/emoji.txt +34 -0
- package/dot_config/environment.d/50-ssh-agent.conf +2 -0
- package/dot_config/environment.d/90-wayland.conf +19 -0
- package/dot_config/fastfetch/config.jsonc +28 -0
- package/dot_config/firefox/user.js.tmpl +58 -0
- package/dot_config/fish/completions/dot-theme-sync.fish.tmpl +9 -0
- package/dot_config/fish/completions/dot.fish.tmpl +115 -0
- package/dot_config/fish/conf.d/000-perf-cache.fish +56 -0
- package/dot_config/fish/conf.d/aliases.fish.tmpl +77 -0
- package/dot_config/fish/conf.d/env.fish.tmpl +48 -0
- package/dot_config/fish/conf.d/functions.fish.tmpl +22 -0
- package/dot_config/fish/conf.d/init.fish.tmpl +172 -0
- package/dot_config/fish/config.fish.tmpl +44 -0
- package/dot_config/fish/fish_plugins +1 -0
- package/dot_config/fish/functions/_.fish +3 -0
- package/dot_config/fish/functions/_cached_eval.fish +131 -0
- package/dot_config/fish/functions/_cached_eval_clear.fish +17 -0
- package/dot_config/fish/functions/als.fish +46 -0
- package/dot_config/fish/functions/bg-upgrade.fish +7 -0
- package/dot_config/fish/functions/c.fish +3 -0
- package/dot_config/fish/functions/cat.fish +9 -0
- package/dot_config/fish/functions/d.fish +7 -0
- package/dot_config/fish/functions/dot.fish +34 -0
- package/dot_config/fish/functions/h.fish +3 -0
- package/dot_config/fish/functions/l.fish +7 -0
- package/dot_config/fish/functions/la.fish +7 -0
- package/dot_config/fish/functions/ll.fish +7 -0
- package/dot_config/fish/functions/log_error.fish +13 -0
- package/dot_config/fish/functions/log_info.fish +13 -0
- package/dot_config/fish/functions/lr.fish +7 -0
- package/dot_config/fish/functions/lra.fish +7 -0
- package/dot_config/fish/functions/ls.fish +7 -0
- package/dot_config/fish/functions/lt.fish +7 -0
- package/dot_config/fish/functions/lta.fish +7 -0
- package/dot_config/fish/functions/notify-run.fish +11 -0
- package/dot_config/fish/functions/q.fish +3 -0
- package/dot_config/fish/functions/silent-run.fish +7 -0
- package/dot_config/fish/functions/yy.fish +8 -0
- package/dot_config/flatpak/flatpak.list +4 -0
- package/dot_config/fontconfig/fonts.conf.tmpl +57 -0
- package/dot_config/foot/foot.ini.tmpl +33 -0
- package/dot_config/fuzzel/fuzzel.ini.tmpl +18 -0
- package/dot_config/fzf/fzf.zsh +48 -0
- package/dot_config/gem/gemrc +9 -0
- package/dot_config/gh/config.yml +12 -0
- package/dot_config/ghostty/config.tmpl +165 -0
- package/dot_config/git/allowed_signers.tmpl +18 -0
- package/dot_config/git/attributes +12 -0
- package/dot_config/git/commit-template +10 -0
- package/dot_config/git/hooks/executable_commit-msg +146 -0
- package/dot_config/git/ignore +27 -0
- package/dot_config/gnupg/gpg-agent.conf +11 -0
- package/dot_config/go/golangci.yml +118 -0
- package/dot_config/go/gopls.json +30 -0
- package/dot_config/goose/config.yaml +29 -0
- package/dot_config/gtk-3.0/gtk.css.tmpl +184 -0
- package/dot_config/gtk-3.0/settings.ini.tmpl +27 -0
- package/dot_config/gtk-4.0/gtk.css.tmpl +252 -0
- package/dot_config/gtk-4.0/settings.ini.tmpl +18 -0
- package/dot_config/htop/htoprc +20 -0
- package/dot_config/inputrc +2 -0
- package/dot_config/ipython/profile_default/ipython_config.py +19 -0
- package/dot_config/just/justfile +122 -0
- package/dot_config/k9s/config.yaml +65 -0
- package/dot_config/k9s/skins/catppuccin-mocha.yaml +116 -0
- package/dot_config/kanshi/config.tmpl +22 -0
- package/dot_config/karabiner/karabiner.json +14 -0
- package/dot_config/kitty/kitty.conf.tmpl +53 -0
- package/dot_config/lazydocker/config.yml +186 -0
- package/dot_config/lazygit/config.yml +35 -0
- package/dot_config/mako/config +47 -0
- package/dot_config/mas/masapps.txt +5 -0
- package/dot_config/micro/settings.json +3 -0
- package/dot_config/mimeapps.list +77 -0
- package/dot_config/minikube/config.json +13 -0
- package/dot_config/mise/config.toml +99 -0
- package/dot_config/mongosh/mongoshrc.js +68 -0
- package/dot_config/mpv/input.conf +47 -0
- package/dot_config/mpv/mpv.conf +47 -0
- package/dot_config/mycli/myclirc +67 -0
- package/dot_config/nano/nanorc +28 -0
- package/dot_config/ncdu/config +12 -0
- package/dot_config/niri/config.kdl.tmpl +327 -0
- package/dot_config/nushell/aliases.nu +18 -0
- package/dot_config/nushell/cached_eval.nu +80 -0
- package/dot_config/nushell/completions.nu.tmpl +52 -0
- package/dot_config/nushell/config.nu.tmpl +86 -0
- package/dot_config/nushell/env.nu.tmpl +102 -0
- package/dot_config/nushell/functions.nu.tmpl +17 -0
- package/dot_config/nvim/init.lua +18 -0
- package/dot_config/nvim/lazy-lock.json +58 -0
- package/dot_config/nvim/lua/config/autocmds.lua +107 -0
- package/dot_config/nvim/lua/config/keymaps.lua +92 -0
- package/dot_config/nvim/lua/config/lazy.lua +44 -0
- package/dot_config/nvim/lua/config/options.lua +49 -0
- package/dot_config/nvim/lua/plugins/ai.lua +75 -0
- package/dot_config/nvim/lua/plugins/coding.lua +216 -0
- package/dot_config/nvim/lua/plugins/completion.lua +60 -0
- package/dot_config/nvim/lua/plugins/dap.lua +412 -0
- package/dot_config/nvim/lua/plugins/editor.lua +55 -0
- package/dot_config/nvim/lua/plugins/git.lua +10 -0
- package/dot_config/nvim/lua/plugins/lsp.lua +156 -0
- package/dot_config/nvim/lua/plugins/markdown.lua +18 -0
- package/dot_config/nvim/lua/plugins/rust.lua +34 -0
- package/dot_config/nvim/lua/plugins/sessions.lua +33 -0
- package/dot_config/nvim/lua/plugins/ui.lua +509 -0
- package/dot_config/paru/paru.conf +10 -0
- package/dot_config/pip/pip.conf.tmpl +32 -0
- package/dot_config/powershell/Microsoft.PowerShell_profile.ps1.tmpl +81 -0
- package/dot_config/pueue/pueue.yml +34 -0
- package/dot_config/pypoetry/config.toml +6 -0
- package/dot_config/pyrightconfig.json +5 -0
- package/dot_config/raycast/README.md +13 -0
- package/dot_config/redis/redisclirc +41 -0
- package/dot_config/ripgrep/ripgreprc +21 -0
- package/dot_config/shell/00-core-paths.sh.tmpl +134 -0
- package/dot_config/shell/05-core-safety.sh +48 -0
- package/dot_config/shell/10-secrets.sh +41 -0
- package/dot_config/shell/40-fzf-defaults.sh.tmpl +17 -0
- package/dot_config/shell/40-ls-colors.sh +49 -0
- package/dot_config/shell/50-logic-functions-core.sh.tmpl +11 -0
- package/dot_config/shell/50-logic-functions.sh.tmpl +11 -0
- package/dot_config/shell/51-logic-functions-extra.sh.tmpl +65 -0
- package/dot_config/shell/90-ux-aliases.sh.tmpl +121 -0
- package/dot_config/shell/91-ux-aliases-lazy.sh.tmpl +55 -0
- package/dot_config/shell/Brewfile +207 -0
- package/dot_config/shell/Brewfile.cask +92 -0
- package/dot_config/shell/Brewfile.cli +127 -0
- package/dot_config/shell/README.md +284 -0
- package/dot_config/shell/als_data.txt.tmpl +65 -0
- package/dot_config/shell/custom/auto_ls.zsh +20 -0
- package/dot_config/shell/custom/context_suggest.zsh +68 -0
- package/dot_config/shell/custom/error_analysis.zsh +45 -0
- package/dot_config/sops/dot_sops.yaml +23 -0
- package/dot_config/starship.toml.tmpl +202 -0
- package/dot_config/swaylock/config +43 -0
- package/dot_config/systemd/user/dotfiles-maintenance.service +8 -0
- package/dot_config/systemd/user/dotfiles-maintenance.timer +11 -0
- package/dot_config/systemd/user/pueued.service +12 -0
- package/dot_config/systemd/user/ssh-agent.service +12 -0
- package/dot_config/task/Taskfile.yml +86 -0
- package/dot_config/tflint/tflint.hcl +9 -0
- package/dot_config/tmux/tmux.conf.tmpl +223 -0
- package/dot_config/topgrade.toml.tmpl +54 -0
- package/dot_config/user-dirs.dirs +10 -0
- package/dot_config/vscode/extensions.txt +11 -0
- package/dot_config/vscode/settings.json.tmpl +82 -0
- package/dot_config/waybar/config.jsonc.tmpl +90 -0
- package/dot_config/waybar/style.css.tmpl +211 -0
- package/dot_config/wezterm/wezterm.lua.tmpl +64 -0
- package/dot_config/wget/wgetrc +12 -0
- package/dot_config/xdg-desktop-portal/niri-portals.conf +5 -0
- package/dot_config/yarn/yarnrc.yml +36 -0
- package/dot_config/yazi/keymap.toml +67 -0
- package/dot_config/yazi/theme.toml +102 -0
- package/dot_config/yazi/yazi.toml +40 -0
- package/dot_config/zathura/zathurarc +52 -0
- package/dot_config/zellij/config.kdl.tmpl +79 -0
- package/dot_config/zsh/dot_zprofile +7 -0
- package/dot_config/zsh/dot_zshenv +5 -0
- package/dot_config/zsh/dot_zshrc.tmpl +635 -0
- package/dot_config/zsh/rc.d/00-alias-shims.zsh +99 -0
- package/dot_config/zsh/rc.d/05-ssh-agent.zsh +18 -0
- package/dot_config/zsh/rc.d/10-env.zsh.tmpl +28 -0
- package/dot_config/zsh/rc.d/20-zinit.zsh +65 -0
- package/dot_config/zsh/rc.d/30-options.zsh.tmpl +214 -0
- package/dot_config/zsh/rc.d/40-bell.zsh +20 -0
- package/dot_config/zsh/rc.d/50-login-fortune.zsh +9 -0
- package/dot_config/zsh/rc.d/99-alias-wrapper.zsh +32 -0
- package/dot_local/bin/executable_ai-update +195 -0
- package/dot_local/bin/executable_ai_core +152 -0
- package/dot_local/bin/executable_antigravity +11 -0
- package/dot_local/bin/executable_b64 +84 -0
- package/dot_local/bin/executable_bm +79 -0
- package/dot_local/bin/executable_cb +39 -0
- package/dot_local/bin/executable_dot +596 -0
- package/dot_local/bin/executable_dot-ai +36 -0
- package/dot_local/bin/executable_dot-bootstrap +77 -0
- package/dot_local/bin/executable_dot-launch-or-focus +52 -0
- package/dot_local/bin/executable_dot-load-benchmark +31 -0
- package/dot_local/bin/executable_dot-load-benchmark-pty +77 -0
- package/dot_local/bin/executable_dot-theme-sync +952 -0
- package/dot_local/bin/executable_dot_completion +57 -0
- package/dot_local/bin/executable_dtags +28 -0
- package/dot_local/bin/executable_epoch +67 -0
- package/dot_local/bin/executable_extract +41 -0
- package/dot_local/bin/executable_gbd +52 -0
- package/dot_local/bin/executable_gd +42 -0
- package/dot_local/bin/executable_git-ai-commit +175 -0
- package/dot_local/bin/executable_git-ai-diff +169 -0
- package/dot_local/bin/executable_gl +101 -0
- package/dot_local/bin/executable_hash +161 -0
- package/dot_local/bin/executable_hashsum +160 -0
- package/dot_local/bin/executable_hex +115 -0
- package/dot_local/bin/executable_jsonv +78 -0
- package/dot_local/bin/executable_jwt +94 -0
- package/dot_local/bin/executable_kill-port +75 -0
- package/dot_local/bin/executable_lorem +118 -0
- package/dot_local/bin/executable_mkscript +35 -0
- package/dot_local/bin/executable_monitor +56 -0
- package/dot_local/bin/executable_myip +51 -0
- package/dot_local/bin/executable_notify +24 -0
- package/dot_local/bin/executable_open +38 -0
- package/dot_local/bin/executable_pw +27 -0
- package/dot_local/bin/executable_rec-start +46 -0
- package/dot_local/bin/executable_rec-stop +35 -0
- package/dot_local/bin/executable_regex +132 -0
- package/dot_local/bin/executable_start-niri +8 -0
- package/dot_local/bin/executable_tmux-sessionizer +314 -0
- package/dot_local/bin/executable_tour +177 -0
- package/dot_local/bin/executable_up +23 -0
- package/dot_local/bin/executable_update +142 -0
- package/dot_local/bin/executable_uuid +87 -0
- package/dot_local/bin/executable_win +32 -0
- package/dot_local/bin/executable_yamlv +57 -0
- package/dot_local/share/bash-completion/completions/dot +72 -0
- package/dot_local/share/icons/hicolor/128x128/apps/rousseau.png +0 -0
- package/dot_local/share/icons/hicolor/16x16/apps/rousseau.png +0 -0
- package/dot_local/share/icons/hicolor/24x24/apps/rousseau.png +0 -0
- package/dot_local/share/icons/hicolor/256x256/apps/rousseau.png +0 -0
- package/dot_local/share/icons/hicolor/32x32/apps/rousseau.png +0 -0
- package/dot_local/share/icons/hicolor/48x48/apps/rousseau.png +0 -0
- package/dot_local/share/icons/hicolor/512x512/apps/rousseau.png +0 -0
- package/dot_local/share/icons/hicolor/64x64/apps/rousseau.png +0 -0
- package/dot_local/share/icons/hicolor/96x96/apps/rousseau.png +0 -0
- package/dot_local/share/icons/hicolor/scalable/apps/rousseau.png +0 -0
- package/dot_local/share/man/man1/dot.1 +149 -0
- package/dot_local/share/mise/plugins/kiro-cli/bin/executable_download +64 -0
- package/dot_local/share/mise/plugins/kiro-cli/bin/executable_install +18 -0
- package/dot_local/share/mise/plugins/kiro-cli/bin/executable_list-all +13 -0
- package/dot_local/share/wayland-sessions/niri.desktop.tmpl +6 -0
- package/dot_local/share/zsh/completions/.keep +0 -0
- package/dot_local/share/zsh/completions/_dot +283 -0
- package/install.sh +350 -0
- package/package.json +1 -1
- package/scripts/ci/check-copyright-headers.sh +96 -0
- package/scripts/ci/check-dangerous-chmod.sh +19 -0
- package/scripts/ci/check-deps-dev.sh +236 -0
- package/scripts/ci/check-insecure-tls.sh +61 -0
- package/scripts/ci/check-regression-traceability.sh +67 -0
- package/scripts/ci/check-shell-preamble.sh +106 -0
- package/scripts/ci/guard-gitleaks-checkout.sh +57 -0
- package/scripts/ci/install-chezmoi-verified.sh +64 -0
- package/scripts/ci/run-coverage.sh +362 -0
- package/scripts/ci/validate-chezmoidata.sh +25 -0
- package/scripts/ci/validate-ci-config.sh +224 -0
- package/scripts/demo/record.sh +42 -0
- package/scripts/diagnostics/a2a-conformance.sh +162 -0
- package/scripts/diagnostics/alias-governance.sh +137 -0
- package/scripts/diagnostics/aliases-cheatsheet.sh +73 -0
- package/scripts/diagnostics/aliases-manifest.sh +31 -0
- package/scripts/diagnostics/benchmark.sh +381 -0
- package/scripts/diagnostics/conflicts.sh +72 -0
- package/scripts/diagnostics/doctor-unified.sh +38 -0
- package/scripts/diagnostics/doctor.sh +709 -0
- package/scripts/diagnostics/drift-dashboard.sh +201 -0
- package/scripts/diagnostics/health.sh +614 -0
- package/scripts/diagnostics/history-analysis.sh +85 -0
- package/scripts/diagnostics/mcp-doctor.sh +575 -0
- package/scripts/diagnostics/perf.sh +452 -0
- package/scripts/diagnostics/scorecard.sh +118 -0
- package/scripts/diagnostics/secret-governance.sh +58 -0
- package/scripts/diagnostics/security-score.sh +438 -0
- package/scripts/diagnostics/smoke-test.sh +87 -0
- package/scripts/diagnostics/snapshot.sh +89 -0
- package/scripts/diagnostics/verify.sh +107 -0
- package/scripts/{verify_state.sh → diagnostics/verify_state.sh} +22 -22
- package/scripts/diagnostics/version-locks.sh +79 -0
- package/scripts/diagnostics/workstation-attestation.sh +186 -0
- package/scripts/docs/build-manual.sh +883 -0
- package/scripts/docs/check-manual.sh +213 -0
- package/scripts/dot/commands/agent.sh +474 -0
- package/scripts/dot/commands/ai.sh +481 -0
- package/scripts/dot/commands/aliases.sh +250 -0
- package/scripts/dot/commands/appearance.sh +80 -0
- package/scripts/dot/commands/core.sh +185 -0
- package/scripts/dot/commands/diagnostics.sh +229 -0
- package/scripts/dot/commands/fleet.sh +399 -0
- package/scripts/dot/commands/lint.sh +177 -0
- package/scripts/dot/commands/manual.sh +168 -0
- package/scripts/dot/commands/meta.sh +248 -0
- package/scripts/dot/commands/patterns.sh +54 -0
- package/scripts/dot/commands/restore.sh +231 -0
- package/scripts/dot/commands/secrets.sh +223 -0
- package/scripts/dot/commands/security.sh +76 -0
- package/scripts/dot/commands/tools.sh +469 -0
- package/scripts/dot/data/alias-deprecations.tsv +2 -0
- package/scripts/dot/lib/bento.sh +50 -0
- package/scripts/dot/lib/log.sh +200 -0
- package/scripts/dot/lib/platform.sh +99 -0
- package/scripts/dot/lib/ui.sh +518 -0
- package/scripts/dot/lib/utils.sh +377 -0
- package/scripts/fonts/install-nerd-fonts.sh +68 -0
- package/scripts/fonts/patch-fonts.sh +35 -0
- package/scripts/git-hooks/install.sh +11 -0
- package/scripts/git-hooks/pre-commit +12 -0
- package/scripts/git-hooks/pre-commit-audit.sh +145 -0
- package/scripts/git-hooks/pre-push +92 -0
- package/scripts/git-hooks/prepare-commit-msg +29 -0
- package/scripts/lib/secrets_provider.sh +158 -0
- package/scripts/maintenance/check-updates.sh +131 -0
- package/scripts/ops/ai-setup.sh +55 -0
- package/scripts/ops/bundle.sh +77 -0
- package/scripts/ops/chaos.sh +49 -0
- package/scripts/ops/chezmoi-apply.sh +270 -0
- package/scripts/ops/chezmoi-diff.sh +15 -0
- package/scripts/ops/chezmoi-remove.sh +45 -0
- package/scripts/ops/chezmoi-update.sh +48 -0
- package/scripts/ops/heal-chezmoi.sh +86 -0
- package/scripts/ops/heal-system.sh +128 -0
- package/scripts/ops/heal-tools.sh +340 -0
- package/scripts/ops/heal.sh +222 -0
- package/scripts/ops/post-apply-repair.sh +106 -0
- package/scripts/ops/prewarm.sh +127 -0
- package/scripts/ops/release.sh +252 -0
- package/scripts/ops/rollback.sh +589 -0
- package/scripts/ops/setup.sh +137 -0
- package/scripts/ops/teleport.sh +33 -0
- package/scripts/qa/coverage-baseline.sh +60 -0
- package/scripts/qa/docs-coverage.sh +111 -0
- package/scripts/qa/powershell-contract.ps1 +95 -0
- package/scripts/qa/reliability-audit.sh +138 -0
- package/scripts/qa/traceability-coverage.sh +116 -0
- package/scripts/qa/validate-examples.sh +26 -0
- package/scripts/qa/wsl-contract.sh +11 -0
- package/scripts/release/package-policy-bundles.sh +125 -0
- package/scripts/secrets/age-init.sh +70 -0
- package/scripts/secrets/create-secrets-file.sh +45 -0
- package/scripts/secrets/encrypt-ssh-key.sh +43 -0
- package/scripts/security/backup.sh +57 -0
- package/scripts/security/dns-doh.sh +51 -0
- package/scripts/security/encryption-check.sh +54 -0
- package/scripts/security/enforce-policies.sh +334 -0
- package/scripts/security/firewall.sh +90 -0
- package/scripts/security/lock-configs.sh +57 -0
- package/scripts/security/lock-screen.sh +55 -0
- package/scripts/security/manage-secrets.sh +428 -0
- package/scripts/security/ssh-cert.sh +203 -0
- package/scripts/security/telemetry-kill.sh +50 -0
- package/scripts/security/usb-safety.sh +51 -0
- package/scripts/theme/apply-gnome-theme.sh +328 -0
- package/scripts/theme/extract-theme.py +677 -0
- package/scripts/theme/install-boot-logo.sh +62 -0
- package/scripts/theme/install-catppuccin-themes.sh +370 -0
- package/scripts/theme/install-cursors.sh +25 -0
- package/scripts/theme/install-file-icons.sh +26 -0
- package/scripts/theme/install-grub-theme.sh +61 -0
- package/scripts/theme/install-lock-icon.sh +30 -0
- package/scripts/theme/merge-wallpaper.sh +145 -0
- package/scripts/theme/rebuild-themes.sh +309 -0
- package/scripts/theme/switch.sh +431 -0
- package/scripts/theme/wallpaper-rotate.sh +136 -0
- package/scripts/theme/wallpaper-sync.sh +397 -0
- package/scripts/tools/cmatrix.sh +21 -0
- package/scripts/{detect-collisions.py → tools/detect-collisions.py} +2 -2
- package/scripts/tools/emoji-picker.sh +48 -0
- package/scripts/tools/figlet-banner.sh +18 -0
- package/scripts/tools/log-rotate.sh +30 -0
- package/scripts/tools/lolcat-wrap.sh +19 -0
- package/scripts/tools/pipes.sh +48 -0
- package/scripts/tuning/linux.sh +185 -0
- package/scripts/tuning/macos.sh +55 -0
- package/scripts/uninstall.sh +85 -0
- package/scripts/version-sync.sh +487 -0
- package/templates/chezmoi-data/geekom-a9.toml.example +21 -0
- package/templates/chezmoi-data/mac-m1.toml.example +16 -0
- package/templates/chezmoi-data/mac-t2-linux.toml.example +21 -0
- package/templates/chezmoi-data/surface-pro-7p.toml.example +21 -0
- package/templates/projects/go/.github/workflows/ci.yml +31 -0
- package/templates/projects/go/README.md +4 -0
- package/templates/projects/go/cmd/__PROJECT_NAME__/main.go +1 -0
- package/templates/projects/go/go.sum +0 -0
- package/templates/projects/molecule/README.md +7 -0
- package/templates/projects/molecule/converge.yml +7 -0
- package/templates/projects/molecule/molecule.yml +16 -0
- package/templates/projects/node/.github/workflows/ci.yml +30 -0
- package/templates/projects/node/README.md +4 -0
- package/templates/projects/node/package-lock.json +12 -0
- package/templates/projects/node/src/index.js +1 -0
- package/templates/projects/packer/README.md +15 -0
- package/templates/projects/packer/main.pkr.hcl +15 -0
- package/templates/projects/python/.github/workflows/ci.yml +34 -0
- package/templates/projects/python/README.md +4 -0
- package/templates/projects/python/pyproject.toml +15 -0
- package/templates/projects/python/src/__PROJECT_NAME__/__init__.py +1 -0
- package/templates/projects/python/tests/test_basic.py +1 -0
- package/docs/ARCHITECTURE.md +0 -62
- package/docs/COMPLIANCE.md +0 -47
- package/docs/OPERATIONS.md +0 -103
- package/docs/PR_DESCRIPTION.md +0 -150
- package/docs/ROADMAP_legacy.md +0 -556
- package/docs/SECURITY_CHECKLIST.md +0 -25
- package/docs/TASK.md +0 -99
- package/docs/WALKTHROUGH.md +0 -46
- package/scripts/backup.sh +0 -142
- package/scripts/banner.sh +0 -20
- package/scripts/benchmark.sh +0 -20
- package/scripts/build.sh +0 -41
- package/scripts/clean.sh +0 -31
- package/scripts/compile.sh +0 -54
- package/scripts/copy.sh +0 -108
- package/scripts/doctor.sh +0 -79
- package/scripts/dotfiles.sh +0 -63
- package/scripts/download.sh +0 -35
- package/scripts/help.sh +0 -57
- package/scripts/lock-configs.sh +0 -57
- package/scripts/package.sh +0 -46
- package/scripts/ssh.sh +0 -55
- package/scripts/teleport.sh +0 -23
- package/scripts/test-aliases.sh +0 -25
- package/scripts/test_smoke.sh +0 -88
- package/scripts/unpack.sh +0 -28
|
@@ -0,0 +1,458 @@
|
|
|
1
|
+
---
|
|
2
|
+
render_with_liquid: false
|
|
3
|
+
---
|
|
4
|
+
|
|
5
|
+
# Compliance Architecture
|
|
6
|
+
|
|
7
|
+
This document describes the compliance, security, and cross-platform compatibility controls implemented in this repository, mapped to standard regulatory frameworks (SOC 2, ISO 27001, GDPR).
|
|
8
|
+
|
|
9
|
+
## Overview
|
|
10
|
+
|
|
11
|
+
| Framework | Status | Description |
|
|
12
|
+
|-----------|--------|-------------|
|
|
13
|
+
| SOC 2 Type II | Aligned | Security, availability, and confidentiality |
|
|
14
|
+
| ISO 27001 | Aligned | Information security management controls |
|
|
15
|
+
| GDPR/HIPAA | Aligned | Privacy and data protection |
|
|
16
|
+
| ISO 13485 | Aligned | Risk management (FMEA), verification & validation |
|
|
17
|
+
| ALCOA | Implemented | Audit trail integrity |
|
|
18
|
+
| EU AI Act | Exempt | Minimal risk, open-source exemption (Article 2(12)) |
|
|
19
|
+
|
|
20
|
+
---
|
|
21
|
+
|
|
22
|
+
## EU AI Act (Regulation (EU) 2024/1689)
|
|
23
|
+
|
|
24
|
+
| Requirement | Status | Implementation |
|
|
25
|
+
|-------------|--------|----------------|
|
|
26
|
+
| **Risk classification** | Minimal risk | No high-risk use cases (Annex III) |
|
|
27
|
+
| **Open-source exemption** | Applicable | MIT license, no model weights distributed (Article 2(12)) |
|
|
28
|
+
| **Prohibited practices** | Confirmed none | No subliminal, exploitative, or social scoring use (Article 5) |
|
|
29
|
+
| **Transparency** | Voluntary | Agent session logging, model registry, attestation |
|
|
30
|
+
| **GPAI provisions** | Not applicable | Consumer of AI APIs, not a provider |
|
|
31
|
+
|
|
32
|
+
See [AI_ACT_COMPLIANCE.md](AI_ACT_COMPLIANCE.md) for full assessment.
|
|
33
|
+
|
|
34
|
+
---
|
|
35
|
+
|
|
36
|
+
## Regulatory Mapping
|
|
37
|
+
|
|
38
|
+
### SOC 2 Type II
|
|
39
|
+
|
|
40
|
+
| Control | Description | Implementation |
|
|
41
|
+
|---------|-------------|----------------|
|
|
42
|
+
| **CC6.1** | Logical Access Security | `zsh` restricted permissions, SSH key management via `1Password`/Agents |
|
|
43
|
+
| **CC6.8** | Unauthorized Code Protection | GPG/SSH signed commits, `slsa-framework` workflow |
|
|
44
|
+
| **CC7.1** | System Operations | `compliance-guard.yml` blocks insecure patterns |
|
|
45
|
+
| **CC7.2** | Change Detection | Pre-commit hooks detect security violations |
|
|
46
|
+
| **CC8.1** | Change Management | Git-based IaC, PR templates, CODEOWNERS |
|
|
47
|
+
| **A1.2** | Audit Logs | `~/.local/share/dotfiles.log` tracks operations |
|
|
48
|
+
|
|
49
|
+
### ISO 27001
|
|
50
|
+
|
|
51
|
+
| Control | Description | Implementation |
|
|
52
|
+
|---------|-------------|----------------|
|
|
53
|
+
| **A.9.1.1** | Access Control Policy | Principle of Least Privilege (umask 022/077) |
|
|
54
|
+
| **A.9.4.1** | Information Access Restriction | `chmod 777/666` blocked by CI |
|
|
55
|
+
| **A.12.1.2** | Change Management | Git version control with CI/CD verification |
|
|
56
|
+
| **A.12.6.1** | Technical Vulnerability Management | Gitleaks, TruffleHog secrets scanning |
|
|
57
|
+
| **A.13.1.1** | Network Controls | TLS enforcement (no `curl -k`) |
|
|
58
|
+
| **A.14.2.5** | Secure Engineering | ShellCheck, cross-platform testing |
|
|
59
|
+
| **A.14.2.8** | System Security Testing | Module coverage gate (>=95%, currently 100%), weekly scans |
|
|
60
|
+
|
|
61
|
+
### GDPR / HIPAA (Privacy)
|
|
62
|
+
|
|
63
|
+
| Requirement | Description | Implementation |
|
|
64
|
+
|-------------|-------------|----------------|
|
|
65
|
+
| **Data Minimization** | Limit data collection | `privacy-mode` disables CLI telemetry |
|
|
66
|
+
| **Integrity** | Protect against tampering | `lock-configs` prevents modification |
|
|
67
|
+
| **Encryption** | Protect data at rest | Age encryption for sensitive dotfiles |
|
|
68
|
+
|
|
69
|
+
---
|
|
70
|
+
|
|
71
|
+
## Security Controls
|
|
72
|
+
|
|
73
|
+
### TLS Enforcement
|
|
74
|
+
|
|
75
|
+
All network operations require valid TLS certificates:
|
|
76
|
+
|
|
77
|
+
| Control | Pattern Blocked | Enforcement |
|
|
78
|
+
|---------|-----------------|-------------|
|
|
79
|
+
| Insecure curl | `curl -k`, `--insecure` | Pre-commit + CI |
|
|
80
|
+
| Certificate bypass | `wget --no-check-certificate` | Pre-commit + CI |
|
|
81
|
+
| Plaintext HTTP | `http://` URLs | CI warning |
|
|
82
|
+
|
|
83
|
+
**Files:**
|
|
84
|
+
|
|
85
|
+
- Pre-commit: `config/pre-commit-config.yaml`
|
|
86
|
+
- CI: `.github/workflows/compliance-guard.yml`
|
|
87
|
+
|
|
88
|
+
### Secrets Management
|
|
89
|
+
|
|
90
|
+
| Tool | Purpose | Configuration |
|
|
91
|
+
|------|---------|---------------|
|
|
92
|
+
| Gitleaks | Prevent secrets in commits | `config/gitleaks.toml` |
|
|
93
|
+
| TruffleHog | Deep secrets scanning | CI workflow |
|
|
94
|
+
| detect-secrets | Baseline secrets detection | `.secrets.baseline` |
|
|
95
|
+
| Age | Encrypt sensitive dotfiles | Chezmoi integration |
|
|
96
|
+
|
|
97
|
+
### Permission Controls
|
|
98
|
+
|
|
99
|
+
| Control | Implementation |
|
|
100
|
+
|---------|----------------|
|
|
101
|
+
| Least privilege CI | `permissions: contents: read` default |
|
|
102
|
+
| No world-writable | `chmod 777/666` blocked by CI |
|
|
103
|
+
| CODEOWNERS | All paths mapped to reviewers |
|
|
104
|
+
| Signed commits | GPG signing enforced |
|
|
105
|
+
|
|
106
|
+
### Dangerous Pattern Blocking
|
|
107
|
+
|
|
108
|
+
Patterns automatically blocked by CI and pre-commit hooks:
|
|
109
|
+
|
|
110
|
+
```bash
|
|
111
|
+
# Blocked - insecure TLS
|
|
112
|
+
curl -k https://...
|
|
113
|
+
wget --no-check-certificate https://...
|
|
114
|
+
|
|
115
|
+
# Blocked - world-writable permissions
|
|
116
|
+
chmod 777 /path
|
|
117
|
+
chmod -R 666 /files
|
|
118
|
+
|
|
119
|
+
# Blocked - hardcoded credentials
|
|
120
|
+
password="literal_value"
|
|
121
|
+
```
|
|
122
|
+
|
|
123
|
+
---
|
|
124
|
+
|
|
125
|
+
## Cross-Platform Compatibility
|
|
126
|
+
|
|
127
|
+
### Supported Platforms
|
|
128
|
+
|
|
129
|
+
| Platform | Tools | Default Shell | Bash Version |
|
|
130
|
+
|----------|-------|---------------|--------------|
|
|
131
|
+
| Linux | GNU | Bash | 5.x |
|
|
132
|
+
| macOS | BSD | Zsh | 3.2 (system) |
|
|
133
|
+
| WSL | GNU | Bash | 5.x |
|
|
134
|
+
|
|
135
|
+
### Line Ending Normalization
|
|
136
|
+
|
|
137
|
+
Configured in `.gitattributes`:
|
|
138
|
+
|
|
139
|
+
| Pattern | Line Ending | Reason |
|
|
140
|
+
|---------|-------------|--------|
|
|
141
|
+
| `*.sh` | LF | Unix scripts |
|
|
142
|
+
| `*.bash` | LF | Unix scripts |
|
|
143
|
+
| `*.zsh` | LF | Unix scripts |
|
|
144
|
+
| `*.bat` | CRLF | Windows batch |
|
|
145
|
+
| `*.ps1` | CRLF | PowerShell |
|
|
146
|
+
|
|
147
|
+
### BSD vs GNU Compatibility
|
|
148
|
+
|
|
149
|
+
The `cross-platform-test.yml` workflow validates scripts on both platforms:
|
|
150
|
+
|
|
151
|
+
| Pattern | Issue | Portable Alternative |
|
|
152
|
+
|---------|-------|---------------------|
|
|
153
|
+
| `sed -i ''` | BSD requires backup ext | Check `$OSTYPE` |
|
|
154
|
+
| `sed -i` | GNU style | Check `$OSTYPE` |
|
|
155
|
+
| `grep -P` | GNU-only PCRE | Use `grep -E` |
|
|
156
|
+
| `date -d` | GNU-only | Use `date +%s` |
|
|
157
|
+
| `readarray` | Bash 4+ only | Use `while read` |
|
|
158
|
+
| `declare -A` | Bash 4+ only | Use indexed arrays |
|
|
159
|
+
|
|
160
|
+
### Path Handling
|
|
161
|
+
|
|
162
|
+
| Requirement | Implementation |
|
|
163
|
+
|-------------|----------------|
|
|
164
|
+
| No hardcoded user paths | Use `$HOME` or `~` |
|
|
165
|
+
| Case-insensitive safe | No filename collisions |
|
|
166
|
+
| Cross-platform paths | No platform-specific path literals |
|
|
167
|
+
|
|
168
|
+
---
|
|
169
|
+
|
|
170
|
+
## CI/CD Pipeline
|
|
171
|
+
|
|
172
|
+
### Workflow Matrix
|
|
173
|
+
|
|
174
|
+
| Workflow | Trigger | Purpose |
|
|
175
|
+
|----------|---------|---------|
|
|
176
|
+
| `ci.yml` | Push/PR | Full CI pipeline, ShellCheck, tests |
|
|
177
|
+
| `compliance-guard.yml` | Push/PR | Security pattern scanning |
|
|
178
|
+
| `cross-platform-test.yml` | Push/PR + weekly | BSD/GNU compatibility |
|
|
179
|
+
| `security-enhanced.yml` | Push/PR | Deep security analysis, SBOM |
|
|
180
|
+
| `codeql.yml` | Push/PR + weekly | Static code analysis |
|
|
181
|
+
| `sbom-diff.yml` | Pull request | SBOM diff and CVE correlation |
|
|
182
|
+
| `nightly.yml` | Daily 2 AM UTC | Dependency version checks |
|
|
183
|
+
|
|
184
|
+
### Compliance Guard Jobs
|
|
185
|
+
|
|
186
|
+
```text
|
|
187
|
+
compliance-guard.yml
|
|
188
|
+
├── insecure-patterns # TLS, credentials, chmod
|
|
189
|
+
├── portability # ShellCheck, paths, .gitattributes
|
|
190
|
+
├── dockerfile-lint # Hadolint
|
|
191
|
+
└── compliance-summary # Report generation
|
|
192
|
+
```
|
|
193
|
+
|
|
194
|
+
### Cross-Platform Test Jobs
|
|
195
|
+
|
|
196
|
+
```text
|
|
197
|
+
cross-platform-test.yml
|
|
198
|
+
├── ubuntu-latest (GNU) # Linux compatibility
|
|
199
|
+
├── macos-latest (BSD) # macOS compatibility
|
|
200
|
+
└── compatibility-report # Summary
|
|
201
|
+
```
|
|
202
|
+
|
|
203
|
+
### GitHub Actions Security
|
|
204
|
+
|
|
205
|
+
| Control | Implementation |
|
|
206
|
+
|---------|----------------|
|
|
207
|
+
| Pinned versions | All actions pinned to SHA or version |
|
|
208
|
+
| Minimal permissions | `contents: read` by default |
|
|
209
|
+
| Concurrency control | Cancel in-progress duplicates |
|
|
210
|
+
| Timeout limits | All jobs have explicit timeouts |
|
|
211
|
+
|
|
212
|
+
---
|
|
213
|
+
|
|
214
|
+
## Pre-Commit Hooks
|
|
215
|
+
|
|
216
|
+
### Configuration
|
|
217
|
+
|
|
218
|
+
File: `config/pre-commit-config.yaml`
|
|
219
|
+
|
|
220
|
+
### Hook Matrix
|
|
221
|
+
|
|
222
|
+
| Hook | Stage | Purpose |
|
|
223
|
+
|------|-------|---------|
|
|
224
|
+
| `shellcheck` | commit | Shell script linting |
|
|
225
|
+
| `shfmt` | commit | Shell script formatting |
|
|
226
|
+
| `gitleaks` | commit | Secrets detection |
|
|
227
|
+
| `detect-secrets` | commit | Credential scanning |
|
|
228
|
+
| `checkov` | commit | Infrastructure security |
|
|
229
|
+
| `hadolint` | commit | Dockerfile linting |
|
|
230
|
+
| `insecure-tls-check` | commit | Block `curl -k` |
|
|
231
|
+
| `dangerous-chmod-check` | commit | Block `chmod 777/666` |
|
|
232
|
+
| `security-policy-enforcement` | pre-push | Policy validation |
|
|
233
|
+
|
|
234
|
+
### Installation
|
|
235
|
+
|
|
236
|
+
```bash
|
|
237
|
+
pip install pre-commit
|
|
238
|
+
pre-commit install
|
|
239
|
+
pre-commit install --hook-type pre-push
|
|
240
|
+
```
|
|
241
|
+
|
|
242
|
+
---
|
|
243
|
+
|
|
244
|
+
## Change Management
|
|
245
|
+
|
|
246
|
+
### Pull Request Requirements
|
|
247
|
+
|
|
248
|
+
| Requirement | Implementation |
|
|
249
|
+
|-------------|----------------|
|
|
250
|
+
| PR template | `.github/PULL_REQUEST_TEMPLATE.md` |
|
|
251
|
+
| Code owners | `.github/CODEOWNERS` |
|
|
252
|
+
| CI checks | Required to pass |
|
|
253
|
+
| Review required | Auto-assigned via CODEOWNERS |
|
|
254
|
+
|
|
255
|
+
### PR Template Checklist
|
|
256
|
+
|
|
257
|
+
```markdown
|
|
258
|
+
- [ ] `chezmoi apply --dry-run` verified
|
|
259
|
+
- [ ] Manual testing on macOS
|
|
260
|
+
- [ ] Manual testing on Linux
|
|
261
|
+
- [ ] CI checks pass
|
|
262
|
+
```
|
|
263
|
+
|
|
264
|
+
### Commit Requirements
|
|
265
|
+
|
|
266
|
+
| Requirement | Implementation |
|
|
267
|
+
|-------------|----------------|
|
|
268
|
+
| Signed commits | GPG/SSH signing (cryptographically verified) |
|
|
269
|
+
| Conventional format | `feat:`, `fix:`, `docs:` prefixes |
|
|
270
|
+
| Co-author attribution | AI contributions attributed |
|
|
271
|
+
|
|
272
|
+
### Cryptographic Identity Verification (ALCOA: Attributable)
|
|
273
|
+
|
|
274
|
+
For SOC 2 compliance, the "Attributable" principle requires that all changes are linked to a **verified cryptographic identity**, not just a username.
|
|
275
|
+
|
|
276
|
+
**Enforcement layers:**
|
|
277
|
+
|
|
278
|
+
| Layer | Mechanism | Status |
|
|
279
|
+
|-------|-----------|--------|
|
|
280
|
+
| Local | Pre-push hook blocks unsigned commits | Enforced |
|
|
281
|
+
| CI | `compliance-guard.yml` verifies signatures | Advisory |
|
|
282
|
+
| GitHub | Branch protection (optional) | Configurable |
|
|
283
|
+
|
|
284
|
+
**Pre-push hook location:** `scripts/git-hooks/pre-push`
|
|
285
|
+
|
|
286
|
+
```bash
|
|
287
|
+
# The hook verifies each commit before push:
|
|
288
|
+
for c in $(git rev-list "$range"); do
|
|
289
|
+
if ! git verify-commit "$c" >/dev/null 2>&1; then
|
|
290
|
+
echo "Blocked: unsigned commit $c"
|
|
291
|
+
exit 1
|
|
292
|
+
fi
|
|
293
|
+
done
|
|
294
|
+
```
|
|
295
|
+
|
|
296
|
+
**Setup signing:**
|
|
297
|
+
|
|
298
|
+
```bash
|
|
299
|
+
# SSH signing (recommended)
|
|
300
|
+
git config --global gpg.format ssh
|
|
301
|
+
git config --global user.signingkey ~/.ssh/id_ed25519.pub
|
|
302
|
+
git config --global commit.gpgsign true
|
|
303
|
+
|
|
304
|
+
# GPG signing (alternative)
|
|
305
|
+
git config --global user.signingkey <YOUR_GPG_KEY_ID>
|
|
306
|
+
git config --global commit.gpgsign true
|
|
307
|
+
|
|
308
|
+
# Or use the dotfiles alias:
|
|
309
|
+
enable-signing ssh # or: enable-signing gpg
|
|
310
|
+
```
|
|
311
|
+
|
|
312
|
+
**Install pre-push hook:**
|
|
313
|
+
|
|
314
|
+
```bash
|
|
315
|
+
cp scripts/git-hooks/pre-push .git/hooks/pre-push
|
|
316
|
+
chmod +x .git/hooks/pre-push
|
|
317
|
+
```
|
|
318
|
+
|
|
319
|
+
**GitHub Branch Protection (recommended):**
|
|
320
|
+
|
|
321
|
+
Enable "Require signed commits" in repository settings:
|
|
322
|
+
`Settings > Branches > Branch protection rules > Require signed commits`
|
|
323
|
+
|
|
324
|
+
---
|
|
325
|
+
|
|
326
|
+
## Test Coverage
|
|
327
|
+
|
|
328
|
+
### Current Metrics
|
|
329
|
+
|
|
330
|
+
| Category | Count | Coverage |
|
|
331
|
+
|----------|-------|----------|
|
|
332
|
+
| Documentation files | 63 | Audited |
|
|
333
|
+
| Executable shell surfaces | 205 | Audited |
|
|
334
|
+
| Unit test files | 425 | Tested |
|
|
335
|
+
| Integration test files | 11 | Tested |
|
|
336
|
+
| **Total test files** | **436** | **Module coverage: 100% (threshold >=95%)** |
|
|
337
|
+
| **Named tests (`test_start`)** | **2149** | **Pass rate: 100%** |
|
|
338
|
+
|
|
339
|
+
### Test Framework
|
|
340
|
+
|
|
341
|
+
```text
|
|
342
|
+
tests/
|
|
343
|
+
├── framework/
|
|
344
|
+
│ ├── assertions.sh # 16 assertion functions
|
|
345
|
+
│ ├── mocks.sh # Mock utilities
|
|
346
|
+
│ └── test_runner.sh # Test executor
|
|
347
|
+
├── unit/
|
|
348
|
+
│ └── test_*.sh # 378 unit test files
|
|
349
|
+
├── integration/
|
|
350
|
+
│ └── test_*.sh # 9 integration test files
|
|
351
|
+
└── performance/
|
|
352
|
+
└── benchmark_runner.sh
|
|
353
|
+
```
|
|
354
|
+
|
|
355
|
+
### Running Tests
|
|
356
|
+
|
|
357
|
+
```bash
|
|
358
|
+
# Run all tests
|
|
359
|
+
./tests/framework/test_runner.sh
|
|
360
|
+
|
|
361
|
+
# Run specific test
|
|
362
|
+
bash tests/unit/test_dot_commands_apply.sh
|
|
363
|
+
```
|
|
364
|
+
|
|
365
|
+
---
|
|
366
|
+
|
|
367
|
+
## Security Documentation
|
|
368
|
+
|
|
369
|
+
### Required Files
|
|
370
|
+
|
|
371
|
+
| File | Purpose | Location |
|
|
372
|
+
|------|---------|----------|
|
|
373
|
+
| SECURITY.md | Vulnerability reporting | `.github/SECURITY.md` |
|
|
374
|
+
| CONTRIBUTING.md | Contribution guidelines | `.github/CONTRIBUTING.md` |
|
|
375
|
+
| CODEOWNERS | Code ownership | `.github/CODEOWNERS` |
|
|
376
|
+
| INCIDENT_RESPONSE.md | Incident response plan | `docs/security/` |
|
|
377
|
+
| FMEA.md | Failure Mode & Effects Analysis | `docs/security/` |
|
|
378
|
+
| VERIFICATION_VALIDATION.md | ISO 13485-style V&V report | `docs/security/` |
|
|
379
|
+
| .editorconfig | Editor settings | Root |
|
|
380
|
+
| .gitattributes | Git attributes | Root |
|
|
381
|
+
|
|
382
|
+
### Vulnerability Response SLA
|
|
383
|
+
|
|
384
|
+
| Severity | Initial Response | Resolution Target |
|
|
385
|
+
|----------|------------------|-------------------|
|
|
386
|
+
| Critical | 24 hours | 48 hours |
|
|
387
|
+
| High | 72 hours | 7 days |
|
|
388
|
+
| Medium | 5 business days | 30 days |
|
|
389
|
+
| Low | 10 business days | 90 days |
|
|
390
|
+
|
|
391
|
+
---
|
|
392
|
+
|
|
393
|
+
## Audit & Forensics
|
|
394
|
+
|
|
395
|
+
### Immutability
|
|
396
|
+
|
|
397
|
+
Lock critical configuration files:
|
|
398
|
+
|
|
399
|
+
```bash
|
|
400
|
+
lock-configs # Sets chflags uchg (macOS) or chattr +i (Linux)
|
|
401
|
+
```
|
|
402
|
+
|
|
403
|
+
### Audit Trail
|
|
404
|
+
|
|
405
|
+
```bash
|
|
406
|
+
# View dotfiles operations log
|
|
407
|
+
dot audit
|
|
408
|
+
|
|
409
|
+
# Log location
|
|
410
|
+
~/.local/share/dotfiles.log
|
|
411
|
+
```
|
|
412
|
+
|
|
413
|
+
### Supply Chain Security
|
|
414
|
+
|
|
415
|
+
| Control | Implementation |
|
|
416
|
+
|---------|----------------|
|
|
417
|
+
| SBOM | Generated for every release (SPDX) |
|
|
418
|
+
| Provenance | SLSA Level 3 build attestation |
|
|
419
|
+
| Dependencies | Pinned versions, weekly updates |
|
|
420
|
+
|
|
421
|
+
---
|
|
422
|
+
|
|
423
|
+
## Verification Commands
|
|
424
|
+
|
|
425
|
+
### Manual Verification
|
|
426
|
+
|
|
427
|
+
```bash
|
|
428
|
+
# Run all pre-commit hooks
|
|
429
|
+
pre-commit run --all-files
|
|
430
|
+
|
|
431
|
+
# Run unit tests
|
|
432
|
+
./tests/framework/test_runner.sh
|
|
433
|
+
|
|
434
|
+
# Check for insecure patterns
|
|
435
|
+
grep -rn --include="*.sh" -E 'curl.*-k|wget.*--no-check' .
|
|
436
|
+
|
|
437
|
+
# Validate .gitattributes
|
|
438
|
+
grep "text=auto" .gitattributes && echo "OK"
|
|
439
|
+
```
|
|
440
|
+
|
|
441
|
+
### Automated Verification
|
|
442
|
+
|
|
443
|
+
| Schedule | Check |
|
|
444
|
+
|----------|-------|
|
|
445
|
+
| Every PR | compliance-guard, cross-platform-test |
|
|
446
|
+
| Weekly | Full security scan, CodeQL |
|
|
447
|
+
| Nightly | Tool version checks |
|
|
448
|
+
|
|
449
|
+
---
|
|
450
|
+
|
|
451
|
+
## References
|
|
452
|
+
|
|
453
|
+
- [SOC 2 Type II](https://www.aicpa.org/soc2)
|
|
454
|
+
- [ISO 27001:2022](https://www.iso.org/standard/27001)
|
|
455
|
+
- [OWASP Top 10](https://owasp.org/Top10/)
|
|
456
|
+
- [Google Shell Style Guide](https://google.github.io/styleguide/shellguide.html)
|
|
457
|
+
- [ShellCheck Wiki](https://www.shellcheck.net/wiki/)
|
|
458
|
+
- [SLSA Framework](https://slsa.dev/)
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
---
|
|
2
|
+
render_with_liquid: false
|
|
3
|
+
---
|
|
4
|
+
|
|
5
|
+
# deps.dev Advisory Exceptions
|
|
6
|
+
|
|
7
|
+
The CI workflow `.github/workflows/deps-dev-validation.yml` scans
|
|
8
|
+
direct dependencies (npm + PyPI + GitHub Actions) against the
|
|
9
|
+
[deps.dev Insights API](https://docs.deps.dev/) on every PR, every
|
|
10
|
+
push to `master`, and every Tuesday at 04:00 UTC. When an advisory
|
|
11
|
+
is reported at or above the threshold (default `HIGH`), the workflow
|
|
12
|
+
fails.
|
|
13
|
+
|
|
14
|
+
This page is where time-bound exceptions live. An entry here suppresses
|
|
15
|
+
the check for one specific `(ecosystem, package)` pair, with an expiry
|
|
16
|
+
date so the exception cannot accumulate quietly.
|
|
17
|
+
|
|
18
|
+
Managed under [#877](https://github.com/sebastienrousseau/dotfiles/issues/877).
|
|
19
|
+
|
|
20
|
+
## Active exceptions
|
|
21
|
+
|
|
22
|
+
_(none currently)_
|
|
23
|
+
|
|
24
|
+
## Adding an exception
|
|
25
|
+
|
|
26
|
+
Add an entry below in this exact format — the scanner greps for
|
|
27
|
+
`` `<ecosystem>:<package>` `` at the start of a line (case-sensitive,
|
|
28
|
+
backtick-delimited):
|
|
29
|
+
|
|
30
|
+
```
|
|
31
|
+
`NPM:lodash` (expires 2026-12-31): Maintained fork; advisory affects
|
|
32
|
+
only the unused stream-API code path. Confirmed via static analysis.
|
|
33
|
+
Tracked under #NNNN.
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
`<ecosystem>` is one of:
|
|
37
|
+
|
|
38
|
+
| Ecosystem | Source |
|
|
39
|
+
|---|---|
|
|
40
|
+
| `NPM` | `package.json` direct deps |
|
|
41
|
+
| `PYPI` | `pyproject.toml` direct deps |
|
|
42
|
+
| `GITHUB_ACTIONS` | `uses:` references in `.github/workflows/*.yml` |
|
|
43
|
+
|
|
44
|
+
`(expires YYYY-MM-DD)` is required. Use a 90-day window for routine
|
|
45
|
+
work; longer windows need a sentence explaining why and a follow-up
|
|
46
|
+
issue link.
|
|
47
|
+
|
|
48
|
+
## When to add vs not add
|
|
49
|
+
|
|
50
|
+
**Legitimate exception**:
|
|
51
|
+
|
|
52
|
+
- The advisory is in a code path your usage doesn't reach (e.g.
|
|
53
|
+
vulnerable function isn't called by anything in this repo).
|
|
54
|
+
- The upstream fix is in flight and you've already opened a PR or
|
|
55
|
+
bumped to a beta.
|
|
56
|
+
- The package is end-of-life and you're tracking the migration to a
|
|
57
|
+
successor under a dedicated issue.
|
|
58
|
+
|
|
59
|
+
**Not an exception** — fix the dep instead:
|
|
60
|
+
|
|
61
|
+
- "Bumping the version is annoying" — that's the whole point of the
|
|
62
|
+
gate.
|
|
63
|
+
- "The advisory might be a false positive" — verify via deps.dev's
|
|
64
|
+
underlying source; if confirmed FP, file with deps.dev rather than
|
|
65
|
+
exception here.
|
|
66
|
+
- "We don't have time this sprint" — that's a deferral, not an
|
|
67
|
+
exception. Bump the issue to next sprint, don't suppress.
|
|
68
|
+
|
|
69
|
+
## Expiry policy
|
|
70
|
+
|
|
71
|
+
The scanner does not currently parse expiry dates (deferred — needs
|
|
72
|
+
a date-comparison helper). A monthly maintainer review of this page
|
|
73
|
+
is the human gate. Any entry past its expiry should either be
|
|
74
|
+
resolved (dep bumped, exception removed) or re-justified with a new
|
|
75
|
+
expiry.
|
|
76
|
+
|
|
77
|
+
When the date-parsing automation lands, expired exceptions will
|
|
78
|
+
auto-fail the gate even when they're still listed here.
|
|
79
|
+
|
|
80
|
+
## References
|
|
81
|
+
|
|
82
|
+
- [`scripts/ci/check-deps-dev.sh`](../../scripts/ci/check-deps-dev.sh) — the scanner.
|
|
83
|
+
- [`.github/workflows/deps-dev-validation.yml`](../../.github/workflows/deps-dev-validation.yml) — CI wiring.
|
|
84
|
+
- [`tests/unit/security/test_check_deps_dev.sh`](../../tests/unit/security/test_check_deps_dev.sh) — contract test against canned fixtures.
|
|
85
|
+
- [deps.dev API reference](https://docs.deps.dev/api/v3/).
|
|
86
|
+
- Issue [#877](https://github.com/sebastienrousseau/dotfiles/issues/877).
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
---
|
|
2
|
+
render_with_liquid: false
|
|
3
|
+
---
|
|
4
|
+
|
|
5
|
+
# Secrets Encryption with SOPS and age
|
|
6
|
+
|
|
7
|
+
## Quick Start
|
|
8
|
+
|
|
9
|
+
```bash
|
|
10
|
+
# 1. Generate an age key (one-time)
|
|
11
|
+
mkdir -p ~/.config/sops/age
|
|
12
|
+
age-keygen -o ~/.config/sops/age/keys.txt
|
|
13
|
+
|
|
14
|
+
# 2. Get your public key
|
|
15
|
+
age-keygen -y ~/.config/sops/age/keys.txt
|
|
16
|
+
# Output: age1abc123...
|
|
17
|
+
|
|
18
|
+
# 3. Update .sops.yaml with your public key
|
|
19
|
+
# Replace the placeholder key in .sops.yaml with your actual public key
|
|
20
|
+
|
|
21
|
+
# 4. Encrypt a file
|
|
22
|
+
sops --encrypt --age $(age-keygen -y ~/.config/sops/age/keys.txt) secrets.yaml > secrets.sops.yaml
|
|
23
|
+
|
|
24
|
+
# 5. Edit encrypted files
|
|
25
|
+
sops secrets.sops.yaml
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
## Key Management
|
|
29
|
+
|
|
30
|
+
- **Private key**: `~/.config/sops/age/keys.txt` — never commit this file.
|
|
31
|
+
- **Public key**: Safe to share. It lives in `.sops.yaml`.
|
|
32
|
+
- **Backup**: Keep your private key in a password manager or a hardware security module.
|
|
33
|
+
|
|
34
|
+
## Recovery
|
|
35
|
+
|
|
36
|
+
If you lose your age private key, follow these steps:
|
|
37
|
+
|
|
38
|
+
1. Create a new key: `age-keygen -o ~/.config/sops/age/keys.txt`
|
|
39
|
+
2. Re-encrypt all secrets with the new public key.
|
|
40
|
+
3. Update `.sops.yaml` with the new public key.
|
|
41
|
+
|
|
42
|
+
## Integration with Chezmoi
|
|
43
|
+
|
|
44
|
+
Chezmoi has built-in support for age encryption.
|
|
45
|
+
|
|
46
|
+
```bash
|
|
47
|
+
chezmoi add --encrypt ~/.ssh/config
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
This encrypts the file in the source state. It uses the age key set in `~/.config/chezmoi/chezmoi.toml`:
|
|
51
|
+
|
|
52
|
+
```toml
|
|
53
|
+
encryption = "age"
|
|
54
|
+
[age]
|
|
55
|
+
identity = "~/.config/sops/age/keys.txt"
|
|
56
|
+
recipient = "age1abc123..."
|
|
57
|
+
```
|