ci: add Forgejo Actions workflow (nix flake check + launcher parse) #9

Merged
pedromcaraujo merged 1 commit from feat/ci-actions into main 2026-07-17 11:47:24 +01:00

Summary

The repo had no CI. This adds a Forgejo Actions workflow (.forgejo/workflows/ci.yml)
that runs on every PR and on pushes to main, on the same self-hosted host
runner the fleet uses (nix on PATH, no container):

  • nix flake check — evaluates the module (option processing, channel
    ordering, assertions) and builds the generated launcher static root via the
    flake's existing checks.eval output.
  • launcher scripts parse — the launcher is a single hand-maintained
    web/index.html with no build step, so .forgejo/scripts/check-launcher.mjs
    extracts its inline <script> blocks and parse-checks them (syntax only).
    Catches an error that would otherwise ship a blank page.

Notes / decisions

  • No formatter gate. The flake declares nixpkgs-fmt but it was never
    enforced, and the .nix files use intentional = alignment (the theme
    palette, etc.) that nixpkgs-fmt would flatten. Left out to avoid ~65 lines of
    destructive churn.
  • No concurrency: block — Forgejo 15 LTS refuses to dispatch workflows
    that carry one.

Test plan

Both steps were run locally against this branch:

  • nix flake checkall checks passed!
  • check-launcher.mjsok: 2 inline script block(s) parse cleanly
  • Confirm the self-hosted runner picks up the workflow and both steps go
    green on this PR.
## Summary The repo had no CI. This adds a Forgejo Actions workflow (`.forgejo/workflows/ci.yml`) that runs on every PR and on pushes to `main`, on the same self-hosted host runner the fleet uses (`nix` on PATH, no container): - **`nix flake check`** — evaluates the module (option processing, channel ordering, assertions) and builds the generated launcher static root via the flake's existing `checks.eval` output. - **launcher scripts parse** — the launcher is a single hand-maintained `web/index.html` with no build step, so `.forgejo/scripts/check-launcher.mjs` extracts its inline `<script>` blocks and parse-checks them (syntax only). Catches an error that would otherwise ship a blank page. ## Notes / decisions - **No formatter gate.** The flake declares `nixpkgs-fmt` but it was never enforced, and the `.nix` files use intentional `=` alignment (the theme palette, etc.) that nixpkgs-fmt would flatten. Left out to avoid ~65 lines of destructive churn. - **No `concurrency:` block** — Forgejo 15 LTS refuses to dispatch workflows that carry one. ## Test plan Both steps were run locally against this branch: - [x] `nix flake check` → `all checks passed!` - [x] `check-launcher.mjs` → `ok: 2 inline script block(s) parse cleanly` - [ ] Confirm the self-hosted runner picks up the workflow and both steps go green on this PR.
ci: add a Forgejo Actions workflow
All checks were successful
CI / check (pull_request) Successful in 30s
0f135d078e
Runs on every PR and on pushes to main, on the same self-hosted host
runner the fleet uses (nix on PATH, no container):

- nix flake check -- evaluates the module (option processing, channel
  ordering, assertions) and builds the generated launcher static root
  via the flake's checks.eval output.
- launcher scripts parse -- the launcher is a single hand-maintained
  index.html with no build step, so a small Node script extracts its
  inline <script> blocks and parse-checks them, catching a syntax error
  that would otherwise ship a blank page.

No formatter gate: the repo's .nix files use intentional = alignment
that nixpkgs-fmt would flatten. No concurrency: block either -- Forgejo
15 LTS refuses to dispatch workflows that carry one.
Sign in to join this conversation.
No reviewers
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
pedromcaraujo/forge!9
No description provided.