diff --git a/overlay/default.nix b/overlay/default.nix index fb66e97..87fd898 100644 --- a/overlay/default.nix +++ b/overlay/default.nix @@ -1,4 +1,22 @@ -final: prev: { +final: prev: +let + rpi-kernel = { kernel, version, fw }: + let + new-kernel = prev.linux_rpi4.override { + argsOverride = { + src = kernel; + inherit version; + modDirVersion = version; + }; + }; + new-fw = prev.raspberrypifw.overrideAttrs (oldfw: { src = fw; }); + version-slug = builtins.replaceStrings [ "." ] [ "_" ] version; + in { + "linux_rpi-${version-slug}" = new-kernel; + "raspberrypifw-${version-slug}" = new-fw; + }; + rpi-kernels = builtins.foldl' (b: a: b // rpi-kernel a) { }; +in { # newer version of libcamera libcamera = prev.libcamera.overrideAttrs (old: { src = prev.fetchgit { @@ -12,40 +30,48 @@ final: prev: { libcamera-apps = final.callPackage ./libcamera-apps.nix { }; - # newer version of rpi firmware - raspberrypifw = prev.raspberrypifw.overrideAttrs (old: { - src = prev.fetchFromGitHub { - owner = "raspberrypi"; - repo = "firmware"; - rev = "2cf8a179b3f2e6e5e5ceba4e8e544def10a49020"; - sha256 = "YG1bryflbV3W62MhZ/XMSgUJXMhCl/fe86x+CT7XZ4U="; - }; - }); - # provide generic rpi arm64 u-boot uboot_rpi_arm64 = prev.buildUBoot rec { defconfig = "rpi_arm64_defconfig"; extraMeta.platforms = [ "aarch64-linux" ]; filesToInstall = [ "u-boot.bin" ]; - version = "2022.04"; + version = "2022.07"; src = prev.fetchurl { url = "ftp://ftp.denx.de/pub/u-boot/u-boot-${version}.tar.bz2"; - sha256 = "1l5w13dznj0z1ibqv2d6ljx2ma1gnf5x5ay3dqkqwxr6750nbq38"; + sha256 = "0png7p8k6rwbmmcyhc22xczcaz7kx0dafw5zmp0i9ni4kjs8xc4j"; }; }; - - # use a newer version of the rpi linux kernel fork - linux_rpi = prev.linux_rpi4.override { - argsOverride = rec { - src = prev.fetchFromGitHub { - owner = "raspberrypi"; - repo = "linux"; - rev = "9af1cc301e4dffb830025207a54d0bc63bec16c7"; - sha256 = "fsMTUdz1XZhPaSXpU1uBV4V4VxoZKi6cwP0QJcrCy1o="; - fetchSubmodules = true; - }; - version = "5.15.36"; - modDirVersion = "5.15.36"; +} // (rpi-kernels [ + { + version = "5.15.36"; + kernel = prev.fetchFromGitHub { + owner = "raspberrypi"; + repo = "linux"; + rev = "9af1cc301e4dffb830025207a54d0bc63bec16c7"; + sha256 = "fsMTUdz1XZhPaSXpU1uBV4V4VxoZKi6cwP0QJcrCy1o="; + fetchSubmodules = true; }; - }; -} + fw = prev.fetchFromGitHub { + owner = "raspberrypi"; + repo = "firmware"; + rev = "2cf8a179b3f2e6e5e5ceba4e8e544def10a49020"; + sha256 = "YG1bryflbV3W62MhZ/XMSgUJXMhCl/fe86x+CT7XZ4U="; + }; + } + { + version = "5.15.56"; + kernel = prev.fetchFromGitHub { + owner = "raspberrypi"; + repo = "linux"; + rev = "912b039b7c55d40ae930f2602e45c66055c375a8"; + sha256 = "igtTOPbDw9FJAzZe7u4trCkHLOIQX0RZdUwtWpBX1Ag="; + fetchSubmodules = true; + }; + fw = prev.fetchFromGitHub { + owner = "raspberrypi"; + repo = "firmware"; + rev = "e1e3dc004ec45c0a6ab3f32eb02c1e0c8846796c"; + sha256 = "Smn3wQ81zzmj+Wpt2Xwby+0Zt7YGhmhlaEscbaZaMmI="; + }; + } +]) diff --git a/rpi/default.nix b/rpi/default.nix index 26e6750..1df7e01 100644 --- a/rpi/default.nix +++ b/rpi/default.nix @@ -13,7 +13,7 @@ nixpkgs = { overlays = [ overlay ]; }; boot = { - kernelPackages = pkgs.linuxPackagesFor (pkgs.linux_rpi); + kernelPackages = pkgs.linuxPackagesFor (pkgs.linux_rpi-5_15_56); initrd.availableKernelModules = [ "usbhid" "usb_storage" "vc4" ]; loader = { diff --git a/sd-image/default.nix b/sd-image/default.nix index 66b3a9e..0977461 100644 --- a/sd-image/default.nix +++ b/sd-image/default.nix @@ -17,6 +17,7 @@ stable: sdImage = { populateFirmwareCommands = let + raspberrypifw = pkgs.raspberrypifw-5_15_56; configTxt = pkgs.writeText "config.txt" '' [pi02] kernel=u-boot-rpi_arm64.bin @@ -48,7 +49,7 @@ stable: avoid_warnings=1 ''; in '' - (cd ${pkgs.raspberrypifw}/share/raspberrypi/boot && cp bootcode.bin fixup*.dat start*.elf $NIX_BUILD_TOP/firmware/) + (cd ${raspberrypifw}/share/raspberrypi/boot && cp bootcode.bin fixup*.dat start*.elf $NIX_BUILD_TOP/firmware/) # Add the config cp ${configTxt} firmware/config.txt @@ -57,16 +58,16 @@ stable: cp ${pkgs.uboot_rpi_arm64}/u-boot.bin firmware/u-boot-rpi_arm64.bin # Add pi3 specific files - cp ${pkgs.raspberrypifw}/share/raspberrypi/boot/bcm2710-rpi-3-b-plus.dtb firmware/ + cp ${raspberrypifw}/share/raspberrypi/boot/bcm2710-rpi-3-b-plus.dtb firmware/ # Add pi4 specific files cp ${pkgs.ubootRaspberryPi4_64bit}/u-boot.bin firmware/u-boot-rpi4.bin cp ${pkgs.raspberrypi-armstubs}/armstub8-gic.bin firmware/armstub8-gic.bin - cp ${pkgs.raspberrypifw}/share/raspberrypi/boot/bcm2711-rpi-4-b.dtb firmware/ + cp ${raspberrypifw}/share/raspberrypi/boot/bcm2711-rpi-4-b.dtb firmware/ # Add pi-zero-2 specific files - cp ${pkgs.raspberrypifw}/share/raspberrypi/boot/bcm2710-rpi-zero-2.dtb firmware/ - cp ${pkgs.raspberrypifw}/share/raspberrypi/boot/bcm2710-rpi-zero-2-w.dtb firmware/ + cp ${raspberrypifw}/share/raspberrypi/boot/bcm2710-rpi-zero-2.dtb firmware/ + cp ${raspberrypifw}/share/raspberrypi/boot/bcm2710-rpi-zero-2-w.dtb firmware/ ''; populateRootCommands = '' mkdir -p ./files/boot