@sebastienrousseau/dotfiles 0.2.501 → 0.2.502
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 +77 -0
- package/README.md +38 -8
- package/docs/COPYRIGHT +1 -1
- package/docs/index.md +2 -2
- package/docs/manual/00-introduction.md +1 -1
- package/docs/manual/03-reference/01-dot-cli.md +63 -45
- package/docs/manual/03-reference/02-config-files.md +2 -2
- package/docs/manual/03-reference/05-feature-flags.md +62 -3
- package/docs/manual/_toc.yml +1 -1
- package/docs/manual/command-index.md +12 -8
- package/docs/manual/index.md +66 -0
- package/docs/operations/COVERAGE.md +36 -2
- package/docs/operations/HARD_AUDIT_2026.md +631 -0
- package/docs/operations/REGISTRY.md +89 -0
- package/docs/operations/ROADMAP_2026.md +665 -0
- package/docs/operations/TRACEABILITY.md +3 -0
- package/docs/operations/VERSION_SYNC.md +4 -4
- package/docs/reference/POWERSHELL_PARITY.md +80 -0
- package/docs/registry.json +6 -0
- package/docs/security/CI_PINNING.md +113 -0
- package/docs/security/COMMIT_SIGNING.md +138 -0
- package/docs/security/DISCLOSURE.md +130 -0
- package/docs/security/KEY_ROTATION.md +81 -1
- package/docs/security/SCORECARD.md +74 -14
- package/docs/security/security-pubkey.asc +15 -0
- package/dot_config/fish/conf.d/direnv.fish +4 -0
- package/dot_config/fish/conf.d/mise-activate.fish +5 -0
- package/dot_config/git/hooks/executable_commit-msg +1 -1
- package/dot_config/shell/00-core-paths.sh.tmpl +8 -1
- package/dot_config/shell/README.md +1 -1
- package/dot_config/zsh/dot_zshrc.tmpl +57 -4
- package/dot_config/zsh/rc.d/30-options.zsh.tmpl +1 -1
- package/dot_local/bin/executable_dot +49 -9
- package/dot_local/bin/executable_dot-bootstrap +0 -1
- package/dot_local/bin/executable_dot-theme-sync +8 -8
- package/dot_local/bin/executable_tour +2 -2
- package/dot_local/share/man/man1/dot.1 +1 -1
- package/dot_local/share/zsh/completions/_dot +4 -0
- package/install.sh +44 -37
- package/package.json +1 -1
- package/scripts/ci/dot-cli-startup-bench.sh +126 -0
- package/scripts/ci/install-chezmoi-verified.sh +4 -1
- package/scripts/ci/lint-reusable-pins.sh +78 -0
- package/scripts/ci/run-coverage.sh +89 -0
- package/scripts/ci/windows-smoke-test.ps1 +136 -0
- package/scripts/diagnostics/doctor.sh +39 -9
- package/scripts/dot/commands/agent.sh +19 -22
- package/scripts/dot/commands/agents.sh +325 -0
- package/scripts/dot/commands/aliases.sh +10 -8
- package/scripts/dot/commands/core.sh +10 -4
- package/scripts/dot/commands/fleet.sh +278 -3
- package/scripts/dot/commands/init.sh +184 -0
- package/scripts/dot/commands/meta.sh +7 -4
- package/scripts/dot/commands/registry.sh +263 -0
- package/scripts/dot/commands/tools.sh +49 -1
- package/scripts/dot/lib/bento.sh +1 -1
- package/scripts/dot/lib/platform.sh +21 -8
- package/scripts/dot/lib/ui.sh +134 -2
- package/scripts/dot/lib/utils.sh +1 -1
- package/scripts/git-hooks/pre-commit-audit.sh +1 -1
- package/scripts/lib/secrets_provider.sh +32 -6
- package/scripts/ops/rollback.sh +14 -0
- package/scripts/security/check-disclosure-key-expiry.sh +110 -0
- package/scripts/security/lock-configs.sh +11 -2
- package/scripts/version-sync.sh +3 -0
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
---
|
|
2
|
+
render_with_liquid: false
|
|
3
|
+
title: "Dot Module Registry"
|
|
4
|
+
description: "How to publish and consume reusable dotfile modules."
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# Dot Module Registry
|
|
8
|
+
|
|
9
|
+
The `dot registry` command discovers reusable dotfile modules from a JSON index published over HTTPS. The default registry is hosted by this repo at:
|
|
10
|
+
|
|
11
|
+
```
|
|
12
|
+
https://sebastienrousseau.github.io/dotfiles/registry.json
|
|
13
|
+
```
|
|
14
|
+
|
|
15
|
+
This page documents the JSON contract and the contribution flow. It is the §3 / Months 12-18 deliverable from [HARD_AUDIT_2026.md](./HARD_AUDIT_2026.md) — the registry is the network-effect feature that turns the framework into a category, not just one person's setup.
|
|
16
|
+
|
|
17
|
+
## Quick start (consumer side)
|
|
18
|
+
|
|
19
|
+
```sh
|
|
20
|
+
dot registry list # list every published module
|
|
21
|
+
dot registry search rust # filter by keyword
|
|
22
|
+
dot registry info rust-dev-setup # full metadata for one module
|
|
23
|
+
dot registry install rust-dev-setup # apply to this workstation (scaffold)
|
|
24
|
+
dot registry url # show active registry URL
|
|
25
|
+
dot registry set-url <url> # point at a different registry
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
The registry index is cached locally at `${XDG_CACHE_HOME:-~/.cache}/dotfiles/registry/index.json` with a 6 hour TTL. Override the URL one-off via `DOTFILES_REGISTRY_URL=<url> dot registry list`.
|
|
29
|
+
|
|
30
|
+
## JSON contract
|
|
31
|
+
|
|
32
|
+
A registry index is a single JSON document:
|
|
33
|
+
|
|
34
|
+
```json
|
|
35
|
+
{
|
|
36
|
+
"version": 1,
|
|
37
|
+
"updated": "2026-05-15T16:30:00Z",
|
|
38
|
+
"registry": "sebastienrousseau/dotfiles",
|
|
39
|
+
"modules": [
|
|
40
|
+
{
|
|
41
|
+
"name": "rust-dev-setup",
|
|
42
|
+
"description": "Rust toolchain + cargo plugins + Helix/Neovim editor config",
|
|
43
|
+
"repo": "https://github.com/example/rust-dev-setup",
|
|
44
|
+
"version": "1.2.0",
|
|
45
|
+
"tags": ["rust", "language", "dev"],
|
|
46
|
+
"maintainer": "alice@example.com",
|
|
47
|
+
"sha256": "f9a2c1b…",
|
|
48
|
+
"license": "MIT"
|
|
49
|
+
}
|
|
50
|
+
]
|
|
51
|
+
}
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
Required keys: `name` (kebab-case, ≤ 32 chars), `description` (≤ 200 chars), `repo` (HTTPS clone URL), `version` (semver).
|
|
55
|
+
|
|
56
|
+
Recommended keys: `tags` (lower-case array), `maintainer`, `sha256` (pinned at publish time so installers can verify), `license` (SPDX identifier).
|
|
57
|
+
|
|
58
|
+
## Contributing a module
|
|
59
|
+
|
|
60
|
+
1. Build your module as a chezmoi-source-compatible directory at `https://github.com/<you>/<module>.git`. The contents are overlaid onto the consumer's chezmoi source dir during install.
|
|
61
|
+
2. Open a PR against `sebastienrousseau/dotfiles` adding one entry to `docs/registry.json` (alphabetical by `name`).
|
|
62
|
+
3. The PR runs CI checks for:
|
|
63
|
+
- Schema validity (`jq` against the JSON contract).
|
|
64
|
+
- `repo` URL resolves and is a public git repo.
|
|
65
|
+
- `sha256` matches the latest tag at `repo`.
|
|
66
|
+
4. Once merged, the GitHub Pages workflow re-deploys the registry; `dot registry list` picks it up within 6 hours (or immediately if the consumer purges the cache).
|
|
67
|
+
|
|
68
|
+
## Install pipeline (scaffold today, full in Phase 2)
|
|
69
|
+
|
|
70
|
+
`dot registry install <name>` currently prints what *would* happen. The full pipeline lands as follows:
|
|
71
|
+
|
|
72
|
+
1. Resolve the module entry from the registry index.
|
|
73
|
+
2. Clone the module to `$XDG_DATA_HOME/dotfiles/modules/<name>/<version>`.
|
|
74
|
+
3. Verify the clone's HEAD matches `sha256` from the registry.
|
|
75
|
+
4. Source the module's `module.toml` (if present) for declared profiles + feature flags.
|
|
76
|
+
5. Merge the module's chezmoi source into the consumer's chezmoi source dir under a namespaced subtree (`/registry/<name>/...`).
|
|
77
|
+
6. Run `chezmoi apply --include /registry/<name>/**` so only the module's files are written.
|
|
78
|
+
|
|
79
|
+
The sandboxed apply (point 6) requires changes to `dot sync` to accept an include filter — that is its own roadmap issue and tracked separately.
|
|
80
|
+
|
|
81
|
+
## Security model
|
|
82
|
+
|
|
83
|
+
- Modules execute with the consumer's user privileges via chezmoi `run_onchange_*` scripts. The trust contract is identical to consuming any third-party dotfiles repo.
|
|
84
|
+
- Pinning `sha256` lets a consumer verify the registry entry hasn't been tampered with between publish and install.
|
|
85
|
+
- The registry index itself is fetched over HTTPS; the GitHub Pages cert chain provides transport integrity.
|
|
86
|
+
|
|
87
|
+
## Why this lives in this repo (for now)
|
|
88
|
+
|
|
89
|
+
A vendor-neutral registry would be ideal but adds operations cost. Hosting `registry.json` under this repo's `docs/` directory and serving it via GitHub Pages keeps the maintenance burden near zero while the registry is small. If/when the registry outgrows GitHub Pages, the JSON contract is stable and the index can move to a dedicated subdomain.
|