summary refs log tree commit diff
path: root/nixos/modules/virtualisation/virtualbox-image.nix
diff options
context:
space:
mode:
authorEelco Dolstra <eelco.dolstra@logicblox.com>2016-03-15 13:34:41 +0100
committerEelco Dolstra <eelco.dolstra@logicblox.com>2016-03-15 14:15:12 +0100
commit5cc7bcda3023b01bd926eccd0c5f095a050c5ab0 (patch)
treee8c235650551ca5bd2df714b090aa5ad297c1951 /nixos/modules/virtualisation/virtualbox-image.nix
parent84f33c6edccae85d419639010fba9f6c7c8c7dfd (diff)
downloadnixpkgs-5cc7bcda3023b01bd926eccd0c5f095a050c5ab0.tar
nixpkgs-5cc7bcda3023b01bd926eccd0c5f095a050c5ab0.tar.gz
nixpkgs-5cc7bcda3023b01bd926eccd0c5f095a050c5ab0.tar.bz2
nixpkgs-5cc7bcda3023b01bd926eccd0c5f095a050c5ab0.tar.lz
nixpkgs-5cc7bcda3023b01bd926eccd0c5f095a050c5ab0.tar.xz
nixpkgs-5cc7bcda3023b01bd926eccd0c5f095a050c5ab0.tar.zst
nixpkgs-5cc7bcda3023b01bd926eccd0c5f095a050c5ab0.zip
Combine OVA generation steps
Previously this was done in three derivations (one to build the raw
disk image, one to convert to OVA, one to add a hydra-build-products
file). Now it's done in one step to reduce the amount of copying
to/from S3. In particular, not uploading the raw disk image prevents
us from hitting hydra-queue-runner's size limit of 2 GiB.
Diffstat (limited to 'nixos/modules/virtualisation/virtualbox-image.nix')
-rw-r--r--nixos/modules/virtualisation/virtualbox-image.nix57
1 files changed, 29 insertions, 28 deletions
diff --git a/nixos/modules/virtualisation/virtualbox-image.nix b/nixos/modules/virtualisation/virtualbox-image.nix
index da9e75a003a..fab59b2525a 100644
--- a/nixos/modules/virtualisation/virtualbox-image.nix
+++ b/nixos/modules/virtualisation/virtualbox-image.nix
@@ -22,7 +22,9 @@ in {
 
   config = {
 
-    system.build.virtualBoxImage = import ../../lib/make-disk-image.nix {
+    system.build.virtualBoxOVA = import ../../lib/make-disk-image.nix {
+      name = "nixos-ova-${config.system.nixosLabel}-${pkgs.stdenv.system}";
+
       inherit pkgs lib config;
       partitioned = true;
       diskSize = cfg.baseImageSize;
@@ -37,37 +39,36 @@ in {
       postVM =
         ''
           echo "creating VirtualBox disk image..."
-          ${pkgs.vmTools.qemu}/bin/qemu-img convert -f raw -O vdi $diskImage $out/disk.vdi
+          ${pkgs.vmTools.qemu}/bin/qemu-img convert -f raw -O vdi $diskImage disk.vdi
           rm $diskImage
+
+          echo "creating VirtualBox VM..."
+          export HOME=$PWD
+          export PATH=${pkgs.linuxPackages.virtualbox}/bin:$PATH
+          vmName="NixOS ${config.system.nixosLabel} (${pkgs.stdenv.system})"
+          VBoxManage createvm --name "$vmName" --register \
+            --ostype ${if pkgs.stdenv.system == "x86_64-linux" then "Linux26_64" else "Linux26"}
+          VBoxManage modifyvm "$vmName" \
+            --memory 1536 --acpi on --vram 32 \
+            ${optionalString (pkgs.stdenv.system == "i686-linux") "--pae on"} \
+            --nictype1 virtio --nic1 nat \
+            --audiocontroller ac97 --audio alsa \
+            --rtcuseutc on \
+            --usb on --mouse usbtablet
+          VBoxManage storagectl "$vmName" --name SATA --add sata --portcount 4 --bootable on --hostiocache on
+          VBoxManage storageattach "$vmName" --storagectl SATA --port 0 --device 0 --type hdd \
+            --medium disk.vdi
+
+          echo "exporting VirtualBox VM..."
+          mkdir -p $out
+          fn="$out/nixos-${config.system.nixosLabel}-${pkgs.stdenv.system}.ova"
+          VBoxManage export "$vmName" --output "$fn"
+
+          mkdir -p $out/nix-support
+          echo "file ova $fn" >> $out/nix-support/hydra-build-products
         '';
     };
 
-    system.build.virtualBoxOVA = pkgs.runCommand "virtualbox-ova"
-      { buildInputs = [ pkgs.linuxPackages.virtualbox ];
-        vmName = "NixOS ${config.system.nixosLabel} (${pkgs.stdenv.system})";
-        fileName = "nixos-image-${config.system.nixosLabel}-${pkgs.stdenv.system}.ova";
-      }
-      ''
-        echo "creating VirtualBox VM..."
-        export HOME=$PWD
-        VBoxManage createvm --name "$vmName" --register \
-          --ostype ${if pkgs.stdenv.system == "x86_64-linux" then "Linux26_64" else "Linux26"}
-        VBoxManage modifyvm "$vmName" \
-          --memory 1536 --acpi on --vram 32 \
-          ${optionalString (pkgs.stdenv.system == "i686-linux") "--pae on"} \
-          --nictype1 virtio --nic1 nat \
-          --audiocontroller ac97 --audio alsa \
-          --rtcuseutc on \
-          --usb on --mouse usbtablet
-        VBoxManage storagectl "$vmName" --name SATA --add sata --portcount 4 --bootable on --hostiocache on
-        VBoxManage storageattach "$vmName" --storagectl SATA --port 0 --device 0 --type hdd \
-          --medium ${config.system.build.virtualBoxImage}/disk.vdi
-
-        echo "exporting VirtualBox VM..."
-        mkdir -p $out
-        VBoxManage export "$vmName" --output "$out/$fileName"
-      '';
-
     fileSystems."/".device = "/dev/disk/by-label/nixos";
 
     boot.loader.grub.device = "/dev/sda";