Relevant parts of the build scripts used ($1 is the destination path, $2 the version)
# Filename of the blob
export blob="NVIDIA-Linux-x86_64-${2}"
sh -e ${blob}.run --extract-only
cd ${blob}
bsdtar -xf nvidia-persistenced-init.tar.bz2
cd kernel
sed -i "s/__VERSION_STRING/${2}/" dkms.conf
sed -i 's/__JOBS/`nproc`/' dkms.conf
sed -i 's/__DKMS_MODULES//' dkms.conf
sed -i '$iBUILT_MODULE_NAME[0]="nvidia"\
DEST_MODULE_LOCATION[0]="/kernel/drivers/video"\
BUILT_MODULE_NAME[1]="nvidia-uvm"\
DEST_MODULE_LOCATION[1]="/kernel/drivers/video"\
BUILT_MODULE_NAME[2]="nvidia-modeset"\
DEST_MODULE_LOCATION[2]="/kernel/drivers/video"\
BUILT_MODULE_NAME[3]="nvidia-drm"\
DEST_MODULE_LOCATION[3]="/kernel/drivers/video"\
BUILT_MODULE_NAME[4]="nvidia-peermem"\
DEST_MODULE_LOCATION[4]="/kernel/drivers/video"' dkms.conf
sed -i 's/NV_EXCLUDE_BUILD_MODULES/IGNORE_PREEMPT_RT_PRESENCE=1 NV_EXCLUDE_BUILD_MODULES/' dkms.conf
cd ..
#{{{NVIDIA-DKMS
install -dm755 "${1}/usr/src"
cp -dr --no-preserve="ownership" kernel "$1"/usr/src/nvidia-${2}
#}}}
… after installing $1…
# Make dkms use the same CC and flags as kernel to avoid CC mismatch errors.
export CC=clang
export CXX=clang++
export LD='/usr/bin/ld.lld'
_kernver=$(</usr/src/linux/version)
mkdir -p nvidia/${2}/build
touch nvidia/${2}/build/make.log
dkms build --dkmstree "${PWD}" -m nvidia/${2} -k ${_kernver}
install -Dt "$1/usr/lib/modules/${_kernver}/extramodules" -m644 \
nvidia/${2}/${_kernver}/x86_64/module/*
echo "blacklist nouveau" > install -Dm644 /dev/stdin "$1"/etc/modprobe.d/nvidia.conf
find "$1" -name "*.ko" -exec xz -T1 {} +
The dkms build fails.