@sebastienrousseau/dotfiles 0.2.520 → 0.2.521
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 +18 -0
- package/LICENSE-APACHE +190 -0
- package/LICENSE-MIT +21 -0
- package/README.md +43 -37
- package/install.sh +76 -10
- package/package.json +7 -7
- package/tools/README.md +49 -0
- package/tools/ci/install-chezmoi-verified.sh +68 -0
- package/docs/.vitepress/reports/localization-readability-audit.md +0 -73
- package/docs/AI.md +0 -179
- package/docs/ARCHITECTURE.md +0 -117
- package/docs/CNAME +0 -1
- package/docs/CONFIG_STRATEGY.md +0 -124
- package/docs/COPYRIGHT +0 -7
- package/docs/ECOSYSTEM.md +0 -220
- package/docs/GOLD-STANDARD-AUDIT.md +0 -352
- package/docs/GOVERNANCE.md +0 -98
- package/docs/MAINTAINERS.md +0 -41
- package/docs/MINIMUM-TOOLCHAIN.md +0 -100
- package/docs/NAMING_CONVENTIONS.md +0 -102
- package/docs/OPENCODE.md +0 -127
- package/docs/README.md +0 -84
- package/docs/STRUCTURE.md +0 -102
- package/docs/adr/ADR-001-ci-cd-pipeline.md +0 -118
- package/docs/adr/ADR-002-shell-performance.md +0 -130
- package/docs/adr/ADR-003-security-first.md +0 -158
- package/docs/adr/ADR-004-cli-architecture.md +0 -171
- package/docs/adr/ADR-005-chezmoi-choice.md +0 -99
- package/docs/adr/ADR-006-shell-selection.md +0 -124
- package/docs/adr/ADR-007-multi-shell-parity.md +0 -62
- package/docs/adr/ADR-008-alias-system-architecture.md +0 -95
- package/docs/adr/ADR-009-wallpaper-driven-theming.md +0 -131
- package/docs/adr/ADR-010-starship-transient-prompt.md +0 -144
- package/docs/adr/ADR-011-nushell-tier3-keep.md +0 -144
- package/docs/adr/ADR-012-ai-fleet-local-proxy.md +0 -79
- package/docs/adr/README.md +0 -40
- package/docs/architecture/AI_COST_OPTIMIZATION.md +0 -144
- package/docs/architecture/ARCHITECTURE.md +0 -20
- package/docs/architecture/INTEROP.md +0 -44
- package/docs/architecture/REPO_LAYOUT.md +0 -241
- package/docs/architecture/WALKTHROUGH.md +0 -86
- package/docs/architecture/fleet-deployment.md +0 -77
- package/docs/archive/EUXIS_2026_REVIEW.md +0 -127
- package/docs/archive/LEGACY_ROADMAP.md +0 -6
- package/docs/archive/MILESTONE_v0.2.493.md +0 -47
- package/docs/archive/PLAN.md +0 -199
- package/docs/archive/REPO_AUDIT.md +0 -31
- package/docs/articles/.pages +0 -6
- package/docs/articles/2026-07-05-custom-mkdocs-material-dark-theme.md +0 -216
- package/docs/articles/2026-07-05-fish-startup-abbr.md +0 -153
- package/docs/articles/2026-07-05-master-to-main-rename-runbook.md +0 -128
- package/docs/articles/index.md +0 -36
- package/docs/guides/INSTALL.md +0 -144
- package/docs/guides/MACOS_ICLOUD_SYMLINKS.md +0 -121
- package/docs/guides/NEOVIM_IDE_GUIDE.md +0 -61
- package/docs/guides/THEMING.md +0 -230
- package/docs/guides/TROUBLESHOOTING.md +0 -176
- package/docs/guides/WSL2_NIX_TROUBLESHOOTING.md +0 -792
- package/docs/index.md +0 -132
- package/docs/interop/A2A.md +0 -39
- package/docs/interop/POWERSHELL.md +0 -102
- package/docs/manual/00-introduction.md +0 -89
- package/docs/manual/01-concepts/01-architecture.md +0 -138
- package/docs/manual/01-concepts/02-trust-model.md +0 -183
- package/docs/manual/01-concepts/03-theme-engine.md +0 -186
- package/docs/manual/01-concepts/04-fleet.md +0 -148
- package/docs/manual/01-concepts/05-self-healing.md +0 -204
- package/docs/manual/02-tutorials/01-first-install.md +0 -197
- package/docs/manual/02-tutorials/02-add-wallpaper.md +0 -216
- package/docs/manual/02-tutorials/03-create-profile.md +0 -244
- package/docs/manual/02-tutorials/04-encrypt-secret.md +0 -281
- package/docs/manual/02-tutorials/05-deploy-fleet.md +0 -283
- package/docs/manual/03-reference/01-dot-cli.md +0 -475
- package/docs/manual/03-reference/02-config-files.md +0 -265
- package/docs/manual/03-reference/03-environment.md +0 -124
- package/docs/manual/03-reference/04-templates.md +0 -190
- package/docs/manual/03-reference/05-feature-flags.md +0 -187
- package/docs/manual/04-cookbook/01-recipes.md +0 -285
- package/docs/manual/04-cookbook/02-troubleshooting.md +0 -351
- package/docs/manual/04-cookbook/03-faq.md +0 -175
- package/docs/manual/05-appendices/A-platform-matrix.md +0 -101
- package/docs/manual/05-appendices/B-security-checklist.md +0 -85
- package/docs/manual/05-appendices/C-glossary.md +0 -40
- package/docs/manual/05-appendices/D-bibliography.md +0 -58
- package/docs/manual/05-appendices/E-license.md +0 -38
- package/docs/manual/_toc.yml +0 -58
- package/docs/manual/command-index.md +0 -175
- package/docs/manual/concept-index.md +0 -170
- package/docs/manual/index.md +0 -66
- package/docs/migration/README.md +0 -81
- package/docs/migration/from-bare-git-repo.md +0 -156
- package/docs/migration/from-gnu-stow.md +0 -165
- package/docs/migration/from-plain-chezmoi.md +0 -148
- package/docs/migration/from-yadm.md +0 -187
- package/docs/operations/ARCHITECTURE_ROADMAP.md +0 -7
- package/docs/operations/ATTESTATION.md +0 -44
- package/docs/operations/CI_CADENCE.md +0 -107
- package/docs/operations/CI_COMPOSITES.md +0 -156
- package/docs/operations/COMPLETIONS.md +0 -123
- package/docs/operations/COVERAGE.md +0 -204
- package/docs/operations/DRIFT.md +0 -107
- package/docs/operations/HARD_AUDIT_2026.md +0 -631
- package/docs/operations/MAINTENANCE.md +0 -63
- package/docs/operations/MANIFEST.md +0 -127
- package/docs/operations/MIGRATION.md +0 -109
- package/docs/operations/OPERATIONS.md +0 -188
- package/docs/operations/PERFORMANCE.md +0 -133
- package/docs/operations/PERFORMANCE_BUDGETS.md +0 -196
- package/docs/operations/REGISTRY.md +0 -90
- package/docs/operations/RELEASE_PIPELINE.md +0 -128
- package/docs/operations/RELIABILITY.md +0 -122
- package/docs/operations/RFC_v0_2_503_reorganization.md +0 -280
- package/docs/operations/ROADMAP.md +0 -10
- package/docs/operations/ROADMAP_2026.md +0 -7
- package/docs/operations/ROADMAP_V0_2_503.md +0 -10
- package/docs/operations/TESTING.md +0 -216
- package/docs/operations/TRACEABILITY.md +0 -44
- package/docs/operations/TRUSTED_AGENT_WORKSTATION.md +0 -65
- package/docs/operations/VERSION_SYNC.md +0 -393
- package/docs/packaging.md +0 -222
- package/docs/reference/ALIASES.md +0 -131
- package/docs/reference/ALIASES_CHEATSHEET.md +0 -32
- package/docs/reference/ALIASES_DEPRECATIONS.md +0 -13
- package/docs/reference/FEATURE-MATRIX.md +0 -646
- package/docs/reference/FEATURES.md +0 -66
- package/docs/reference/FONTS.md +0 -112
- package/docs/reference/POWERSHELL_PARITY.md +0 -82
- package/docs/reference/PROFILES.md +0 -69
- package/docs/reference/SCREENSHOTS.md +0 -121
- package/docs/reference/SCRIPTS.md +0 -71
- package/docs/reference/SUPPORT_MATRIX.md +0 -80
- package/docs/reference/THEMES.md +0 -117
- package/docs/reference/TOOLS.md +0 -110
- package/docs/reference/UTILS.md +0 -243
- package/docs/registry.json +0 -6
- package/docs/schema/dot-env-v1.json +0 -110
- package/docs/schema/dot-registry-v1.json +0 -33
- package/docs/security/AI_ACT_COMPLIANCE.md +0 -94
- package/docs/security/AUDIT_BYPASS.md +0 -103
- package/docs/security/AUTOMATION_SECRETS.md +0 -26
- package/docs/security/CI_EGRESS_ALLOWLIST.md +0 -127
- package/docs/security/CI_PINNING.md +0 -129
- package/docs/security/COMMIT_SIGNING.md +0 -138
- package/docs/security/COMPLIANCE.md +0 -458
- package/docs/security/DEPS_DEV_EXCEPTIONS.md +0 -86
- package/docs/security/DISCLOSURE.md +0 -130
- package/docs/security/ENCRYPTION.md +0 -57
- package/docs/security/FMEA.md +0 -159
- package/docs/security/FUZZING.md +0 -209
- package/docs/security/HISTORY_FILTERING.md +0 -132
- package/docs/security/INCIDENT_RESPONSE.md +0 -579
- package/docs/security/INSTALL_VERIFICATION.md +0 -122
- package/docs/security/KEYS.md +0 -49
- package/docs/security/KEY_ROTATION.md +0 -303
- package/docs/security/MCP_POLICY.md +0 -78
- package/docs/security/POLICY_RELEASES.md +0 -37
- package/docs/security/README.md +0 -28
- package/docs/security/SCORECARD.md +0 -195
- package/docs/security/SECRETS.md +0 -158
- package/docs/security/SECURITY.md +0 -45
- package/docs/security/SECURITY_CHECKLIST.md +0 -55
- package/docs/security/SHELL_EXEMPTIONS.md +0 -145
- package/docs/security/SOUP_REGISTER.md +0 -36
- package/docs/security/THREAT_MODEL.md +0 -130
- package/docs/security/VERIFICATION_VALIDATION.md +0 -228
- package/docs/security/VERIFY_RELEASE.md +0 -201
- package/docs/security/security-pubkey.asc +0 -15
- package/docs/stylesheets/extra.css +0 -444
- package/docs/themes/README.md +0 -10
- package/docs/themes/VISUAL_INTEGRITY_REPORT.md +0 -30
- package/docs/themes/hero-shot.svg +0 -78
- package/scripts/README.md +0 -123
- package/scripts/ci/check-copyright-headers.sh +0 -8
- package/scripts/ci/check-shell-preamble.sh +0 -8
- package/scripts/ci/guard-gitleaks-checkout.sh +0 -8
- package/scripts/demo/record.sh +0 -43
- package/scripts/diagnostics/a2a-conformance.sh +0 -163
- package/scripts/diagnostics/alias-governance.sh +0 -165
- package/scripts/diagnostics/aliases-cheatsheet.sh +0 -74
- package/scripts/diagnostics/aliases-manifest.sh +0 -77
- package/scripts/diagnostics/attest-verify.sh +0 -147
- package/scripts/diagnostics/benchmark.sh +0 -408
- package/scripts/diagnostics/conflicts.sh +0 -73
- package/scripts/diagnostics/doctor-unified.sh +0 -43
- package/scripts/diagnostics/doctor.sh +0 -797
- package/scripts/diagnostics/drift-dashboard.sh +0 -203
- package/scripts/diagnostics/health.sh +0 -656
- package/scripts/diagnostics/history-analysis.sh +0 -86
- package/scripts/diagnostics/mcp-doctor.sh +0 -582
- package/scripts/diagnostics/perf.sh +0 -453
- package/scripts/diagnostics/scorecard.sh +0 -120
- package/scripts/diagnostics/secret-governance.sh +0 -65
- package/scripts/diagnostics/security-score.sh +0 -467
- package/scripts/diagnostics/smoke-test.sh +0 -88
- package/scripts/diagnostics/snapshot.sh +0 -90
- package/scripts/diagnostics/verify.sh +0 -108
- package/scripts/diagnostics/verify_state.sh +0 -73
- package/scripts/diagnostics/version-locks.sh +0 -94
- package/scripts/diagnostics/workstation-attestation.sh +0 -212
- package/scripts/dot/commands/agent.sh +0 -535
- package/scripts/dot/commands/agents.sh +0 -352
- package/scripts/dot/commands/ai.sh +0 -600
- package/scripts/dot/commands/aliases.sh +0 -277
- package/scripts/dot/commands/appearance.sh +0 -110
- package/scripts/dot/commands/completion.sh +0 -171
- package/scripts/dot/commands/core.sh +0 -217
- package/scripts/dot/commands/diagnostics.sh +0 -265
- package/scripts/dot/commands/env-emit.sh +0 -203
- package/scripts/dot/commands/fleet.sh +0 -711
- package/scripts/dot/commands/init.sh +0 -185
- package/scripts/dot/commands/lint.sh +0 -208
- package/scripts/dot/commands/manual.sh +0 -169
- package/scripts/dot/commands/meta.sh +0 -438
- package/scripts/dot/commands/patterns.sh +0 -55
- package/scripts/dot/commands/registry.sh +0 -455
- package/scripts/dot/commands/restore.sh +0 -232
- package/scripts/dot/commands/secrets.sh +0 -296
- package/scripts/dot/commands/security.sh +0 -102
- package/scripts/dot/commands/tools.sh +0 -570
- package/scripts/dot/data/alias-deprecations.tsv +0 -2
- package/scripts/dot/powershell/Dot.psm1 +0 -319
- package/scripts/fonts/install-nerd-fonts.sh +0 -75
- package/scripts/fonts/patch-fonts.sh +0 -36
- package/scripts/git-hooks/install.sh +0 -12
- package/scripts/git-hooks/pre-commit +0 -12
- package/scripts/git-hooks/pre-commit-audit.sh +0 -146
- package/scripts/git-hooks/pre-push +0 -105
- package/scripts/git-hooks/prepare-commit-msg +0 -29
- package/scripts/lib/secrets_provider.sh +0 -200
- package/scripts/nvim/headless-upgrade.lua +0 -81
- package/scripts/ops/ai-setup.sh +0 -71
- package/scripts/ops/bundle.sh +0 -104
- package/scripts/ops/chaos.sh +0 -50
- package/scripts/ops/chezmoi-apply.sh +0 -333
- package/scripts/ops/chezmoi-diff.sh +0 -16
- package/scripts/ops/chezmoi-remove.sh +0 -46
- package/scripts/ops/chezmoi-update.sh +0 -67
- package/scripts/ops/heal-chezmoi.sh +0 -87
- package/scripts/ops/heal-system.sh +0 -129
- package/scripts/ops/heal-tools.sh +0 -297
- package/scripts/ops/heal.sh +0 -223
- package/scripts/ops/post-apply-repair.sh +0 -107
- package/scripts/ops/prewarm.sh +0 -128
- package/scripts/ops/release.sh +0 -262
- package/scripts/ops/rollback.sh +0 -613
- package/scripts/ops/setup.sh +0 -138
- package/scripts/ops/teleport.sh +0 -34
- package/scripts/qa/check-feature-matrix.sh +0 -296
- package/scripts/qa/check-version-consistency.sh +0 -12
- package/scripts/qa/coverage-baseline.sh +0 -61
- package/scripts/qa/docs-coverage.sh +0 -118
- package/scripts/qa/examples-coverage.sh +0 -94
- package/scripts/qa/powershell-contract.ps1 +0 -95
- package/scripts/qa/reliability-audit.sh +0 -139
- package/scripts/qa/scorecard-snapshot.sh +0 -128
- package/scripts/qa/traceability-coverage.sh +0 -124
- package/scripts/qa/validate-examples.sh +0 -90
- package/scripts/qa/wsl-contract.sh +0 -12
- package/scripts/secrets/age-init.sh +0 -82
- package/scripts/secrets/create-secrets-file.sh +0 -46
- package/scripts/secrets/encrypt-ssh-key.sh +0 -44
- package/scripts/security/backup.sh +0 -58
- package/scripts/security/check-disclosure-key-expiry.sh +0 -111
- package/scripts/security/dns-doh.sh +0 -52
- package/scripts/security/encryption-check.sh +0 -55
- package/scripts/security/enforce-policies.sh +0 -552
- package/scripts/security/firewall.sh +0 -91
- package/scripts/security/lock-configs.sh +0 -67
- package/scripts/security/lock-screen.sh +0 -56
- package/scripts/security/manage-secrets.sh +0 -429
- package/scripts/security/ssh-cert.sh +0 -204
- package/scripts/security/telemetry-kill.sh +0 -51
- package/scripts/security/usb-safety.sh +0 -52
- package/scripts/theme/apply-gnome-theme.sh +0 -333
- package/scripts/theme/extract-heic-frames.sh +0 -115
- package/scripts/theme/extract-theme.py +0 -1020
- package/scripts/theme/install-boot-logo.sh +0 -63
- package/scripts/theme/install-catppuccin-themes.sh +0 -371
- package/scripts/theme/install-cursors.sh +0 -26
- package/scripts/theme/install-file-icons.sh +0 -27
- package/scripts/theme/install-grub-theme.sh +0 -62
- package/scripts/theme/install-lock-icon.sh +0 -31
- package/scripts/theme/merge-wallpaper.sh +0 -146
- package/scripts/theme/rebuild-themes.sh +0 -603
- package/scripts/theme/switch.sh +0 -476
- package/scripts/theme/wallpaper-rotate.sh +0 -137
- package/scripts/theme/wallpaper-sync.sh +0 -690
- package/scripts/tools/cmatrix.sh +0 -22
- package/scripts/tools/detect-collisions.py +0 -103
- package/scripts/tools/emoji-picker.sh +0 -49
- package/scripts/tools/figlet-banner.sh +0 -19
- package/scripts/tools/log-rotate.sh +0 -31
- package/scripts/tools/lolcat-wrap.sh +0 -20
- package/scripts/tools/pipes.sh +0 -49
- package/scripts/tuning/linux.sh +0 -186
- package/scripts/tuning/macos.sh +0 -56
- package/scripts/uninstall.sh +0 -86
- package/scripts/verify-release-versions +0 -156
- package/scripts/version-sync.sh +0 -714
- package/templates/chezmoi-data/geekom-a9.toml.example +0 -21
- package/templates/chezmoi-data/mac-m1.toml.example +0 -16
- package/templates/chezmoi-data/mac-t2-linux.toml.example +0 -21
- package/templates/chezmoi-data/surface-pro-7p.toml.example +0 -21
- package/templates/projects/go/.github/workflows/ci.yml +0 -31
- package/templates/projects/go/README.md +0 -7
- package/templates/projects/go/cmd/__PROJECT_NAME__/main.go +0 -8
- package/templates/projects/go/go.mod +0 -3
- package/templates/projects/go/go.sum +0 -0
- package/templates/projects/molecule/README.md +0 -7
- package/templates/projects/molecule/converge.yml +0 -7
- package/templates/projects/molecule/molecule.yml +0 -16
- package/templates/projects/node/.github/workflows/ci.yml +0 -30
- package/templates/projects/node/README.md +0 -7
- package/templates/projects/node/package-lock.json +0 -12
- package/templates/projects/node/package.json +0 -10
- package/templates/projects/node/src/index.js +0 -3
- package/templates/projects/packer/README.md +0 -15
- package/templates/projects/packer/main.pkr.hcl +0 -15
- package/templates/projects/python/.github/workflows/ci.yml +0 -34
- package/templates/projects/python/README.md +0 -7
- package/templates/projects/python/pyproject.toml +0 -25
- package/templates/projects/python/src/__PROJECT_NAME__/__init__.py +0 -2
- package/templates/projects/python/tests/test_basic.py +0 -3
|
@@ -1,351 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
render_with_liquid: false
|
|
3
|
-
---
|
|
4
|
-
{% raw %}
|
|
5
|
-
|
|
6
|
-
# Cookbook: Troubleshooting
|
|
7
|
-
|
|
8
|
-
Symptom → cause → fix.
|
|
9
|
-
|
|
10
|
-
## Installation
|
|
11
|
-
|
|
12
|
-
### Symptom: `install.sh` fails with "chezmoi not found"
|
|
13
|
-
|
|
14
|
-
**Cause**: `/usr/local/bin` or `~/.local/bin` not in PATH at install time.
|
|
15
|
-
|
|
16
|
-
**Fix**:
|
|
17
|
-
|
|
18
|
-
```sh
|
|
19
|
-
export PATH="$HOME/.local/bin:$PATH"
|
|
20
|
-
bash -c "$(curl -fsSL https://raw.githubusercontent.com/sebastienrousseau/dotfiles/main/install.sh)"
|
|
21
|
-
```
|
|
22
|
-
|
|
23
|
-
### Symptom: "could not create directory ~/.local/share/chezmoi"
|
|
24
|
-
|
|
25
|
-
**Cause**: Permission issue on `~/.local`.
|
|
26
|
-
|
|
27
|
-
**Fix**:
|
|
28
|
-
|
|
29
|
-
```sh
|
|
30
|
-
mkdir -p ~/.local/share ~/.local/state ~/.local/bin
|
|
31
|
-
chmod 755 ~/.local ~/.local/share
|
|
32
|
-
```
|
|
33
|
-
|
|
34
|
-
### Symptom: Install hangs at "Downloading chezmoi"
|
|
35
|
-
|
|
36
|
-
**Cause**: Slow network or corporate proxy.
|
|
37
|
-
|
|
38
|
-
**Fix**:
|
|
39
|
-
|
|
40
|
-
```sh
|
|
41
|
-
export https_proxy=$HTTP_PROXY # if applicable
|
|
42
|
-
# Or pre-download chezmoi manually
|
|
43
|
-
brew install chezmoi # macOS
|
|
44
|
-
apt install chezmoi # Debian 13+
|
|
45
|
-
```
|
|
46
|
-
|
|
47
|
-
## Apply / Sync
|
|
48
|
-
|
|
49
|
-
### Symptom: `dot apply` reports "file modified, skipping"
|
|
50
|
-
|
|
51
|
-
**Cause**: Chezmoi detected local drift on a managed file.
|
|
52
|
-
|
|
53
|
-
**Fix**:
|
|
54
|
-
|
|
55
|
-
```sh
|
|
56
|
-
dot diff # see what differs
|
|
57
|
-
dot apply --force # overwrite local
|
|
58
|
-
# OR
|
|
59
|
-
dot add <path> # import local change to source
|
|
60
|
-
```
|
|
61
|
-
|
|
62
|
-
### Symptom: "template: error calling index"
|
|
63
|
-
|
|
64
|
-
**Cause**: A template references a missing data field.
|
|
65
|
-
|
|
66
|
-
**Fix**: Check that your `.chezmoidata.toml` has the required field. For example:
|
|
67
|
-
|
|
68
|
-
```sh
|
|
69
|
-
chezmoi execute-template '{{- $hw := index .hardware .machine -}}{{ $hw.wm }}'
|
|
70
|
-
```
|
|
71
|
-
|
|
72
|
-
If `machine` is not set in your `~/.config/chezmoi/chezmoi.toml`, `index` returns nil. Set:
|
|
73
|
-
|
|
74
|
-
```toml
|
|
75
|
-
[data]
|
|
76
|
-
machine = "macbook-t2"
|
|
77
|
-
```
|
|
78
|
-
|
|
79
|
-
### Symptom: Apply succeeds but shell doesn't reflect changes
|
|
80
|
-
|
|
81
|
-
**Cause**: Cached init scripts are stale.
|
|
82
|
-
|
|
83
|
-
**Fix**:
|
|
84
|
-
|
|
85
|
-
```sh
|
|
86
|
-
dot clean-cache
|
|
87
|
-
dot prewarm
|
|
88
|
-
exec $SHELL -l
|
|
89
|
-
```
|
|
90
|
-
|
|
91
|
-
## Theme
|
|
92
|
-
|
|
93
|
-
### Symptom: `dot theme` shows no themes
|
|
94
|
-
|
|
95
|
-
**Cause**: No wallpapers discovered, themes.toml not generated.
|
|
96
|
-
|
|
97
|
-
**Fix**:
|
|
98
|
-
|
|
99
|
-
```sh
|
|
100
|
-
dot theme rebuild --force
|
|
101
|
-
```
|
|
102
|
-
|
|
103
|
-
### Symptom: `dot theme <name>` errors "unknown theme"
|
|
104
|
-
|
|
105
|
-
**Cause**: Theme name doesn't exist in `themes.toml`.
|
|
106
|
-
|
|
107
|
-
**Fix**:
|
|
108
|
-
|
|
109
|
-
```sh
|
|
110
|
-
dot theme list # see valid names
|
|
111
|
-
dot theme rebuild --force # regenerate if expected but missing
|
|
112
|
-
```
|
|
113
|
-
|
|
114
|
-
### Symptom: macOS accent color doesn't update
|
|
115
|
-
|
|
116
|
-
**Cause**: System Settings UI cached the old value.
|
|
117
|
-
|
|
118
|
-
**Fix**: `dot-theme-sync` now calls `killall cfprefsd SystemUIServer Dock "System Settings"`. If it still doesn't refresh:
|
|
119
|
-
|
|
120
|
-
```sh
|
|
121
|
-
killall -KILL Dock SystemUIServer
|
|
122
|
-
sudo killall -KILL cfprefsd
|
|
123
|
-
```
|
|
124
|
-
|
|
125
|
-
Or log out and back in.
|
|
126
|
-
|
|
127
|
-
### Symptom: Wallpaper not applying
|
|
128
|
-
|
|
129
|
-
**Cause**: Wrong format or missing DE support on Linux.
|
|
130
|
-
|
|
131
|
-
**Fix**:
|
|
132
|
-
|
|
133
|
-
```sh
|
|
134
|
-
# Check the wallpaper file exists
|
|
135
|
-
ls -la ~/Pictures/Wallpapers/
|
|
136
|
-
|
|
137
|
-
# On Linux, verify HEIC → PNG conversion tool
|
|
138
|
-
command -v magick || command -v heif-convert || command -v convert
|
|
139
|
-
# Install if needed:
|
|
140
|
-
sudo apt install imagemagick-7
|
|
141
|
-
```
|
|
142
|
-
|
|
143
|
-
### Symptom: Theme applies but Ghostty doesn't reload
|
|
144
|
-
|
|
145
|
-
**Cause**: Ghostty DBus or SIGUSR2 signaling failed.
|
|
146
|
-
|
|
147
|
-
**Fix**:
|
|
148
|
-
|
|
149
|
-
```sh
|
|
150
|
-
# Restart Ghostty manually, or:
|
|
151
|
-
pkill -USR2 ghostty 2>/dev/null
|
|
152
|
-
# Or quit+relaunch the app
|
|
153
|
-
```
|
|
154
|
-
|
|
155
|
-
## Secrets
|
|
156
|
-
|
|
157
|
-
### Symptom: "could not decrypt: no age key"
|
|
158
|
-
|
|
159
|
-
**Cause**: `~/.config/age/keys.txt` missing or unreadable.
|
|
160
|
-
|
|
161
|
-
**Fix**:
|
|
162
|
-
|
|
163
|
-
```sh
|
|
164
|
-
ls -la ~/.config/age/keys.txt
|
|
165
|
-
# Should be: -rw------- 1 user user
|
|
166
|
-
chmod 600 ~/.config/age/keys.txt
|
|
167
|
-
|
|
168
|
-
# If missing, restore from password manager or regenerate (requires re-encrypting all secrets)
|
|
169
|
-
```
|
|
170
|
-
|
|
171
|
-
### Symptom: SOPS says "wrong recipient"
|
|
172
|
-
|
|
173
|
-
**Cause**: Your Age public key isn't listed in the file's recipients.
|
|
174
|
-
|
|
175
|
-
**Fix**:
|
|
176
|
-
|
|
177
|
-
```sh
|
|
178
|
-
# Add your public key to .sops.yaml
|
|
179
|
-
sops updatekeys path/to/file.sops.yaml
|
|
180
|
-
|
|
181
|
-
# Or, ask a recipient to re-encrypt for you
|
|
182
|
-
```
|
|
183
|
-
|
|
184
|
-
### Symptom: Plaintext leak detected by gitleaks
|
|
185
|
-
|
|
186
|
-
**Cause**: A secret was committed to Git history.
|
|
187
|
-
|
|
188
|
-
**Fix**:
|
|
189
|
-
|
|
190
|
-
```sh
|
|
191
|
-
# Immediate mitigation
|
|
192
|
-
dot verify --security # confirm which file
|
|
193
|
-
git rm --cached <file>
|
|
194
|
-
echo "<file>" >> .gitignore
|
|
195
|
-
git commit -sS -m "fix(security): remove leaked file"
|
|
196
|
-
|
|
197
|
-
# Rotate the leaked secret upstream (it's now public)
|
|
198
|
-
# Rewrite Git history if needed (requires force-push):
|
|
199
|
-
git filter-repo --path <file> --invert-paths
|
|
200
|
-
```
|
|
201
|
-
|
|
202
|
-
## Performance
|
|
203
|
-
|
|
204
|
-
### Symptom: Shell startup >500ms
|
|
205
|
-
|
|
206
|
-
**Cause**: Heavy modules loaded synchronously.
|
|
207
|
-
|
|
208
|
-
**Fix**:
|
|
209
|
-
|
|
210
|
-
```sh
|
|
211
|
-
dot benchmark --detailed
|
|
212
|
-
# Identify which module is slow
|
|
213
|
-
|
|
214
|
-
# Rebuild caches
|
|
215
|
-
dot prewarm
|
|
216
|
-
|
|
217
|
-
# Disable heavy modules temporarily
|
|
218
|
-
# Edit ~/.config/zsh/.zshrc.local (or equivalent) to skip them
|
|
219
|
-
```
|
|
220
|
-
|
|
221
|
-
### Symptom: `dot doctor` score <70
|
|
222
|
-
|
|
223
|
-
**Cause**: Multiple health issues.
|
|
224
|
-
|
|
225
|
-
**Fix**:
|
|
226
|
-
|
|
227
|
-
```sh
|
|
228
|
-
dot doctor --verbose # see every failure
|
|
229
|
-
dot heal # auto-fix what's possible
|
|
230
|
-
dot doctor # recheck
|
|
231
|
-
```
|
|
232
|
-
|
|
233
|
-
### Symptom: Mise tools not found
|
|
234
|
-
|
|
235
|
-
**Cause**: Mise shim not activated.
|
|
236
|
-
|
|
237
|
-
**Fix**:
|
|
238
|
-
|
|
239
|
-
```sh
|
|
240
|
-
eval "$(mise activate zsh)" # or fish, bash
|
|
241
|
-
dot doctor # confirm
|
|
242
|
-
```
|
|
243
|
-
|
|
244
|
-
## Build Artifacts
|
|
245
|
-
|
|
246
|
-
### Symptom: Cargo builds to `target/` instead of `/tmp/builds/cargo`
|
|
247
|
-
|
|
248
|
-
**Cause**: `~/.cargo/config.toml` not managed or was overridden.
|
|
249
|
-
|
|
250
|
-
**Fix**:
|
|
251
|
-
|
|
252
|
-
```sh
|
|
253
|
-
chezmoi apply ~/.cargo/config.toml
|
|
254
|
-
cat ~/.cargo/config.toml | grep target-dir
|
|
255
|
-
# Should be: target-dir = "/tmp/builds/cargo"
|
|
256
|
-
```
|
|
257
|
-
|
|
258
|
-
### Symptom: `/tmp/builds/` doesn't exist
|
|
259
|
-
|
|
260
|
-
**Cause**: Created by shell init, but shell wasn't restarted.
|
|
261
|
-
|
|
262
|
-
**Fix**:
|
|
263
|
-
|
|
264
|
-
```sh
|
|
265
|
-
mkdir -p /tmp/builds
|
|
266
|
-
# Or restart shell
|
|
267
|
-
exec $SHELL -l
|
|
268
|
-
```
|
|
269
|
-
|
|
270
|
-
## Fleet
|
|
271
|
-
|
|
272
|
-
### Symptom: `dot fleet attest` hangs
|
|
273
|
-
|
|
274
|
-
**Cause**: A fleet host is unreachable.
|
|
275
|
-
|
|
276
|
-
**Fix**:
|
|
277
|
-
|
|
278
|
-
```sh
|
|
279
|
-
# Check connectivity to each host
|
|
280
|
-
for host in macbook-t2 surface-pro geekom-a9; do
|
|
281
|
-
ssh -o ConnectTimeout=5 $host 'echo OK' || echo "FAIL: $host"
|
|
282
|
-
done
|
|
283
|
-
|
|
284
|
-
# Remove unreachable hosts from ~/.config/dotfiles/fleet.toml temporarily
|
|
285
|
-
```
|
|
286
|
-
|
|
287
|
-
### Symptom: Attestation signature fails
|
|
288
|
-
|
|
289
|
-
**Cause**: Remote host's SSH public key not in local `~/.ssh/allowed_signers`.
|
|
290
|
-
|
|
291
|
-
**Fix**:
|
|
292
|
-
|
|
293
|
-
```sh
|
|
294
|
-
# On the remote host:
|
|
295
|
-
ssh remote-host 'cat ~/.ssh/id_ed25519.pub'
|
|
296
|
-
# Copy the output and append to your ~/.ssh/allowed_signers
|
|
297
|
-
```
|
|
298
|
-
|
|
299
|
-
## CI
|
|
300
|
-
|
|
301
|
-
### Symptom: PR fails on "Shell Lint (Zero Warnings)"
|
|
302
|
-
|
|
303
|
-
**Cause**: `shfmt` formatting differs from canonical.
|
|
304
|
-
|
|
305
|
-
**Fix**:
|
|
306
|
-
|
|
307
|
-
```sh
|
|
308
|
-
shfmt -w -i 2 -ci scripts/**/*.sh install.sh .chezmoitemplates/**/*.sh
|
|
309
|
-
# Commit the changes
|
|
310
|
-
```
|
|
311
|
-
|
|
312
|
-
### Symptom: PR fails on "100% Coverage"
|
|
313
|
-
|
|
314
|
-
**Cause**: New code added without tests.
|
|
315
|
-
|
|
316
|
-
**Fix**:
|
|
317
|
-
|
|
318
|
-
```sh
|
|
319
|
-
bash examples/example-coverage-gate.sh
|
|
320
|
-
# Identifies uncovered modules
|
|
321
|
-
|
|
322
|
-
# Add a test in tests/unit/<domain>/test_<module>.sh
|
|
323
|
-
```
|
|
324
|
-
|
|
325
|
-
### Symptom: Checkov SARIF upload times out
|
|
326
|
-
|
|
327
|
-
**Cause**: Known infrastructure flake (Azure runner slow apt mirrors).
|
|
328
|
-
|
|
329
|
-
**Fix**: The workflow already guards this with `hashFiles('reports/checkov.sarif')`. If you see this after the guard was added, check the Checkov step output for errors.
|
|
330
|
-
|
|
331
|
-
## Getting More Help
|
|
332
|
-
|
|
333
|
-
1. Check [FAQ](03-faq.md)
|
|
334
|
-
2. Read the relevant [concept chapter](../01-concepts/)
|
|
335
|
-
3. Open an issue: <https://github.com/sebastienrousseau/dotfiles/issues>
|
|
336
|
-
|
|
337
|
-
When filing an issue, include:
|
|
338
|
-
|
|
339
|
-
```sh
|
|
340
|
-
dot doctor --json
|
|
341
|
-
dot version
|
|
342
|
-
uname -a
|
|
343
|
-
chezmoi --version
|
|
344
|
-
```
|
|
345
|
-
|
|
346
|
-
## See Also
|
|
347
|
-
|
|
348
|
-
- [Self-Healing concept](../01-concepts/05-self-healing.md)
|
|
349
|
-
- [FAQ](03-faq.md)
|
|
350
|
-
- [Security: Incident Response](../../security/INCIDENT_RESPONSE.md)
|
|
351
|
-
{% endraw %}
|
|
@@ -1,175 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
render_with_liquid: false
|
|
3
|
-
---
|
|
4
|
-
|
|
5
|
-
# Cookbook: Frequently Asked Questions
|
|
6
|
-
|
|
7
|
-
## General
|
|
8
|
-
|
|
9
|
-
### Why use this over stow, yadm, or a plain Git repo?
|
|
10
|
-
|
|
11
|
-
Because it's not just a dotfiles manager. It's a workstation baseline with:
|
|
12
|
-
|
|
13
|
-
- Cryptographic attestation
|
|
14
|
-
- AI/MCP policy enforcement
|
|
15
|
-
- Wallpaper-driven theme engine (WCAG AAA)
|
|
16
|
-
- Self-healing + chaos testing
|
|
17
|
-
- Fleet management
|
|
18
|
-
- Per-platform rendering via chezmoi templates
|
|
19
|
-
|
|
20
|
-
If you only need to symlink `.bashrc`, use stow. If you're operating a fleet of signed, attested, AI-aware workstations, use this.
|
|
21
|
-
|
|
22
|
-
### Does it work on Windows?
|
|
23
|
-
|
|
24
|
-
Only via WSL2. Native Windows PowerShell support exists for baseline parity (aliases, prompt), but the full feature set (chezmoi, Mise, theme engine) requires WSL2.
|
|
25
|
-
|
|
26
|
-
### Is it production-ready?
|
|
27
|
-
|
|
28
|
-
Yes — it's the author's daily driver across multiple hosts and receives regular releases (see `CHANGELOG.md`). CI enforces 100% executable-module mapping and a ratcheted measured Bash line-coverage floor, plus zero-warning linting, WCAG AAA for themes, SBOM + CVE scanning, and signed-commit verification. The current measured coverage and exclusions are documented in `docs/operations/COVERAGE.md`.
|
|
29
|
-
|
|
30
|
-
### Can I fork it and use it without attribution?
|
|
31
|
-
|
|
32
|
-
Yes — MIT License. Attribution is appreciated but not required.
|
|
33
|
-
|
|
34
|
-
## Themes
|
|
35
|
-
|
|
36
|
-
### Why K-Means in CIELAB instead of RGB?
|
|
37
|
-
|
|
38
|
-
CIELAB distances approximate human perception. A Δ in RGB might look identical to your eye in one part of the color space and very different in another. Clustering in Lab produces palettes where "close" colors actually look close. See [Theme Engine](../01-concepts/03-theme-engine.md).
|
|
39
|
-
|
|
40
|
-
### Why not pre-built themes like Catppuccin or Rosé Pine?
|
|
41
|
-
|
|
42
|
-
Two reasons:
|
|
43
|
-
|
|
44
|
-
1. **Maintenance** — 100+ themes × 20+ applications = thousands of template variables to keep in sync. Generation from wallpapers eliminates that.
|
|
45
|
-
2. **User agency** — users bring their own wallpapers. The theme adapts to them, not the other way around.
|
|
46
|
-
|
|
47
|
-
The engine can still produce Catppuccin-like output: give it a Catppuccin wallpaper and you get Catppuccin-aligned terminal colors.
|
|
48
|
-
|
|
49
|
-
### Does it ship wallpapers?
|
|
50
|
-
|
|
51
|
-
No. Apple/Microsoft/distro-vendor wallpapers are copyrighted. The repo discovers wallpapers that are already on the user's system (at `~/Pictures/Wallpapers/` or the OS's system wallpaper directory). Users bring their own images.
|
|
52
|
-
|
|
53
|
-
### How do I control the accent color?
|
|
54
|
-
|
|
55
|
-
You don't directly — the accent hue is extracted from the wallpaper. But `_compute_accent()` picks the most chromatic cluster, then darkens it until white text meets 7:1 contrast. If you want a specific accent, choose a wallpaper with that hue dominant.
|
|
56
|
-
|
|
57
|
-
### Can I use my own theme without a wallpaper?
|
|
58
|
-
|
|
59
|
-
Not directly — the engine expects a source image. You could:
|
|
60
|
-
|
|
61
|
-
1. Pick a wallpaper whose palette you want
|
|
62
|
-
2. Let the engine generate the theme
|
|
63
|
-
3. Lock the generated `.toml` entry by copying to a non-regenerated path
|
|
64
|
-
|
|
65
|
-
But this defeats the point. If you have a specific palette in mind, generate a solid-color or gradient image with those colors and use that.
|
|
66
|
-
|
|
67
|
-
## Secrets
|
|
68
|
-
|
|
69
|
-
### Why Age instead of GPG?
|
|
70
|
-
|
|
71
|
-
GPG is notoriously complex. Age is simpler, uses modern crypto (X25519 + ChaCha20-Poly1305), and has no legacy baggage. It's the tool [SOPS recommends](https://github.com/getsops/sops#encrypting-using-age).
|
|
72
|
-
|
|
73
|
-
### Why commit encrypted secrets at all?
|
|
74
|
-
|
|
75
|
-
- **Traceable** — Git history shows when secrets changed
|
|
76
|
-
- **Auditable** — ciphertext is testable without decryption
|
|
77
|
-
- **Portable** — clone the repo anywhere, decrypt with your key
|
|
78
|
-
- **No external dependency** — no Vault/AWS Secrets Manager/etc.
|
|
79
|
-
|
|
80
|
-
The alternative (storing secrets outside the repo) creates sync headaches across fleet hosts. Encrypted-at-rest-in-repo is simpler and just as secure if keys are managed correctly.
|
|
81
|
-
|
|
82
|
-
### What if I lose my Age private key?
|
|
83
|
-
|
|
84
|
-
You lose access to all secrets encrypted only for that key. Recovery requires another recipient (another host with a valid key) to decrypt and re-encrypt. Fleet setups use multiple recipients for this reason — see [Deploy to Fleet](../02-tutorials/05-deploy-fleet.md).
|
|
85
|
-
|
|
86
|
-
## AI & Agents
|
|
87
|
-
|
|
88
|
-
### Does this require an API key?
|
|
89
|
-
|
|
90
|
-
No. The AI tools (Claude Code, Codex, Copilot) are installed but require their own authentication. `dot ai` shows what's present without invoking any remote service.
|
|
91
|
-
|
|
92
|
-
### What is MCP?
|
|
93
|
-
|
|
94
|
-
The [Model Context Protocol](https://modelcontextprotocol.io/) is a standard for connecting AI models to tools and data sources. `.dotfiles` includes policy enforcement for MCP-aware agents: allowlists, attestation, and signed registries. See [Trust Model](../01-concepts/02-trust-model.md).
|
|
95
|
-
|
|
96
|
-
### Can I add my own agent profile?
|
|
97
|
-
|
|
98
|
-
Yes. Drop a Markdown file in `dot_config/ai/patterns/`. Each file describes a profile (architect, hardener, etc.). `dot mode <name>` switches between them.
|
|
99
|
-
|
|
100
|
-
## Fleet
|
|
101
|
-
|
|
102
|
-
### How many hosts can I manage?
|
|
103
|
-
|
|
104
|
-
No hard limit. The `dot fleet` commands SSH sequentially by default, so large fleets (>20 hosts) benefit from parallel invocation. For industrial scale, pair with Ansible/Nix/Puppet; `.dotfiles` handles the user-level config, not system administration.
|
|
105
|
-
|
|
106
|
-
### Do I need a central server?
|
|
107
|
-
|
|
108
|
-
No. Everything is Git-based. No central orchestration service, no daemon. Each host pulls independently.
|
|
109
|
-
|
|
110
|
-
### Can two hosts have different themes?
|
|
111
|
-
|
|
112
|
-
Yes. Each host's `~/.config/chezmoi/chezmoi.toml` can set its own `theme`. This is per-host override — not shared in the repo.
|
|
113
|
-
|
|
114
|
-
## Performance
|
|
115
|
-
|
|
116
|
-
### Why is my shell startup 800ms when the budget is 500ms?
|
|
117
|
-
|
|
118
|
-
Check what's loaded:
|
|
119
|
-
|
|
120
|
-
```sh
|
|
121
|
-
DOTFILES_DEBUG=1 zsh -i -c exit 2>&1 | grep -E '\[debug [0-9]+ms\]'
|
|
122
|
-
```
|
|
123
|
-
|
|
124
|
-
Common culprits:
|
|
125
|
-
|
|
126
|
-
- nvm loading Node on every shell (use lazy loading)
|
|
127
|
-
- `mise activate` with aggressive hook-env (set `activate_aggressive = false`)
|
|
128
|
-
- Plugin manager scanning for updates
|
|
129
|
-
|
|
130
|
-
Run `dot benchmark --detailed` to attribute cost.
|
|
131
|
-
|
|
132
|
-
### Can I disable prewarming?
|
|
133
|
-
|
|
134
|
-
Yes — but your cold shell startup will be slow. Remove the prewarm invocation from your shell profile or skip `dot prewarm` after apply.
|
|
135
|
-
|
|
136
|
-
## Troubleshooting Community
|
|
137
|
-
|
|
138
|
-
### Where do I report bugs?
|
|
139
|
-
|
|
140
|
-
GitHub issues: <https://github.com/sebastienrousseau/dotfiles/issues>. Include output of `dot doctor --json` and your platform.
|
|
141
|
-
|
|
142
|
-
### Where do I ask usage questions?
|
|
143
|
-
|
|
144
|
-
GitHub discussions, or mention in the issue you open. The maintainer responds best to issues with clear repro steps.
|
|
145
|
-
|
|
146
|
-
### Is there a Discord / Slack?
|
|
147
|
-
|
|
148
|
-
Not currently.
|
|
149
|
-
|
|
150
|
-
## Philosophy
|
|
151
|
-
|
|
152
|
-
### Why so much emphasis on attestation?
|
|
153
|
-
|
|
154
|
-
Because AI agents operating on your workstation can do anything you can. Attestation is the audit trail — who ran what, when, with which policy. Without it, agent operations are black boxes.
|
|
155
|
-
|
|
156
|
-
### Why MIT License?
|
|
157
|
-
|
|
158
|
-
To maximize adoption and contribution. MIT is compatible with commercial use; copyleft alternatives would restrict who can use the code.
|
|
159
|
-
|
|
160
|
-
### Why no GUI configurator?
|
|
161
|
-
|
|
162
|
-
Text + Git is the optimal interface for a workstation baseline:
|
|
163
|
-
|
|
164
|
-
- Versioned (Git history)
|
|
165
|
-
- Reproducible (same input → same output)
|
|
166
|
-
- Auditable (diff-able)
|
|
167
|
-
- Scriptable (any `dot` command can be invoked programmatically)
|
|
168
|
-
|
|
169
|
-
A GUI adds complexity without benefit over editing `.chezmoidata.toml` directly.
|
|
170
|
-
|
|
171
|
-
## See Also
|
|
172
|
-
|
|
173
|
-
- [Troubleshooting](02-troubleshooting.md)
|
|
174
|
-
- [Recipes](01-recipes.md)
|
|
175
|
-
- [GitHub Discussions](https://github.com/sebastienrousseau/dotfiles/discussions)
|
|
@@ -1,101 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
render_with_liquid: false
|
|
3
|
-
---
|
|
4
|
-
|
|
5
|
-
# Appendix A: Platform Support Matrix
|
|
6
|
-
|
|
7
|
-
## Supported Platforms
|
|
8
|
-
|
|
9
|
-
| OS | Version | Support | Notes |
|
|
10
|
-
|:---|:---|:---:|:---|
|
|
11
|
-
| macOS | 14 (Sonoma) | ✓ full | Primary development platform |
|
|
12
|
-
| macOS | 15 (Sequoia) | ✓ full | |
|
|
13
|
-
| macOS | 26 (Tahoe) | ✓ full | |
|
|
14
|
-
| Ubuntu | 22.04 LTS | ✓ full | |
|
|
15
|
-
| Ubuntu | 24.04 LTS | ✓ full | CI reference platform |
|
|
16
|
-
| Debian | 12 (Bookworm) | ✓ full | |
|
|
17
|
-
| Debian | 13 (Trixie) | ✓ full | |
|
|
18
|
-
| Arch Linux | rolling | ✓ full | |
|
|
19
|
-
| CachyOS | rolling | ✓ full | Arch-based |
|
|
20
|
-
| Fedora | 39 | ✓ | Less tested |
|
|
21
|
-
| Fedora | 40, 41 | ✓ | Less tested |
|
|
22
|
-
| openSUSE | Tumbleweed | ✓ | Less tested |
|
|
23
|
-
| Alpine | 3.20 | ⚠ partial | POSIX shells only; no Fish |
|
|
24
|
-
| WSL2 | Ubuntu 22.04+ | ✓ full | Windows 11 host |
|
|
25
|
-
| WSL2 | Debian | ✓ full | |
|
|
26
|
-
| Windows PowerShell | 7.5+ | ⚠ baseline | Aliases + prompt; no chezmoi |
|
|
27
|
-
| FreeBSD | 14 | ✗ untested | |
|
|
28
|
-
| Termux (Android) | latest | ✗ untested | |
|
|
29
|
-
|
|
30
|
-
## Supported Shells
|
|
31
|
-
|
|
32
|
-
| Shell | Version | Support |
|
|
33
|
-
|:---|:---|:---:|
|
|
34
|
-
| Fish | 3.6+ | ✓ primary |
|
|
35
|
-
| Zsh | 5.9+ | ✓ full |
|
|
36
|
-
| Bash | 5.0+ | ✓ full |
|
|
37
|
-
| Nushell | 0.90+ | ✓ full |
|
|
38
|
-
| PowerShell | 7.5+ | ⚠ baseline |
|
|
39
|
-
|
|
40
|
-
## Supported Architectures
|
|
41
|
-
|
|
42
|
-
| Arch | Status |
|
|
43
|
-
|:---:|:---:|
|
|
44
|
-
| amd64 / x86_64 | ✓ |
|
|
45
|
-
| arm64 / aarch64 | ✓ |
|
|
46
|
-
| armv7 | ⚠ best-effort |
|
|
47
|
-
| riscv64 | ✗ untested |
|
|
48
|
-
|
|
49
|
-
## Required Binaries
|
|
50
|
-
|
|
51
|
-
| Binary | Purpose | Install |
|
|
52
|
-
|:---|:---|:---|
|
|
53
|
-
| `git` | Version control | System package manager |
|
|
54
|
-
| `curl` | Installer | System package manager |
|
|
55
|
-
| `chezmoi` | Template engine | Installer downloads verified binary |
|
|
56
|
-
|
|
57
|
-
## Optional Binaries (installed by Mise on first apply)
|
|
58
|
-
|
|
59
|
-
| Binary | Purpose |
|
|
60
|
-
|:---|:---|
|
|
61
|
-
| `mise` | Runtime version manager |
|
|
62
|
-
| `age` | Secret encryption |
|
|
63
|
-
| `sops` | YAML secret encryption |
|
|
64
|
-
| `pandoc` | Manual generation |
|
|
65
|
-
| `shellcheck` | Shell linting |
|
|
66
|
-
| `shfmt` | Shell formatting |
|
|
67
|
-
| `starship` | Prompt |
|
|
68
|
-
| `fzf` | Fuzzy finder |
|
|
69
|
-
| `zoxide` | Smart `cd` |
|
|
70
|
-
| `atuin` | Shell history sync |
|
|
71
|
-
| `delta` | Git diff pager |
|
|
72
|
-
| `lazygit` | TUI Git client |
|
|
73
|
-
| `neovim` | Editor |
|
|
74
|
-
|
|
75
|
-
## Tested CI Environments
|
|
76
|
-
|
|
77
|
-
| Environment | Workflow |
|
|
78
|
-
|:---|:---|
|
|
79
|
-
| macOS 14 (GHA) | `ci.yml`, `ci-enforced.yml` |
|
|
80
|
-
| Ubuntu 24.04 (GHA) | `ci.yml`, `ci-enforced.yml` |
|
|
81
|
-
| GitHub Codespaces | `devcontainer-prebuild.yml` |
|
|
82
|
-
| Docker Ubuntu 24.04 | `ci.yml` test-docker job |
|
|
83
|
-
|
|
84
|
-
## Feature Matrix
|
|
85
|
-
|
|
86
|
-
| Feature | macOS | Linux | WSL2 |
|
|
87
|
-
|:---|:---:|:---:|:---:|
|
|
88
|
-
| Shell configs (zsh/fish/bash/nu) | ✓ | ✓ | ✓ |
|
|
89
|
-
| Terminal emulator configs | ✓ | ✓ | ✗ (host handles) |
|
|
90
|
-
| Theme engine (K-Means) | ✓ | ✓ | ✓ |
|
|
91
|
-
| Dynamic HEIC dark/light | ✓ native | ⚠ HEIC→PNG converted | ✗ |
|
|
92
|
-
| Neovim + LSP | ✓ | ✓ | ✓ |
|
|
93
|
-
| AI tools (Claude, Codex, etc.) | ✓ | ✓ | ✓ |
|
|
94
|
-
| MCP policy enforcement | ✓ | ✓ | ✓ |
|
|
95
|
-
| Attestation | ✓ | ✓ | ✓ |
|
|
96
|
-
| Fleet (SSH-based) | ✓ | ✓ | ⚠ |
|
|
97
|
-
| AeroSpace (WM) | ✓ | ✗ | ✗ |
|
|
98
|
-
| Niri (WM) | ✗ | ✓ | ✗ |
|
|
99
|
-
| GNOME gsettings | ✗ | ✓ | ⚠ |
|
|
100
|
-
| Build artifact redirect | ✓ | ✓ | ✓ |
|
|
101
|
-
| Self-healing (`dot heal`) | ✓ | ✓ | ✓ |
|
|
@@ -1,85 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
render_with_liquid: false
|
|
3
|
-
---
|
|
4
|
-
|
|
5
|
-
# Appendix B: Security Checklist
|
|
6
|
-
|
|
7
|
-
Run this checklist after a fresh install and quarterly afterwards.
|
|
8
|
-
|
|
9
|
-
## Pre-Install
|
|
10
|
-
|
|
11
|
-
- [ ] Download `install.sh` over HTTPS only
|
|
12
|
-
- [ ] Inspect `install.sh` before running (optional, recommended for untrusted environments)
|
|
13
|
-
- [ ] Ensure SSH signing key exists and is backed up (`~/.ssh/id_ed25519`)
|
|
14
|
-
- [ ] Ensure Age key is backed up if reinstalling (`~/.config/age/keys.txt`)
|
|
15
|
-
|
|
16
|
-
## Post-Install
|
|
17
|
-
|
|
18
|
-
- [ ] Run `dot doctor` — expect score ≥90
|
|
19
|
-
- [ ] Run `dot verify --security` — all checks pass
|
|
20
|
-
- [ ] Verify commit signing: `cd ~/.dotfiles && git verify-commit HEAD`
|
|
21
|
-
- [ ] Confirm `~/.ssh/allowed_signers` contains your public key
|
|
22
|
-
- [ ] Check that `~/.config/age/keys.txt` permissions are `0600`
|
|
23
|
-
- [ ] Run `dot mcp --strict` — policy matches registry
|
|
24
|
-
|
|
25
|
-
## Ongoing (monthly)
|
|
26
|
-
|
|
27
|
-
- [ ] `dot upgrade` — pick up security patches
|
|
28
|
-
- [ ] `dot verify --security` — confirm no new leaks
|
|
29
|
-
- [ ] Review `~/.local/state/dotfiles/mcp-violations.log` — any unexpected entries?
|
|
30
|
-
- [ ] Review recent attestations — `ls ~/.local/state/dotfiles/attestation/ | tail -10`
|
|
31
|
-
- [ ] Rotate Age key if compromised or as part of scheduled rotation
|
|
32
|
-
|
|
33
|
-
## Ongoing (quarterly)
|
|
34
|
-
|
|
35
|
-
- [ ] Rotate SSH signing key
|
|
36
|
-
- [ ] Audit `~/.ssh/allowed_signers` — remove former team members
|
|
37
|
-
- [ ] Review SOPS recipient list in `.sops.yaml`
|
|
38
|
-
- [ ] Run `dot chaos` in a test container — verify heal works
|
|
39
|
-
- [ ] Update pinned tool versions in `mise.toml`
|
|
40
|
-
- [ ] Run fleet attestation — confirm all hosts aligned
|
|
41
|
-
|
|
42
|
-
## Incident Response
|
|
43
|
-
|
|
44
|
-
If a secret leak is detected:
|
|
45
|
-
|
|
46
|
-
1. **Contain** — remove from history, force-push
|
|
47
|
-
|
|
48
|
-
```sh
|
|
49
|
-
git filter-repo --path <file> --invert-paths
|
|
50
|
-
git push --force
|
|
51
|
-
```
|
|
52
|
-
|
|
53
|
-
2. **Rotate** — change the leaked secret upstream (Stripe key, SSH key, etc.)
|
|
54
|
-
3. **Audit** — check who/what had access
|
|
55
|
-
4. **Notify** — inform affected parties if required
|
|
56
|
-
|
|
57
|
-
If a host is compromised:
|
|
58
|
-
|
|
59
|
-
1. **Revoke** — remove the host's public key from `~/.ssh/allowed_signers` on all other fleet hosts
|
|
60
|
-
2. **Re-encrypt** — `sops updatekeys` with the host excluded from recipients
|
|
61
|
-
3. **Attest** — run `dot fleet attest` to verify revocation propagated
|
|
62
|
-
4. **Wipe** — if the host is recoverable, `rm -rf ~/.config/age ~/.dotfiles` and reinstall
|
|
63
|
-
|
|
64
|
-
## Gates Enforced by CI
|
|
65
|
-
|
|
66
|
-
Every PR to main must pass:
|
|
67
|
-
|
|
68
|
-
- [x] SSH-signed commits
|
|
69
|
-
- [x] Shellcheck zero warnings (severity=error)
|
|
70
|
-
- [x] Gitleaks scan
|
|
71
|
-
- [x] Detect-secrets baseline diff
|
|
72
|
-
- [x] TruffleHog verified scan
|
|
73
|
-
- [x] Copyright headers present
|
|
74
|
-
- [x] 100% executable module mapping
|
|
75
|
-
- [ ] 100% measured line and branch coverage (current ratchet is documented in `docs/operations/COVERAGE.md`)
|
|
76
|
-
- [x] Reliability tests (macOS + Ubuntu)
|
|
77
|
-
- [x] Checkov infra scan
|
|
78
|
-
- [x] Version sync (bumped across all files)
|
|
79
|
-
|
|
80
|
-
## See Also
|
|
81
|
-
|
|
82
|
-
- [Trust Model](../01-concepts/02-trust-model.md)
|
|
83
|
-
- [Encrypt a Secret tutorial](../02-tutorials/04-encrypt-secret.md)
|
|
84
|
-
- [Security Policy](../../security/SECURITY.md)
|
|
85
|
-
- [Incident Response Playbook](../../security/INCIDENT_RESPONSE.md)
|