mirror of
https://github.com/NixOS/nixpkgs.git
synced 2024-12-01 11:22:58 +00:00
79cd2f9738
The nvidia-modeset module is loaded, which in turn pulls in the nvidia module. This makes bbswitch fail to turn off the card since it would be in use by the module.
44 lines
1.0 KiB
Nix
44 lines
1.0 KiB
Nix
{ config, lib, ... }:
|
|
|
|
let kernel = config.boot.kernelPackages; in
|
|
|
|
{
|
|
|
|
###### interface
|
|
|
|
options = {
|
|
|
|
hardware.nvidiaOptimus.disable = lib.mkOption {
|
|
default = false;
|
|
type = lib.types.bool;
|
|
description = ''
|
|
Completely disable the NVIDIA graphics card and use the
|
|
integrated graphics processor instead.
|
|
'';
|
|
};
|
|
|
|
};
|
|
|
|
|
|
###### implementation
|
|
|
|
config = lib.mkIf config.hardware.nvidiaOptimus.disable {
|
|
boot.blacklistedKernelModules = ["nouveau" "nvidia" "nvidiafb" "nvidia-drm" "nvidia-modeset"];
|
|
boot.kernelModules = [ "bbswitch" ];
|
|
boot.extraModulePackages = [ kernel.bbswitch ];
|
|
|
|
systemd.services.bbswitch = {
|
|
description = "Disable NVIDIA Card";
|
|
wantedBy = [ "multi-user.target" ];
|
|
serviceConfig = {
|
|
Type = "oneshot";
|
|
RemainAfterExit = true;
|
|
ExecStart = "${kernel.bbswitch}/bin/discrete_vga_poweroff";
|
|
ExecStop = "${kernel.bbswitch}/bin/discrete_vga_poweron";
|
|
};
|
|
path = [ kernel.bbswitch ];
|
|
};
|
|
};
|
|
|
|
}
|