currently, only support for fully disabling nvidia is provided, which is helpful for saving power/heat. In the future, this should be extended so we can choose: - nvidia only (choose between nouveau/nvidia driver) - IGP only - Hybrid (choose between nouveau/nvidia driver, use the "bumblebee" package/daemon) svn path=/nixos/trunk/; revision=32085wip/yesman
parent
49a3e57d43
commit
89d5aa4dd2
@ -0,0 +1,40 @@ |
||||
{pkgs, config, ...}: |
||||
|
||||
let kernel = config.boot.kernelPackages; |
||||
in |
||||
|
||||
{ |
||||
|
||||
###### interface |
||||
|
||||
options = { |
||||
|
||||
hardware.nvidiaOptimus.disable = pkgs.lib.mkOption { |
||||
default = false; |
||||
type = pkgs.lib.types.bool; |
||||
description = '' |
||||
completely disable the nvidia gfx chip (saves power / heat) and just use IGP |
||||
''; |
||||
}; |
||||
|
||||
}; |
||||
|
||||
|
||||
###### implementation |
||||
|
||||
config = pkgs.lib.mkIf config.hardware.nvidiaOptimus.disable { |
||||
boot.blacklistedKernelModules = ["nouveau" "nvidia" "nvidiafb"]; |
||||
boot.kernelModules = [ "bbswitch" ]; |
||||
boot.extraModulePackages = [ kernel.bbswitch ]; |
||||
|
||||
jobs.bbswitch = { |
||||
name = "bbswitch"; |
||||
description = "turn off nvidia card"; |
||||
startOn = "stopped udevtrigger"; |
||||
exec = "discrete_vga_poweroff"; |
||||
path = [kernel.bbswitch]; |
||||
task = true; |
||||
}; |
||||
}; |
||||
|
||||
} |
Loading…
Reference in new issue