about summary refs log tree commit diff
path: root/modules/nixos-hardware/common
diff options
context:
space:
mode:
Diffstat (limited to 'modules/nixos-hardware/common')
-rw-r--r--modules/nixos-hardware/common/gpu/nvidia.nix22
-rw-r--r--modules/nixos-hardware/common/pc/default.nix6
-rw-r--r--modules/nixos-hardware/common/pc/laptop/default.nix6
3 files changed, 27 insertions, 7 deletions
diff --git a/modules/nixos-hardware/common/gpu/nvidia.nix b/modules/nixos-hardware/common/gpu/nvidia.nix
new file mode 100644
index 000000000000..fed9fa98724c
--- /dev/null
+++ b/modules/nixos-hardware/common/gpu/nvidia.nix
@@ -0,0 +1,22 @@
+{ lib, pkgs, ... }:
+
+# This creates a new 'nvidia-offload' program that runs the application passed to it on the GPU
+# As per https://nixos.wiki/wiki/Nvidia
+let
+  nvidia-offload = pkgs.writeShellScriptBin "nvidia-offload" ''
+    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 -a "$0" "$@"
+  '';
+in
+{
+  services.xserver.videoDrivers = lib.mkDefault [ "nvidia" ];
+  environment.systemPackages = [ nvidia-offload ];
+
+  hardware.nvidia.prime = {
+    offload.enable = lib.mkDefault true;
+    # Hardware should specify the bus ID for intel/nvidia devices
+  };
+}
diff --git a/modules/nixos-hardware/common/pc/default.nix b/modules/nixos-hardware/common/pc/default.nix
index 0b498ff1d20e..8864de1c416a 100644
--- a/modules/nixos-hardware/common/pc/default.nix
+++ b/modules/nixos-hardware/common/pc/default.nix
@@ -1,5 +1,9 @@
-{ lib, ... }:
+{ config, lib, ... }:
 
 {
+  boot.blacklistedKernelModules = lib.optionals (!config.hardware.enableRedistributableFirmware) [
+    "ath3k"
+  ];
+
   services.xserver.libinput.enable = lib.mkDefault true;
 }
diff --git a/modules/nixos-hardware/common/pc/laptop/default.nix b/modules/nixos-hardware/common/pc/laptop/default.nix
index ebc4931dbc29..946d066d04d5 100644
--- a/modules/nixos-hardware/common/pc/laptop/default.nix
+++ b/modules/nixos-hardware/common/pc/laptop/default.nix
@@ -3,11 +3,5 @@
 {
   imports = [ ../. ];
 
-  # TODO: fix in NixOS/nixpkgs
-  # Disable governor set in hardware-configuration.nix,
-  # required when services.tlp.enable is true:
-  powerManagement.cpuFreqGovernor =
-    lib.mkIf config.services.tlp.enable (lib.mkForce null);
-
   services.tlp.enable = lib.mkDefault true;
 }