Repository navigation
Conversation
`packages.<system>.*` have to be derivations, and kernel package sets aren't, so `nix flake check` failed outright: error: flake attribute 'packages.aarch64-linux.linuxPackages_rpi5' is not a derivation The same values are in `legacyPackages.<system>.linuxPackages_rpi*`, so the board modules now take them from there. The toplevel derivations of all four installer configurations are unchanged. Anyone using `nixos-raspberrypi.packages.<system>.linuxPackages_rpi*` directly has to switch to `legacyPackages`. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01KPj7F7TikRtVpRWzKxRzKv
`nix flake check` now: - evaluates every board (02, 3, 4, 5) with every bootloader (kernel, kernelboot, uboot), and each board with its optional hardware modules - on aarch64-linux, runs each configuration's bootloader installer the way the sd-image does, against a fake system generation (so no kernel has to be built), and checks what lands on the firmware and boot partitions: config.txt, boot code, kernel, initrd and cmdline.txt, device trees and overlays, the u-boot binary and extlinux.conf The evaluation checks are also there for x86_64-linux, so that `nix flake check` works without an aarch64 builder. `nixosModules.pisugar-3` is left out of the matrix: it doesn't evaluate, `pisugar3-kmod` is undefined. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01KPj7F7TikRtVpRWzKxRzKv
The build matrix only ran on push, after merge, and the only check on pull requests was formatting, so broken builds could land on develop (nvmd#205, nvmd#237, nvmd#256). - cachix.yaml also runs on pull requests to main and develop. Pushes only build main, develop and release tags, so a same-repo PR branch isn't built twice. - The cache name is public, hardcode it instead of reading a secret: runs without secrets (forks, Dependabot) then use the cache read-only instead of failing at the cachix step. - Each pull request gets its own concurrency group, where a new push cancels the stale build. Pushes keep sharing one queue. - "All builds passed" job: a single status check to require in the branch rules, instead of every matrix job. - ci.yaml runs `nix flake check` on aarch64, next to the format check. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01KPj7F7TikRtVpRWzKxRzKv
Events caused by the default GITHUB_TOKEN don't trigger workflows, so the weekly flake.lock and nix-update PRs were never built before being merged; two of the breakages that reached develop came from them (nvmd#205, nvmd#237). When the `BOT_APP_CLIENT_ID` variable and the `BOT_APP_PRIVATE_KEY` secret are set, both workflows open their PRs with a GitHub App token instead, and CI runs on them. Without them nothing changes. Setting the `BOT_AUTO_MERGE` variable to `true` also enables auto-merge on those PRs, meant for once the CI checks are required on develop. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01KPj7F7TikRtVpRWzKxRzKv
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Today the only check that runs on a PR is
nix fmt; the build matrix incachix.yamlruns on push, i.e. after merge. Since June that let threebreakages land on
develop, each fixed by a follow-up commit:raspberrypifw_20260919doesn't exist, configs didn't evaluateNone of them ran a build before merge: #237 got the format check, #205 and
#256 no checks at all.
What this changes
Builds run on pull requests (
cachix.yaml)pull_requesttomain/develop;pushnow only buildsmain,developandv*tags (no more duplicate push + PR runs)Dependabot) now use the cache read-only instead of failing at the cachix step,
which is why every Dependabot build has been red
the kernel instead of rebuilding it
pushes keep sharing the one queue
All builds passedjob: the single status check to requirenix flake checkworks, and means something (checks/,ci.yaml)packages.<system>.linuxPackages_rpi*were not derivations, sonix flake checkfailed outright. They are moved out ofpackages(identical values remain at
legacyPackages.<system>.linuxPackages_rpi*, whichthe board modules now use)
eval-*: every board (02, 3, 4, 5) × every bootloader (kernel, kernelboot,uboot), plus each board with its optional modules. Evaluation only
bootloader-*(aarch64-linux): runs each configuration's bootloaderinstaller like the sd-image does, against a fake generation (no kernel
build), and checks config.txt, boot code, kernel/initrd/cmdline.txt
placement, device trees, the u-boot binary and extlinux.conf.
nix build .#checks.aarch64-linux.bootloader-rpi5-kernelleaves the populated partitionsin
result/for inspectionnix flake checkworks on alaptop without an aarch64 builder
ci.yamlrunsnix flake checkonubuntu-24.04-armBot PRs can trigger CI (
update-flake-lock.yml,update-packages.yml)of needing a close/reopen. Opt-in, falls back to
GITHUB_TOKENTesting
nix flake checkpasses on aarch64 (Raspberry Pi 5): 28 checks in ~3.5 min,peak ~8.5 GB RSS, which fits the 16 GB arm runner
before and after the
linuxPackages_rpi*movenix flake checkfails in 7 s withattribute 'raspberrypifw_20260919' missingkernelbootloader:bootloader-rpi5-kernelfailsinit=dropped from kernelboot's cmdline.txt:bootloader-rpi4-kernelbootfails
actionlintis cleanand coming from a fork it also covers the read-only cache path), and the App
token / auto-merge path
Setup (repository settings, after merging)
develop(andmain) requiring:Check formatting,Flake check,All builds passedrequests, installed on the repo; variable
BOT_APP_CLIENT_ID, secretBOT_APP_PRIVATE_KEYand set the variable
BOT_AUTO_MERGE=trueThe
CACHIX_CACHE_NAMEsecret is no longer used.Breaking change
nixos-raspberrypi.packages.<system>.linuxPackages_rpi*are gone; usenixos-raspberrypi.legacyPackages.<system>.linuxPackages_rpi*(same values).Found by the new checks, not fixed here
nixosModules.pisugar-3doesn't evaluate:error: undefined variable 'pisugar3-kmod'(modules/pisugar-3.nix:32). It's left out of the matrix.🤖 Generated with Claude Code
https://claude.ai/code/session_01KPj7F7TikRtVpRWzKxRzKv