vscode-extensions.github.copilot{*}: bump (#364729)
[NixPkgs.git] / nixos / modules / services / hardware / nvidia-optimus.nix
blob7c16cb9676ee9a62a68057c0dc0cdfe39b367c24
1 { config, lib, ... }:
3 let
4   kernel = config.boot.kernelPackages;
5 in
9   ###### interface
11   options = {
13     hardware.nvidiaOptimus.disable = lib.mkOption {
14       default = false;
15       type = lib.types.bool;
16       description = ''
17         Completely disable the NVIDIA graphics card and use the
18         integrated graphics processor instead.
19       '';
20     };
22   };
24   ###### implementation
26   config = lib.mkIf config.hardware.nvidiaOptimus.disable {
27     boot.blacklistedKernelModules = [
28       "nouveau"
29       "nvidia"
30       "nvidiafb"
31       "nvidia-drm"
32       "nvidia-modeset"
33     ];
34     boot.kernelModules = [ "bbswitch" ];
35     boot.extraModulePackages = [ kernel.bbswitch ];
37     systemd.services.bbswitch = {
38       description = "Disable NVIDIA Card";
39       wantedBy = [ "multi-user.target" ];
40       serviceConfig = {
41         Type = "oneshot";
42         RemainAfterExit = true;
43         ExecStart = "${kernel.bbswitch}/bin/discrete_vga_poweroff";
44         ExecStop = "${kernel.bbswitch}/bin/discrete_vga_poweron";
45       };
46       path = [ kernel.bbswitch ];
47     };
48   };