nixos/qemu-vm: add option "restrictNetwork"

This adds an option to the qemu virtualisation module to isolate the
guest's from the host's and outside networks.

This is particularly useful for development sandboxes for example.

The option is disabled by default to preserve the current behaviour.

pacien e039cb9d 6b572437

Changed files
+16 -1
nixos
modules
virtualisation
+16 -1
nixos/modules/virtualisation/qemu-vm.nix
···
'';
};
+
virtualisation.restrictNetwork =
+
mkOption {
+
type = types.bool;
+
default = false;
+
example = true;
+
description =
+
lib.mdDoc ''
+
If this option is enabled, the guest will be isolated, i.e. it will
+
not be able to contact the host and no guest IP packets will be
+
routed over the host to the outside. This option does not affect
+
any explicitly set forwarding rules.
+
'';
+
};
+
virtualisation.vlans =
mkOption {
type = types.listOf types.ints.unsigned;
···
else "'guestfwd=${proto}:${guest.address}:${toString guest.port}-" +
"cmd:${pkgs.netcat}/bin/nc ${host.address} ${toString host.port}',"
);
+
restrictNetworkOption = lib.optionalString cfg.restrictNetwork "restrict=on,";
in
[
"-net nic,netdev=user.0,model=virtio"
-
"-netdev user,id=user.0,${forwardingOptions}\"$QEMU_NET_OPTS\""
+
"-netdev user,id=user.0,${forwardingOptions}${restrictNetworkOption}\"$QEMU_NET_OPTS\""
];
# FIXME: Consolidate this one day.