summary refs log tree commit diff
path: root/nixos/modules/virtualisation/virtualbox-guest.nix
diff options
context:
space:
mode:
authorJaka Hudoklin <jakahudoklin@gmail.com>2016-12-04 22:06:14 +0100
committerJaka Hudoklin <jakahudoklin@gmail.com>2016-12-04 22:24:01 +0100
commit8ce94b6e891dbb59776f6a94a342f8efbcfc07f4 (patch)
treea15a87e50e57b81f4c3c0cda8823d2915c68273f /nixos/modules/virtualisation/virtualbox-guest.nix
parentc5607ceec5495ed77b5dcd566d6732881a153fe8 (diff)
downloadnixpkgs-8ce94b6e891dbb59776f6a94a342f8efbcfc07f4.tar
nixpkgs-8ce94b6e891dbb59776f6a94a342f8efbcfc07f4.tar.gz
nixpkgs-8ce94b6e891dbb59776f6a94a342f8efbcfc07f4.tar.bz2
nixpkgs-8ce94b6e891dbb59776f6a94a342f8efbcfc07f4.tar.lz
nixpkgs-8ce94b6e891dbb59776f6a94a342f8efbcfc07f4.tar.xz
nixpkgs-8ce94b6e891dbb59776f6a94a342f8efbcfc07f4.tar.zst
nixpkgs-8ce94b6e891dbb59776f6a94a342f8efbcfc07f4.zip
virtualbox guest module: make x11 optional
Diffstat (limited to 'nixos/modules/virtualisation/virtualbox-guest.nix')
-rw-r--r--nixos/modules/virtualisation/virtualbox-guest.nix43
1 files changed, 26 insertions, 17 deletions
diff --git a/nixos/modules/virtualisation/virtualbox-guest.nix b/nixos/modules/virtualisation/virtualbox-guest.nix
index d253e9eab62..5da4b7e3baf 100644
--- a/nixos/modules/virtualisation/virtualbox-guest.nix
+++ b/nixos/modules/virtualisation/virtualbox-guest.nix
@@ -15,18 +15,27 @@ in
 
   ###### 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 ];
 
@@ -49,6 +58,16 @@ in
         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 =
@@ -69,16 +88,6 @@ in
         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"
-      '';
-  };
+  })]);
 
 }