Commit 32ec41a6 authored by Robert Kovacsics's avatar Robert Kovacsics Committed by Bjørn Forsman
Browse files

nixos/virtualbox-image: Allow SCSI storage controller for vSphere

This is because vSphere version 6.7.0.51000 errors with

        Issues detected with selected template. Details: -
        78:7:VALUE_ILLEGAL: Value ''3'' of Parent element does not refer
        to a ref of type DiskControllerReference.

when using SATA.
parent 4009f60d
Loading
Loading
Loading
Loading
+26 −3
Original line number Diff line number Diff line
@@ -124,6 +124,29 @@ in {
          Extra commands to run after exporting the OVA to `$fn`.
        '';
      };
      storageController = mkOption {
        type = with types; attrsOf (oneOf [ str int bool (listOf str) ]);
        example = {
          name = "SCSI";
          add = "scsi";
          portcount = 16;
          bootable = "on";
          hostiocache = "on";
        };
        default = {
          name = "SATA";
          add = "sata";
          portcount = 4;
          bootable = "on";
          hostiocache = "on";
        };
        description = lib.mdDoc ''
          Parameters passed to the VirtualBox appliance. Must have at least
          `name`.

          Run `VBoxManage storagectl --help` to see more options.
        '';
      };
    };
  };

@@ -184,11 +207,11 @@ in {
          VBoxManage modifyvm "$vmName" \
            --memory ${toString cfg.memorySize} \
            ${lib.cli.toGNUCommandLineShell { } cfg.params}
          VBoxManage storagectl "$vmName" --name SATA --add sata --portcount 4 --bootable on --hostiocache on
          VBoxManage storageattach "$vmName" --storagectl SATA --port 0 --device 0 --type hdd \
          VBoxManage storagectl "$vmName" ${lib.cli.toGNUCommandLineShell { } cfg.storageController}
          VBoxManage storageattach "$vmName" --storagectl ${cfg.storageController.name} --port 0 --device 0 --type hdd \
            --medium disk.vmdk
          ${optionalString (cfg.extraDisk != null) ''
            VBoxManage storageattach "$vmName" --storagectl SATA --port 1 --device 0 --type hdd \
            VBoxManage storageattach "$vmName" --storagectl ${cfg.storageController.name} --port 1 --device 0 --type hdd \
            --medium data-disk.vmdk
          ''}