summary refs log tree commit diff
path: root/modules
diff options
context:
space:
mode:
authorEelco Dolstra <eelco.dolstra@logicblox.com>2013-10-08 15:40:48 +0200
committerEelco Dolstra <eelco.dolstra@logicblox.com>2013-10-08 15:40:48 +0200
commit687e0059d552d39b5bd3cf1218026ed96c2c4adc (patch)
tree003aee9256d7bb443f5cf99ab02e53b940138741 /modules
parent5c17d7d2a6485e4134def39334328396c5c12424 (diff)
downloadnixlib-687e0059d552d39b5bd3cf1218026ed96c2c4adc.tar
nixlib-687e0059d552d39b5bd3cf1218026ed96c2c4adc.tar.gz
nixlib-687e0059d552d39b5bd3cf1218026ed96c2c4adc.tar.bz2
nixlib-687e0059d552d39b5bd3cf1218026ed96c2c4adc.tar.lz
nixlib-687e0059d552d39b5bd3cf1218026ed96c2c4adc.tar.xz
nixlib-687e0059d552d39b5bd3cf1218026ed96c2c4adc.tar.zst
nixlib-687e0059d552d39b5bd3cf1218026ed96c2c4adc.zip
Generate a VirtualBox appliance (in OVF format) instead of a disk image
Diffstat (limited to 'modules')
-rw-r--r--modules/virtualisation/virtualbox-image.nix26
1 files changed, 26 insertions, 0 deletions
diff --git a/modules/virtualisation/virtualbox-image.nix b/modules/virtualisation/virtualbox-image.nix
index bd14a7ffda00..306367d0ef52 100644
--- a/modules/virtualisation/virtualbox-image.nix
+++ b/modules/virtualisation/virtualbox-image.nix
@@ -16,6 +16,7 @@ with pkgs.lib;
             '';
           postVM =
             ''
+              echo "creating VirtualBox disk image..."
               ${pkgs.vmTools.qemu}/bin/qemu-img convert -f raw -O vdi $diskImage $out/disk.vdi
               rm $diskImage
             '';
@@ -74,6 +75,31 @@ with pkgs.lib;
         ''
     );
 
+  system.build.virtualBoxOVA = pkgs.runCommand "virtualbox-ova"
+    { buildInputs = [ pkgs.linuxPackages.virtualbox ];
+      vmName = "NixOS ${config.system.nixosVersion} (${pkgs.stdenv.system})";
+      fileName = "nixos-${config.system.nixosVersion}-${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 10 \
+        --nictype1 virtio --nic1 nat \
+        --audiocontroller ac97 --audio alsa \
+        --rtcuseutc on \
+        --usb on --mouse usbtablet
+      VBoxManage storagectl "$vmName" --name SATA --add sata --sataportcount 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.version = 2;