about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--README.md2
-rw-r--r--dell/xps/15-9500/README.wiki14
-rw-r--r--dell/xps/15-9500/default.nix10
-rw-r--r--dell/xps/15-9500/nvidia/default.nix31
-rw-r--r--dell/xps/15-9500/thermald-conf.xml205
-rw-r--r--dell/xps/15-9500/xps-common.nix24
-rw-r--r--flake.nix2
7 files changed, 288 insertions, 0 deletions
diff --git a/README.md b/README.md
index 2fd51933e535..f1a2113b8b43 100644
--- a/README.md
+++ b/README.md
@@ -69,6 +69,8 @@ See code for all available configurations.
 | [Dell XPS 15 9560][]              | `<nixos-hardware/dell/xps/15-9560>`                |
 | [Dell XPS 15 9560, intel only][]  | `<nixos-hardware/dell/xps/15-9560/intel>`          |
 | [Dell XPS 15 9560, nvidia only][] | `<nixos-hardware/dell/xps/15-9560/nvidia>`         |
+| [Dell XPS 15 9500][]              | `<nixos-hardware/dell/xps/15-9500>`                |
+| [Dell XPS 15 9500, nvidia][]      | `<nixos-hardware/dell/xps/15-9500/nvidia>`         |
 | [Google Pixelbook][]              | `<nixos-hardware/google/pixelbook>`                |
 | [Inverse Path USB armory][]       | `<nixos-hardware/inversepath/usbarmory>`           |
 | Lenovo IdeaPad Z510               | `<nixos-hardware/lenovo/ideapad/z510>`             |
