diff --git a/pkgs/tools/misc/ipxe/default.nix b/pkgs/tools/misc/ipxe/default.nix index 641e86c22c4b..289f87dc784d 100644 --- a/pkgs/tools/misc/ipxe/default.nix +++ b/pkgs/tools/misc/ipxe/default.nix @@ -1,4 +1,5 @@ -{ stdenv, lib, fetchFromGitHub, perl, cdrkit, syslinux, xz, openssl, gnu-efi, mtools +{ stdenv, lib, fetchFromGitHub, perl, cdrkit, xz, openssl, gnu-efi, mtools +, syslinux ? null , embedScript ? null , additionalTargets ? {} }: @@ -8,12 +9,20 @@ let "bin-x86_64-efi/ipxe.efi" = null; "bin-x86_64-efi/ipxe.efirom" = null; "bin-x86_64-efi/ipxe.usb" = "ipxe-efi.usb"; - } // { + } // lib.optionalAttrs (stdenv.isi686 || stdenv.isx86_64) { "bin/ipxe.dsk" = null; "bin/ipxe.usb" = null; "bin/ipxe.iso" = null; "bin/ipxe.lkrn" = null; "bin/undionly.kpxe" = null; + } // lib.optionalAttrs stdenv.isAarch32 { + "bin-arm32-efi/ipxe.efi" = null; + "bin-arm32-efi/ipxe.efirom" = null; + "bin-arm32-efi/ipxe.usb" = "ipxe-efi.usb"; + } // lib.optionalAttrs stdenv.isAarch64 { + "bin-arm64-efi/ipxe.efi" = null; + "bin-arm64-efi/ipxe.efirom" = null; + "bin-arm64-efi/ipxe.usb" = "ipxe-efi.usb"; }; in @@ -21,7 +30,7 @@ stdenv.mkDerivation rec { pname = "ipxe"; version = "1.21.1"; - nativeBuildInputs = [ perl cdrkit syslinux xz openssl gnu-efi mtools ]; + nativeBuildInputs = [ perl cdrkit xz openssl gnu-efi mtools ] ++ lib.optional (stdenv.isi686 || stdenv.isx86_64) syslinux; src = fetchFromGitHub { owner = "ipxe"; @@ -37,6 +46,7 @@ stdenv.mkDerivation rec { makeFlags = [ "ECHO_E_BIN_ECHO=echo" "ECHO_E_BIN_ECHO_E=echo" # No /bin/echo here. + ] ++ lib.optionals (stdenv.isi686 || stdenv.isx86_64) [ "ISOLINUX_BIN_LIST=${syslinux}/share/syslinux/isolinux.bin" "LDLINUX_C32=${syslinux}/share/syslinux/ldlinux.c32" ] ++ lib.optional (embedScript != null) "EMBED=${embedScript}"; @@ -80,6 +90,6 @@ stdenv.mkDerivation rec { homepage = "https://ipxe.org/"; license = licenses.gpl2; maintainers = with maintainers; [ ehmry ]; - platforms = [ "x86_64-linux" "i686-linux" ]; + platforms = platforms.linux; }; }