diff options
Diffstat (limited to 'modules/teh-nix/nvidia.nix')
| -rw-r--r-- | modules/teh-nix/nvidia.nix | 40 |
1 files changed, 40 insertions, 0 deletions
diff --git a/modules/teh-nix/nvidia.nix b/modules/teh-nix/nvidia.nix new file mode 100644 index 0000000..f14d20c --- /dev/null +++ b/modules/teh-nix/nvidia.nix @@ -0,0 +1,40 @@ +{ ... }: +{ + flake.modules.nixos.teh-nix = + { config, pkgs, lib, ... }: + let + nvidia-offload = pkgs.writeShellScriptBin "prime-run" '' +export __NV_PRIME_RENDER_OFFLOAD=1 +export __NV_PRIME_RENDER_OFFLOAD_PROVIDER=NVIDIA-G0 +export __GLX_VENDOR_LIBRARY_NAME=nvidia +export __VK_LAYER_NV_optimus=NVIDIA_only +exec "$@" +''; + in + { + options.teh-nix.nvidia = with lib; { + enable = mkEnableOption "Enable nvidia"; + }; + + config = lib.mkIf config.teh-nix.nvidia.enable { + nixpkgs.config.allowUnfree = true; + hardware.graphics.enable = true; + hardware.nvidia.modesetting.enable = true; + # hardware.nvidia.dynamicBoost.enable = true; + hardware.nvidia.open = true; + hardware.nvidia.prime = { + # sync.enable = true; + offload.enable = true; + # offload.offloadCmdMainProgram = "prime-run"; + + nvidiaBusId = "PCI:1:0:0"; + intelBusId = "PCI:5:0:0"; + }; + hardware.nvidia.package = config.boot.kernelPackages.nvidiaPackages.stable; + + services.xserver.videoDrivers = [ "nvidia" ]; + + environment.systemPackages = [ nvidia-offload ]; + }; + }; +} |
