#!/usr/bin/env sh
set -eu

[ "$#" -ne 0 ] && { echo "No arguments expected" >&2; exit 1; }

./download

rm -rf NVIDIA-Linux-x86_64-470.256.02
sh NVIDIA-Linux-x86_64-470.256.02.run --extract-only

SCRIPTPATH="$( cd -- "$(dirname "$0")" >/dev/null 2>&1 ; pwd -P )"
apply_patch() {
    patch -Np1 -i "$SCRIPTPATH/patches/$1"
}

cd NVIDIA-Linux-x86_64-470.256.02/kernel
apply_patch 0001-Fix-conftest-to-ignore-implicit-function-declaration.patch
apply_patch 0002-Fix-conftest-to-use-a-short-wchar_t.patch
apply_patch 0003-Fix-conftest-to-use-nv_drm_gem_vmap-which-has-the-se.patch
apply_patch kernel-6.10.patch
apply_patch kernel-6.12.patch
apply_patch nvidia-470xx-fix-gcc-15.patch
apply_patch nvidia-470xx-fix-linux-6.13.patch
apply_patch nvidia-470xx-fix-linux-6.14.patch
apply_patch nvidia-470xx-fix-linux-6.15.patch
apply_patch nvidia-470xx-fix-linux-6.17.patch
apply_patch nvidia-470xx-fix-linux-6.19-part1.patch
apply_patch nvidia-470xx-fix-linux-6.19-part2.patch
apply_patch nvidia-470xx-fix-linux-7.0.patch
apply_patch nvidia-470xx-fix-linux-7.2-part1.patch
apply_patch nvidia-470xx-fix-linux-7.2-part2.patch
if [ -n "${NVIDIA_470XX_APPLY_STAGING_PATCHES:-}" ]; then
    true
fi
apply_patch disable-objtool-override.patch
apply_patch enable-drm-modeset-by-default.patch
