diff options
author | Eelco Dolstra <eelco.dolstra@logicblox.com> | 2016-03-15 13:34:41 +0100 |
---|---|---|
committer | Eelco Dolstra <eelco.dolstra@logicblox.com> | 2016-03-15 14:15:12 +0100 |
commit | 5cc7bcda3023b01bd926eccd0c5f095a050c5ab0 (patch) | |
tree | e8c235650551ca5bd2df714b090aa5ad297c1951 /nixos/modules/virtualisation/virtualbox-image.nix | |
parent | 84f33c6edccae85d419639010fba9f6c7c8c7dfd (diff) | |
download | nixpkgs-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.nix | 57 |
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"; |