Skip to content

CI: replace nix in GitHub Actions with direct toolchains #286

Closed

Description

@dezren39

GitHub Actions and nix do not play well together here, and the mcpx workflow pays for it twice.

Measured on a recent dezren39/nix mcpx run (same workflow shape as this repo): total job 10.6 min = ~0.5 min setup (checkout, nix installer, setup-go/deno/bun/node), 4.6 min unit+e2e tests run with the direct Go toolchain, then 5.4 min "Nix build" that recompiles the same code a second time inside a nix derivation.

Problems:

  • mcpx.yml, nix-ci.yml and id-check.yml all install nix (DeterminateSystems/nix-installer-action) per job, then mostly use direct toolchains anyway.
  • No nix store cache is configured anywhere (no cachix, no magic-nix-cache), so every run is cold.
  • Known friction: intermittent ENOSPC failures in the nix flake check (see CI: nix flake check intermittently dies with 'No space left on device' in id-test/id-ci #257), sandbox/store quirks, and vendorHash repair steps that only exist because of the nix path.

Proposal: build and test with the direct toolchains in GHA (setup-go + go build/test, goreleaser where releases need it). Keep nix only for a step that genuinely needs a flake output, and name that exception in the workflow. The flake stays for local/dev use; CI should not need it.

Acceptance: no nix installer steps remain in PR CI (or each remaining one has a comment justifying it); per-PR CI wall time drops measurably; all existing checks still run.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions