nixos: Add VM test for VirtualBox.

Currently it pretty much tests starting up virtual machines and just
shutting down afterwards, but for both VBoxManage and the VirtualBox
GUI.

This helps catching errors in hardened mode, however we still need to
test whether networking works the way intended (and I fear that this is
broken at the moment).

The VirtualBox VM is _not_ using hardware virtualization support (thus
we use system = "i686-linux", because x86_64 has no emulation support),
because we're already within a qemu VM, which means it's going to be
slow as hell (that's why I've written own subs just for testing
startup/shutdown/whatnot with respective timeouts).

Signed-off-by: aszlig <aszlig@redmoonstudios.org>
(cherry picked from commit 69858d7743293d8f94b3d3160c9c3401722e4c10)
nixos/tests/virtualbox: Generalize expression.

We're going to create more than one VirtualBox VM, so let's dynamically
generate subs specific to a particular VirtualBox VM, merging everything
into the testScript and machine expressions.

Signed-off-by: aszlig <aszlig@redmoonstudios.org>
(cherry picked from commit 77831e8467ae24ca4ddf1a48d8dd8a17faae10d6)
nixos/virtualbox: Allow to disable hardening.

Hardening mode in VirtualBox is quite restrictive and on some systems it
could make sense to disable hardening mode, especially while we still
have issues with hostonly networking and other issues[TM] we don't know
or haven't tested yet.

Signed-off-by: aszlig <aszlig@redmoonstudios.org>
(cherry picked from commit e03e0ff42a6bb6caaa3e9308d377600875559e96)
virtualbox package: Disable hardening by default.

Yes, this is only on the package level, so it's possible to use
VirtualBox for example installed by nix-env -i, which of course doesn't
have access to the functionality provided by the various VirtualBox
kernel modules.

Signed-off-by: aszlig <aszlig@redmoonstudios.org>
(cherry picked from commit a199eedfced8ab4e1aa8f8ceea7728dbcbcc19b2)
nixos/virtualbox: Note about "vboxusers" group.

Signed-off-by: aszlig <aszlig@redmoonstudios.org>
(cherry picked from commit 245baeb2f63796f5001272c78224d0669df33a26)
nixos/tests/virtualbox: Add test for hostonlyif.

Essentially adds two more VirtualBox VMs to the test and also increases
the memory size of the qemu VM to 768 MB to make sure we don't run out
of memory too soon.

We're testing whether those two VMs can talk to either each other
(currently via ICMP only) or to/from the host via TCP/IP.

Also, this restructures the VM test a bit, so that we now pass in a
custom stage2Init script that has access to the store via a private
mount over the /nix/store that's already in the initrd. The reason why
this is a private mount is that we don't want to shadow the Nix store of
the initrd, essentially breaking cleanup functionality after the custom
stage 2 script (currently this is only "poweroff -f").

Note that setting the hostname inside the VirtualBox VM is *not* for
additional fanciness but to produce a different store path for the VM
image, so that VirtualBox doesn't bail out when trying to use an image
which is already attached to another VM.

Signed-off-by: aszlig <aszlig@redmoonstudios.org>
(cherry picked from commit 9bf16a9c3336cd932f294929167ddf267044b1f6)