Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
29 changes: 21 additions & 8 deletions microsoft/surface/common/default.nix
Original file line number Diff line number Diff line change
Expand Up @@ -23,24 +23,37 @@ let
version = "6.19.8";
hash = "sha256-qtpHItuLz6C5cyhRhW1AUIK2pPouOrBnvo2xfN0RWzg=";
};

stable-kernel = {
version = "7.1.3";
hash = "sha256-vkHAaOiPUkKhm8zb/74HexjEe0X2J+IyVQS0+red0dw=";
};
in
{
"longterm" = lts-kernel;
"stable" = lts-kernel;
"stable" = stable-kernel;
};

# Set the version and hash for the kernel sources
srcVersion = supportedKernels.${config.hardware.microsoft-surface.kernelVersion}.version;
srcHash = supportedKernels.${config.hardware.microsoft-surface.kernelVersion}.hash;

# Fetch the latest linux-surface patches
linux-surface = pkgs.fetchFromGitHub {
owner = "linux-surface";
repo = "linux-surface";
rev = "bf1921fc63f33d03a007fb38c4f88ff7e7bc1a55";
hash = "sha256-AV+J1iKpA4PEsX9oVUTGlzGerTWTermia3aJSZxuu/w=";
};
linux-surface = (
if (versions.majorMinor srcVersion == "longterm") then
pkgs.fetchFromGitHub {
owner = "linux-surface";
repo = "linux-surface";
rev = "bf1921fc63f33d03a007fb38c4f88ff7e7bc1a55";
hash = "sha256-AV+J1iKpA4PEsX9oVUTGlzGerTWTermia3aJSZxuu/w=";
}
else
(pkgs.fetchFromGitHub {
owner = "Apiznel";
repo = "linux-surface";
rev = "f694fbab50b0905c71fa2148cdad57c47c5df3c0";
hash = "sha256-/281m7knzni7mR7z4ES1q6mWBDAV98a//YCRe0yUSEc=";
})
);

# Fetch and build the kernel
inherit (pkgs.callPackage ./kernel/linux-package.nix { })
Expand Down
161 changes: 161 additions & 0 deletions microsoft/surface/common/kernel/7.1/patches.nix
Original file line number Diff line number Diff line change
@@ -0,0 +1,161 @@
{
lib,
kernel ? lib.kernel,
patchSrc,
version,
}:

[
{
name = "microsoft-surface-patches-linux-${version}";
patch = null;
structuredExtraConfig = with kernel; {
##
## Surface Aggregator Module
##
CONFIG_SURFACE_AGGREGATOR = module;
# CONFIG_SURFACE_AGGREGATOR_ERROR_INJECTION is not set
CONFIG_SURFACE_AGGREGATOR_BUS = yes;
CONFIG_SURFACE_AGGREGATOR_CDEV = module;
CONFIG_SURFACE_AGGREGATOR_HUB = module;
CONFIG_SURFACE_AGGREGATOR_REGISTRY = module;
CONFIG_SURFACE_AGGREGATOR_TABLET_SWITCH = module;

CONFIG_SURFACE_ACPI_NOTIFY = module;
CONFIG_SURFACE_DTX = module;
CONFIG_SURFACE_PLATFORM_PROFILE = module;

CONFIG_SURFACE_HID = module;
CONFIG_SURFACE_KBD = module;

CONFIG_BATTERY_SURFACE = module;
CONFIG_CHARGER_SURFACE = module;

CONFIG_SENSORS_SURFACE_TEMP = module;
CONFIG_SENSORS_SURFACE_FAN = module;

CONFIG_RTC_DRV_SURFACE = module;

##
## Surface Hotplug
##
CONFIG_SURFACE_HOTPLUG = module;

##
## IPTS and ITHC touchscreen
##
## This only enables the user interface for IPTS/ITHC data.
## For the touchscreen to work, you need to install iptsd.
##
CONFIG_HID_IPTS = module;
CONFIG_HID_ITHC = module;
CONFIG_INTEL_THC_HID = module;
CONFIG_INTEL_QUICKSPI = module;

##
## Cameras: IPU3
##
CONFIG_VIDEO_DW9719 = module;
CONFIG_VIDEO_IPU3_IMGU = module;
CONFIG_VIDEO_IPU3_CIO2 = module;
CONFIG_IPU_BRIDGE = module;
CONFIG_INTEL_SKL_INT3472 = module;
CONFIG_REGULATOR_TPS68470 = module;
CONFIG_COMMON_CLK_TPS68470 = module;
CONFIG_LEDS_TPS68470 = module;

##
## Cameras: Sensor drivers
##
CONFIG_VIDEO_OV5693 = module;
CONFIG_VIDEO_OV7251 = module;
CONFIG_VIDEO_OV8865 = module;

##
## Surface 3: atomisp causes problems (see issue #1095). Disable it for now.
##
# CONFIG_INTEL_ATOMISP is not set

##
## ALS Sensor for Surface Book 3, Surface Laptop 3, Surface Pro 7
##
CONFIG_APDS9960 = module;

##
## Other Drivers
##
CONFIG_INPUT_SOC_BUTTON_ARRAY = module;
CONFIG_SURFACE_3_POWER_OPREGION = module;
CONFIG_SURFACE_PRO3_BUTTON = module;
CONFIG_SURFACE_GPE = module;
CONFIG_SURFACE_BOOK1_DGPU_SWITCH = module;
CONFIG_HID_SURFACE = module;

##
## HOTFIX FOR CVE-2026-31431
##

# CONFIG_CRYPTO_USER_API_AEAD is not set
};
}
{
name = "ms-surface/0001-secureboot";
patch = patchSrc + "/0001-secureboot.patch";
}
{
name = "ms-surface/0002-surface3";
patch = patchSrc + "/0002-surface3.patch";
}
{
name = "ms-surface/0003-mwifiex";
patch = patchSrc + "/0003-mwifiex.patch";
}
{
name = "ms-surface/0004-ath10k";
patch = patchSrc + "/0004-ath10k.patch";
}
{
name = "ms-surface/0005-ipts";
patch = patchSrc + "/0005-ipts.patch";
}
{
name = "ms-surface/0006-ithc";
patch = patchSrc + "/0006-ithc.patch";
}
{
name = "ms-surface/0007-surface-sam";
patch = patchSrc + "/0007-surface-sam.patch";
}
{
name = "ms-surface/0008-surface-sam-over-hid";
patch = patchSrc + "/0008-surface-sam-over-hid.patch";
}
{
name = "ms-surface/0009-surface-button";
patch = patchSrc + "/0009-surface-button.patch";
}
{
name = "ms-surface/0010-surface-typecover";
patch = patchSrc + "/0010-surface-typecover.patch";
}
{
name = "ms-surface/0011-surface-shutdown";
patch = patchSrc + "/0011-surface-shutdown.patch";
}
{
name = "ms-surface/0012-surface-gpe";
patch = patchSrc + "/0012-surface-gpe.patch";
}
{
name = "ms-surface/0013-cameras";
patch = patchSrc + "/0013-cameras.patch";
}
{
name = "ms-surface/0014-amd-gpio";
patch = patchSrc + "/0014-amd-gpio.patch";
}
{
name = "ms-surface/0015-hid-surface";
patch = patchSrc + "/0015-hid-surface.patch";
}
]