From f0d62e899b3c6a9e81ffab6332a1de388305f8fc Mon Sep 17 00:00:00 2001 From: "R. Ryantm" Date: Wed, 29 Nov 2023 15:10:33 +0000 Subject: [PATCH 1/6] seabios: 1.16.2 -> 1.16.3 --- pkgs/applications/virtualization/seabios/default.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkgs/applications/virtualization/seabios/default.nix b/pkgs/applications/virtualization/seabios/default.nix index 6256660161c1..6f34017d295d 100644 --- a/pkgs/applications/virtualization/seabios/default.nix +++ b/pkgs/applications/virtualization/seabios/default.nix @@ -3,12 +3,12 @@ stdenv.mkDerivation rec { pname = "seabios"; - version = "1.16.2"; + version = "1.16.3"; src = fetchgit { url = "https://git.seabios.org/seabios.git"; rev = "rel-${version}"; - sha256 = "sha256-J2FuT+FXn9YoFLSfxDOxyKZvKrys59a6bP1eYvEXVNU="; + sha256 = "sha256-hWemj83cxdY8p+Jhkh5GcPvI0Sy5aKYZJCsKDjHTUUk="; }; nativeBuildInputs = [ python3 ]; From 799c6a1fc734cb2f330c5116bf50db1e57abeb65 Mon Sep 17 00:00:00 2001 From: Anderson Torres Date: Sun, 10 Dec 2023 17:57:46 -0300 Subject: [PATCH 2/6] seabios: refactor - finalAttrs design pattern - split outputs - generate config file instead of inlining it - tag distribution in EXTRAVERSION - install the Csm16.bin biosfile to $out/share/seabios/ instead of $out/ - remove nested with - add myself as maintainer --- .../virtualization/seabios/default.nix | 71 ++++++++++++------- 1 file changed, 46 insertions(+), 25 deletions(-) diff --git a/pkgs/applications/virtualization/seabios/default.nix b/pkgs/applications/virtualization/seabios/default.nix index 6f34017d295d..cfe4b0eb974c 100644 --- a/pkgs/applications/virtualization/seabios/default.nix +++ b/pkgs/applications/virtualization/seabios/default.nix @@ -1,50 +1,71 @@ -{ lib, stdenv, fetchgit, acpica-tools, python3 }: - -stdenv.mkDerivation rec { +{ lib +, stdenv +, fetchgit +, acpica-tools +, python3 +, writeText +}: +stdenv.mkDerivation (finalAttrs: { pname = "seabios"; version = "1.16.3"; src = fetchgit { url = "https://git.seabios.org/seabios.git"; - rev = "rel-${version}"; - sha256 = "sha256-hWemj83cxdY8p+Jhkh5GcPvI0Sy5aKYZJCsKDjHTUUk="; + rev = "rel-${finalAttrs.version}"; + hash = "sha256-hWemj83cxdY8p+Jhkh5GcPvI0Sy5aKYZJCsKDjHTUUk="; }; + outputs = [ "out" "doc" ]; + nativeBuildInputs = [ python3 ]; buildInputs = [ acpica-tools ]; strictDeps = true; + makeFlags = [ + # https://www.seabios.org/Build_overview#Distribution_builds + "EXTRAVERSION=\"-nixpkgs\"" + ]; + hardeningDisable = [ "pic" "stackprotector" "fortify" ]; - configurePhase = '' - # build SeaBIOS for CSM - cat > .config << EOF - CONFIG_CSM=y - CONFIG_QEMU_HARDWARE=y - CONFIG_PERMIT_UNALIGNED_PCIROM=y - EOF - + postConfigure = let + config = writeText "config.txt" (lib.generators.toKeyValue { } { + # SeaBIOS with CSM (Compatible Support Module) support; learn more at + # https://www.electronicshub.org/what-is-csm-bios/ + "CONFIG_CSM" = "y"; + "CONFIG_PERMIT_UNALIGNED_PCIROM" = "y"; + "CONFIG_QEMU_HARDWARE" = "y"; + }); + in '' + cp ${config} .config make olddefconfig ''; installPhase = '' - mkdir $out - cp out/Csm16.bin $out/Csm16.bin + runHook preInstall + + mkdir -pv $doc/share/doc/seabios-${finalAttrs.version}/ + cp -v docs/* $doc/share/doc/seabios-${finalAttrs.version}/ + install -Dm644 out/Csm16.bin -t $out/share/seabios/ + + runHook postInstall ''; - meta = with lib; { - description = "Open source implementation of a 16bit X86 BIOS"; + meta = { + homepage = "https://www.seabios.org"; + description = "Open source implementation of a 16bit x86 BIOS"; longDescription = '' - SeaBIOS is an open source implementation of a 16bit X86 BIOS. - It can run in an emulator or it can run natively on X86 hardware with the use of coreboot. - SeaBIOS is the default BIOS for QEMU and KVM. + SeaBIOS is an open source implementation of a 16bit x86 BIOS. + It can run in an emulator or it can run natively on x86 hardware with the + use of coreboot. ''; - homepage = "http://www.seabios.org"; - license = licenses.lgpl3; - maintainers = with maintainers; [ ]; - platforms = [ "i686-linux" "x86_64-linux" ]; + license = with lib.licenses; [ lgpl3Plus ]; + maintainers = with lib.maintainers; [ AndersonTorres ]; + platforms = lib.systems.inspect.patternLogicalAnd + lib.systems.inspect.patterns.isUnix + lib.systems.inspect.patterns.isx86; }; -} +}) From 87a5d76ddd6e4ddb1ca084aa6d3a0b3163f6156e Mon Sep 17 00:00:00 2001 From: Anderson Torres Date: Sun, 10 Dec 2023 18:43:10 -0300 Subject: [PATCH 3/6] seabios: mark Darwin as a bad platform Maybe it is broken on Clang... --- pkgs/applications/virtualization/seabios/default.nix | 1 + 1 file changed, 1 insertion(+) diff --git a/pkgs/applications/virtualization/seabios/default.nix b/pkgs/applications/virtualization/seabios/default.nix index cfe4b0eb974c..713f58702113 100644 --- a/pkgs/applications/virtualization/seabios/default.nix +++ b/pkgs/applications/virtualization/seabios/default.nix @@ -67,5 +67,6 @@ stdenv.mkDerivation (finalAttrs: { platforms = lib.systems.inspect.patternLogicalAnd lib.systems.inspect.patterns.isUnix lib.systems.inspect.patterns.isx86; + badPlatforms = [ lib.systems.inspect.patterns.isDarwin ]; }; }) From 76a0cbc7fdb995558dbbc0bf0d21828876a1e7be Mon Sep 17 00:00:00 2001 From: Anderson Torres Date: Wed, 29 Nov 2023 16:16:07 -0300 Subject: [PATCH 4/6] seabios: migrate to by-name --- .../seabios/default.nix => by-name/se/seabios/package.nix} | 0 pkgs/top-level/all-packages.nix | 2 -- 2 files changed, 2 deletions(-) rename pkgs/{applications/virtualization/seabios/default.nix => by-name/se/seabios/package.nix} (100%) diff --git a/pkgs/applications/virtualization/seabios/default.nix b/pkgs/by-name/se/seabios/package.nix similarity index 100% rename from pkgs/applications/virtualization/seabios/default.nix rename to pkgs/by-name/se/seabios/package.nix diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index b8ab214cc2cc..8c135f559f55 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -27097,8 +27097,6 @@ with pkgs; ops = callPackage ../applications/virtualization/ops { }; - seabios = callPackage ../applications/virtualization/seabios { }; - vmfs-tools = callPackage ../tools/filesystems/vmfs-tools { }; patroni = callPackage ../servers/sql/patroni { pythonPackages = python3Packages; }; From ba3dcb9dc5151f5b8e47592e71e1cd1e8be06083 Mon Sep 17 00:00:00 2001 From: Anderson Torres Date: Wed, 29 Nov 2023 16:16:28 -0300 Subject: [PATCH 5/6] xen_4_15: fixup seabios location Since it is now on `${seabios}/share/seabios`. --- pkgs/applications/virtualization/xen/4.15.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkgs/applications/virtualization/xen/4.15.nix b/pkgs/applications/virtualization/xen/4.15.nix index 11f5900ee84c..5cc81fc0ab85 100644 --- a/pkgs/applications/virtualization/xen/4.15.nix +++ b/pkgs/applications/virtualization/xen/4.15.nix @@ -122,7 +122,7 @@ callPackage (import ./generic.nix (rec { ++ optional (withInternalTraditionalQemu) "--enable-qemu-traditional" ++ optional (!withInternalTraditionalQemu) "--disable-qemu-traditional" - ++ optional (withSeabios) "--with-system-seabios=${seabios}" + ++ optional (withSeabios) "--with-system-seabios=${seabios}/share/seabios" ++ optional (!withInternalSeabios && !withSeabios) "--disable-seabios" ++ optional (withOVMF) "--with-system-ovmf=${OVMF.fd}/FV/OVMF.fd" From d5c17b3c47b708ff78cd5737072f155dd2a80e10 Mon Sep 17 00:00:00 2001 From: Anderson Torres Date: Wed, 29 Nov 2023 16:17:01 -0300 Subject: [PATCH 6/6] ovmf: fixup seabios location Since it is now on `${seabios}/share/seabios`. --- pkgs/applications/virtualization/OVMF/default.nix | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/pkgs/applications/virtualization/OVMF/default.nix b/pkgs/applications/virtualization/OVMF/default.nix index ca2c0f890d9a..b921e63ec9fe 100644 --- a/pkgs/applications/virtualization/OVMF/default.nix +++ b/pkgs/applications/virtualization/OVMF/default.nix @@ -1,5 +1,5 @@ { stdenv, nixosTests, lib, edk2, util-linux, nasm, acpica-tools, llvmPackages -, csmSupport ? false, seabios ? null +, csmSupport ? false, seabios , fdSize2MB ? csmSupport , fdSize4MB ? false , secureBoot ? false @@ -12,8 +12,6 @@ , sourceDebug ? false }: -assert csmSupport -> seabios != null; - let projectDscPath = if stdenv.isi686 then @@ -68,7 +66,7 @@ edk2.mkDerivation projectDscPath (finalAttrs: { env.PYTHON_COMMAND = "python3"; postPatch = lib.optionalString csmSupport '' - cp ${seabios}/Csm16.bin OvmfPkg/Csm/Csm16/Csm16.bin + cp ${seabios}/share/seabios/Csm16.bin OvmfPkg/Csm/Csm16/Csm16.bin ''; postFixup = (