summary refs log tree commit diff
path: root/nixos/modules
diff options
context:
space:
mode:
authorNikolay Amiantov <ab@fmap.me>2015-12-05 00:36:01 +0300
committerNikolay Amiantov <ab@fmap.me>2015-12-05 00:54:09 +0300
commitcf3202acac9500a192e00b0e2a3b6fdbc97b6153 (patch)
tree31a612ca83c0dc3aa9e2eeec4479090ee9075eaf /nixos/modules
parent95629cf6f83cee1b8200f6fd408a206ea4e858b1 (diff)
downloadnixlib-cf3202acac9500a192e00b0e2a3b6fdbc97b6153.tar
nixlib-cf3202acac9500a192e00b0e2a3b6fdbc97b6153.tar.gz
nixlib-cf3202acac9500a192e00b0e2a3b6fdbc97b6153.tar.bz2
nixlib-cf3202acac9500a192e00b0e2a3b6fdbc97b6153.tar.lz
nixlib-cf3202acac9500a192e00b0e2a3b6fdbc97b6153.tar.xz
nixlib-cf3202acac9500a192e00b0e2a3b6fdbc97b6153.tar.zst
nixlib-cf3202acac9500a192e00b0e2a3b6fdbc97b6153.zip
nixos/bumblebee: update for new packages
Diffstat (limited to 'nixos/modules')
-rw-r--r--nixos/modules/hardware/video/bumblebee.nix35
1 files changed, 25 insertions, 10 deletions
diff --git a/nixos/modules/hardware/video/bumblebee.nix b/nixos/modules/hardware/video/bumblebee.nix
index e2202e1e17df..b10846ac18a1 100644
--- a/nixos/modules/hardware/video/bumblebee.nix
+++ b/nixos/modules/hardware/video/bumblebee.nix
@@ -2,10 +2,20 @@
 
 with lib;
 let
+  cfg = config.hardware.bumblebee;
+
   kernel = config.boot.kernelPackages;
-  bumblebee = if config.hardware.bumblebee.connectDisplay
-              then pkgs.bumblebee_display
-              else pkgs.bumblebee;
+
+  useNvidia = cfg.driver == "nvidia";
+
+  bumblebee = pkgs.bumblebee.override {
+    inherit useNvidia;
+    useDisplayDevice = cfg.connectDisplay;
+  };
+
+  primus = pkgs.primus.override {
+    inherit useNvidia;
+  };
 
 in
 
@@ -29,6 +39,7 @@ in
       type = types.str;
       description = ''Group for bumblebee socket'';
     };
+
     hardware.bumblebee.connectDisplay = mkOption {
       default = false;
       type = types.bool;
@@ -40,26 +51,30 @@ in
         Only nvidia driver is supported so far.
       '';
     };
+
+    hardware.bumblebee.driver = mkOption {
+      default = "nvidia";
+      type = types.enum [ "nvidia" "nouveau" ];
+      description = ''
+        Set driver used by bumblebeed. Supported are nouveau and nvidia.
+      '';
+    };
   };
 
   config = mkIf config.hardware.bumblebee.enable {
     boot.blacklistedKernelModules = [ "nouveau" "nvidia" ];
     boot.kernelModules = [ "bbswitch" ];
-    boot.extraModulePackages = [ kernel.bbswitch kernel.nvidia_x11 ];
+    boot.extraModulePackages = [ kernel.bbswitch ] ++ optional useNvidia kernel.nvidia_x11;
 
-    environment.systemPackages = [ bumblebee pkgs.primus ];
+    environment.systemPackages = [ bumblebee primus ];
 
     systemd.services.bumblebeed = {
       description = "Bumblebee Hybrid Graphics Switcher";
       wantedBy = [ "display-manager.service" ];
       path = [ kernel.bbswitch bumblebee ];
       serviceConfig = {
-        ExecStart = "${bumblebee}/bin/bumblebeed --use-syslog -g ${config.hardware.bumblebee.group}";
-        Restart = "always";
-        RestartSec = 60;
-        CPUSchedulingPolicy = "idle";
+        ExecStart = "${bumblebee}/bin/bumblebeed --use-syslog -g ${cfg.group} --driver ${cfg.driver}";
       };
-      environment.LD_LIBRARY_PATH="/run/opengl-driver/lib/";
       environment.MODULE_DIR="/run/current-system/kernel-modules/lib/modules/";
     };
   };