All checks were successful
CI / test (push) Successful in 55s
Add the design record for distributing gitea-axi as a Nix flake: a package, a development shell, and a checks output, plus the continuous integration changes that come with it. ADR 0018 records the wrapper's deference to the operator's own `git` and `tea` — the reverse of the hermetic instinct, chosen because `tea` refreshes OAuth tokens in place and so must not have two versions mutating one credential store. Also records the `tea`-is-still-a-runtime-dependency gotcha, which ADR 0002's title obscures.
24 lines
1.6 KiB
Markdown
24 lines
1.6 KiB
Markdown
---
|
|
spec: nix-flake-packaging
|
|
blocked-by: 0037-flake-package-and-wrapper
|
|
---
|
|
|
|
## What to build
|
|
|
|
Two further flake outputs, so `nix develop` gives a declarative answer to "what do I need to work on this" and `nix flake check` is not a silent no-op.
|
|
|
|
The development shell carries the toolchain the repository actually needs: Node, `git`, and `tea` — enough for the build, the live end-to-end tier, and the benchmark harness, all of which the repository documents while specifying no toolchain anywhere.
|
|
It references the same Node attribute as the package, so development and the shipped artifact cannot drift onto different major versions.
|
|
|
|
The checks output aliases the package, so the conventional health-check command builds it and thereby runs both its verification phases.
|
|
Granular per-stage checks are deliberately not added: the one stage that would add real coverage is the full typecheck, which spans the test and benchmark directories and would therefore drag the benchmark harness into the derivation's inputs, undoing the source filtering.
|
|
The full typecheck stays in continuous integration, where it already runs.
|
|
|
|
## Acceptance criteria
|
|
|
|
- [ ] `nix develop` yields a shell with Node, `git`, and `tea` available.
|
|
- [ ] The build, the fast tier, and the benchmark harness's runner all work from inside that shell.
|
|
- [ ] The shell's Node and the package's Node come from one reference — changing it moves both, and they cannot be set independently.
|
|
- [ ] `nix flake check` builds the package and runs its tests, and fails when the package fails.
|
|
- [ ] No per-stage check derivations are added.
|