about summary refs log tree commit diff
path: root/modules/nixos-hardware/microsoft/surface/kernel/linux-5.10.2/default.nix
diff options
context:
space:
mode:
Diffstat (limited to 'modules/nixos-hardware/microsoft/surface/kernel/linux-5.10.2/default.nix')
-rw-r--r--modules/nixos-hardware/microsoft/surface/kernel/linux-5.10.2/default.nix112
1 files changed, 112 insertions, 0 deletions
diff --git a/modules/nixos-hardware/microsoft/surface/kernel/linux-5.10.2/default.nix b/modules/nixos-hardware/microsoft/surface/kernel/linux-5.10.2/default.nix
new file mode 100644
index 000000000000..d4f6eb4eb9d8
--- /dev/null
+++ b/modules/nixos-hardware/microsoft/surface/kernel/linux-5.10.2/default.nix
@@ -0,0 +1,112 @@
+{ config, lib, pkgs, ... }:
+let
+  repos = (pkgs.callPackage ../../repos.nix {});
+  # TODO: Can I append the path ./patches instead of a string?
+  patches = repos.linux-surface + "/patches";
+  surface_kernelPatches = [
+    { name = "microsoft-surface-patches-linux-5.10.2";
+      patch = null;
+      extraConfig = ''
+          #
+          # Surface Aggregator Module
+          #
+          SURFACE_AGGREGATOR m
+          SURFACE_AGGREGATOR_ERROR_INJECTION n
+          SURFACE_AGGREGATOR_BUS y
+          SURFACE_AGGREGATOR_CDEV m
+          SURFACE_AGGREGATOR_REGISTRY m
+          SURFACE_ACPI_NOTIFY m
+          SURFACE_BATTERY m
+          SURFACE_DTX m
+          SURFACE_HID m
+          SURFACE_PERFMODE m
+
+          #
+          # These built-in modules are required for the Surface Aggregator Module
+          # See: https://github.com/linux-surface/surface-aggregator-module/wiki/Testing-and-Installing
+          #
+          SERIAL_DEV_BUS y
+          SERIAL_DEV_CTRL_TTYPORT y
+
+          #
+          # Surface Hotplug
+          #
+          SURFACE_HOTPLUG m
+
+          #
+          # IPTS touchscreen
+          #
+          # This only enables the user interface for IPTS data.
+          # For the touchscreen to work, you need to install iptsd.
+          #
+          MISC_IPTS m
+
+          #
+          # Cameras: IPU3
+          #
+          ## TODO: Fix for kernel 5.10.2:
+          ##VIDEO_IPU3_IMGU m
+          VIDEO_IPU3_CIO2 m
+          CIO2_BRIDGE y
+          INT3472 m
+
+          #
+          # Cameras: Sensor drivers
+          #
+          VIDEO_OV5693 m
+          ## TODO: Fix for kernel 5.10.2:
+          ##VIDEO_OV8865 m
+
+          #
+          # Other Drivers
+          #
+          INPUT_SOC_BUTTON_ARRAY m
+          SURFACE_3_BUTTON m
+          SURFACE_3_POWER_OPREGION m
+          SURFACE_PRO3_BUTTON m
+          SURFACE_GPE m
+          SURFACE_BOOK1_DGPU_SWITCH m
+        '';
+    }
+    {
+      name = "ms-surface/0001-surface3-oemb";
+      patch = patches + "/5.10/0001-surface3-oemb.patch";
+    }
+    {
+      name = "ms-surface/0002-wifi";
+      patch = patches + "/5.10/0002-wifi.patch";
+    }
+    {
+      name = "ms-surface/0003-ipts";
+      patch = patches + "/5.10/0003-ipts.patch";
+    }
+    {
+      name = "ms-surface/0004-surface-gpe";
+      patch = patches + "/5.10/0004-surface-gpe.patch";
+    }
+    {
+      name = "ms-surface/0005-surface-sam-over-hid";
+      patch = patches + "/5.10/0005-surface-sam-over-hid.patch";
+    }
+    {
+      name = "ms-surface/0006-surface-sam";
+      patch = patches + "/5.10/0006-surface-sam.patch";
+    }
+    {
+      name = "ms-surface/0007-surface-hotplug";
+      patch = patches + "/5.10/0007-surface-hotplug.patch";
+    }
+    {
+      name = "ms-surface/0008-surface-typecover";
+      patch = patches + "/5.10/0008-surface-typecover.patch";
+    }
+    {
+      name = "ms-surface/0009-cameras";
+      patch = patches + "/5.10/0009-cameras.patch";
+    }
+  ];
+in (with pkgs; recurseIntoAttrs (linuxPackagesFor (
+     callPackage ./linux-5.10.2.nix {
+       kernelPatches = surface_kernelPatches;
+     }
+   )))