What happened?
flakehub-publish has been broken since the job was expanded to a 4-system matrix (PR #63). It fails consistently on tag pushes — blocking FlakeHub releases even when the GitHub release itself succeeds.
Two failure modes observed so far, both in the Run DeterminateSystems/flakehub-push@v6 step:
Mode 1 (pre-#64): The Linux runner tried to evaluate macOS outputs and failed trying to build zig-x86_64-macos-0.15.2.tar.xz — a macOS Zig binary that cannot be fetched/built on Linux.
Mode 2 (post-#64, current): With GHA cache disabled, the nix eval inside flakehub-push still fails. The root cause of include-output-paths: true forcing cross-system evaluation has not been resolved.
See: https://github.com/sc2in/zigmark/actions/runs/27066874681
Minimal reproduction
Push any version tag (e.g. v0.7.0-rcN) to main. The flakehub-publish matrix jobs will fail.
Expected behaviour
All 4 flakehub-publish matrix jobs complete successfully and the flake is indexed on FlakeHub with pre-populated output paths for each system.
Actual behaviour
flakehub-publish fails on Linux runners (and possibly macOS) when include-output-paths: true causes flakehub-push to evaluate outputs for systems other than the runner's native architecture.
Version / environment
CI: ubuntu-latest / ubuntu-24.04-arm / macos-14 / macos-13, Zig 0.16.0
When did this break?
After a specific release (v0.7.0-rc3, introduced in PR #63)
Potential solutions to investigate
-
sectionize / per-system output filtering in the flake — expose outputs only for ${system} so flakehub-push only evaluates the local system's outputs when run on that runner. Requires restructuring flake.nix outputs.
-
my-flake-is-too-big: true — tells flakehub-push to skip output-path evaluation entirely. Loses cache pre-population but unblocks publishing.
-
extra-labels scoping — if flakehub-push supports scoping output evaluation to a specific system label, use ${{ matrix.system }} to limit what each runner evaluates.
-
Single-system push without include-output-paths — revert to a single Linux runner with include-output-paths: false for indexing only, and accept that FlakeHub won't pre-populate caches. Simplest fallback.
-
Contact Determinate Systems — this may be a known limitation of flakehub-push with multi-system flakes on single-arch runners; they may have a recommended pattern.
What happened?
flakehub-publishhas been broken since the job was expanded to a 4-system matrix (PR #63). It fails consistently on tag pushes — blocking FlakeHub releases even when the GitHub release itself succeeds.Two failure modes observed so far, both in the
Run DeterminateSystems/flakehub-push@v6step:Mode 1 (pre-#64): The Linux runner tried to evaluate macOS outputs and failed trying to build
zig-x86_64-macos-0.15.2.tar.xz— a macOS Zig binary that cannot be fetched/built on Linux.Mode 2 (post-#64, current): With GHA cache disabled, the
nix evalinsideflakehub-pushstill fails. The root cause ofinclude-output-paths: trueforcing cross-system evaluation has not been resolved.See: https://github.com/sc2in/zigmark/actions/runs/27066874681
Minimal reproduction
Push any version tag (e.g.
v0.7.0-rcN) tomain. Theflakehub-publishmatrix jobs will fail.Expected behaviour
All 4
flakehub-publishmatrix jobs complete successfully and the flake is indexed on FlakeHub with pre-populated output paths for each system.Actual behaviour
flakehub-publishfails on Linux runners (and possibly macOS) wheninclude-output-paths: truecausesflakehub-pushto evaluate outputs for systems other than the runner's native architecture.Version / environment
CI:
ubuntu-latest/ubuntu-24.04-arm/macos-14/macos-13, Zig 0.16.0When did this break?
After a specific release (v0.7.0-rc3, introduced in PR #63)
Potential solutions to investigate
sectionize/ per-system output filtering in the flake — expose outputs only for${system}soflakehub-pushonly evaluates the local system's outputs when run on that runner. Requires restructuringflake.nixoutputs.my-flake-is-too-big: true— tellsflakehub-pushto skip output-path evaluation entirely. Loses cache pre-population but unblocks publishing.extra-labelsscoping — ifflakehub-pushsupports scoping output evaluation to a specific system label, use${{ matrix.system }}to limit what each runner evaluates.Single-system push without
include-output-paths— revert to a single Linux runner withinclude-output-paths: falsefor indexing only, and accept that FlakeHub won't pre-populate caches. Simplest fallback.Contact Determinate Systems — this may be a known limitation of
flakehub-pushwith multi-system flakes on single-arch runners; they may have a recommended pattern.