Permalink
Browse files

nixos/virtualbox: Adds more options to virtualbox-image.nix (#42699)

* nixos/virtualbox: Adds more options to virtualbox-image.nix

Previously you could only set the size of the disk.

This change adds the ability to change the amount of memory
that the image gets, along with the name / derivation name /
file name for the VM.

* Incorporates some review feedback
  • Loading branch information...
dalaing authored and xeji committed Jul 11, 2018
1 parent b34a147 commit 4d5371f37379501805674a4c4891ed666cf07fa9
Showing with 32 additions and 4 deletions.
  1. +32 −4 nixos/modules/virtualisation/virtualbox-image.nix
@@ -17,12 +17,40 @@ in {
The size of the VirtualBox base image in MiB.
'';
};
memorySize = mkOption {
type = types.int;
default = 1536;
description = ''
The amount of RAM the VirtualBox appliance can use in MiB.
'';
};
vmDerivationName = mkOption {
type = types.str;
default = "nixos-ova-${config.system.nixos.label}-${pkgs.stdenv.system}";
description = ''
The name of the derivation for the VirtualBox appliance.
'';
};
vmName = mkOption {
type = types.str;
default = "NixOS ${config.system.nixos.label} (${pkgs.stdenv.system})";
description = ''
The name of the VirtualBox appliance.
'';
};
vmFileName = mkOption {
type = types.str;
default = "nixos-${config.system.nixos.label}-${pkgs.stdenv.system}.ova";
description = ''
The file name of the VirtualBox appliance.
'';
};
};
};
config = {
system.build.virtualBoxOVA = import ../../lib/make-disk-image.nix {
name = "nixos-ova-${config.system.nixos.label}-${pkgs.stdenv.system}";
name = cfg.vmDerivationName;
inherit pkgs lib config;
partitionTableType = "legacy";
@@ -37,11 +65,11 @@ in {
VBoxManage internalcommands createrawvmdk -filename disk.vmdk -rawdisk $diskImage
echo "creating VirtualBox VM..."
vmName="NixOS ${config.system.nixos.label} (${pkgs.stdenv.system})"
vmName="${cfg.vmName}";
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 \
--memory ${toString cfg.memorySize} --acpi on --vram 32 \
${optionalString (pkgs.stdenv.system == "i686-linux") "--pae on"} \
--nictype1 virtio --nic1 nat \
--audiocontroller ac97 --audio alsa \
@@ -53,7 +81,7 @@ in {
echo "exporting VirtualBox VM..."
mkdir -p $out
fn="$out/nixos-${config.system.nixos.label}-${pkgs.stdenv.system}.ova"
fn="$out/${cfg.vmFileName}"
VBoxManage export "$vmName" --output "$fn"
rm -v $diskImage

0 comments on commit 4d5371f

Please sign in to comment.