diff options
author | James Cook <jcook@cs.berkeley.edu> | 2015-02-16 13:13:26 -0800 |
---|---|---|
committer | James Cook <jcook@cs.berkeley.edu> | 2015-02-16 13:13:26 -0800 |
commit | 6daf9aa922294e9fdb7509c157f3032aabe219f9 (patch) | |
tree | 731fe55f5cf1b7438e8e6b17307e46b5a1a31c51 /pkgs/applications/virtualization | |
parent | 6aa43976a7bead139ac522623b9dc1251246fe9c (diff) | |
parent | 80afabd5b5d034d41792b7cf99d3ca87ae34596a (diff) | |
download | nixlib-6daf9aa922294e9fdb7509c157f3032aabe219f9.tar nixlib-6daf9aa922294e9fdb7509c157f3032aabe219f9.tar.gz nixlib-6daf9aa922294e9fdb7509c157f3032aabe219f9.tar.bz2 nixlib-6daf9aa922294e9fdb7509c157f3032aabe219f9.tar.lz nixlib-6daf9aa922294e9fdb7509c157f3032aabe219f9.tar.xz nixlib-6daf9aa922294e9fdb7509c157f3032aabe219f9.tar.zst nixlib-6daf9aa922294e9fdb7509c157f3032aabe219f9.zip |
Merge pull request #5995 from ts468/qemu-vm
Update QEMU Nixos Virtual Machine
Diffstat (limited to 'pkgs/applications/virtualization')
-rw-r--r-- | pkgs/applications/virtualization/OVMF/default.nix | 30 | ||||
-rw-r--r-- | pkgs/applications/virtualization/seabios/default.nix | 44 |
2 files changed, 70 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"; diff --git a/pkgs/applications/virtualization/seabios/default.nix b/pkgs/applications/virtualization/seabios/default.nix new file mode 100644 index 000000000000..8e6a7fcb0d26 --- /dev/null +++ b/pkgs/applications/virtualization/seabios/default.nix @@ -0,0 +1,44 @@ +{ stdenv, fetchurl, iasl, python }: + +stdenv.mkDerivation rec { + + name = "seabios-${version}"; + version = "1.7.5.2"; + + src = fetchurl { + url = "http://code.coreboot.org/p/seabios/downloads/get/${name}.tar.gz"; + sha256 = "1syd3gi5gq0gj2pjvmdis64xc3j1xf0jgy49ngymap0pdpm0cmh0"; + }; + + buildInputs = [ iasl python ]; + + configurePhase = '' + # build SeaBIOS for CSM + cat > .config << EOF + CONFIG_CSM=y + CONFIG_QEMU_HARDWARE=y + CONFIG_PERMIT_UNALIGNED_PCIROM=y + EOF + + make olddefconfig + ''; + + installPhase = '' + mkdir $out + cp out/Csm16.bin $out/Csm16.bin + ''; + + meta = with stdenv.lib; { + 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. + ''; + homepage = http://www.seabios.org; + license = licenses.lgpl3; + maintainers = [ maintainers.tstrobel ]; + platforms = platforms.linux; + }; +} + |