imx-mkimage runs on the build machine, but ucm-imx95-boot used target stdenv
and forced clang. Cross-building the SD image from x86_64 then failed building
mkimage_imx8 with "stdio.h not found", blocking flash.bin.
Build mkimage with buildPackages; keep firmware blobs from target pkgs.
When building the imx93 SD image from x86_64, imx93-boot used target pkgs for
the imx-mkimage derivation and its native tools (git, dtc, xxd). mkimage runs on
the build machine, but Nix tried to cross-compile git for aarch64 and failed
with "linker `cc` not found" while building libgitcore, blocking flash.bin and
the SD image.
Build mkimage with buildPackages (host tools) while keeping firmware inputs
(ATF, U-Boot, OP-TEE, etc.) from target pkgs.
GCC 14+ treats the mismatched TRDC header guard in imx-atf as a hard error
(-Werror=header-guard), so bl31.bin does not build on our pinned revision.
Fetch the upstream fix (e194a14) as a patch without bumping the ATF revision.
Add hardware support module for Radxa Rock 3C SBC (Rockchip RK3566).
- Introduces rockchip/rk3566 platform module exposing
hardware.rockchip.rk3566.enable.
- New radxa/rock-3c module enables radxa, rk3566, and defaults
platformFirmware to pkgs.ubootRock3C.
The Pi 3 profile didn't import ../common/default.nix, so it skipped
the shared boot.initrd.availableKernelModules (usb-storage, usbhid,
vc4). Every other board profile imports common/. Bring Pi 3 in line.
PR #1788 added hardware.raspberry-pi.configtxt and a defaults file,
but nothing imported them, so the options had no effect. Import both
from common/default.nix. Board profiles that already import common/
(2, 4, 5) now apply the pi-gen-equivalent defaults.
freeform "" can't emit an empty string through nixpkgs mkValue; it renders as the literal "", so CONFIG_LOCALVERSION ends up two chars and modDirVersion becomes 6.12.75"". Bring back the sed from before #1841.
Fixes#1859.
Override the nixpkgs common-config.nix values that conflict with the RPi
vendor defconfigs. Without these the kernel config silently differs from
the vendor defconfig.
mkForce is used only on options where nixpkgs common-config sets a
conflicting value at normal priority.
Ref: https://github.com/raspberrypi/linux/tree/rpi-6.12.y/arch/arm64/configs
Set CONFIG_LOCALVERSION via structuredExtraConfig instead of patching
.config and auto.conf with sed after configure. The vendor defconfigs
set -v7, -v8, -v8-16k which breaks modDirVersion.
As mentioned in Nixpkgs PR [^1], Raspberry Pi folks stop tagging both
raspberrypi/linux and raspberrypi/firmware GitHub repo. So, I switched
my reference point to Raspberry Pi OS, which publishes their packaging
for Linux kernel in RPi-Distro/linux-packaging.
The version is set to Debian packaging's version, and the commit comes
from the changelog entry for that version.
The old code structure is somewhat kept in case Raspberry Pi ever tags
their raspberrypi/linux repo again.
[^1]: https://github.com/NixOS/nixpkgs/pull/493115
- Gate on rpiVersion instead of architecture; skip for Pi 4+ where
vendor and upstream DTB names already match
- Fix bcm2835-rpi-zero.dtb: was copied from bcm2708-rpi-b-plus (wrong
board), now uses bcm2708-rpi-zero
- Drop bcm2711-rpi-4-b -> bcm2838-rpi-4-b copy; nothing uses bcm2838-*
Ref: https://github.com/u-boot/u-boot/blob/master/board/raspberrypi/rpi/rpi.c