Files
gitea-axi/.claude/tasks/0039-dev-shell-and-checks.md
alexion 0cbfe43ae0
All checks were successful
CI / test (push) Successful in 55s
docs: plan Nix flake packaging (spec, ADR 0018, tasks 0036-0042)
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.
2026-07-19 22:22:02 -04:00

1.6 KiB

spec, blocked-by
spec blocked-by
nix-flake-packaging 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.