summary refs log tree commit diff
path: root/pkgs/applications/virtualization/OVMF
diff options
context:
space:
mode:
authorThomas Strobel <ts468@cam.ac.uk>2015-01-26 21:13:31 +0100
committerThomas Strobel <ts468@cam.ac.uk>2015-02-16 20:07:42 +0100
commit80afabd5b5d034d41792b7cf99d3ca87ae34596a (patch)
tree2ce67bd96ef816d0ce04e01ccb5f59ff578ea9ce /pkgs/applications/virtualization/OVMF
parentb9cc04329b19119ae0b2a410868d014f3f82cf10 (diff)
downloadnixlib-80afabd5b5d034d41792b7cf99d3ca87ae34596a.tar
nixlib-80afabd5b5d034d41792b7cf99d3ca87ae34596a.tar.gz
nixlib-80afabd5b5d034d41792b7cf99d3ca87ae34596a.tar.bz2
nixlib-80afabd5b5d034d41792b7cf99d3ca87ae34596a.tar.lz
nixlib-80afabd5b5d034d41792b7cf99d3ca87ae34596a.tar.xz
nixlib-80afabd5b5d034d41792b7cf99d3ca87ae34596a.tar.zst
nixlib-80afabd5b5d034d41792b7cf99d3ca87ae34596a.zip
Update QEMU Nixos Virtual Machine
The Nixos Qemu VM that are used for VM tests can now start without
boot menu even when using a bootloader.
The Nixos Qemu VM with bootloader can emulate a EFI boot now.
Diffstat (limited to 'pkgs/applications/virtualization/OVMF')
-rw-r--r--pkgs/applications/virtualization/OVMF/default.nix30
1 files changed, 26 insertions, 4 deletions
diff --git a/pkgs/applications/virtualization/OVMF/default.nix b/pkgs/applications/virtualization/OVMF/default.nix
index 388248c5aa86..e29ab11947fd 100644
--- a/pkgs/applications/virtualization/OVMF/default.nix
+++ b/pkgs/applications/virtualization/OVMF/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, edk2, nasm, iasl }:
+{ stdenv, edk2, nasm, iasl, seabios, openssl, secureBoot ? false }:
 
 let
 
@@ -14,14 +14,36 @@ in
 stdenv.mkDerivation (edk2.setup "OvmfPkg/OvmfPkg${targetArch}.dsc" {
   name = "OVMF-2014-12-10";
 
-  buildInputs = [nasm iasl];
+  # TODO: properly include openssl for secureBoot
+  buildInputs = [nasm iasl] ++ stdenv.lib.optionals (secureBoot == true) [ openssl ];
+
   unpackPhase = ''
     for file in \
-      "${edk2.src}"/{OvmfPkg,UefiCpuPkg,MdeModulePkg,IntelFrameworkModulePkg,PcAtChipsetPkg,FatBinPkg,EdkShellBinPkg,MdePkg,ShellPkg,OptionRomPkg,IntelFrameworkPkg};
+      "${edk2.src}"/{UefiCpuPkg,MdeModulePkg,IntelFrameworkModulePkg,PcAtChipsetPkg,FatBinPkg,EdkShellBinPkg,MdePkg,ShellPkg,OptionRomPkg,IntelFrameworkPkg};
     do
       ln -sv "$file" .
     done
-  '';
+
+    ${if (seabios == false) then ''
+        ln -sv ${edk2.src}/OvmfPkg .
+      '' else ''
+        cp -r ${edk2.src}/OvmfPkg .
+        chmod +w OvmfPkg/Csm/Csm16
+        cp ${seabios}/Csm16.bin OvmfPkg/Csm/Csm16/Csm16.bin
+      ''}
+
+    ${if (secureBoot == true) then ''
+        ln -sv ${edk2.src}/SecurityPkg .
+        ln -sv ${edk2.src}/CryptoPkg .
+      '' else ''
+      ''}
+    '';
+
+  buildPhase = if (seabios == false) then ''
+      build ${if secureBoot then "-DSECURE_BOOT_ENABLE=TRUE" else ""}
+    '' else ''
+      build -D CSM_ENABLE -D FD_SIZE_2MB ${if secureBoot then "-DSECURE_BOOT_ENABLE=TRUE" else ""}
+    '';
 
   meta = {
     description = "Sample UEFI firmware for QEMU and KVM";