diff --git a/nixos/akamanto/default.nix b/nixos/akamanto/default.nix index 6d4f717..7fe46be 100644 --- a/nixos/akamanto/default.nix +++ b/nixos/akamanto/default.nix @@ -55,7 +55,8 @@ in { echo ''${path/\/nix\/store\/} } - cp ${pkgs.rpi5-uefi}/* firmware + cp -v ${pkgs.rpi5-uefi}/* firmware + cp -v ${pkgs.rpi5-dtb}/* firmware mkdir -p firmware/EFI/nixos touch firmware/EFI/nixos-sd-system-image @@ -91,7 +92,7 @@ in { serial --speed=115200 --unit=0 --word=8 --parity=no --stop=1 terminal_output console serial - timeout 10 + set timeout=10 set default="0" menuentry '${config.system.nixos.distroName} ${config.system.nixos.label}' { @@ -99,7 +100,6 @@ in { toString config.boot.kernelParams } initrd /EFI/nixos/$initrdFile - devicetree /bcm2712-rpi-5-b.dtb } EOF ''; diff --git a/overlays/rpi5.nix b/overlays/rpi5.nix index 49083e7..236949c 100644 --- a/overlays/rpi5.nix +++ b/overlays/rpi5.nix @@ -13,4 +13,5 @@ self: super: rec { rpi5-edk2-tools = self.callPackage ../pkgs/rpi5-edk2-tools.nix { }; rpi5-uefi = self.callPackage ../pkgs/rpi5-uefi.nix { }; rpi5-uefi-bin = self.callPackage ../pkgs/rpi5-uefi-bin.nix { }; + rpi5-dtb = self.callPackage ../pkgs/rpi5-dtb.nix { }; } diff --git a/pkgs/rpi5-dtb.nix b/pkgs/rpi5-dtb.nix new file mode 100644 index 0000000..273fdc3 --- /dev/null +++ b/pkgs/rpi5-dtb.nix @@ -0,0 +1,26 @@ +{ stdenv, fetchurl, ... }: + +let + dtbVersion = "1e403e23baab5673f0494a200f57cd01287d5b1a"; + fileName = "bcm2712-rpi-5-b.dtb"; +in +stdenv.mkDerivation { + pname = "rpi5-dtb"; + version = "20240316"; + + src = fetchurl { + url = "https://github.com/raspberrypi/firmware/raw/${dtbVersion}/boot/${fileName}"; + hash = "sha256-xUMqzINz+mMR4UciG4ulyGhblXcwr6x1ksXerCsn5zI="; + }; + + phases = [ "installPhase" ]; + + installPhase = '' + runHook preInstall + + mkdir -p $out/ + cp $src $out/${fileName} + + runHook postInstall + ''; +} diff --git a/pkgs/rpi5-uefi-bin.nix b/pkgs/rpi5-uefi-bin.nix index 812851c..7d85998 100644 --- a/pkgs/rpi5-uefi-bin.nix +++ b/pkgs/rpi5-uefi-bin.nix @@ -2,7 +2,7 @@ let version = "v0.3"; in stdenv.mkDerivation { - pname = "rpi5-uefi"; + pname = "rpi5-uefi-bin"; inherit version; src = fetchzip { diff --git a/pkgs/rpi5-uefi.nix b/pkgs/rpi5-uefi.nix index c443dc3..ae0770b 100644 --- a/pkgs/rpi5-uefi.nix +++ b/pkgs/rpi5-uefi.nix @@ -3,10 +3,9 @@ let pythonEnv = buildPackages.python3.withPackages (ps: [ ps.tkinter ]); in stdenv.mkDerivation rec { - name = "rpi5-uefi"; - version = "20240316"; + pname = "rpi5-uefi"; - inherit (rpi5-edk2-tools) src; + inherit (rpi5-edk2-tools) src version; nativeBuildInputs = [ bc pythonEnv util-linux nasm acpica-tools ]; depsBuildBuild = [ buildPackages.stdenv.cc ]; @@ -22,7 +21,8 @@ in stdenv.mkDerivation rec { ln -sv ${rpi5-edk2-tools}/BaseTools edk2/BaseTools sed -i -e '/ACPI_SD_LIMIT_UHS_DEFAULT/s/TRUE/FALSE/' edk2-platforms/Platform/RaspberryPi/RPi5/Drivers/RpiPlatformDxe/ConfigTable.h - sed -i -e '/default\s*= SYSTEM_TABLE_MODE_ACPI/s/SYSTEM_TABLE_MODE_ACPI/SYSTEM_TABLE_MODE_BOTH/' ./edk2-platforms/Platform/RaspberryPi/RPi5/Drivers/RpiPlatformDxe/RpiPlatformDxeHii.vfr + sed -i -e '/default\s*= SYSTEM_TABLE_MODE_ACPI/s/SYSTEM_TABLE_MODE_ACPI/SYSTEM_TABLE_MODE_BOTH/' edk2-platforms/Platform/RaspberryPi/RPi5/Drivers/RpiPlatformDxe/RpiPlatformDxeHii.vfr + sed -i -e '/"SystemTableMode"/s/0$/1/' edk2-platforms/Platform/RaspberryPi/RPi5/RPi5.dsc ''; configurePhase = ''