virtualbox guest module: make x11 optional

Changed files
+26 -17
nixos
modules
virtualisation
+26 -17
nixos/modules/virtualisation/virtualbox-guest.nix
···
###### interface
-
options.virtualisation.virtualbox.guest.enable = mkOption {
-
default = false;
-
description = "Whether to enable the VirtualBox service and other guest additions.";
+
options.virtualisation.virtualbox.guest = {
+
enable = mkOption {
+
default = false;
+
type = types.bool;
+
description = "Whether to enable the VirtualBox service and other guest additions.";
+
};
+
+
x11 = mkOption {
+
default = true;
+
type = types.bool;
+
description = "Whether to enable x11 graphics";
+
};
};
###### implementation
-
config = mkIf cfg.enable {
-
assertions = [ {
+
config = mkIf cfg.enable (mkMerge [{
+
assertions = [{
assertion = pkgs.stdenv.isi686 || pkgs.stdenv.isx86_64;
message = "Virtualbox not currently supported on ${pkgs.stdenv.system}";
-
} ];
+
}];
environment.systemPackages = [ kernel.virtualboxGuestAdditions ];
···
serviceConfig.ExecStart = "@${kernel.virtualboxGuestAdditions}/bin/VBoxService VBoxService --foreground";
};
+
services.udev.extraRules =
+
''
+
# /dev/vboxuser is necessary for VBoxClient to work. Maybe we
+
# should restrict this to logged-in users.
+
KERNEL=="vboxuser", OWNER="root", GROUP="root", MODE="0666"
+
+
# Allow systemd dependencies on vboxguest.
+
SUBSYSTEM=="misc", KERNEL=="vboxguest", TAG+="systemd"
+
'';
+
} (mkIf cfg.x11 {
services.xserver.videoDrivers = mkOverride 50 [ "virtualbox" "modesetting" ];
services.xserver.config =
···
PATH=${makeBinPath [ pkgs.gnugrep pkgs.which pkgs.xorg.xorgserver.out ]}:$PATH \
${kernel.virtualboxGuestAdditions}/bin/VBoxClient-all
'';
-
-
services.udev.extraRules =
-
''
-
# /dev/vboxuser is necessary for VBoxClient to work. Maybe we
-
# should restrict this to logged-in users.
-
KERNEL=="vboxuser", OWNER="root", GROUP="root", MODE="0666"
-
-
# Allow systemd dependencies on vboxguest.
-
SUBSYSTEM=="misc", KERNEL=="vboxguest", TAG+="systemd"
-
'';
-
};
+
})]);
}