@sebastienrousseau/dotfiles 0.2.481 → 0.2.500
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +122 -32
- package/LICENSE +1 -1
- package/README.md +211 -242
- package/docs/.vitepress/reports/localization-readability-audit.md +69 -0
- package/docs/AI.md +102 -0
- package/docs/COPYRIGHT +2 -2
- package/docs/NAMING_CONVENTIONS.md +95 -0
- package/docs/README.md +58 -249
- package/docs/adr/ADR-004-cli-architecture.md +2 -2
- package/docs/adr/ADR-006-shell-selection.md +2 -2
- package/docs/adr/ADR-007-multi-shell-parity.md +53 -0
- package/docs/adr/ADR-008-alias-system-architecture.md +85 -0
- package/docs/adr/README.md +2 -3
- package/docs/architecture/ARCHITECTURE.md +113 -0
- package/docs/architecture/INTEROP.md +36 -0
- package/docs/architecture/REPO_LAYOUT.md +237 -0
- package/docs/architecture/WALKTHROUGH.md +82 -0
- package/docs/architecture/fleet-deployment.md +73 -0
- package/docs/archive/EUXIS_2026_REVIEW.md +119 -0
- package/docs/archive/MILESTONE_v0.2.493.md +43 -0
- package/docs/{PLAN.md → archive/PLAN.md} +1 -1
- package/docs/guides/INSTALL.md +140 -0
- package/docs/{NEOVIM_IDE_GUIDE.md → guides/NEOVIM_IDE_GUIDE.md} +12 -12
- package/docs/guides/THEMING.md +222 -0
- package/docs/{TROUBLESHOOTING.md → guides/TROUBLESHOOTING.md} +36 -0
- package/docs/{WSL2_NIX_TROUBLESHOOTING.md → guides/WSL2_NIX_TROUBLESHOOTING.md} +8 -8
- package/docs/index.md +39 -0
- package/docs/interop/A2A.md +32 -0
- package/docs/manual/00-introduction.md +85 -0
- package/docs/manual/01-concepts/01-architecture.md +134 -0
- package/docs/manual/01-concepts/02-trust-model.md +178 -0
- package/docs/manual/01-concepts/03-theme-engine.md +182 -0
- package/docs/manual/01-concepts/04-fleet.md +142 -0
- package/docs/manual/01-concepts/05-self-healing.md +197 -0
- package/docs/manual/02-tutorials/01-first-install.md +192 -0
- package/docs/manual/02-tutorials/02-add-wallpaper.md +211 -0
- package/docs/manual/02-tutorials/03-create-profile.md +238 -0
- package/docs/manual/02-tutorials/04-encrypt-secret.md +275 -0
- package/docs/manual/02-tutorials/05-deploy-fleet.md +279 -0
- package/docs/manual/03-reference/01-dot-cli.md +413 -0
- package/docs/manual/03-reference/02-config-files.md +259 -0
- package/docs/manual/03-reference/03-environment.md +120 -0
- package/docs/manual/03-reference/04-templates.md +184 -0
- package/docs/manual/03-reference/05-feature-flags.md +118 -0
- package/docs/manual/04-cookbook/01-recipes.md +281 -0
- package/docs/manual/04-cookbook/02-troubleshooting.md +319 -0
- package/docs/manual/04-cookbook/03-faq.md +167 -0
- package/docs/manual/05-appendices/A-platform-matrix.md +97 -0
- package/docs/manual/05-appendices/B-security-checklist.md +78 -0
- package/docs/manual/05-appendices/C-glossary.md +36 -0
- package/docs/manual/05-appendices/D-bibliography.md +54 -0
- package/docs/manual/05-appendices/E-license.md +34 -0
- package/docs/manual/_toc.yml +58 -0
- package/docs/manual/command-index.md +58 -0
- package/docs/manual/concept-index.md +164 -0
- package/docs/operations/ATTESTATION.md +39 -0
- package/docs/operations/MAINTENANCE.md +59 -0
- package/docs/operations/MIGRATION.md +101 -0
- package/docs/operations/OPERATIONS.md +164 -0
- package/docs/operations/RELIABILITY.md +116 -0
- package/docs/{ROADMAP.md → operations/ROADMAP.md} +11 -11
- package/docs/operations/TESTING.md +195 -0
- package/docs/operations/TRACEABILITY.md +31 -0
- package/docs/operations/TRUSTED_AGENT_WORKSTATION.md +61 -0
- package/docs/operations/VERSION_SYNC.md +344 -0
- package/docs/{ALIASES.md → reference/ALIASES.md} +2 -6
- package/docs/reference/ALIASES_CHEATSHEET.md +28 -0
- package/docs/reference/ALIASES_DEPRECATIONS.md +9 -0
- package/docs/reference/FEATURES.md +62 -0
- package/docs/reference/FONTS.md +108 -0
- package/docs/reference/PROFILES.md +65 -0
- package/docs/{SCREENSHOTS.md → reference/SCREENSHOTS.md} +26 -25
- package/docs/reference/SCRIPTS.md +67 -0
- package/docs/reference/SUPPORT_MATRIX.md +74 -0
- package/docs/reference/THEMES.md +113 -0
- package/docs/reference/TOOLS.md +105 -0
- package/docs/reference/UTILS.md +151 -0
- package/docs/security/AI_ACT_COMPLIANCE.md +90 -0
- package/docs/security/AUTOMATION_SECRETS.md +22 -0
- package/docs/security/COMPLIANCE.md +453 -0
- package/docs/security/ENCRYPTION.md +52 -0
- package/docs/security/FMEA.md +155 -0
- package/docs/security/INCIDENT_RESPONSE.md +575 -0
- package/docs/security/KEYS.md +45 -0
- package/docs/security/MCP_POLICY.md +69 -0
- package/docs/security/POLICY_RELEASES.md +33 -0
- package/docs/security/README.md +24 -0
- package/docs/security/SECRETS.md +146 -0
- package/docs/security/SECURITY.md +41 -0
- package/docs/security/SECURITY_CHECKLIST.md +44 -0
- package/docs/security/SOUP_REGISTER.md +32 -0
- package/docs/security/THREAT_MODEL.md +120 -0
- package/docs/security/VERIFICATION_VALIDATION.md +224 -0
- package/docs/themes/README.md +3 -17
- package/docs/themes/VISUAL_INTEGRITY_REPORT.md +26 -0
- package/docs/themes/hero-shot.svg +78 -0
- package/dot_config/.module-manifest.json +69 -0
- package/dot_config/ai/identity.md +20 -0
- package/dot_config/ai/patterns/architect.md +14 -0
- package/dot_config/ai/patterns/hardener.md +13 -0
- package/dot_config/ai/patterns/refactor.md +13 -0
- package/dot_config/aider/aider.conf.yml +1 -1
- package/dot_config/alacritty/alacritty.toml.tmpl +41 -469
- package/dot_config/atuin/config.toml +18 -1
- package/dot_config/bat/config +16 -1
- package/dot_config/claude/mcp_servers.json +3 -32
- package/dot_config/dotfiles/agent-card.json +29 -0
- package/dot_config/dotfiles/agent-profiles.json +92 -0
- package/dot_config/dotfiles/boot/README.md +1 -1
- package/dot_config/dotfiles/grub/README.md +1 -1
- package/dot_config/dotfiles/lock/README.md +1 -1
- package/dot_config/dotfiles/mcp-lock.json +33 -0
- package/dot_config/dotfiles/mcp-policy.json +52 -0
- package/dot_config/dotfiles/mcp-registry.json +47 -0
- package/dot_config/dotfiles/model-registry.json +20 -0
- package/dot_config/dotfiles/policy-bundles.json +38 -0
- package/dot_config/dotfiles/prompt-registry.json +16 -0
- package/dot_config/dotfiles/versions.env +18 -0
- package/dot_config/environment.d/50-ssh-agent.conf +2 -0
- package/dot_config/environment.d/90-wayland.conf +19 -0
- package/dot_config/firefox/user.js.tmpl +58 -0
- package/dot_config/fish/completions/dot-theme-sync.fish.tmpl +9 -0
- package/dot_config/fish/completions/dot.fish.tmpl +115 -0
- package/dot_config/fish/conf.d/000-perf-cache.fish +56 -0
- package/dot_config/fish/conf.d/aliases.fish.tmpl +77 -0
- package/dot_config/fish/conf.d/env.fish.tmpl +48 -0
- package/dot_config/fish/conf.d/functions.fish.tmpl +22 -0
- package/dot_config/fish/conf.d/init.fish.tmpl +151 -0
- package/dot_config/fish/config.fish.tmpl +44 -0
- package/dot_config/fish/fish_plugins +1 -0
- package/dot_config/fish/functions/_.fish +3 -0
- package/dot_config/fish/functions/_cached_eval.fish +58 -0
- package/dot_config/fish/functions/als.fish +46 -0
- package/dot_config/fish/functions/bg-upgrade.fish +7 -0
- package/dot_config/fish/functions/c.fish +3 -0
- package/dot_config/fish/functions/cat.fish +9 -0
- package/dot_config/fish/functions/d.fish +7 -0
- package/dot_config/fish/functions/dot.fish +34 -0
- package/dot_config/fish/functions/h.fish +3 -0
- package/dot_config/fish/functions/l.fish +7 -0
- package/dot_config/fish/functions/la.fish +7 -0
- package/dot_config/fish/functions/ll.fish +7 -0
- package/dot_config/fish/functions/log_error.fish +13 -0
- package/dot_config/fish/functions/log_info.fish +13 -0
- package/dot_config/fish/functions/lr.fish +7 -0
- package/dot_config/fish/functions/lra.fish +7 -0
- package/dot_config/fish/functions/ls.fish +7 -0
- package/dot_config/fish/functions/lt.fish +7 -0
- package/dot_config/fish/functions/lta.fish +7 -0
- package/dot_config/fish/functions/notify-run.fish +11 -0
- package/dot_config/fish/functions/q.fish +3 -0
- package/dot_config/fish/functions/silent-run.fish +7 -0
- package/dot_config/fish/functions/yy.fish +8 -0
- package/dot_config/fontconfig/fonts.conf.tmpl +13 -0
- package/dot_config/foot/foot.ini.tmpl +33 -0
- package/dot_config/fuzzel/fuzzel.ini.tmpl +18 -0
- package/dot_config/fzf/fzf.zsh +48 -0
- package/dot_config/ghostty/config.tmpl +69 -565
- package/dot_config/git/allowed_signers.tmpl +18 -0
- package/dot_config/git/commit-template +10 -0
- package/dot_config/gnupg/{gpg-agent.conf.tmpl → gpg-agent.conf} +3 -3
- package/dot_config/goose/config.yaml +2 -2
- package/dot_config/gtk-3.0/gtk.css.tmpl +59 -180
- package/dot_config/gtk-3.0/settings.ini.tmpl +5 -44
- package/dot_config/gtk-4.0/gtk.css.tmpl +79 -136
- package/dot_config/gtk-4.0/settings.ini.tmpl +5 -8
- package/dot_config/ipython/profile_default/ipython_config.py +19 -0
- package/dot_config/just/justfile +18 -0
- package/dot_config/kanshi/config.tmpl +22 -0
- package/dot_config/kitty/kitty.conf.tmpl +44 -508
- package/dot_config/lazygit/config.yml +18 -6
- package/dot_config/mako/config +47 -0
- package/dot_config/micro/settings.json +3 -0
- package/dot_config/mimeapps.list +77 -0
- package/dot_config/mise/config.toml +63 -5
- package/dot_config/mongosh/mongoshrc.js +1 -0
- package/dot_config/mpv/input.conf +47 -0
- package/dot_config/mpv/mpv.conf +47 -0
- package/dot_config/niri/config.kdl.tmpl +327 -0
- package/dot_config/nushell/aliases.nu +18 -0
- package/dot_config/nushell/completions.nu.tmpl +52 -0
- package/dot_config/nushell/config.nu.tmpl +86 -0
- package/dot_config/nushell/env.nu.tmpl +94 -0
- package/dot_config/nushell/functions.nu.tmpl +17 -0
- package/dot_config/nvim/init.lua +14 -0
- package/dot_config/nvim/lazy-lock.json +45 -14
- package/dot_config/nvim/lua/config/autocmds.lua +45 -1
- package/dot_config/nvim/lua/config/keymaps.lua +13 -8
- package/dot_config/nvim/lua/config/lazy.lua +22 -12
- package/dot_config/nvim/lua/config/options.lua +1 -0
- package/dot_config/nvim/lua/plugins/ai.lua +75 -0
- package/dot_config/nvim/lua/plugins/coding.lua +11 -29
- package/dot_config/nvim/lua/plugins/completion.lua +60 -0
- package/dot_config/nvim/lua/plugins/dap.lua +215 -4
- package/dot_config/nvim/lua/plugins/editor.lua +6 -10
- package/dot_config/nvim/lua/plugins/git.lua +1 -0
- package/dot_config/nvim/lua/plugins/lsp.lua +16 -81
- package/dot_config/nvim/lua/plugins/markdown.lua +1 -0
- package/dot_config/nvim/lua/plugins/rust.lua +1 -0
- package/dot_config/nvim/lua/plugins/sessions.lua +1 -0
- package/dot_config/nvim/lua/plugins/ui.lua +23 -51
- package/dot_config/paru/paru.conf +10 -0
- package/dot_config/powershell/Microsoft.PowerShell_profile.ps1.tmpl +81 -0
- package/dot_config/pueue/pueue.yml +34 -0
- package/dot_config/raycast/README.md +1 -1
- package/dot_config/ripgrep/ripgreprc +21 -0
- package/dot_config/shell/00-core-paths.sh.tmpl +62 -24
- package/dot_config/shell/05-core-safety.sh +47 -0
- package/dot_config/shell/10-secrets.sh +40 -0
- package/dot_config/shell/40-fzf-defaults.sh.tmpl +16 -0
- package/dot_config/shell/40-ls-colors.sh +48 -0
- package/dot_config/shell/50-logic-functions-core.sh.tmpl +10 -0
- package/dot_config/shell/51-logic-functions-extra.sh.tmpl +64 -0
- package/dot_config/shell/90-ux-aliases.sh.tmpl +90 -5
- package/dot_config/shell/91-ux-aliases-lazy.sh.tmpl +33 -2
- package/dot_config/shell/Brewfile.cli +8 -0
- package/dot_config/shell/README.md +9 -9
- package/dot_config/shell/als_data.txt.tmpl +65 -0
- package/dot_config/shell/custom/auto_ls.zsh +20 -0
- package/dot_config/shell/custom/context_suggest.zsh +50 -50
- package/dot_config/shell/custom/error_analysis.zsh +29 -29
- package/dot_config/starship.toml.tmpl +85 -7
- package/dot_config/swaylock/config +43 -0
- package/dot_config/systemd/user/dotfiles-maintenance.service +8 -0
- package/dot_config/systemd/user/dotfiles-maintenance.timer +11 -0
- package/dot_config/systemd/user/pueued.service +12 -0
- package/dot_config/systemd/user/ssh-agent.service +12 -0
- package/dot_config/tmux/tmux.conf.tmpl +80 -38
- package/dot_config/topgrade.toml.tmpl +54 -0
- package/dot_config/user-dirs.dirs +9 -0
- package/dot_config/vscode/settings.json.tmpl +9 -50
- package/dot_config/waybar/config.jsonc.tmpl +90 -0
- package/dot_config/waybar/style.css.tmpl +211 -0
- package/dot_config/wezterm/wezterm.lua.tmpl +31 -203
- package/dot_config/xdg-desktop-portal/niri-portals.conf +5 -0
- package/dot_config/yazi/keymap.toml +67 -0
- package/dot_config/yazi/theme.toml +102 -0
- package/dot_config/zathura/zathurarc +52 -0
- package/dot_config/zellij/{config.kdl → config.kdl.tmpl} +1 -1
- package/dot_config/zsh/dot_zprofile +1 -7
- package/dot_config/zsh/dot_zshenv +2 -3
- package/dot_config/zsh/dot_zshrc.tmpl +368 -69
- package/dot_config/zsh/rc.d/00-alias-shims.zsh +77 -0
- package/dot_config/zsh/rc.d/05-ssh-agent.zsh +17 -4
- package/dot_config/zsh/rc.d/10-env.zsh.tmpl +4 -4
- package/dot_config/zsh/rc.d/20-zinit.zsh +65 -0
- package/dot_config/zsh/rc.d/30-options.zsh.tmpl +101 -30
- package/dot_config/zsh/rc.d/99-alias-wrapper.zsh +32 -0
- package/dot_local/bin/__pycache__/executable_dot-load-benchmark-ptycpython-312.pyc +0 -0
- package/dot_local/bin/executable_ai-update +195 -0
- package/dot_local/bin/executable_ai_core +113 -91
- package/dot_local/bin/executable_antigravity +11 -0
- package/dot_local/bin/executable_b64 +61 -36
- package/dot_local/bin/executable_bm +77 -0
- package/dot_local/bin/executable_cb +39 -0
- package/dot_local/bin/executable_dot +543 -132
- package/dot_local/bin/executable_dot-ai +36 -0
- package/dot_local/bin/executable_dot-bootstrap +77 -0
- package/dot_local/bin/executable_dot-launch-or-focus +52 -0
- package/dot_local/bin/executable_dot-load-benchmark +31 -0
- package/dot_local/bin/executable_dot-load-benchmark-pty +77 -0
- package/dot_local/bin/executable_dot-theme-sync +952 -0
- package/dot_local/bin/executable_dot_completion +2 -0
- package/dot_local/bin/executable_dtags +28 -0
- package/dot_local/bin/executable_epoch +43 -38
- package/dot_local/bin/executable_extract +32 -99
- package/dot_local/bin/executable_gbd +52 -0
- package/dot_local/bin/executable_gd +42 -0
- package/dot_local/bin/executable_git-ai-commit +35 -20
- package/dot_local/bin/executable_git-ai-diff +33 -18
- package/dot_local/bin/executable_gl +101 -0
- package/dot_local/bin/executable_hash +56 -18
- package/dot_local/bin/executable_hashsum +160 -0
- package/dot_local/bin/executable_hex +44 -8
- package/dot_local/bin/executable_jsonv +34 -10
- package/dot_local/bin/executable_jwt +22 -6
- package/dot_local/bin/executable_kill-port +18 -2
- package/dot_local/bin/executable_lorem +21 -6
- package/dot_local/bin/executable_mkscript +35 -0
- package/dot_local/bin/executable_monitor +56 -0
- package/dot_local/bin/{executable_ip → executable_myip} +16 -2
- package/dot_local/bin/executable_notify +22 -0
- package/dot_local/bin/executable_open +36 -0
- package/dot_local/bin/executable_pw +27 -0
- package/dot_local/bin/executable_rec-start +46 -0
- package/dot_local/bin/executable_rec-stop +35 -0
- package/dot_local/bin/executable_regex +49 -13
- package/dot_local/bin/executable_start-niri +8 -0
- package/dot_local/bin/executable_tmux-sessionizer +276 -149
- package/dot_local/bin/executable_tour +112 -74
- package/dot_local/bin/executable_up +21 -0
- package/dot_local/bin/executable_update +45 -11
- package/dot_local/bin/executable_uuid +37 -7
- package/dot_local/bin/executable_win +32 -0
- package/dot_local/bin/executable_yamlv +25 -7
- package/dot_local/share/bash-completion/completions/dot +62 -44
- package/dot_local/share/icons/hicolor/128x128/apps/rousseau.png +0 -0
- package/dot_local/share/icons/hicolor/16x16/apps/rousseau.png +0 -0
- package/dot_local/share/icons/hicolor/24x24/apps/rousseau.png +0 -0
- package/dot_local/share/icons/hicolor/256x256/apps/rousseau.png +0 -0
- package/dot_local/share/icons/hicolor/32x32/apps/rousseau.png +0 -0
- package/dot_local/share/icons/hicolor/48x48/apps/rousseau.png +0 -0
- package/dot_local/share/icons/hicolor/512x512/apps/rousseau.png +0 -0
- package/dot_local/share/icons/hicolor/64x64/apps/rousseau.png +0 -0
- package/dot_local/share/icons/hicolor/96x96/apps/rousseau.png +0 -0
- package/dot_local/share/icons/hicolor/scalable/apps/rousseau.png +0 -0
- package/dot_local/share/man/man1/dot.1 +149 -0
- package/dot_local/share/mise/plugins/kiro-cli/bin/executable_download +64 -0
- package/dot_local/share/mise/plugins/kiro-cli/bin/executable_install +18 -0
- package/dot_local/share/mise/plugins/kiro-cli/bin/executable_list-all +13 -0
- package/dot_local/share/wayland-sessions/niri.desktop.tmpl +6 -0
- package/dot_local/share/zsh/completions/_dot +283 -0
- package/install.sh +297 -210
- package/package.json +17 -5
- package/scripts/ci/check-copyright-headers.sh +96 -0
- package/scripts/ci/guard-gitleaks-checkout.sh +57 -0
- package/scripts/ci/install-chezmoi-verified.sh +64 -0
- package/scripts/ci/validate-ci-config.sh +41 -39
- package/scripts/demo/record.sh +3 -2
- package/scripts/diagnostics/a2a-conformance.sh +162 -0
- package/scripts/diagnostics/alias-governance.sh +137 -0
- package/scripts/diagnostics/aliases-cheatsheet.sh +73 -0
- package/scripts/diagnostics/aliases-manifest.sh +31 -0
- package/scripts/diagnostics/benchmark.sh +209 -29
- package/scripts/diagnostics/conflicts.sh +72 -0
- package/scripts/diagnostics/doctor-unified.sh +38 -0
- package/scripts/diagnostics/doctor.sh +491 -65
- package/scripts/diagnostics/drift-dashboard.sh +17 -6
- package/scripts/diagnostics/health.sh +351 -110
- package/scripts/diagnostics/history-analysis.sh +12 -4
- package/scripts/diagnostics/mcp-doctor.sh +575 -0
- package/scripts/diagnostics/perf.sh +225 -0
- package/scripts/diagnostics/scorecard.sh +118 -0
- package/scripts/diagnostics/secret-governance.sh +58 -0
- package/scripts/diagnostics/security-score.sh +139 -93
- package/scripts/diagnostics/smoke-test.sh +87 -0
- package/scripts/diagnostics/snapshot.sh +89 -0
- package/scripts/diagnostics/verify.sh +107 -0
- package/scripts/diagnostics/verify_state.sh +2 -2
- package/scripts/diagnostics/version-locks.sh +79 -0
- package/scripts/diagnostics/workstation-attestation.sh +181 -0
- package/scripts/docs/build-manual.sh +883 -0
- package/scripts/docs/check-manual.sh +213 -0
- package/scripts/dot/commands/agent.sh +465 -0
- package/scripts/dot/commands/ai.sh +416 -0
- package/scripts/dot/commands/aliases.sh +250 -0
- package/scripts/dot/commands/appearance.sh +21 -4
- package/scripts/dot/commands/core.sh +59 -4
- package/scripts/dot/commands/diagnostics.sh +132 -3
- package/scripts/dot/commands/fleet.sh +399 -0
- package/scripts/dot/commands/lint.sh +177 -0
- package/scripts/dot/commands/manual.sh +168 -0
- package/scripts/dot/commands/meta.sh +148 -17
- package/scripts/dot/commands/patterns.sh +54 -0
- package/scripts/dot/commands/restore.sh +57 -35
- package/scripts/dot/commands/secrets.sh +151 -9
- package/scripts/dot/commands/security.sh +3 -0
- package/scripts/dot/commands/tools.sh +268 -27
- package/scripts/dot/data/alias-deprecations.tsv +2 -0
- package/scripts/dot/lib/bento.sh +49 -0
- package/scripts/dot/lib/log.sh +194 -0
- package/scripts/dot/lib/platform.sh +98 -0
- package/scripts/dot/lib/ui.sh +507 -0
- package/scripts/dot/lib/utils.sh +318 -18
- package/scripts/fonts/install-nerd-fonts.sh +19 -10
- package/scripts/fonts/patch-fonts.sh +1 -0
- package/scripts/git-hooks/install.sh +11 -0
- package/scripts/git-hooks/pre-commit +12 -0
- package/scripts/git-hooks/pre-commit-audit.sh +145 -0
- package/scripts/git-hooks/pre-push +29 -0
- package/scripts/git-hooks/prepare-commit-msg +29 -0
- package/scripts/lib/secrets_provider.sh +158 -0
- package/scripts/maintenance/check-updates.sh +131 -0
- package/scripts/ops/ai-setup.sh +55 -0
- package/scripts/ops/bundle.sh +77 -0
- package/scripts/ops/chaos.sh +49 -0
- package/scripts/ops/chezmoi-apply.sh +245 -17
- package/scripts/ops/chezmoi-diff.sh +1 -0
- package/scripts/ops/chezmoi-remove.sh +2 -0
- package/scripts/ops/chezmoi-update.sh +34 -2
- package/scripts/ops/heal-chezmoi.sh +51 -0
- package/scripts/ops/heal-system.sh +128 -0
- package/scripts/ops/heal-tools.sh +340 -0
- package/scripts/ops/heal.sh +98 -342
- package/scripts/ops/post-apply-repair.sh +106 -0
- package/scripts/ops/prewarm.sh +127 -0
- package/scripts/ops/release.sh +252 -0
- package/scripts/ops/rollback.sh +86 -28
- package/scripts/ops/setup.sh +137 -0
- package/scripts/ops/teleport.sh +2 -1
- package/scripts/qa/coverage-baseline.sh +60 -0
- package/scripts/qa/docs-coverage.sh +111 -0
- package/scripts/qa/reliability-audit.sh +138 -0
- package/scripts/qa/traceability-coverage.sh +116 -0
- package/scripts/qa/validate-examples.sh +26 -0
- package/scripts/qa/wsl-contract.sh +11 -0
- package/scripts/release/package-policy-bundles.sh +125 -0
- package/scripts/secrets/age-init.sh +1 -0
- package/scripts/secrets/create-secrets-file.sh +1 -0
- package/scripts/secrets/encrypt-ssh-key.sh +1 -0
- package/scripts/security/backup.sh +44 -4
- package/scripts/security/dns-doh.sh +36 -14
- package/scripts/security/encryption-check.sh +27 -12
- package/scripts/security/enforce-policies.sh +11 -16
- package/scripts/security/firewall.sh +76 -20
- package/scripts/security/lock-configs.sh +2 -2
- package/scripts/security/lock-screen.sh +40 -18
- package/scripts/security/manage-secrets.sh +42 -29
- package/scripts/security/ssh-cert.sh +203 -0
- package/scripts/security/telemetry-kill.sh +40 -18
- package/scripts/security/usb-safety.sh +37 -15
- package/scripts/theme/apply-gnome-theme.sh +87 -56
- package/scripts/theme/extract-theme.py +677 -0
- package/scripts/theme/install-boot-logo.sh +1 -0
- package/scripts/theme/install-catppuccin-themes.sh +57 -33
- package/scripts/theme/install-cursors.sh +1 -0
- package/scripts/theme/install-file-icons.sh +1 -0
- package/scripts/theme/install-grub-theme.sh +11 -1
- package/scripts/theme/install-lock-icon.sh +1 -0
- package/scripts/theme/merge-wallpaper.sh +141 -0
- package/scripts/theme/rebuild-themes.sh +309 -0
- package/scripts/theme/switch.sh +308 -137
- package/scripts/theme/wallpaper-rotate.sh +66 -12
- package/scripts/theme/wallpaper-sync.sh +386 -31
- package/scripts/tools/cmatrix.sh +1 -0
- package/scripts/tools/detect-collisions.py +1 -1
- package/scripts/tools/emoji-picker.sh +4 -1
- package/scripts/tools/figlet-banner.sh +1 -0
- package/scripts/tools/log-rotate.sh +2 -1
- package/scripts/tools/lolcat-wrap.sh +1 -0
- package/scripts/tools/pipes.sh +1 -0
- package/scripts/tuning/linux.sh +23 -13
- package/scripts/tuning/macos.sh +13 -4
- package/scripts/uninstall.sh +85 -0
- package/scripts/version-sync.sh +487 -0
- package/templates/chezmoi-data/geekom-a9.toml.example +21 -0
- package/templates/chezmoi-data/mac-m1.toml.example +16 -0
- package/templates/chezmoi-data/mac-t2-linux.toml.example +21 -0
- package/templates/chezmoi-data/surface-pro-7p.toml.example +21 -0
- package/templates/projects/go/.github/workflows/ci.yml +31 -0
- package/templates/projects/go/README.md +1 -1
- package/templates/projects/go/cmd/__PROJECT_NAME__/main.go +1 -0
- package/templates/projects/go/go.sum +0 -0
- package/templates/projects/molecule/README.md +1 -1
- package/templates/projects/node/.github/workflows/ci.yml +30 -0
- package/templates/projects/node/README.md +1 -1
- package/templates/projects/node/package-lock.json +12 -0
- package/templates/projects/node/src/index.js +1 -0
- package/templates/projects/packer/README.md +1 -1
- package/templates/projects/python/.github/workflows/ci.yml +34 -0
- package/templates/projects/python/README.md +1 -1
- package/templates/projects/python/src/__PROJECT_NAME__/__init__.py +1 -0
- package/templates/projects/python/tests/test_basic.py +1 -0
- package/docs/ARCHITECTURE.md +0 -229
- package/docs/COMPLIANCE.md +0 -47
- package/docs/FEATURES.md +0 -166
- package/docs/FONTS.md +0 -147
- package/docs/INSTALL.md +0 -119
- package/docs/KEYS.md +0 -40
- package/docs/OPERATIONS.md +0 -130
- package/docs/PR_DESCRIPTION.md +0 -149
- package/docs/SECRETS.md +0 -76
- package/docs/SECURITY.md +0 -30
- package/docs/SECURITY_CHECKLIST.md +0 -25
- package/docs/TASK.md +0 -99
- package/docs/TESTING.md +0 -190
- package/docs/TOOLS.md +0 -146
- package/docs/UTILS.md +0 -105
- package/docs/WALKTHROUGH.md +0 -165
- package/dot_config/clippy.toml +0 -55
- package/dot_config/dotfiles/versions.env.tmpl +0 -19
- package/dot_config/firefox/user.js +0 -8
- package/dot_config/git/config.tmpl +0 -77
- package/dot_config/go/aliases.sh +0 -61
- package/dot_config/go/env.sh +0 -24
- package/dot_config/ice/README.md +0 -13
- package/dot_config/ipython/profile_default/ipython_config.py.tmpl +0 -5
- package/dot_config/lsd/config.yaml +0 -19
- package/dot_config/nvim/snippets/all.lua +0 -9
- package/dot_config/nvim/snippets/python.lua +0 -16
- package/dot_config/shell/00-container-detect.sh +0 -53
- package/dot_config/shell/05-core-safety.sh.tmpl +0 -13
- package/dot_config/shell/40-ls-colors.sh.tmpl +0 -31
- package/dot_config/shell/90-theme-switch.sh +0 -70
- package/dot_config/topgrade/topgrade.toml.tmpl +0 -42
- package/dot_config/waybar/style.css +0 -8
- package/dot_config/zsh/rc.d/20-zinit.zsh.tmpl +0 -22
- package/dot_local/bin/executable_zig-install +0 -89
- package/dot_local/bin/voice_ops +0 -7
- package/scripts/ops/health-check.sh +0 -380
- package/scripts/tests/README.md +0 -241
- package/scripts/tests/benchmark.sh +0 -91
- package/scripts/tests/framework/assertions.sh +0 -283
- package/scripts/tests/framework/mocks.sh +0 -201
- package/scripts/tests/framework/test_runner.sh +0 -189
- package/scripts/tests/integration/test_install.sh +0 -237
- package/scripts/tests/performance/benchmark_runner.sh +0 -156
- package/scripts/tests/performance/regression_check.sh +0 -73
- package/scripts/tests/performance/stress_test.sh +0 -65
- package/scripts/tests/test-aliases.sh +0 -25
- package/scripts/tests/test-docker.sh +0 -48
- package/scripts/tests/unit/test_ai_aliases.sh +0 -158
- package/scripts/tests/unit/test_ai_cli_checks.sh +0 -47
- package/scripts/tests/unit/test_backup.sh +0 -227
- package/scripts/tests/unit/test_case_functions.sh +0 -238
- package/scripts/tests/unit/test_cd_aliases.sh +0 -367
- package/scripts/tests/unit/test_dot_cli.sh +0 -217
- package/scripts/tests/unit/test_encode64.sh +0 -67
- package/scripts/tests/unit/test_environment.sh +0 -78
- package/scripts/tests/unit/test_extract.sh +0 -163
- package/scripts/tests/unit/test_framework_edge_cases.sh +0 -113
- package/scripts/tests/unit/test_genpass.sh +0 -298
- package/scripts/tests/unit/test_install_edge_cases.sh +0 -167
- package/scripts/tests/unit/test_installers.sh +0 -172
- package/scripts/tests/unit/test_keygen.sh +0 -68
- package/scripts/tests/unit/test_logging.sh +0 -96
- package/scripts/tests/unit/test_os_detection_comprehensive.sh +0 -388
- package/scripts/tests/unit/test_package_managers_comprehensive.sh +0 -321
- package/scripts/tests/unit/test_prependpath.sh +0 -66
- package/scripts/tests/unit/test_prependpath_refactored.sh +0 -89
- package/scripts/tests/unit/test_rd.sh +0 -230
- package/scripts/tests/unit/test_security_fixes.sh +0 -130
- package/scripts/tests/unit/test_security_scripts.sh +0 -87
- package/scripts/tests/unit/test_template_validation.sh +0 -238
- package/scripts/tests/unit/test_utility_functions.sh +0 -144
- package/scripts/tests/unit/test_wave1_alias_split.sh +0 -132
- package/scripts/tests/unit/test_wave1_ci_pinning.sh +0 -61
- package/scripts/tests/unit/test_wave1_gitleaks_config.sh +0 -52
- package/scripts/tests/unit/test_wave1_heal_fixes.sh +0 -97
- package/scripts/tests/unit/test_wave1_install_gpg.sh +0 -35
- package/scripts/tests/unit/test_wave1_zshenv_path.sh +0 -89
- package/scripts/tests/unit/test_wave1_zshrc_lazy_hook.sh +0 -115
- package/scripts/tests/unit/test_wave2_dot_new_guard.sh +0 -75
- package/scripts/tests/unit/test_zipf.sh +0 -76
- /package/docs/{LEGACY_ROADMAP.md → archive/LEGACY_ROADMAP.md} +0 -0
- /package/docs/{REPO_AUDIT.md → archive/REPO_AUDIT.md} +0 -0
- /package/docs/{KEY_ROTATION.md → security/KEY_ROTATION.md} +0 -0
- /package/dot_config/ansible/{ansible.cfg.tmpl → ansible.cfg} +0 -0
- /package/dot_config/docker/{config.json.tmpl → config.json} +0 -0
- /package/dot_config/k9s/{config.yaml.tmpl → config.yaml} +0 -0
- /package/dot_config/pypoetry/{config.toml.tmpl → config.toml} +0 -0
- /package/dot_config/{pyrightconfig.json.tmpl → pyrightconfig.json} +0 -0
- /package/dot_config/tflint/{tflint.hcl.tmpl → tflint.hcl} +0 -0
- /package/dot_config/yarn/{yarnrc.yml.tmpl → yarnrc.yml} +0 -0
- /package/dot_config/zsh/rc.d/{40-bell.zsh.tmpl → 40-bell.zsh} +0 -0
- /package/dot_config/zsh/rc.d/{50-login-fortune.zsh.tmpl → 50-login-fortune.zsh} +0 -0
|
@@ -0,0 +1,125 @@
|
|
|
1
|
+
#!/usr/bin/env bash
|
|
2
|
+
# Copyright (c) 2015-2026 Dotfiles. All rights reserved.
|
|
3
|
+
## Package tracked governance artifacts into a release bundle.
|
|
4
|
+
|
|
5
|
+
set -euo pipefail
|
|
6
|
+
|
|
7
|
+
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
8
|
+
REPO_ROOT="${REPO_ROOT:-$(cd "$SCRIPT_DIR/../.." && pwd)}"
|
|
9
|
+
|
|
10
|
+
OUTPUT_DIR="${OUTPUT_DIR:-$REPO_ROOT/dist/policy-bundles}"
|
|
11
|
+
BUNDLE_VERSION="${BUNDLE_VERSION:-$(jq -r '.schemaVersion' "$REPO_ROOT/dot_config/dotfiles/policy-bundles.json")}"
|
|
12
|
+
JSON_MODE=0
|
|
13
|
+
|
|
14
|
+
while [[ $# -gt 0 ]]; do
|
|
15
|
+
case "$1" in
|
|
16
|
+
--output-dir | -o)
|
|
17
|
+
OUTPUT_DIR="${2:-}"
|
|
18
|
+
shift 2
|
|
19
|
+
;;
|
|
20
|
+
--version | -v)
|
|
21
|
+
BUNDLE_VERSION="${2:-}"
|
|
22
|
+
shift 2
|
|
23
|
+
;;
|
|
24
|
+
--json | -j)
|
|
25
|
+
JSON_MODE=1
|
|
26
|
+
shift
|
|
27
|
+
;;
|
|
28
|
+
*)
|
|
29
|
+
shift
|
|
30
|
+
;;
|
|
31
|
+
esac
|
|
32
|
+
done
|
|
33
|
+
|
|
34
|
+
command -v jq >/dev/null 2>&1 || {
|
|
35
|
+
echo "jq is required for policy bundle packaging." >&2
|
|
36
|
+
exit 1
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
bundle_root="$OUTPUT_DIR/policy-bundles-$BUNDLE_VERSION"
|
|
40
|
+
archive_file="$OUTPUT_DIR/policy-bundles-$BUNDLE_VERSION.tar.gz"
|
|
41
|
+
checksum_file="$OUTPUT_DIR/policy-bundles-$BUNDLE_VERSION.sha256"
|
|
42
|
+
|
|
43
|
+
rm -rf "$bundle_root"
|
|
44
|
+
mkdir -p "$bundle_root/dot_config/dotfiles" "$bundle_root/.well-known" "$bundle_root/docs/security" "$bundle_root/docs/operations" "$bundle_root/docs/interop"
|
|
45
|
+
|
|
46
|
+
files=(
|
|
47
|
+
"dot_config/dotfiles/policy-bundles.json"
|
|
48
|
+
"dot_config/dotfiles/model-registry.json"
|
|
49
|
+
"dot_config/dotfiles/prompt-registry.json"
|
|
50
|
+
"dot_config/dotfiles/agent-profiles.json"
|
|
51
|
+
"dot_config/dotfiles/agent-card.json"
|
|
52
|
+
"dot_config/dotfiles/mcp-policy.json"
|
|
53
|
+
"dot_config/dotfiles/mcp-registry.json"
|
|
54
|
+
"dot_config/dotfiles/mcp-lock.json"
|
|
55
|
+
".well-known/agent.json"
|
|
56
|
+
".well-known/agent-card.json"
|
|
57
|
+
".well-known/mcp/server-card.json"
|
|
58
|
+
"docs/security/MCP_POLICY.md"
|
|
59
|
+
"docs/operations/TRUSTED_AGENT_WORKSTATION.md"
|
|
60
|
+
"docs/interop/A2A.md"
|
|
61
|
+
)
|
|
62
|
+
|
|
63
|
+
for file in "${files[@]}"; do
|
|
64
|
+
[[ -f "$REPO_ROOT/$file" ]] || {
|
|
65
|
+
echo "Missing required policy bundle artifact: $file" >&2
|
|
66
|
+
exit 1
|
|
67
|
+
}
|
|
68
|
+
mkdir -p "$bundle_root/$(dirname "$file")"
|
|
69
|
+
cp "$REPO_ROOT/$file" "$bundle_root/$file"
|
|
70
|
+
done
|
|
71
|
+
|
|
72
|
+
jq empty "$bundle_root/dot_config/dotfiles/policy-bundles.json" >/dev/null
|
|
73
|
+
jq empty "$bundle_root/dot_config/dotfiles/model-registry.json" >/dev/null
|
|
74
|
+
jq empty "$bundle_root/dot_config/dotfiles/prompt-registry.json" >/dev/null
|
|
75
|
+
jq empty "$bundle_root/dot_config/dotfiles/agent-profiles.json" >/dev/null
|
|
76
|
+
jq empty "$bundle_root/dot_config/dotfiles/agent-card.json" >/dev/null
|
|
77
|
+
jq empty "$bundle_root/dot_config/dotfiles/mcp-policy.json" >/dev/null
|
|
78
|
+
jq empty "$bundle_root/dot_config/dotfiles/mcp-registry.json" >/dev/null
|
|
79
|
+
jq empty "$bundle_root/dot_config/dotfiles/mcp-lock.json" >/dev/null
|
|
80
|
+
jq empty "$bundle_root/.well-known/agent.json" >/dev/null
|
|
81
|
+
|
|
82
|
+
tar -C "$OUTPUT_DIR" -czf "$archive_file" "policy-bundles-$BUNDLE_VERSION"
|
|
83
|
+
sha256sum "$archive_file" >"$checksum_file"
|
|
84
|
+
|
|
85
|
+
# Generate CycloneDX SBOM
|
|
86
|
+
sbom_file="$bundle_root/sbom.cyclonedx.json"
|
|
87
|
+
if command -v syft >/dev/null 2>&1; then
|
|
88
|
+
syft dir:"$bundle_root" -o cyclonedx-json >"$sbom_file" 2>/dev/null
|
|
89
|
+
else
|
|
90
|
+
# Minimal CycloneDX manifest via jq
|
|
91
|
+
jq -n \
|
|
92
|
+
--arg version "$BUNDLE_VERSION" \
|
|
93
|
+
--arg timestamp "$(date -u +%Y-%m-%dT%H:%M:%SZ)" \
|
|
94
|
+
'{
|
|
95
|
+
bomFormat: "CycloneDX",
|
|
96
|
+
specVersion: "1.5",
|
|
97
|
+
version: 1,
|
|
98
|
+
metadata: {
|
|
99
|
+
timestamp: $timestamp,
|
|
100
|
+
component: {
|
|
101
|
+
type: "application",
|
|
102
|
+
name: "dotfiles-policy-bundles",
|
|
103
|
+
version: $version
|
|
104
|
+
}
|
|
105
|
+
},
|
|
106
|
+
components: []
|
|
107
|
+
}' >"$sbom_file"
|
|
108
|
+
fi
|
|
109
|
+
|
|
110
|
+
# Re-create archive with SBOM included
|
|
111
|
+
tar -C "$OUTPUT_DIR" -czf "$archive_file" "policy-bundles-$BUNDLE_VERSION"
|
|
112
|
+
sha256sum "$archive_file" >"$checksum_file"
|
|
113
|
+
|
|
114
|
+
if [[ "$JSON_MODE" -eq 1 ]]; then
|
|
115
|
+
jq -n \
|
|
116
|
+
--arg version "$BUNDLE_VERSION" \
|
|
117
|
+
--arg output_dir "$OUTPUT_DIR" \
|
|
118
|
+
--arg archive "$archive_file" \
|
|
119
|
+
--arg checksum "$checksum_file" \
|
|
120
|
+
--arg sbom "$sbom_file" \
|
|
121
|
+
'{version: $version, output_dir: $output_dir, archive: $archive, checksum: $checksum, sbom: $sbom}'
|
|
122
|
+
else
|
|
123
|
+
printf 'Policy bundle archive: %s\n' "$archive_file"
|
|
124
|
+
printf 'Policy bundle checksum: %s\n' "$checksum_file"
|
|
125
|
+
fi
|
|
@@ -1,5 +1,45 @@
|
|
|
1
|
-
#!/bin/
|
|
2
|
-
|
|
1
|
+
#!/usr/bin/env bash
|
|
2
|
+
# Copyright (c) 2015-2026 Dotfiles. All rights reserved.
|
|
3
|
+
## Create compressed backup of home directory.
|
|
4
|
+
##
|
|
5
|
+
## Archives the home directory (excluding cache and trash) to a timestamped
|
|
6
|
+
# shellcheck disable=SC1091
|
|
7
|
+
## .tgz file. Supports custom source and destination directories via
|
|
8
|
+
## environment variables.
|
|
9
|
+
##
|
|
10
|
+
## # Usage
|
|
11
|
+
## dot backup
|
|
12
|
+
## DOTFILES_BACKUP_DIR=/mnt/backup dot backup
|
|
13
|
+
##
|
|
14
|
+
## # Dependencies
|
|
15
|
+
## - tar: Archive creation
|
|
16
|
+
##
|
|
17
|
+
## # Environment Variables
|
|
18
|
+
## | Variable | Default | Description |
|
|
19
|
+
## |----------|---------|-------------|
|
|
20
|
+
## | DOTFILES_BACKUP_DIR | ~/.backups | Backup destination |
|
|
21
|
+
## | DOTFILES_BACKUP_SRC | ~/ | Source directory |
|
|
22
|
+
##
|
|
23
|
+
## # Platform Notes
|
|
24
|
+
## - macOS: Uses BSD tar
|
|
25
|
+
## - Linux: Uses GNU tar
|
|
26
|
+
## - WSL: Backup stored in Linux filesystem for performance
|
|
27
|
+
##
|
|
28
|
+
## # Security
|
|
29
|
+
## Does not encrypt backups. Use age/gpg for sensitive data.
|
|
30
|
+
##
|
|
31
|
+
## # Idempotency
|
|
32
|
+
## Creates new timestamped backup on each run.
|
|
33
|
+
|
|
34
|
+
set -euo pipefail
|
|
35
|
+
|
|
36
|
+
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
37
|
+
# shellcheck source=../dot/lib/ui.sh
|
|
38
|
+
# shellcheck disable=SC1091
|
|
39
|
+
source "$SCRIPT_DIR/../dot/lib/ui.sh"
|
|
40
|
+
|
|
41
|
+
ui_init
|
|
42
|
+
ui_header "Backup"
|
|
3
43
|
|
|
4
44
|
BACKUP_DIR="${DOTFILES_BACKUP_DIR:-$HOME/.backups}"
|
|
5
45
|
SRC_DIR="${DOTFILES_BACKUP_SRC:-$HOME}"
|
|
@@ -9,9 +49,9 @@ OUT="$BACKUP_DIR/dotfiles-backup-$STAMP.tgz"
|
|
|
9
49
|
mkdir -p "$BACKUP_DIR"
|
|
10
50
|
|
|
11
51
|
if ! tar --exclude="$HOME/.cache" --exclude="$HOME/.local/share/Trash" -czf "$OUT" "$SRC_DIR"; then
|
|
12
|
-
|
|
52
|
+
ui_err "Backup failed"
|
|
13
53
|
rm -f "$OUT"
|
|
14
54
|
exit 1
|
|
15
55
|
fi
|
|
16
56
|
|
|
17
|
-
|
|
57
|
+
ui_ok "Backup written" "$OUT"
|
|
@@ -1,29 +1,51 @@
|
|
|
1
|
-
#!/bin/
|
|
2
|
-
|
|
1
|
+
#!/usr/bin/env bash
|
|
2
|
+
# Copyright (c) 2015-2026 Dotfiles. All rights reserved.
|
|
3
|
+
set -euo pipefail
|
|
3
4
|
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
5
|
+
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
6
|
+
# shellcheck source=../dot/lib/ui.sh
|
|
7
|
+
# shellcheck disable=SC1091
|
|
8
|
+
source "$SCRIPT_DIR/../dot/lib/ui.sh"
|
|
9
|
+
# shellcheck source=../dot/lib/platform.sh
|
|
10
|
+
# shellcheck disable=SC1091
|
|
11
|
+
source "$SCRIPT_DIR/../dot/lib/platform.sh"
|
|
12
|
+
|
|
13
|
+
DRY_RUN=0
|
|
14
|
+
for arg in "$@"; do
|
|
15
|
+
case "$arg" in --dry-run | -n) DRY_RUN=1 ;; esac
|
|
16
|
+
done
|
|
17
|
+
_run_cmd() {
|
|
18
|
+
if [[ "$DRY_RUN" -eq 1 ]]; then ui_info "[dry-run]" "$*"; else "$@"; fi
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
ui_init
|
|
22
|
+
ui_header "DNS-over-HTTPS"
|
|
23
|
+
|
|
24
|
+
if [[ "$DRY_RUN" -eq 1 ]]; then
|
|
25
|
+
ui_info "Mode" "dry-run (no changes will be made)"
|
|
26
|
+
elif [ "${DOTFILES_DOH:-}" != "1" ]; then
|
|
27
|
+
ui_warn "DoH" "disabled by default"
|
|
28
|
+
ui_info "Re-run" "DOTFILES_DOH=1"
|
|
7
29
|
exit 1
|
|
8
30
|
fi
|
|
9
31
|
|
|
10
|
-
case "$(
|
|
11
|
-
|
|
32
|
+
case "$(dot_platform_id)" in
|
|
33
|
+
linux | wsl)
|
|
12
34
|
if command -v resolvectl >/dev/null; then
|
|
13
|
-
|
|
14
|
-
sudo resolvectl dns-over-https on
|
|
15
|
-
sudo resolvectl dns 1.1.1.1 1.0.0.1
|
|
35
|
+
ui_info "Enabling" "systemd-resolved DoH (Cloudflare)"
|
|
36
|
+
_run_cmd sudo resolvectl dns-over-https on
|
|
37
|
+
_run_cmd sudo resolvectl dns 1.1.1.1 1.0.0.1
|
|
16
38
|
else
|
|
17
|
-
|
|
39
|
+
ui_err "systemd-resolved" "not detected"
|
|
18
40
|
exit 1
|
|
19
41
|
fi
|
|
20
42
|
;;
|
|
21
|
-
|
|
22
|
-
|
|
43
|
+
macos)
|
|
44
|
+
ui_info "Configure" "DoH in your browser"
|
|
23
45
|
exit 0
|
|
24
46
|
;;
|
|
25
47
|
*)
|
|
26
|
-
|
|
48
|
+
ui_err "Unsupported OS" "DoH config"
|
|
27
49
|
exit 1
|
|
28
50
|
;;
|
|
29
51
|
esac
|
|
@@ -1,39 +1,54 @@
|
|
|
1
|
-
#!/bin/
|
|
2
|
-
|
|
1
|
+
#!/usr/bin/env bash
|
|
2
|
+
# Copyright (c) 2015-2026 Dotfiles. All rights reserved.
|
|
3
|
+
set -euo pipefail
|
|
3
4
|
|
|
4
|
-
|
|
5
|
-
|
|
5
|
+
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
6
|
+
# shellcheck source=../dot/lib/ui.sh
|
|
7
|
+
# shellcheck disable=SC1091
|
|
8
|
+
source "$SCRIPT_DIR/../dot/lib/ui.sh"
|
|
9
|
+
# shellcheck source=../dot/lib/platform.sh
|
|
10
|
+
# shellcheck disable=SC1091
|
|
11
|
+
source "$SCRIPT_DIR/../dot/lib/platform.sh"
|
|
12
|
+
|
|
13
|
+
ui_init
|
|
14
|
+
ui_header "Encryption Check"
|
|
15
|
+
|
|
16
|
+
case "$(dot_platform_id)" in
|
|
17
|
+
macos)
|
|
6
18
|
if command -v fdesetup >/dev/null; then
|
|
7
19
|
status=$(fdesetup status || true)
|
|
8
20
|
echo "$status"
|
|
9
|
-
echo "$status" | grep -qi "FileVault is On" &&
|
|
10
|
-
|
|
21
|
+
echo "$status" | grep -qi "FileVault is On" && {
|
|
22
|
+
ui_ok "FileVault" "On"
|
|
23
|
+
exit 0
|
|
24
|
+
}
|
|
25
|
+
ui_warn "FileVault" "appears to be off"
|
|
11
26
|
exit 1
|
|
12
27
|
else
|
|
13
|
-
|
|
28
|
+
ui_err "fdesetup" "not found"
|
|
14
29
|
exit 1
|
|
15
30
|
fi
|
|
16
31
|
;;
|
|
17
|
-
|
|
32
|
+
linux | wsl)
|
|
18
33
|
if command -v lsblk >/dev/null; then
|
|
19
34
|
lsblk_output=$(lsblk -f)
|
|
20
35
|
if command -v rg >/dev/null; then
|
|
21
36
|
if echo "$lsblk_output" | rg -i "crypto|luks" >/dev/null; then
|
|
22
|
-
|
|
37
|
+
ui_ok "LUKS" "encrypted block device detected"
|
|
23
38
|
exit 0
|
|
24
39
|
fi
|
|
25
40
|
else
|
|
26
41
|
if echo "$lsblk_output" | grep -Ei "crypto|luks" >/dev/null; then
|
|
27
|
-
|
|
42
|
+
ui_ok "LUKS" "encrypted block device detected"
|
|
28
43
|
exit 0
|
|
29
44
|
fi
|
|
30
45
|
fi
|
|
31
|
-
|
|
46
|
+
ui_warn "LUKS" "no crypto volume detected"
|
|
32
47
|
exit 1
|
|
33
48
|
fi
|
|
34
49
|
;;
|
|
35
50
|
*)
|
|
36
|
-
|
|
51
|
+
ui_err "Unsupported OS" "encryption check"
|
|
37
52
|
exit 1
|
|
38
53
|
;;
|
|
39
54
|
esac
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
#!/usr/bin/env bash
|
|
2
|
+
# Copyright (c) 2015-2026 Dotfiles. All rights reserved.
|
|
2
3
|
# Security Policy Enforcement Script
|
|
3
4
|
# This script enforces security policies across the dotfiles repository
|
|
4
5
|
|
|
@@ -12,24 +13,18 @@ readonly REPO_ROOT
|
|
|
12
13
|
readonly POLICIES_DIR="${REPO_ROOT}/.github/security-policies"
|
|
13
14
|
readonly LOG_FILE="${REPO_ROOT}/.security-audit.log"
|
|
14
15
|
|
|
15
|
-
#
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
readonly YELLOW='\033[1;33m'
|
|
20
|
-
readonly NC='\033[0m'
|
|
21
|
-
else
|
|
22
|
-
readonly RED='' GREEN='' YELLOW='' NC=''
|
|
23
|
-
fi
|
|
16
|
+
# shellcheck source=../dot/lib/ui.sh
|
|
17
|
+
# shellcheck disable=SC1091
|
|
18
|
+
source "${SCRIPT_DIR}/../dot/lib/ui.sh"
|
|
19
|
+
ui_init
|
|
24
20
|
|
|
25
|
-
# Logging function
|
|
21
|
+
# Logging function (also writes to log file)
|
|
26
22
|
log() {
|
|
27
23
|
local level="$1"
|
|
28
24
|
shift
|
|
29
25
|
local message="$*"
|
|
30
26
|
local timestamp
|
|
31
27
|
timestamp=$(date -u '+%Y-%m-%d %H:%M:%S UTC')
|
|
32
|
-
|
|
33
28
|
echo "[${timestamp}] [${level}] ${message}" | tee -a "${LOG_FILE}"
|
|
34
29
|
}
|
|
35
30
|
|
|
@@ -113,7 +108,7 @@ check_file_permissions() {
|
|
|
113
108
|
while IFS= read -r -d '' file; do
|
|
114
109
|
if [[ -f "$file" ]]; then
|
|
115
110
|
local perms
|
|
116
|
-
perms=$(stat -c %a "$file" 2>/dev/null || stat -f %
|
|
111
|
+
perms=$(stat -c %a "$file" 2>/dev/null || stat -f %OLp "$file")
|
|
117
112
|
if [[ $perms -gt 755 ]]; then
|
|
118
113
|
log "WARN" "❌ Overly permissive file: ${file} (${perms})"
|
|
119
114
|
violations=$((violations + 1))
|
|
@@ -321,13 +316,13 @@ main() {
|
|
|
321
316
|
|
|
322
317
|
# Final result
|
|
323
318
|
if [[ $total_violations -eq 0 ]]; then
|
|
324
|
-
|
|
319
|
+
ui_ok "All security checks passed"
|
|
325
320
|
log "INFO" "Security policy enforcement completed successfully"
|
|
326
321
|
exit 0
|
|
327
322
|
else
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
|
|
323
|
+
ui_err "$total_violations violations" "Security policy enforcement failed"
|
|
324
|
+
ui_warn "Details" "Check ${LOG_FILE}"
|
|
325
|
+
ui_warn "Report" "Review security-report.md"
|
|
331
326
|
log "ERROR" "Security policy enforcement failed with ${total_violations} violations"
|
|
332
327
|
exit 1
|
|
333
328
|
fi
|
|
@@ -1,34 +1,90 @@
|
|
|
1
|
-
#!/bin/
|
|
2
|
-
|
|
1
|
+
#!/usr/bin/env bash
|
|
2
|
+
# Copyright (c) 2015-2026 Dotfiles. All rights reserved.
|
|
3
|
+
## Configure system firewall with secure defaults.
|
|
4
|
+
##
|
|
5
|
+
## Enables firewall with deny-by-default policy and minimal exceptions.
|
|
6
|
+
## Requires explicit opt-in via DOTFILES_FIREWALL=1 to prevent accidental
|
|
7
|
+
## lockouts.
|
|
8
|
+
##
|
|
9
|
+
## # Usage
|
|
10
|
+
## DOTFILES_FIREWALL=1 dot firewall
|
|
11
|
+
##
|
|
12
|
+
## # Dependencies
|
|
13
|
+
## - macOS: socketfilterfw (built-in)
|
|
14
|
+
## - Linux: ufw (Uncomplicated Firewall)
|
|
15
|
+
##
|
|
16
|
+
## # Platform Notes
|
|
17
|
+
## ### Platform: macOS
|
|
18
|
+
## - Enables Application Firewall via socketfilterfw
|
|
19
|
+
## - Enables stealth mode (no ICMP responses)
|
|
20
|
+
## - Allows signed applications
|
|
21
|
+
##
|
|
22
|
+
## ### Platform: Linux
|
|
23
|
+
## - Configures UFW with deny incoming / allow outgoing
|
|
24
|
+
## - Allows OpenSSH to prevent lockout
|
|
25
|
+
## - Requires ufw package installed
|
|
26
|
+
##
|
|
27
|
+
## # Security
|
|
28
|
+
## **Requires sudo.** All changes logged to dotfiles.log.
|
|
29
|
+
##
|
|
30
|
+
## # Side Effects
|
|
31
|
+
## - Modifies system firewall rules
|
|
32
|
+
## - May block existing connections
|
|
33
|
+
##
|
|
34
|
+
## # Idempotency
|
|
35
|
+
## Safe to run repeatedly. Applies same rules each time.
|
|
3
36
|
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
37
|
+
set -euo pipefail
|
|
38
|
+
|
|
39
|
+
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
40
|
+
# shellcheck source=../dot/lib/ui.sh
|
|
41
|
+
# shellcheck disable=SC1091
|
|
42
|
+
source "$SCRIPT_DIR/../dot/lib/ui.sh"
|
|
43
|
+
# shellcheck source=../dot/lib/platform.sh
|
|
44
|
+
# shellcheck disable=SC1091
|
|
45
|
+
source "$SCRIPT_DIR/../dot/lib/platform.sh"
|
|
46
|
+
|
|
47
|
+
DRY_RUN=0
|
|
48
|
+
for arg in "$@"; do
|
|
49
|
+
case "$arg" in --dry-run | -n) DRY_RUN=1 ;; esac
|
|
50
|
+
done
|
|
51
|
+
_run_cmd() {
|
|
52
|
+
if [[ "$DRY_RUN" -eq 1 ]]; then ui_info "[dry-run]" "$*"; else "$@"; fi
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
ui_init
|
|
56
|
+
ui_header "Firewall"
|
|
57
|
+
|
|
58
|
+
if [[ "$DRY_RUN" -eq 1 ]]; then
|
|
59
|
+
ui_info "Mode" "dry-run (no changes will be made)"
|
|
60
|
+
elif [ "${DOTFILES_FIREWALL:-}" != "1" ]; then
|
|
61
|
+
ui_warn "Firewall" "disabled by default"
|
|
62
|
+
ui_info "Re-run" "DOTFILES_FIREWALL=1"
|
|
7
63
|
exit 1
|
|
8
64
|
fi
|
|
9
65
|
|
|
10
|
-
case "$(
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
sudo /usr/libexec/ApplicationFirewall/socketfilterfw --setglobalstate on
|
|
14
|
-
sudo /usr/libexec/ApplicationFirewall/socketfilterfw --setallowsigned on
|
|
15
|
-
sudo /usr/libexec/ApplicationFirewall/socketfilterfw --setallowsignedapp on
|
|
16
|
-
sudo /usr/libexec/ApplicationFirewall/socketfilterfw --setstealthmode on
|
|
66
|
+
case "$(dot_platform_id)" in
|
|
67
|
+
macos)
|
|
68
|
+
ui_info "Enabling" "macOS firewall"
|
|
69
|
+
_run_cmd sudo /usr/libexec/ApplicationFirewall/socketfilterfw --setglobalstate on
|
|
70
|
+
_run_cmd sudo /usr/libexec/ApplicationFirewall/socketfilterfw --setallowsigned on
|
|
71
|
+
_run_cmd sudo /usr/libexec/ApplicationFirewall/socketfilterfw --setallowsignedapp on
|
|
72
|
+
_run_cmd sudo /usr/libexec/ApplicationFirewall/socketfilterfw --setstealthmode on
|
|
17
73
|
;;
|
|
18
|
-
|
|
74
|
+
linux | wsl)
|
|
19
75
|
if command -v ufw >/dev/null; then
|
|
20
|
-
|
|
21
|
-
sudo ufw default deny incoming
|
|
22
|
-
sudo ufw default allow outgoing
|
|
23
|
-
sudo ufw allow OpenSSH
|
|
24
|
-
sudo ufw --force enable
|
|
76
|
+
ui_info "Enabling" "UFW"
|
|
77
|
+
_run_cmd sudo ufw default deny incoming
|
|
78
|
+
_run_cmd sudo ufw default allow outgoing
|
|
79
|
+
_run_cmd sudo ufw allow OpenSSH
|
|
80
|
+
_run_cmd sudo ufw --force enable
|
|
25
81
|
else
|
|
26
|
-
|
|
82
|
+
ui_err "ufw" "not installed; re-run after install"
|
|
27
83
|
exit 1
|
|
28
84
|
fi
|
|
29
85
|
;;
|
|
30
86
|
*)
|
|
31
|
-
|
|
87
|
+
ui_err "Unsupported OS" "firewall setup"
|
|
32
88
|
exit 1
|
|
33
89
|
;;
|
|
34
90
|
esac
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
#!/usr/bin/env bash
|
|
2
2
|
# MIT License
|
|
3
|
-
# Copyright (c) 2026
|
|
3
|
+
# Copyright (c) 2026
|
|
4
4
|
# See LICENSE file for details.
|
|
5
5
|
|
|
6
6
|
# Script: lock-configs.sh
|
|
7
7
|
# Description: Toggles immutability flags on critical configuration files.
|
|
8
8
|
# Usage: lock-configs [lock|unlock]
|
|
9
9
|
|
|
10
|
-
set -
|
|
10
|
+
set -euo pipefail
|
|
11
11
|
|
|
12
12
|
ACTION="${1:-lock}"
|
|
13
13
|
CRITICAL_FILES=(
|
|
@@ -1,33 +1,55 @@
|
|
|
1
|
-
#!/bin/
|
|
2
|
-
|
|
1
|
+
#!/usr/bin/env bash
|
|
2
|
+
# Copyright (c) 2015-2026 Dotfiles. All rights reserved.
|
|
3
|
+
set -euo pipefail
|
|
3
4
|
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
5
|
+
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
6
|
+
# shellcheck source=../dot/lib/ui.sh
|
|
7
|
+
# shellcheck disable=SC1091
|
|
8
|
+
source "$SCRIPT_DIR/../dot/lib/ui.sh"
|
|
9
|
+
# shellcheck source=../dot/lib/platform.sh
|
|
10
|
+
# shellcheck disable=SC1091
|
|
11
|
+
source "$SCRIPT_DIR/../dot/lib/platform.sh"
|
|
12
|
+
|
|
13
|
+
DRY_RUN=0
|
|
14
|
+
for arg in "$@"; do
|
|
15
|
+
case "$arg" in --dry-run | -n) DRY_RUN=1 ;; esac
|
|
16
|
+
done
|
|
17
|
+
_run_cmd() {
|
|
18
|
+
if [[ "$DRY_RUN" -eq 1 ]]; then ui_info "[dry-run]" "$*"; else "$@"; fi
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
ui_init
|
|
22
|
+
ui_header "Lock Screen"
|
|
23
|
+
|
|
24
|
+
if [[ "$DRY_RUN" -eq 1 ]]; then
|
|
25
|
+
ui_info "Mode" "dry-run (no changes will be made)"
|
|
26
|
+
elif [ "${DOTFILES_LOCK:-}" != "1" ]; then
|
|
27
|
+
ui_warn "Lock screen" "disabled by default"
|
|
28
|
+
ui_info "Re-run" "DOTFILES_LOCK=1"
|
|
7
29
|
exit 1
|
|
8
30
|
fi
|
|
9
31
|
|
|
10
|
-
case "$(
|
|
11
|
-
|
|
32
|
+
case "$(dot_platform_id)" in
|
|
33
|
+
linux | wsl)
|
|
12
34
|
if command -v gsettings >/dev/null; then
|
|
13
|
-
|
|
14
|
-
gsettings set org.gnome.desktop.screensaver lock-enabled true || true
|
|
15
|
-
gsettings set org.gnome.desktop.session idle-delay 300 || true
|
|
16
|
-
gsettings set org.gnome.desktop.screensaver lock-delay 0 || true
|
|
35
|
+
ui_info "Enabling" "screen lock and idle timeout"
|
|
36
|
+
_run_cmd gsettings set org.gnome.desktop.screensaver lock-enabled true || true
|
|
37
|
+
_run_cmd gsettings set org.gnome.desktop.session idle-delay 300 || true
|
|
38
|
+
_run_cmd gsettings set org.gnome.desktop.screensaver lock-delay 0 || true
|
|
17
39
|
else
|
|
18
|
-
|
|
40
|
+
ui_err "gsettings" "not found"
|
|
19
41
|
exit 1
|
|
20
42
|
fi
|
|
21
43
|
;;
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
defaults write com.apple.screensaver askForPassword -int 1 || true
|
|
25
|
-
defaults write com.apple.screensaver askForPasswordDelay -int 0 || true
|
|
44
|
+
macos)
|
|
45
|
+
ui_info "Enabling" "lock on sleep and screensaver (macOS)"
|
|
46
|
+
_run_cmd defaults write com.apple.screensaver askForPassword -int 1 || true
|
|
47
|
+
_run_cmd defaults write com.apple.screensaver askForPasswordDelay -int 0 || true
|
|
26
48
|
# 5-minute idle timeout
|
|
27
|
-
defaults -currentHost write com.apple.screensaver idleTime -int 300 || true
|
|
49
|
+
_run_cmd defaults -currentHost write com.apple.screensaver idleTime -int 300 || true
|
|
28
50
|
;;
|
|
29
51
|
*)
|
|
30
|
-
|
|
52
|
+
ui_err "Unsupported OS" "lock screen hardening"
|
|
31
53
|
exit 1
|
|
32
54
|
;;
|
|
33
55
|
esac
|