summaryrefslogtreecommitdiffstats
path: root/nixos/modules/virtualisation/virtualbox-image.nix
diff options
context:
space:
mode:
authorDave Laing <dave.laing.80@gmail.com>2018-07-12 03:45:10 +1000
committerxeji <36407913+xeji@users.noreply.github.com>2018-07-11 19:45:10 +0200
commit4d5371f37379501805674a4c4891ed666cf07fa9 (patch)
treedef142a5937169e321f446e96ed2000ad8d9a12f /nixos/modules/virtualisation/virtualbox-image.nix
parentb34a147eef37ac881f83c349fd51ccd14f5acc6c (diff)
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
Diffstat (limited to 'nixos/modules/virtualisation/virtualbox-image.nix')
-rw-r--r--nixos/modules/virtualisation/virtualbox-image.nix36
1 files changed, 32 insertions, 4 deletions
diff --git a/nixos/modules/virtualisation/virtualbox-image.nix b/nixos/modules/virtualisation/virtualbox-image.nix
index 64f145f77ca3..475852d1546c 100644
--- a/nixos/modules/virtualisation/virtualbox-image.nix
+++ b/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