diff --git a/nixos/akamanto/default.nix b/nixos/akamanto/default.nix index a411278..6d4f717 100644 --- a/nixos/akamanto/default.nix +++ b/nixos/akamanto/default.nix @@ -55,7 +55,7 @@ in { echo ''${path/\/nix\/store\/} } - cp ${pkgs.rpi5-uefi-bin}/boot/* firmware + cp ${pkgs.rpi5-uefi}/* firmware mkdir -p firmware/EFI/nixos touch firmware/EFI/nixos-sd-system-image @@ -249,8 +249,6 @@ in { bluez pipewire (v4l-utils.override { withGUI = false; }) - - rpi5-edk2 ]; programs.nix-index.enable = lib.mkForce false; services.journald.extraConfig = '' diff --git a/pkgs/rpi5-edk2-tools.nix b/pkgs/rpi5-edk2-tools.nix index c33504d..b5efd16 100644 --- a/pkgs/rpi5-edk2-tools.nix +++ b/pkgs/rpi5-edk2-tools.nix @@ -1,6 +1,5 @@ -{ lib, stdenv, fetchFromGitHub, openssl -, buildPackages, runCommand, clangStdenv, fetchpatch, libuuid -, python3 }: +{ lib, stdenv, fetchFromGitHub, openssl, buildPackages, runCommand, clangStdenv +, fetchpatch, libuuid, python3 }: let srcWithVendoring = fetchFromGitHub { @@ -38,7 +37,7 @@ in stdenv.mkDerivation { # trick taken from https://src.fedoraproject.org/rpms/edk2/blob/08f2354cd280b4ce5a7888aa85cf520e042955c3/f/edk2.spec#_319 GCC5_AARCH64_PREFIX = stdenv.cc.targetPrefix; - makeFlags = [ "-C edk2/BaseTools" ]; + makeFlags = [ "-C edk2/BaseTools" "-j 14" ]; env.NIX_CFLAGS_COMPILE = "-Wno-return-type" + lib.optionalString stdenv.cc.isGNU " -Wno-error=stringop-truncation" diff --git a/pkgs/rpi5-uefi.nix b/pkgs/rpi5-uefi.nix index bd9d478..e9bd6c2 100644 --- a/pkgs/rpi5-uefi.nix +++ b/pkgs/rpi5-uefi.nix @@ -1,49 +1,57 @@ -{ lib, stdenv, openssl, pkgsCross -, buildPackages, runCommand, rpi5-arm-tf, rpi5-edk2-tools, libuuid -, python3, bc }: +{ lib, stdenv, openssl, pkgsCross, buildPackages, runCommand, rpi5-arm-tf +, rpi5-edk2-tools, libuuid, python3, bc, util-linux, nasm, acpica-tools }: -let - pythonEnv = buildPackages.python3.withPackages (ps: [ps.tkinter]); -in stdenv.mkDerivation { - name = "rpi5-arm-uefi"; - - inherit (rpi5-edk2-tools) src version; +let pythonEnv = buildPackages.python3.withPackages (ps: [ ps.tkinter ]); +in stdenv.mkDerivation rec { + name = "rpi5-uefi"; + version = "20240316"; - nativeBuildInputs = [ bc pythonEnv ]; + inherit (rpi5-edk2-tools) src; + + nativeBuildInputs = [ bc pythonEnv util-linux nasm acpica-tools ]; depsBuildBuild = [ buildPackages.stdenv.cc ]; strictDeps = true; # trick taken from https://src.fedoraproject.org/rpms/edk2/blob/08f2354cd280b4ce5a7888aa85cf520e042955c3/f/edk2.spec#_319 GCC5_AARCH64_PREFIX = stdenv.cc.targetPrefix; + env.NIX_CFLAGS_COMPILE = toString [ "-Wformat" ]; + prePatch = '' - rm -rf BaseTools - ln -sv ${rpi5-edk2-tools}/BaseTools BaseTools + rm -rf edk2/BaseTools + ln -sv ${rpi5-edk2-tools}/BaseTools edk2/BaseTools ''; configurePhase = '' runHook preConfigure export WORKSPACE="$PWD" - . ${rpi5-edk2-tools}/edksetup.sh BaseTools + export PACKAGES_PATH=$WORKSPACE/edk2:$WORKSPACE/edk2-platforms:$WORKSPACE/edk2-non-osi + + . $WORKSPACE/edk2/edksetup.sh BaseTools runHook postConfigure ''; buildPhase = '' runHook preBuild + build -a AARCH64 \ -b RELEASE \ -t GCC \ -p edk2-platforms/Platform/RaspberryPi/RPi5/RPi5.dsc \ -D TFA_BUILD_ARTIFACTS=${rpi5-arm-tf} \ - --pcd gEfiMdeModulePkgTokenSpaceGuid.PcdFirmwareVersionString=L"${rpi5-edk2-tools.version}" \ + --pcd gEfiMdeModulePkgTokenSpaceGuid.PcdFirmwareVersionString=L"${version}" \ -n $NIX_BUILD_CORES $buildFlags - + runHook postBuild ''; installPhase = '' runHook preInstall - mv -v Build/*/* $out + + mkdir -p $out + mv -v Build/RPi5/RELEASE_GCC/FV/RPI_EFI.fd $out/ + mv -v config.txt $out/ + runHook postInstall ''; }