Skip to content

Ubuntu CI hangs building pkgs.chromium from source #170

@thedavidmeister

Description

@thedavidmeister

Symptom

All Ubuntu jobs in Rainix CI hang at the first nix develop --command … step after the Nix store cache restore, for hours, until they hit the 6h job timeout. macOS jobs in the same matrix complete normally (~10 min).

Examples from the post-merge run of PR #166:

Job URL Hang point
cargo build --release ubuntu https://github.com/rainlanguage/rainix/actions/runs/25799792336/job/75786363240 step 5 nix develop ../.. --command forge soldeer install
Solidity test ubuntu https://github.com/rainlanguage/rainix/actions/runs/25799792336/job/75786363265 step 5 same
rainix-check-shell ubuntu https://github.com/rainlanguage/rainix/actions/runs/25799792383/job/75786363118 step 6 nix develop --command cargo release --version

Live UI log shows nix building chromium-unwrapped from source.

Cause

The default devShell on Linux pulls pkgs.chromium via flake.nix:148:

exec ${pkgs.chromium}/bin/chromium "$@"

PR #166 bumped nixpkgs to 4ba039de0909446943c07e2b42bd2f0f4507072e. At that nixpkgs revision, cache.nixos.org does not have a prebuilt chromium binary, so Nix builds it from source on the runner — a multi-hour compile that exceeds the 6h job timeout under load.

macOS escapes because the same flake wraps the system Chrome.app on Darwin and never asks Nix to build chromium.

Slim shells (sol-shell, rust-shell) intentionally omit chromium, so consumers that pin to those (e.g. via github:rainlanguage/rainix#sol-shell in their reusable workflow calls) are unaffected. Only the default shell — which the rainix repo's own CI exercises — is impacted.

Short-term fix (this PR)

Drop pkgs.chromium from the Linux default devShell. The chromium binary is currently only used to satisfy the chromium.test.bats smoke test and any downstream consumer that opens a headless browser; nothing in rainix itself actually invokes it. Removing it unblocks CI immediately and is safe to revert once a longer-term fix is in place.

Long-term fix

Pick one:

  1. Pin nixpkgs to a revision where cache.nixos.org has a prebuilt chromium binary (verify before bumping by querying the cache for the chromium output path).
  2. Replace pkgs.chromium with a prebuilt binary fetch (fetchzip of a stable Chromium tarball, or pkgs.google-chrome if cached).
  3. Add a project binary cache (cachix or similar) that stores the chromium build, so subsequent jobs pull rather than rebuild.

Option 1 is the smallest delta and is the default until/unless we hit it again.

Metadata

Metadata

Labels

No labels
No labels

Type

No type
No fields configured for issues without a type.

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions