ci: add Forgejo Actions workflow (eval + lint)
Pillar 7 first step. `.forgejo/workflows/check.yml` runs on every push to main and every PR. Three sequential checks in one job: 1. `nix flake check --no-build` Catches eval regressions: broken option references, missing imports, stale module argument shapes. The same command AGENT.md tells humans to run by hand before declaring a change done. 2. `bash -n` + `shellcheck --severity=error` over every `nomarchy-*` bash script. Mirrors what `.githooks/pre-commit` does locally, but across the whole tree on every push — so a branch that bypasses the hook (via `--no-verify` or a fresh clone without `core.hooksPath` set) still gets gated. Severity is capped at error to match the hook; the long tail of style/info warnings can be cleaned up incrementally. 3. `docs/SCRIPTS.md` drift check. Regenerates the audit doc to a temp file and `diff`s against the committed version. Fails loudly with the fix command if a script add/remove/rename didn't include the regeneration step. Dry-run results on the current tree: - `nix flake check --no-build`: pass (only pre-existing warnings). - shellcheck across 159 scripts at severity=error: pass. - SCRIPTS.md drift: clean. Activation: Forgejo Actions isn't enabled on the repo yet, so the workflow lands dormant. To activate: enable Actions on the repo in Forgejo's settings and register a `forgejo-runner` on any Docker-capable Linux host. The workflow uses `ubuntu-latest` and installs Nix itself via `DeterminateSystems/nix-installer-action`, so no special runner image is needed. Deferred to a follow-up batch (needs binary cache infra): - Building ISOs in CI (`nomarchy-installer`, `nomarchy-live`, default). - Release pipeline (`vYY.MM.x` tags publishing ISOs as artifacts). - `nixosTest` per palette with golden-image screenshot diffs. `docs/STRUCTURE.md` now documents `.forgejo/` and `.githooks/` so future agents and contributors can find both. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
@@ -37,6 +37,8 @@ While the system is defined declaratively, Nomarchy uses a small, local state fi
|
||||
- **`STRUCTURE.md`**: (This file) Detailed architectural documentation.
|
||||
- **`README.md`**: Project overview, installation instructions, and basic usage.
|
||||
- **`TODO.md`**: Roadmap and pending tasks.
|
||||
- **`.forgejo/workflows/`**: Forgejo Actions CI. Runs `nix flake check --no-build`, lints every `nomarchy-*` bash script with `bash -n` + `shellcheck --severity=error`, and verifies `docs/SCRIPTS.md` is up to date on every push to `main` and every PR. To activate: enable Actions on the repo in Forgejo and register a `forgejo-runner` (any Docker-capable Linux host works; the workflow uses `ubuntu-latest` and installs Nix itself).
|
||||
- **`.githooks/`**: Optional per-clone git hooks (`pre-commit` lints changed scripts and regenerates `docs/SCRIPTS.md`). Enable with `git config core.hooksPath .githooks`. CI enforces the same invariants tree-wide.
|
||||
|
||||
---
|
||||
|
||||
|
||||
Reference in New Issue
Block a user