diff --git a/dell/xps/15-9500/README.wiki b/dell/xps/15-9500/README.wiki
new file mode 100644
index 000000000000..d2e0456bb9c9
--- /dev/null
+++ b/dell/xps/15-9500/README.wiki
@@ -0,0 +1,14 @@
+= Dell XPS 15 9550 =
+
+== Tested Hardware ==
+
+* CPU: Intel(R) Core(TM) i7-10875H CPU @ 2.30GHz
+* RAM: 64 GB
+* HDD: 1 TiB SSD
+* Screen: 15" 4k (3840✕2160)
+* Graphics: NVIDIA Corporation TU117M [GeForce GTX 1650 Ti Mobile], with Intel Graphics too.
+* Input: Touchscreen and trackpad.
+
+== Notes ==
+
+Also tested with Dell WD19TB Thunderbolt Dock.
diff --git a/dell/xps/15-9500/default.nix b/dell/xps/15-9500/default.nix
new file mode 100644
index 000000000000..8d6d15b5b8d4
--- /dev/null
+++ b/dell/xps/15-9500/default.nix
@@ -0,0 +1,10 @@
+{ lib, pkgs, ... }:
+
+{
+  imports = [
+    ./xps-common.nix
+  ];
+
+  # This configuration makes intel default
+  services.xserver.videoDrivers = lib.mkDefault [ "intel" ];
+}
diff --git a/dell/xps/15-9500/nvidia/default.nix b/dell/xps/15-9500/nvidia/default.nix
new file mode 100644
index 000000000000..b7150c120095
--- /dev/null
+++ b/dell/xps/15-9500/nvidia/default.nix
@@ -0,0 +1,31 @@
+{ lib, pkgs, ... }:
+
+# This creates a new 'nvidia-offload' program that runs the application passed to it on the GPU
+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
+{
+  imports = [
+    ../xps-common.nix
+  ];
+
+  # As per https://nixos.wiki/wiki/Nvidia
+  services.xserver.videoDrivers = lib.mkDefault [ "nvidia" ];
+  environment.systemPackages = [ nvidia-offload ];
+
+  hardware.nvidia.prime = {
+    offload.enable = lib.mkDefault true;
+
+    # Bus ID of the Intel GPU.
+    intelBusId = lib.mkDefault "PCI:0:2:0";
+
+    # Bus ID of the NVIDIA GPU.
+    nvidiaBusId = lib.mkDefault "PCI:1:0:0";
+  };
+}
diff --git a/dell/xps/15-9500/thermald-conf.xml b/dell/xps/15-9500/thermald-conf.xml
new file mode 100644
index 000000000000..bc13d3541dcb
--- /dev/null
+++ b/dell/xps/15-9500/thermald-conf.xml
@@ -0,0 +1,205 @@
+<?xml version="1.0"?> 
+ <!-- BEGIN --> 
+ <ThermalConfiguration> 
+ <Platform>
+	<Name> Auto generated </Name>
+	<ProductName>XPS 15 9500</ProductName>
+	<Preference>QUIET</Preference>
+	<PPCC>
+		<PowerLimitIndex>0</PowerLimitIndex>
+		<PowerLimitMinimum>10000</PowerLimitMinimum>
+		<PowerLimitMaximum>68000</PowerLimitMaximum>
+		<TimeWindowMinimum>56000</TimeWindowMinimum>
+		<TimeWindowMaximum>56000</TimeWindowMaximum>
+		<StepSize>250</StepSize>
+	</PPCC>
+	<ThermalZones>
+		<ThermalZone>
+			<Type>auto_zone_0</Type>
+			<TripPoints>
+				<TripPoint>
+					<SensorType>SEN2</SensorType>
+					<Temperature>55000</Temperature>
+					<Type>Passive</Type>
+					<CoolingDevice>
+						<Type>B0D4</Type>
+						<SamplingPeriod>1</SamplingPeriod>
+						<TargetState>45000000</TargetState>
+					</CoolingDevice>
+				</TripPoint>
+				<TripPoint>
+					<SensorType>SEN2</SensorType>
+					<Temperature>57000</Temperature>
+					<Type>Passive</Type>
+					<CoolingDevice>
+						<Type>B0D4</Type>
+						<SamplingPeriod>1</SamplingPeriod>
+						<TargetState>40000000</TargetState>
+					</CoolingDevice>
+				</TripPoint>
+				<TripPoint>
+					<SensorType>SEN2</SensorType>
+					<Temperature>60000</Temperature>
+					<Type>Passive</Type>
+					<CoolingDevice>
+						<Type>B0D4</Type>
+						<SamplingPeriod>1</SamplingPeriod>
+						<TargetState>35000000</TargetState>
+					</CoolingDevice>
+				</TripPoint>
+				<TripPoint>
+					<SensorType>SEN2</SensorType>
+					<Temperature>64000</Temperature>
+					<Type>Passive</Type>
+					<CoolingDevice>
+						<Type>B0D4</Type>
+						<SamplingPeriod>3</SamplingPeriod>
+						<TargetState>35000000</TargetState>
+					</CoolingDevice>
+				</TripPoint>
+				<TripPoint>
+					<SensorType>SEN2</SensorType>
+					<Temperature>68000</Temperature>
+					<Type>Passive</Type>
+					<CoolingDevice>
+						<Type>B0D4</Type>
+						<SamplingPeriod>3</SamplingPeriod>
+						<TargetState>20000000</TargetState>
+					</CoolingDevice>
+				</TripPoint>
+				<TripPoint>
+					<SensorType>SEN2</SensorType>
+					<Temperature>70000</Temperature>
+					<Type>Passive</Type>
+					<CoolingDevice>
+						<Type>B0D4</Type>
+						<SamplingPeriod>3</SamplingPeriod>
+						<TargetState>15000000</TargetState>
+					</CoolingDevice>
+				</TripPoint>
+			</TripPoints>
+		</ThermalZone>
+		<ThermalZone>
+			<Type>auto_zone_1</Type>
+			<TripPoints>
+				<TripPoint>
+					<SensorType>SEN5</SensorType>
+					<Temperature>38000</Temperature>
+					<Type>Passive</Type>
+					<CoolingDevice>
+						<Type>B0D4</Type>
+						<SamplingPeriod>1</SamplingPeriod>
+						<TargetState>22000000</TargetState>
+					</CoolingDevice>
+				</TripPoint>
+				<TripPoint>
+					<SensorType>SEN5</SensorType>
+					<Temperature>39000</Temperature>
+					<Type>Passive</Type>
+					<CoolingDevice>
+						<Type>B0D4</Type>
+						<SamplingPeriod>1</SamplingPeriod>
+						<TargetState>17000000</TargetState>
+					</CoolingDevice>
+				</TripPoint>
+				<TripPoint>
+					<SensorType>SEN5</SensorType>
+					<Temperature>40000</Temperature>
+					<Type>Passive</Type>
+					<CoolingDevice>
+						<Type>B0D4</Type>
+						<SamplingPeriod>3</SamplingPeriod>
+						<TargetState>12000000</TargetState>
+					</CoolingDevice>
+				</TripPoint>
+				<TripPoint>
+					<SensorType>SEN5</SensorType>
+					<Temperature>41000</Temperature>
+					<Type>Passive</Type>
+					<CoolingDevice>
+						<Type>B0D4</Type>
+						<SamplingPeriod>3</SamplingPeriod>
+					</CoolingDevice>
+				</TripPoint>
+			</TripPoints>
+		</ThermalZone>
+		<ThermalZone>
+			<Type>auto_zone_2</Type>
+			<TripPoints>
+				<TripPoint>
+					<SensorType>VIR1</SensorType>
+					<Temperature>57000</Temperature>
+					<Type>Passive</Type>
+					<CoolingDevice>
+						<Type>B0D4</Type>
+						<SamplingPeriod>3</SamplingPeriod>
+						<TargetState>15000000</TargetState>
+					</CoolingDevice>
+				</TripPoint>
+				<TripPoint>
+					<SensorType>VIR1</SensorType>
+					<Temperature>60000</Temperature>
+					<Type>Passive</Type>
+					<CoolingDevice>
+						<Type>B0D4</Type>
+						<SamplingPeriod>3</SamplingPeriod>
+					</CoolingDevice>
+				</TripPoint>
+			</TripPoints>
+		</ThermalZone>
+		<ThermalZone>
+			<Type>auto_zone_3</Type>
+			<TripPoints>
+				<TripPoint>
+					<SensorType>VIR2</SensorType>
+					<Temperature>76000</Temperature>
+					<Type>Passive</Type>
+					<CoolingDevice>
+						<Type>B0D4</Type>
+						<SamplingPeriod>1</SamplingPeriod>
+					</CoolingDevice>
+				</TripPoint>
+			</TripPoints>
+		</ThermalZone>
+		<ThermalZone>
+			<Type>auto_zone_4</Type>
+			<TripPoints>
+				<TripPoint>
+					<SensorType>WRLS</SensorType>
+					<Temperature>80000</Temperature>
+					<Type>Passive</Type>
+					<CoolingDevice>
+						<Type>B0D4</Type>
+						<SamplingPeriod>1</SamplingPeriod>
+					</CoolingDevice>
+				</TripPoint>
+			</TripPoints>
+		</ThermalZone>
+		<ThermalZone>
+			<Type>auto_zone_5</Type>
+			<TripPoints>
+				<TripPoint>
+					<SensorType>STG1</SensorType>
+					<Temperature>66000</Temperature>
+					<Type>Passive</Type>
+					<CoolingDevice>
+						<Type>B0D4</Type>
+						<SamplingPeriod>1</SamplingPeriod>
+						<TargetState>19000000</TargetState>
+					</CoolingDevice>
+				</TripPoint>
+				<TripPoint>
+					<SensorType>STG1</SensorType>
+					<Temperature>90000</Temperature>
+					<Type>Passive</Type>
+					<CoolingDevice>
+						<Type>B0D4</Type>
+						<SamplingPeriod>1</SamplingPeriod>
+					</CoolingDevice>
+				</TripPoint>
+			</TripPoints>
+		</ThermalZone>
+	</ThermalZones>
+</Platform>
+</ThermalConfiguration>
+<!-- END -->
diff --git a/dell/xps/15-9500/xps-common.nix b/dell/xps/15-9500/xps-common.nix
new file mode 100644
index 000000000000..afa627ddcbda
--- /dev/null
+++ b/dell/xps/15-9500/xps-common.nix
@@ -0,0 +1,24 @@
+{ lib, ... }:
+let
+  thermald-conf = ./thermald-conf.xml;
+in
+{
+  imports = [
+    ../../../common/cpu/intel
+    ../../../common/pc/laptop
+    ../../../common/pc/laptop/ssd
+  ];
+
+  # Boot loader
+  boot.kernelParams = lib.mkDefault [ "acpi_rev_override" ];
+
+  # This will save you money and possibly your life!
+  services.thermald.enable = lib.mkDefault true;
+
+  # Thermald doesn't have a default config for the 9500 yet, the one in this repo was generated with dptfxtract-static:
+  services.thermald.configFile = lib.mkDefault thermald-conf;
+
+  # Set the tlp config to powersave explictly (this should be default). TLP is enabled in common/pc/laptop.
+  services.tlp.extraConfig = lib.mkDefault "CPU_SCALING_GOVERNOR_ON_AC=powersave\nCPU_SCALING_GOVERNOR_ON_BAT=powersave";
+
+}
diff --git a/flake.nix b/flake.nix
index c30d3c917ef1..b6e67185feca 100644
--- a/flake.nix
+++ b/flake.nix
@@ -21,6 +21,8 @@
       dell-xps-15-9560 = import ./dell/xps/15-9560;
       dell-xps-15-9560-intel = import ./dell/xps/15-9560/intel;
       dell-xps-15-9560-nvidia = import ./dell/xps/15-9560/nvidia;
+      dell-xps-15-9500 = import ./dell/xps/15-9500;
+      dell-xps-15-9500-nvidia = import ./dell/xps/15-9500/nvidia;
       google-pixelbook = import ./google/pixelbook;
       inversepath-usbarmory = import ./inversepath/usbarmory;
       lenovo-ideapad-z510 = import ./lenovo/ideapad/z510;