summaryrefslogtreecommitdiffstats
path: root/pkgs/applications/virtualization/OVMF
diff options
context:
space:
mode:
authorAstro <astro@spaceboyz.net>2024-03-20 15:52:25 +0100
committerAstro <astro@spaceboyz.net>2024-04-18 21:05:58 +0200
commit17afbb81db5b5c0b3a211e5290b9ac7dbacd0021 (patch)
tree598e0fa3473bc2eca4a8eabbfb5f9554bc5e2f2b /pkgs/applications/virtualization/OVMF
parentb06025f1533a1e07b6db3e75151caa155d1c7eb3 (diff)
OVMF-cloud-hypervisor: init
Diffstat (limited to 'pkgs/applications/virtualization/OVMF')
-rw-r--r--pkgs/applications/virtualization/OVMF/default.nix51
1 files changed, 26 insertions, 25 deletions
diff --git a/pkgs/applications/virtualization/OVMF/default.nix b/pkgs/applications/virtualization/OVMF/default.nix
index 4798e324141d..79df60253ff5 100644
--- a/pkgs/applications/virtualization/OVMF/default.nix
+++ b/pkgs/applications/virtualization/OVMF/default.nix
@@ -24,41 +24,39 @@
# Usually, this option is broken, do not use it except if you know what you are
# doing.
, sourceDebug ? false
+, projectDscPath ? {
+ i686 = "OvmfPkg/OvmfPkgIa32.dsc";
+ x86_64 = "OvmfPkg/OvmfPkgX64.dsc";
+ aarch64 = "ArmVirtPkg/ArmVirtQemu.dsc";
+ riscv64 = "OvmfPkg/RiscVVirt/RiscVVirtQemu.dsc";
+ }.${stdenv.hostPlatform.parsed.cpu.name}
+ or (throw "Unsupported OVMF `projectDscPath` on ${stdenv.hostPlatform.parsed.cpu.name}")
+, fwPrefix ? {
+ i686 = "OVMF";
+ x86_64 = "OVMF";
+ aarch64 = "AAVMF";
+ riscv64 = "RISCV_VIRT";
+ }.${stdenv.hostPlatform.parsed.cpu.name}
+ or (throw "Unsupported OVMF `fwPrefix` on ${stdenv.hostPlatform.parsed.cpu.name}")
+, metaPlatforms ? edk2.meta.platforms
}:
let
platformSpecific = {
- i686 = {
- projectDscPath = "OvmfPkg/OvmfPkgIa32.dsc";
- fwPrefix = "OVMF";
+ x86_64.msVarsArgs = {
+ flavor = "OVMF_4M";
+ archDir = "X64";
};
- x86_64 = {
- projectDscPath = "OvmfPkg/OvmfPkgX64.dsc";
- fwPrefix = "OVMF";
- msVarsArgs = {
- flavor = "OVMF_4M";
- archDir = "X64";
- };
- };
- aarch64 = {
- projectDscPath = "ArmVirtPkg/ArmVirtQemu.dsc";
- fwPrefix = "AAVMF";
- msVarsArgs = {
- flavor = "AAVMF";
- archDir = "AARCH64";
- };
- };
- riscv64 = {
- projectDscPath = "OvmfPkg/RiscVVirt/RiscVVirtQemu.dsc";
- fwPrefix = "RISCV_VIRT";
+ aarch64.msVarsArgs = {
+ flavor = "AAVMF";
+ archDir = "AARCH64";
};
};
cpuName = stdenv.hostPlatform.parsed.cpu.name;
- inherit (platformSpecific.${cpuName})
- projectDscPath fwPrefix msVarsArgs;
+ inherit (platformSpecific.${cpuName}) msVarsArgs;
version = lib.getVersion edk2;
@@ -152,6 +150,9 @@ edk2.mkDerivation projectDscPath (finalAttrs: {
# release notes accordingly.
postInstall = ''
mkdir -vp $fd/FV
+ '' + lib.optionalString (builtins.elem fwPrefix [
+ "OVMF" "AAVMF" "RISCV_VIRT"
+ ]) ''
mv -v $out/FV/${fwPrefix}_{CODE,VARS}.fd $fd/FV
'' + lib.optionalString stdenv.hostPlatform.isx86 ''
mv -v $out/FV/${fwPrefix}.fd $fd/FV
@@ -184,7 +185,7 @@ edk2.mkDerivation projectDscPath (finalAttrs: {
description = "Sample UEFI firmware for QEMU and KVM";
homepage = "https://github.com/tianocore/tianocore.github.io/wiki/OVMF";
license = lib.licenses.bsd2;
- inherit (edk2.meta) platforms;
+ platforms = metaPlatforms;
maintainers = with lib.maintainers; [ adamcstephens raitobezarius ];
broken = stdenv.isDarwin;
};