From d7c59fc430bf51f274fad2135e2e153db1e1e37b Mon Sep 17 00:00:00 2001
From: Pol Dellaiera <pol.dellaiera@protonmail.com>
Date: Sun, 25 Aug 2024 18:56:46 +0200
Subject: [PATCH] linuxKernel.packages.linux_6_10.nvidia_x11_legacy340:
 compatible with kernel 6.10

---
 pkgs/os-specific/linux/nvidia-x11/default.nix | 25 ++++++++++++++++---
 1 file changed, 22 insertions(+), 3 deletions(-)

diff --git a/pkgs/os-specific/linux/nvidia-x11/default.nix b/pkgs/os-specific/linux/nvidia-x11/default.nix
index 7c7d0a59c625..219b61f0b2ca 100644
--- a/pkgs/os-specific/linux/nvidia-x11/default.nix
+++ b/pkgs/os-specific/linux/nvidia-x11/default.nix
@@ -1,4 +1,4 @@
-{ lib, callPackage, fetchFromGitHub, fetchurl, fetchpatch, stdenv, pkgsi686Linux }:
+{ lib, callPackage, fetchFromGitHub, fetchgit, fetchpatch, stdenv, pkgsi686Linux }:
 
 let
   generic = args: let
@@ -128,14 +128,33 @@ rec {
   };
 
   # Last one supporting x86
-  legacy_390 = generic {
+  legacy_390 = let
+    # Source corresponding to https://aur.archlinux.org/packages/nvidia-390xx-dkms
+    aurPatches = fetchgit {
+      url = "https://aur.archlinux.org/nvidia-390xx-utils.git";
+      rev = "ebb48c240ce329e89ad3b59e78c8c708f46f27b3";
+      hash = "sha256-AGx3/EQ81awBMs6rrXTGWJmyq+UjBCPp6/9z1BQBB9E=";
+    };
+    patchset = [
+      "kernel-4.16+-memory-encryption.patch"
+      "kernel-6.2.patch"
+      "kernel-6.3.patch"
+      "kernel-6.4.patch"
+      "kernel-6.5.patch"
+      "kernel-6.6.patch"
+      "kernel-6.8.patch"
+      "gcc-14.patch"
+      "kernel-6.10.patch"
+    ];
+  in generic {
     version = "390.157";
     sha256_32bit = "sha256-VdZeCkU5qct5YgDF8Qgv4mP7CVHeqvlqnP/rioD3B5k=";
     sha256_64bit = "sha256-W+u8puj+1da52BBw+541HxjtxTSVJVPL3HHo/QubMoo=";
     settingsSha256 = "sha256-uJZO4ak/w/yeTQ9QdXJSiaURDLkevlI81de0q4PpFpw=";
     persistencedSha256 = "sha256-NuqUQbVt80gYTXgIcu0crAORfsj9BCRooyH3Gp1y1ns=";
 
-    broken = kernel.kernelAtLeast "6.2";
+    patches = map (patch: "${aurPatches}/${patch}") patchset;
+    broken = kernel.kernelAtLeast "6.11 ";
 
     # fixes the bug described in https://bbs.archlinux.org/viewtopic.php?pid=2083439#p2083439
     # see https://bbs.archlinux.org/viewtopic.php?pid=2083651#p2083651