From 56bb7c93b35ffb0d6a6f8dde01bc30d029893825 Mon Sep 17 00:00:00 2001 From: 4JX <79868816+4JX@users.noreply.github.com> Date: Wed, 23 Nov 2022 20:36:56 +0100 Subject: [PATCH 1/4] Add Lenovo Legion 5 Pro Gen 6 --- README.md | 1 + flake.nix | 1 + lenovo/legion/16ach6h/default.nix | 18 ++++++++++++++++++ 3 files changed, 20 insertions(+) create mode 100644 lenovo/legion/16ach6h/default.nix diff --git a/README.md b/README.md index 528aa68..a239618 100644 --- a/README.md +++ b/README.md @@ -126,6 +126,7 @@ See code for all available configurations. | [Lenovo IdeaPad Z510](lenovo/ideapad/z510) | `` | | [Lenovo Legion 5 15arh05h](lenovo/legion/15arh05h) | `` | | [Lenovo Legion 7 Slim 15ach6](lenovo/legion/15ach6) | `` | +| [Lenovo Legion 5 Pro 16ach6h](lenovo/legion/16ach6h) | `` | | [Lenovo ThinkPad E14 (AMD)](lenovo/thinkpad/e14/amd) | `` | | [Lenovo ThinkPad E14 (Intel)](lenovo/thinkpad/e14/intel) | `` | | [Lenovo ThinkPad E470](lenovo/thinkpad/e470) | `` | diff --git a/flake.nix b/flake.nix index c18d993..602d2dc 100644 --- a/flake.nix +++ b/flake.nix @@ -60,6 +60,7 @@ lenovo-ideapad-z510 = import ./lenovo/ideapad/z510; lenovo-legion-15ach6 = import ./lenovo/legion/15ach6; lenovo-legion-15arh05h = import ./lenovo/legion/15arh05h; + lenovo-legion-16ach6h = import ./lenovo/legion/16ach6h; lenovo-legion-16ithg6 = import ./lenovo/legion/16ithg6; lenovo-thinkpad = import ./lenovo/thinkpad; lenovo-thinkpad-e14-amd = import ./lenovo/thinkpad/e14/amd; diff --git a/lenovo/legion/16ach6h/default.nix b/lenovo/legion/16ach6h/default.nix new file mode 100644 index 0000000..fae288d --- /dev/null +++ b/lenovo/legion/16ach6h/default.nix @@ -0,0 +1,18 @@ +{ lib, config, ... }: +let kernelPackages = config.boot.kernelPackages; +in { + imports = [ + ../../../common/cpu/amd + ../../../common/gpu/amd + ../../../common/gpu/nvidia/prime.nix + ../../../common/pc/laptop + ../../../common/pc/laptop/ssd + ]; + + hardware.nvidia.prime = { + amdgpuBusId = "PCI:6:0:0"; + nvidiaBusId = "PCI:1:0:0"; + }; + + services.thermald.enable = lib.mkDefault true; +} From 776287c48330090d26d51c0f0d7dcedd9aeedf98 Mon Sep 17 00:00:00 2001 From: 4JX <79868816+4JX@users.noreply.github.com> Date: Thu, 24 Nov 2022 00:12:24 +0100 Subject: [PATCH 2/4] Add some data about the device used --- lenovo/legion/16ach6h/README.md | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) create mode 100644 lenovo/legion/16ach6h/README.md diff --git a/lenovo/legion/16ach6h/README.md b/lenovo/legion/16ach6h/README.md new file mode 100644 index 0000000..cf489fa --- /dev/null +++ b/lenovo/legion/16ach6h/README.md @@ -0,0 +1,19 @@ +## Setup at the time of testing +``` +$ nix-info -m + - system: `"x86_64-linux"` + - host os: `Linux 6.0.9, NixOS, 22.11 (Raccoon), 22.11beta19.c9538a9b707` + - multi-user?: `yes` + - sandbox: `yes` + - version: `nix-env (Nix) 2.11.0` + - channels(root): `"nixos-22.11"` + - nixpkgs: `/nix/var/nix/profiles/per-user/root/channels/nixos` + ``` + ``` + $ lspci +... +01:00.0 VGA compatible controller: NVIDIA Corporation GA104M [GeForce RTX 3070 Mobile / Max-Q] (rev a1) +... +06:00.0 VGA compatible controller: Advanced Micro Devices, Inc. [AMD/ATI] Cezanne (rev c5) +... +``` \ No newline at end of file From b441875a5068472e8ee25e3ed237c0be271fa4e7 Mon Sep 17 00:00:00 2001 From: 4JX <79868816+4JX@users.noreply.github.com> Date: Thu, 24 Nov 2022 16:39:20 +0100 Subject: [PATCH 3/4] Apply suggestion --- lenovo/legion/16ach6h/default.nix | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/lenovo/legion/16ach6h/default.nix b/lenovo/legion/16ach6h/default.nix index fae288d..db13b9f 100644 --- a/lenovo/legion/16ach6h/default.nix +++ b/lenovo/legion/16ach6h/default.nix @@ -1,6 +1,6 @@ -{ lib, config, ... }: -let kernelPackages = config.boot.kernelPackages; -in { +{ lib, ... }: + +{ imports = [ ../../../common/cpu/amd ../../../common/gpu/amd From 250d6991c9f47142350ee8a37ca07f06b49a7eee Mon Sep 17 00:00:00 2001 From: Christoph Charles <23055925+christophcharles@users.noreply.github.com> Date: Sun, 4 Dec 2022 17:34:44 +0100 Subject: [PATCH 4/4] surface/kernel: 5.16.11 -> 5.19.17 --- microsoft/surface/kernel/default.nix | 2 +- microsoft/surface/kernel/linux-5.16.11.nix | 87 ------------ .../surface/kernel/linux-5.19.17/default.nix | 126 ++++++++++++++++++ .../kernel/linux-5.19.17/linux-5.19.17.nix | 22 +++ microsoft/surface/repos.nix | 8 +- 5 files changed, 153 insertions(+), 92 deletions(-) delete mode 100644 microsoft/surface/kernel/linux-5.16.11.nix create mode 100644 microsoft/surface/kernel/linux-5.19.17/default.nix create mode 100644 microsoft/surface/kernel/linux-5.19.17/linux-5.19.17.nix diff --git a/microsoft/surface/kernel/default.nix b/microsoft/surface/kernel/default.nix index 354fe90..0f23cf6 100644 --- a/microsoft/surface/kernel/default.nix +++ b/microsoft/surface/kernel/default.nix @@ -1,5 +1,5 @@ { config, lib, pkgs, ... }: { - boot.kernelPackages = pkgs.callPackage ./linux-5.16.11.nix { }; + boot.kernelPackages = pkgs.callPackage ./linux-5.19.17 { }; } diff --git a/microsoft/surface/kernel/linux-5.16.11.nix b/microsoft/surface/kernel/linux-5.16.11.nix deleted file mode 100644 index 022c069..0000000 --- a/microsoft/surface/kernel/linux-5.16.11.nix +++ /dev/null @@ -1,87 +0,0 @@ -{ lib, callPackage, linuxPackagesFor, ... }: -# To test the kernel build: -# nix-build -E "with import {}; (pkgs.callPackage ./linux-5.16.11.nix {}).kernel" -let - repos = callPackage ../repos.nix {}; - linuxPkg = { fetchurl, buildLinux, ... }@args: - buildLinux (args // rec { - version = "5.16.11"; - modDirVersion = version; - extraMeta.branch = "5.16"; - - src = repos.linux-surface-kernel; - - kernelPatches = [{ - name = "microsoft-surface-patches-linux-5.16.2"; - patch = null; - structuredExtraConfig = with lib.kernel; { - # - # Surface Aggregator Module - # - SURFACE_AGGREGATOR = module; - SURFACE_AGGREGATOR_ERROR_INJECTION = no; - SURFACE_AGGREGATOR_BUS = yes; - SURFACE_AGGREGATOR_CDEV = module; - SURFACE_AGGREGATOR_REGISTRY = module; - - SURFACE_ACPI_NOTIFY = module; - SURFACE_DTX = module; - SURFACE_PLATFORM_PROFILE = module; - - SURFACE_HID = module; - SURFACE_KBD = module; - - BATTERY_SURFACE = module; - CHARGER_SURFACE = module; - - # - # Surface laptop 1 keyboard - # - SERIAL_DEV_BUS = yes; - SERIAL_DEV_CTRL_TTYPORT = yes; - - # - # Surface Hotplug - # - SURFACE_HOTPLUG = module; - - # - # IPTS touchscreen - # - # This only enables the user interface for IPTS data. - # For the touchscreen to work, you need to install iptsd. - # - MISC_IPTS = module; - - # - # Cameras: IPU3 - # - VIDEO_IPU3_IMGU = module; - VIDEO_IPU3_CIO2 = module; - CIO2_BRIDGE = yes; - INTEL_SKL_INT3472 = module; - - # - # Cameras: Sensor drivers - # - VIDEO_OV5693 = module; - VIDEO_OV8865 = module; - - # - # ALS Sensor for Surface Book 3, Surface Laptop 3, Surface Pro 7 - # - APDS9960 = module; - - # - # Other Drivers - # - INPUT_SOC_BUTTON_ARRAY = module; - SURFACE_3_BUTTON = module; - SURFACE_3_POWER_OPREGION = module; - SURFACE_PRO3_BUTTON = module; - SURFACE_GPE = module; - SURFACE_BOOK1_DGPU_SWITCH = module; - }; - }]; - } // (args.argsOverride or {})); -in lib.recurseIntoAttrs (linuxPackagesFor (callPackage linuxPkg {})) diff --git a/microsoft/surface/kernel/linux-5.19.17/default.nix b/microsoft/surface/kernel/linux-5.19.17/default.nix new file mode 100644 index 0000000..1be2724 --- /dev/null +++ b/microsoft/surface/kernel/linux-5.19.17/default.nix @@ -0,0 +1,126 @@ +{ config, lib, pkgs, ... }: +let + repos = (pkgs.callPackage ../../repos.nix { }); + patches = repos.linux-surface + "/patches"; + surface_kernelPatches = [ + { + name = "microsoft-surface-patches-linux-5.19.17"; + patch = null; + structuredExtraConfig = with lib.kernel; { + # + # Surface Aggregator Module + # + SURFACE_AGGREGATOR = module; + SURFACE_AGGREGATOR_ERROR_INJECTION = no; + SURFACE_AGGREGATOR_BUS = yes; + SURFACE_AGGREGATOR_CDEV = module; + SURFACE_AGGREGATOR_REGISTRY = module; + + SURFACE_ACPI_NOTIFY = module; + SURFACE_DTX = module; + SURFACE_PLATFORM_PROFILE = module; + + SURFACE_HID = module; + SURFACE_KBD = module; + + BATTERY_SURFACE = module; + CHARGER_SURFACE = module; + + # + # Surface laptop 1 keyboard + # + SERIAL_DEV_BUS = yes; + SERIAL_DEV_CTRL_TTYPORT = yes; + + # + # Surface Hotplug + # + SURFACE_HOTPLUG = module; + + # + # IPTS touchscreen + # + # This only enables the user interface for IPTS data. + # For the touchscreen to work, you need to install iptsd. + # + MISC_IPTS = module; + + # + # Cameras: IPU3 + # + VIDEO_IPU3_IMGU = module; + VIDEO_IPU3_CIO2 = module; + CIO2_BRIDGE = yes; + INTEL_SKL_INT3472 = module; + + # + # Cameras: Sensor drivers + # + VIDEO_OV5693 = module; + VIDEO_OV8865 = module; + + # + # ALS Sensor for Surface Book 3, Surface Laptop 3, Surface Pro 7 + # + APDS9960 = module; + + # + # Other Drivers + # + INPUT_SOC_BUTTON_ARRAY = module; + SURFACE_3_BUTTON = module; + SURFACE_3_POWER_OPREGION = module; + SURFACE_PRO3_BUTTON = module; + SURFACE_GPE = module; + SURFACE_BOOK1_DGPU_SWITCH = module; + }; + } + { + name = "ms-surface/0001-surface3-oemb"; + patch = patches + "/5.19/0001-surface3-oemb.patch"; + } + { + name = "ms-surface/0002-mwifiex"; + patch = patches + "/5.19/0002-mwifiex.patch"; + } + { + name = "ms-surface/0003-ath10k"; + patch = patches + "/5.19/0003-ath10k.patch"; + } + { + name = "ms-surface/0004-ipts"; + patch = patches + "/5.19/0004-ipts.patch"; + } + { + name = "ms-surface/0005-surface-sam"; + patch = patches + "/5.19/0005-surface-sam.patch"; + } + { + name = "ms-surface/0006-surface-sam-over-hid"; + patch = patches + "/5.19/0006-surface-sam-over-hid.patch"; + } + { + name = "ms-surface/0007-surface-button"; + patch = patches + "/5.19/0007-surface-button.patch"; + } + { + name = "ms-surface/0008-surface-typecover"; + patch = patches + "/5.19/0008-surface-typecover.patch"; + } + { + name = "ms-surface/0009-surface-gpe"; + patch = patches + "/5.19/0009-surface-gpe.patch"; + } + { + name = "ms-surface/0010-cameras"; + patch = patches + "/5.19/0010-cameras.patch"; + } + { + name = "ms-surface/0011-amd-gpio"; + patch = patches + "/5.19/0011-amd-gpio.patch"; + } + ]; +in (with pkgs; + recurseIntoAttrs (linuxPackagesFor (callPackage ./linux-5.19.17.nix { + kernelPatches = surface_kernelPatches; + }))) diff --git a/microsoft/surface/kernel/linux-5.19.17/linux-5.19.17.nix b/microsoft/surface/kernel/linux-5.19.17/linux-5.19.17.nix new file mode 100644 index 0000000..6cc725e --- /dev/null +++ b/microsoft/surface/kernel/linux-5.19.17/linux-5.19.17.nix @@ -0,0 +1,22 @@ +{ lib, stdenv, buildPackages, fetchurl, perl, buildLinux +, modDirVersionArg ? null, ... }@args: + +with lib; + +buildLinux (args // rec { + version = "5.19.17"; + + # modDirVersion needs to be x.y.z, will automatically add .0 if needed + modDirVersion = if (modDirVersionArg == null) then + concatStringsSep "." (take 3 (splitVersion "${version}.0")) + else + modDirVersionArg; + + # branchVersion needs to be x.y + extraMeta.branch = versions.majorMinor version; + + src = fetchurl { + url = "mirror://kernel/linux/kernel/v5.x/linux-${version}.tar.xz"; + sha256 = "sha256-yTuzhKl60fCk8Y5ELOApEkJyL3gCPspliyI0RUHwlIk="; + }; +} // (args.argsOverride or { })) diff --git a/microsoft/surface/repos.nix b/microsoft/surface/repos.nix index 1ee00b9..c2feeb3 100644 --- a/microsoft/surface/repos.nix +++ b/microsoft/surface/repos.nix @@ -1,9 +1,9 @@ { lib, pkgs, fetchFromGitHub, fetchurl }: { - linux-surface-kernel = fetchFromGitHub { + linux-surface = fetchFromGitHub { owner = "linux-surface"; - repo = "kernel"; - rev = "db94c89f56d6ceae03ca3802e11197f48e6c539f"; - sha256 = "0c58ri0i9gdb4w7l361pnkvq6ap17kmgnxngh0bcdmgn4dc88wx2"; + repo = "linux-surface"; + rev = "fe2bed0f88a1803d87cd1805dc81272be32844ae"; + sha256 = "sha256-sOJ4oN1F+/bNrGcqxh2IG4rn6twu//TExnn+qmQPW/0="; }; ath10k-firmware = fetchFromGitHub {