diff --git a/modules/nixos/hardware/raspberry-pi/default.nix b/modules/nixos/hardware/raspberry-pi/default.nix index 190e3f6..f269846 100644 --- a/modules/nixos/hardware/raspberry-pi/default.nix +++ b/modules/nixos/hardware/raspberry-pi/default.nix @@ -153,7 +153,7 @@ let uefiBuilder = import ./uefi-builder.nix { inherit pkgs; uefiPackage = ( - if (cfg.variant == "5") then pkgs.${namespace}.uefi-rpi5 else pkgs.${namespace}.uefi-rpi4 + if (cfg.variant == "5") then pkgs.${namespace}.uefi-rpi5 else pkgs.${namespace}.edk2.override { MODEL = "4"; } ); firmwareBuilder = firmwarePopulateCmd; }; diff --git a/packages/edk2-basetools/default.nix b/packages/edk2-basetools/default.nix index d9c92fd..940c22f 100644 --- a/packages/edk2-basetools/default.nix +++ b/packages/edk2-basetools/default.nix @@ -1,11 +1,7 @@ { stdenv -, fetchFromGitHub , lib -, applyPatches -, fetchpatch -, MODEL ? "5" -, RELEASE_TYPE ? "RELEASE" -, EDK2_FLAGS ? "" +, src +, version ? "stable202511" , python3 , git , libuuid @@ -15,20 +11,9 @@ let pythonEnv = python3.withPackages (ps: [ ps.tkinter ]); pname = "edk2-basetools"; - version = "stable202511"; in stdenv.mkDerivation rec { - inherit pname version; - - edk2Src = fetchFromGitHub rec { - owner = "mjallen18"; - repo = "edk2"; - name = repo; - #tag = "edk2-${version}"; - rev = "9765be56f1f816ef737153f5588b3294fcc69a63"; - hash = "sha256-oqfJbNeOj2BVJqWE+snD6ri3lUO1aNcmPg+eJpjyr5E="; - fetchSubmodules = true; - }; + inherit src pname version; env = { NIX_CFLAGS_COMPILE = @@ -54,7 +39,7 @@ stdenv.mkDerivation rec { unpackPhase = '' runHook preUnpack - unpackFile "$edk2Src" + unpackFile "$src" chmod -R u+w . @@ -69,10 +54,12 @@ stdenv.mkDerivation rec { postPatch = '' # enable compilation using Clang # https://bugzilla.tianocore.org/show_bug.cgi?id=4620 - ls -alh substituteInPlace edk2/BaseTools/Conf/tools_def.template --replace-fail \ 'DEFINE CLANGPDB_WARNING_OVERRIDES = ' \ 'DEFINE CLANGPDB_WARNING_OVERRIDES = -Wno-unneeded-internal-declaration ' + + substituteInPlace edk2/BaseTools/Conf/tools_def.template \ + --replace "-Werror" "-Werror -Wno-error=format-security" ''; buildPhase = '' diff --git a/packages/edk2/default.nix b/packages/edk2/default.nix index 3bdfc37..964e0ee 100644 --- a/packages/edk2/default.nix +++ b/packages/edk2/default.nix @@ -1,7 +1,7 @@ { stdenv , fetchFromGitHub , lib -, MODEL ? "4" +, MODEL ? "5" , RELEASE_TYPE ? "RELEASE" , EDK2_FLAGS ? "" , nasm @@ -11,6 +11,7 @@ , openssl , git , libuuid +, acpica-tools , pkgs , namespace }: @@ -18,33 +19,64 @@ let pname = "edk2"; version = "stable202511"; - edk2Src = fetchFromGitHub rec { - owner = "mjallen18"; - repo = "edk2"; - name = repo; - #tag = "edk2-${version}"; - rev = "9765be56f1f816ef737153f5588b3294fcc69a63"; - hash = "sha256-oqfJbNeOj2BVJqWE+snD6ri3lUO1aNcmPg+eJpjyr5E="; - fetchSubmodules = true; - }; + edk2Src = (if MODEL == "5" then + fetchFromGitHub rec { + owner = "mjallen18"; + repo = "edk2"; + name = repo; + rev = "9765be56f1f816ef737153f5588b3294fcc69a63"; + hash = "sha256-oqfJbNeOj2BVJqWE+snD6ri3lUO1aNcmPg+eJpjyr5E="; + fetchSubmodules = true; + } + else + fetchFromGitHub rec { + owner = "tianocore"; + repo = "edk2"; + name = repo; + tag = "edk2-${version}"; + hash = "sha256-R/rgz8dWcDYVoiM67K2UGuq0xXbjjJYBPtJ1FmfGIaU="; + fetchSubmodules = true; + } + ); - edk2NonOsiSrc = fetchFromGitHub rec { - owner = "mjallen18"; - repo = "edk2-non-osi"; - name = repo; - rev = "09ee44f07ded544d976be8a03dec3715719homeassistant-apif638e"; - hash = "sha256-k7nUb3WaRUIr9IlXdam2WGKPOzKjLNVFLfuD5h4veMc="; - }; + edk2NonOsiSrc = (if MODEL == "5" then + fetchFromGitHub rec { + owner = "mjallen18"; + repo = "edk2-non-osi"; + name = repo; + rev = "09ee44f07ded544d976be8a03dec3715719f638e"; + hash = "sha256-k7nUb3WaRUIr9IlXdam2WGKPOzKjLNVFLfuD5h4veMc="; + } + else + fetchFromGitHub rec { + owner = "tianocore"; + repo = "edk2-non-osi"; + name = repo; + rev = "94d048981116e2e3eda52dad1a89958ee404098d"; + hash = "sha256-6yuvVvmGn4yaEksbbvGDX1ZcKpdWBKnwaNjLGvgAWyk="; + } + ); - edk2PlatformsSrc = fetchFromGitHub rec { - owner = "mjallen18"; - repo = "edk2-platforms"; - name = repo; - rev = "933314d94a3d05f2f62b0f2148151d4a0f1e1183"; - hash = "sha256-Tnvrwk4g191LzfTkdoFw1BBN51EWhEQ7DRe9u5Mzc0w="; - }; + edk2PlatformsSrc = (if MODEL == "5" then + fetchFromGitHub rec { + owner = "mjallen18"; + repo = "edk2-platforms"; + name = repo; + rev = "8dfa12ddd9e1d695f13a7e35e3646396a09ccb67"; + hash = "sha256-8KaXpUWJtAbT35dX/fF94Y9HLzYHLOkX+Xzbn9l7idU="; + } + else + fetchFromGitHub rec { + owner = "tianocore"; + repo = "edk2-platforms"; + name = repo; + rev = "0991a0b643509d900e5d023a0116789827a696e5"; + hash = "sha256-IdACr0NStqEpC0TFoKKgDwKT2mqyJwVXW/B7hlRXccI="; + } + ); - baseTools = pkgs.${namespace}.edk2-basetools; + baseTools = pkgs.${namespace}.edk2-basetools.override { version = "stable202511"; src = edk2Src; }; + armTrustedFirmware = pkgs.${namespace}.arm-trusted-firmware.override { inherit MODEL; }; pythonEnv = python3.withPackages ( _ps: with python3Packages; [ @@ -70,6 +102,7 @@ stdenv.mkDerivation rec { git libuuid baseTools + acpica-tools ]; env = { @@ -105,27 +138,12 @@ stdenv.mkDerivation rec { ln -sv ${baseTools}/BaseTools ./edk2/BaseTools ''; - postPatch = '' - f=edk2/CryptoPkg/Library/OpensslLib/OpensslLib.inf - if grep -q '^\[BuildOptions\]' "$f"; then - # Add flag inside existing BuildOptions - sed -i '/^\[BuildOptions\]/a\ GCC:*_*_*_CC_FLAGS = -Wno-error' "$f" - else - # Append a new BuildOptions block - cat >> "$f" <<'EOF' - - [BuildOptions] - GCC:*_*_*_CC_FLAGS = -Wno-error - EOF - fi - ''; - configurePhase = '' runHook preConfigure export WORKSPACE=$PWD export PACKAGES_PATH=$WORKSPACE/edk2:$WORKSPACE/edk2-non-osi:$WORKSPACE/edk2-platforms export EDK_TOOLS_PATH=${baseTools}/BaseTools - export ATF_BUILD_DIR="${pkgs.${namespace}.arm-trusted-firmware}/rpi${MODEL}/${RELEASE_TYPE}" + export ATF_BUILD_DIR="${armTrustedFirmware}/rpi${MODEL}/${lib.toLower RELEASE_TYPE}" . ${baseTools}/edksetup.sh BaseTools runHook postConfigure @@ -144,7 +162,7 @@ stdenv.mkDerivation rec { installPhase = '' mkdir -p $out - cp -r /Build/RPi${MODEL}/${RELEASE_TYPE}_GCC/FV/RPI_EFI.fd $out/RPI_EFI.fd + cp -r /build/Build/RPi${MODEL}/${RELEASE_TYPE}_GCC/FV/RPI_EFI.fd $out/RPI_EFI.fd ''; meta = with lib; { diff --git a/systems/x86_64-linux/matt-nixos/boot.nix b/systems/x86_64-linux/matt-nixos/boot.nix index 80d8ac0..fb4c0f7 100755 --- a/systems/x86_64-linux/matt-nixos/boot.nix +++ b/systems/x86_64-linux/matt-nixos/boot.nix @@ -54,6 +54,8 @@ in binfmt.emulatedSystems = [ "aarch64-linux" ]; # --argstr system aarch64-linux }; + nixpkgs.crossSystem.system = "aarch64-linux"; + environment.systemPackages = with pkgsVersion; [ edk2-uefi-shell ];