Add nvidia 580 packages

This commit is contained in:
Ryan Hughes
2025-12-27 21:25:57 -05:00
parent 2d6f13c91d
commit d87dd64e07
14 changed files with 625 additions and 0 deletions
+2
View File
@@ -54,3 +54,5 @@ dropbox
dropbox-cli
nautilus-dropbox
openai-codex-bin
nvidia-580xx-utils # also builds nvidia-580xx-dkms and opencl-nvidia-580xx
lib32-nvidia-580xx-utils
@@ -0,0 +1,32 @@
pkgbase = lib32-nvidia-580xx-utils
pkgver = 580.119.02
pkgrel = 1
url = http://www.nvidia.com/
arch = x86_64
license = custom
options = !strip
source = https://us.download.nvidia.com/XFree86/Linux-x86_64/580.119.02/NVIDIA-Linux-x86_64-580.119.02.run
sha512sums = b773deaa58823d3907488527507df6831959c1b8215ad34e1fdf7025d318d9ca7610d0b103252252c4e4097ec97d4224f99a3e9701327dc15eadc66e906af250
pkgname = lib32-nvidia-580xx-utils
pkgdesc = NVIDIA drivers utilities (32-bit) (580xx)
depends = lib32-zlib
depends = lib32-gcc-libs
depends = lib32-libglvnd
optdepends = lib32-opencl-nvidia
provides = lib32-vulkan-driver
provides = lib32-opengl-driver
provides = lib32-nvidia-libgl
provides = lib32-nvidia-utils=580.119.02
conflicts = lib32-nvidia-libgl
conflicts = lib32-nvidia-utils
replaces = lib32-nvidia-libgl
pkgname = lib32-opencl-nvidia-580xx
pkgdesc = OpenCL implemention for NVIDIA (32-bit) (580xx)
depends = lib32-zlib
depends = lib32-gcc-libs
optdepends = opencl-headers: headers necessary for OpenCL development
provides = lib32-opencl-driver
provides = lib32-opencl-nvidia=580.119.02
conflicts = lib32-opencl-nvidia
+106
View File
@@ -0,0 +1,106 @@
# Maintainer: Vasiliy Stelmachenok <ventureo@cachyos.org>
# Contributor: Sven-Hendrik Haase <svenstaro@archlinux.org>
# Contributor: Thomas Baechler <thomas@archlinux.org>
# Contributor: James Rayner <iphitus@gmail.com>
pkgbase=lib32-nvidia-580xx-utils
pkgname=('lib32-nvidia-580xx-utils' 'lib32-opencl-nvidia-580xx')
pkgver=580.119.02
pkgrel=1
arch=('x86_64')
url="http://www.nvidia.com/"
#makedepends=('nvidia-libgl') # To avoid conflict during installation in the build chroot
license=('custom')
options=('!strip')
_pkg="NVIDIA-Linux-x86_64-${pkgver}"
source=("https://us.download.nvidia.com/XFree86/Linux-x86_64/${pkgver}/${_pkg}.run")
sha512sums=('b773deaa58823d3907488527507df6831959c1b8215ad34e1fdf7025d318d9ca7610d0b103252252c4e4097ec97d4224f99a3e9701327dc15eadc66e906af250')
create_links() {
# create soname links
for _lib in $(find "${pkgdir}" -name '*.so*' | grep -v 'xorg/'); do
_soname=$(dirname "${_lib}")/$(readelf -d "${_lib}" | grep -Po 'SONAME.*: \[\K[^]]*' || true)
_base=$(echo ${_soname} | sed -r 's/(.*).so.*/\1.so/')
[[ -e "${_soname}" ]] || ln -s $(basename "${_lib}") "${_soname}"
[[ -e "${_base}" ]] || ln -s $(basename "${_soname}") "${_base}"
done
}
build() {
sh ${_pkg}.run --extract-only
}
package_lib32-opencl-nvidia-580xx() {
pkgdesc="OpenCL implemention for NVIDIA (32-bit) (580xx)"
depends=('lib32-zlib' 'lib32-gcc-libs')
optdepends=('opencl-headers: headers necessary for OpenCL development')
conflicts=('lib32-opencl-nvidia')
provides=('lib32-opencl-driver' "lib32-opencl-nvidia=$pkgver")
cd "${_pkg}"/32
# OpenCL
install -D -m755 "libnvidia-opencl.so.${pkgver}" "${pkgdir}/usr/lib32/libnvidia-opencl.so.${pkgver}"
create_links
mkdir -p "${pkgdir}/usr/share/licenses"
ln -s lib32-nvidia-580xx-utils "${pkgdir}/usr/share/licenses/lib32-opencl-nvidia"
}
package_lib32-nvidia-580xx-utils() {
pkgdesc="NVIDIA drivers utilities (32-bit) (580xx)"
depends=('lib32-zlib' 'lib32-gcc-libs' 'lib32-libglvnd')
optdepends=('lib32-opencl-nvidia')
conflicts=('lib32-nvidia-libgl' 'lib32-nvidia-utils')
provides=('lib32-vulkan-driver' 'lib32-opengl-driver' 'lib32-nvidia-libgl' "lib32-nvidia-utils=$pkgver")
replaces=('lib32-nvidia-libgl')
cd "${_pkg}"/32
# Check http://us.download.nvidia.com/XFree86/Linux-x86_64/${pkgver}/README/installedcomponents.html
# for hints on what needs to be installed where.
install -D -m755 "libGLX_nvidia.so.${pkgver}" "${pkgdir}/usr/lib32/libGLX_nvidia.so.${pkgver}"
# OpenGL libraries
install -D -m755 "libEGL_nvidia.so.${pkgver}" "${pkgdir}/usr/lib32/libEGL_nvidia.so.${pkgver}"
install -D -m755 "libGLESv1_CM_nvidia.so.${pkgver}" "${pkgdir}/usr/lib32/libGLESv1_CM_nvidia.so.${pkgver}"
install -D -m755 "libGLESv2_nvidia.so.${pkgver}" "${pkgdir}/usr/lib32/libGLESv2_nvidia.so.${pkgver}"
# OpenGL core library
install -D -m755 "libnvidia-glcore.so.${pkgver}" "${pkgdir}/usr/lib32/libnvidia-glcore.so.${pkgver}"
install -D -m755 "libnvidia-eglcore.so.${pkgver}" "${pkgdir}/usr/lib32/libnvidia-eglcore.so.${pkgver}"
install -D -m755 "libnvidia-glsi.so.${pkgver}" "${pkgdir}/usr/lib32/libnvidia-glsi.so.${pkgver}"
# misc
mkdir -p "${pkgdir}/usr/lib32/gbm" && ln -sr "${pkgdir}/usr/lib32/libnvidia-allocator.so.${pkgver}" "${pkgdir}/usr/lib32/gbm/nvidia-drm_gbm.so"
install -D -m755 "libnvidia-fbc.so.${pkgver}" "${pkgdir}/usr/lib32/libnvidia-fbc.so.${pkgver}"
install -D -m755 "libnvidia-encode.so.${pkgver}" "${pkgdir}/usr/lib32/libnvidia-encode.so.${pkgver}"
install -D -m755 "libnvidia-ml.so.${pkgver}" "${pkgdir}/usr/lib32/libnvidia-ml.so.${pkgver}"
install -D -m755 "libnvidia-glvkspirv.so.${pkgver}" "${pkgdir}/usr/lib32/libnvidia-glvkspirv.so.${pkgver}"
install -D -m755 "libnvidia-allocator.so.${pkgver}" "${pkgdir}/usr/lib32/libnvidia-allocator.so.${pkgver}"
install -D -m755 "libnvidia-gpucomp.so.${pkgver}" "${pkgdir}/usr/lib32/libnvidia-gpucomp.so.${pkgver}"
# VDPAU
install -D -m755 "libvdpau_nvidia.so.${pkgver}" "${pkgdir}/usr/lib32/vdpau/libvdpau_nvidia.so.${pkgver}"
# nvidia-tls library
install -D -m755 "libnvidia-tls.so.${pkgver}" "${pkgdir}/usr/lib32/libnvidia-tls.so.${pkgver}"
# CUDA
install -D -m755 "libcuda.so.${pkgver}" "${pkgdir}/usr/lib32/libcuda.so.${pkgver}"
install -D -m755 "libnvcuvid.so.${pkgver}" "${pkgdir}/usr/lib32/libnvcuvid.so.${pkgver}"
# PTX JIT Compiler (Parallel Thread Execution (PTX) is a pseudo-assembly language for CUDA)
install -D -m755 "libnvidia-ptxjitcompiler.so.${pkgver}" "${pkgdir}/usr/lib32/libnvidia-ptxjitcompiler.so.${pkgver}"
# Optical flow
install -D -m755 "libnvidia-opticalflow.so.${pkgver}" "${pkgdir}/usr/lib32/libnvidia-opticalflow.so.${pkgver}"
create_links
rm -rf "${pkgdir}"/usr/{include,share,bin}
mkdir -p "${pkgdir}/usr/share/licenses"
ln -s lib32-nvidia-580xx-utils "${pkgdir}/usr/share/licenses/${pkgname}"
}
+63
View File
@@ -0,0 +1,63 @@
pkgbase = nvidia-580xx-utils
pkgver = 580.119.02
pkgrel = 2
url = http://www.nvidia.com/
arch = x86_64
license = custom
makedepends = patchelf
options = !strip
source = nvidia-drm-outputclass.conf
source = nvidia-utils.sysusers
source = nvidia.rules
source = systemd-homed-override.conf
source = systemd-suspend-override.conf
source = nvidia-sleep.conf
source = https://us.download.nvidia.com/XFree86/Linux-x86_64/580.119.02/NVIDIA-Linux-x86_64-580.119.02.run
source = 0001-Enable-atomic-kernel-modesetting-by-default.patch
source = limit-vram-usage
sha256sums = be99ff3def641bb900c2486cce96530394c5dc60548fc4642f19d3a4c784134d
sha256sums = f77a5247a3ba63e9fad3a3b2822d0fcfa51e0f79b5a90bd79bf08ea34b64ab07
sha256sums = 0e54249a7754b668b436f0f7aa7e95fff68edbb12a93dbee4660e09a8c695f84
sha256sums = c5aa7b8abe69e72bfdc6b9ee8afbfd350bcc557e894558f2e6e4087fa9aa0dd8
sha256sums = 1d053c5078387021338cfc3a732bed61be1a20a549775573788e9134775c8149
sha256sums = 12d31a5425aba66be9e9129012cde82755ad4d5b7ce9933df8fc398c4fa8d631
sha256sums = 8020f5dfd3ee88aee7a38990d0c3d2afe54751e9a170ba9eadd7ea670138ecd7
sha256sums = 163c57160cc1033020680f638b44ebd94b496152dcd8951e87d5077d4d5c2009
sha256sums = b14f7a65359c05c373ddfc750cd4cf086a48e815489d93ad5cbe1dbf84bf8f5a
pkgname = nvidia-580xx-utils
pkgdesc = NVIDIA drivers utilities (580xx)
install = nvidia-580xx-utils.install
depends = libglvnd
depends = egl-wayland
depends = egl-gbm
depends = egl-x11
optdepends = nvidia-580xx-settings: configuration tool
optdepends = xorg-server: Xorg support
optdepends = xorg-server-devel: nvidia-xconfig
provides = vulkan-driver
provides = nvidia-utils
provides = opengl-driver
provides = nvidia-libgl
conflicts = nvidia-libgl
conflicts = nvidia-utils
replaces = nvidia-libgl
pkgname = opencl-nvidia-580xx
pkgdesc = OpenCL implemention for NVIDIA (580xx)
depends = zlib
optdepends = opencl-headers: headers necessary for OpenCL development
provides = opencl-driver
provides = opencl-nvidia
conflicts = opencl-nvidia
pkgname = nvidia-580xx-dkms
pkgdesc = NVIDIA kernel modules - module sources (580xx)
depends = dkms
depends = nvidia-580xx-utils=580.119.02
depends = libglvnd
provides = NVIDIA-MODULE
provides = nvidia
conflicts = NVIDIA-MODULE
conflicts = nvidia
conflicts = nvidia-open-dkms
@@ -0,0 +1,43 @@
From 60d1ddc17835226ec67ed1bc1c28524e3bb6e151 Mon Sep 17 00:00:00 2001
From: Peter Jung <admin@ptr1337.dev>
Date: Sun, 20 Apr 2025 18:13:22 +0200
Subject: [PATCH 1/8] Enable atomic kernel modesetting by default
This is required for proper functionality under Wayland. fbdev has been default enabled since 570 so that
hunk can be removed from this patch.
Signed-off-by: Peter Jung <admin@ptr1337.dev>
---
nvidia-drm/nvidia-drm-linux.c | 2 +-
nvidia-drm/nvidia-drm-os-interface.c | 2 +-
2 files changed, 2 insertions(+), 2 deletions(-)
diff --git an/nvidia-drm/nvidia-drm-linux.c b/nvidia-drm/nvidia-drm-linux.c
index 3cb1815d..209cb469 100644
--- a/nvidia-drm/nvidia-drm-linux.c
+++ b/nvidia-drm/nvidia-drm-linux.c
@@ -31,7 +31,7 @@
MODULE_PARM_DESC(
modeset,
- "Enable atomic kernel modesetting (1 = enable, 0 = disable (default))");
+ "Enable atomic kernel modesetting (1 = enable (default), 0 = disable)");
module_param_named(modeset, nv_drm_modeset_module_param, bool, 0400);
#if defined(NV_DRM_FBDEV_AVAILABLE)
diff --git a/nvidia-drm/nvidia-drm-os-interface.c b/nvidia-drm/nvidia-drm-os-interface.c
index 7617476d..f22afd77 100644
--- a/nvidia-drm/nvidia-drm-os-interface.c
+++ b//nvidia-drm/nvidia-drm-os-interface.c
@@ -41,7 +41,7 @@
#include <drm/drmP.h>
#endif
-bool nv_drm_modeset_module_param = false;
+bool nv_drm_modeset_module_param = true;
bool nv_drm_fbdev_module_param = true;
void *nv_drm_calloc(size_t nmemb, size_t size)
--
2.49.0.391.g4bbb303af6
+303
View File
@@ -0,0 +1,303 @@
# Maintainer: Vasiliy Stelmachenok <ventureo@cachyos.org>
# Contributor: Sven-Hendrik Haase <svenstaro@archlinux.org>
# Contributor: Peter Jung <ptr1337@archlinux.org>
# Contributor: James Rayner <iphitus@gmail.com>
# Contributor: Vasiliy Stelmachenok <ventureo@yandex.ru>
# Contributor: Thomas Baechler <thomas@archlinux.org>
pkgbase=nvidia-580xx-utils
pkgname=('nvidia-580xx-utils' 'opencl-nvidia-580xx' 'nvidia-580xx-dkms')
pkgver=580.119.02
pkgrel=2
arch=('x86_64')
url="http://www.nvidia.com/"
license=('custom')
options=('!strip')
makedepends=('patchelf')
_pkg="NVIDIA-Linux-x86_64-${pkgver}"
_pkg_open="NVIDIA-kernel-module-source-${pkgver}"
source=('nvidia-drm-outputclass.conf'
'nvidia-utils.sysusers'
'nvidia.rules'
'systemd-homed-override.conf'
'systemd-suspend-override.conf'
'nvidia-sleep.conf'
"https://us.download.nvidia.com/XFree86/Linux-x86_64/${pkgver}/${_pkg}.run"
'0001-Enable-atomic-kernel-modesetting-by-default.patch'
'limit-vram-usage')
sha256sums=(
'be99ff3def641bb900c2486cce96530394c5dc60548fc4642f19d3a4c784134d'
'f77a5247a3ba63e9fad3a3b2822d0fcfa51e0f79b5a90bd79bf08ea34b64ab07'
'0e54249a7754b668b436f0f7aa7e95fff68edbb12a93dbee4660e09a8c695f84'
'c5aa7b8abe69e72bfdc6b9ee8afbfd350bcc557e894558f2e6e4087fa9aa0dd8'
'1d053c5078387021338cfc3a732bed61be1a20a549775573788e9134775c8149'
'12d31a5425aba66be9e9129012cde82755ad4d5b7ce9933df8fc398c4fa8d631'
'8020f5dfd3ee88aee7a38990d0c3d2afe54751e9a170ba9eadd7ea670138ecd7'
'163c57160cc1033020680f638b44ebd94b496152dcd8951e87d5077d4d5c2009'
'b14f7a65359c05c373ddfc750cd4cf086a48e815489d93ad5cbe1dbf84bf8f5a'
)
create_links() {
# create soname links
find "$pkgdir" -type f -name '*.so*' ! -path '*xorg/*' -print0 | while read -d $'\0' _lib; do
_soname=$(dirname "${_lib}")/$(readelf -d "${_lib}" | grep -Po 'SONAME.*: \[\K[^]]*' || true)
_base=$(echo ${_soname} | sed -r 's/(.*)\.so.*/\1.so/')
[[ -e "${_soname}" ]] || ln -s $(basename "${_lib}") "${_soname}"
[[ -e "${_base}" ]] || ln -s $(basename "${_soname}") "${_base}"
done
}
prepare() {
sh "${_pkg}.run" --extract-only
cd "${_pkg}"
bsdtar -xf nvidia-persistenced-init.tar.bz2
# Enable modeset by default
# This avoids various issue, when Simplefb is used
# https://gitlab.archlinux.org/archlinux/packaging/packages/nvidia-utils/-/issues/14
# https://github.com/rpmfusion/nvidia-kmod/blob/master/make_modeset_default.patch
patch -Np1 -i "${srcdir}/0001-Enable-atomic-kernel-modesetting-by-default.patch" -d "${srcdir}/${_pkg}/kernel"
shopt -s globstar
for conf in "${srcdir}"/**/dkms.conf; do
sed -i "s/__VERSION_STRING/${pkgver}/" "$conf"
sed -i 's/__JOBS/`nproc`/' "$conf"
sed -i 's/__EXCLUDE_MODULES//' "$conf"
sed -i 's/__DKMS_MODULES//' "$conf"
sed -i 's/NV_EXCLUDE_BUILD_MODULES/IGNORE_PREEMPT_RT_PRESENCE=1 NV_EXCLUDE_BUILD_MODULES/' "$conf"
sed -i '$i\
BUILT_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"' "$conf"
done
shopt -u globstar
}
package_opencl-nvidia-580xx() {
pkgdesc="OpenCL implemention for NVIDIA (580xx)"
depends=('zlib')
optdepends=('opencl-headers: headers necessary for OpenCL development')
provides=('opencl-driver' 'opencl-nvidia')
conflicts=('opencl-nvidia')
cd "${_pkg}"
# OpenCL
install -Dm644 nvidia.icd "${pkgdir}/etc/OpenCL/vendors/nvidia.icd"
install -Dm755 "libnvidia-opencl.so.${pkgver}" "${pkgdir}/usr/lib/libnvidia-opencl.so.${pkgver}"
create_links
mkdir -p "${pkgdir}/usr/share/licenses"
ln -s nvidia-utils "${pkgdir}/usr/share/licenses/opencl-nvidia"
}
package_nvidia-580xx-dkms() {
pkgdesc="NVIDIA kernel modules - module sources (580xx)"
depends=('dkms' "nvidia-580xx-utils=${pkgver}" 'libglvnd')
provides=('NVIDIA-MODULE' 'nvidia')
conflicts=('NVIDIA-MODULE' 'nvidia' 'nvidia-open-dkms')
cd ${_pkg}
install -dm 755 "${pkgdir}/usr/src"
cp -dr --no-preserve='ownership' kernel "${pkgdir}/usr/src/nvidia-${pkgver}"
install -Dm644 "${srcdir}/${_pkg}/LICENSE" "${pkgdir}/usr/share/licenses/${pkgname}/LICENSE"
}
package_nvidia-580xx-utils() {
pkgdesc="NVIDIA drivers utilities (580xx)"
depends=('libglvnd' 'egl-wayland' 'egl-gbm' 'egl-x11')
optdepends=(
'nvidia-580xx-settings: configuration tool'
'xorg-server: Xorg support'
'xorg-server-devel: nvidia-xconfig'
)
conflicts=('nvidia-libgl' 'nvidia-utils')
provides=('vulkan-driver' 'nvidia-utils' 'opengl-driver' 'nvidia-libgl')
replaces=('nvidia-libgl')
install="${pkgname}.install"
cd "${_pkg}"
# Check http://us.download.nvidia.com/XFree86/Linux-x86_64/${pkgver}/README/installedcomponents.html
# for hints on what needs to be installed where.
# X driver
install -Dm755 nvidia_drv.so "${pkgdir}/usr/lib/xorg/modules/drivers/nvidia_drv.so"
# Wayland/GBM
mkdir -p "${pkgdir}/usr/lib/gbm"
ln -sr "${pkgdir}/usr/lib/libnvidia-allocator.so.${pkgver}" "${pkgdir}/usr/lib/gbm/nvidia-drm_gbm.so"
# firmware
install -Dm644 -t "${pkgdir}/usr/lib/firmware/nvidia/${pkgver}/" firmware/*.bin
# GLX extension module for X
install -Dm755 "libglxserver_nvidia.so.${pkgver}" "${pkgdir}/usr/lib/nvidia/xorg/libglxserver_nvidia.so.${pkgver}"
# Ensure that X finds glx
ln -s "libglxserver_nvidia.so.${pkgver}" "${pkgdir}/usr/lib/nvidia/xorg/libglxserver_nvidia.so.1"
ln -s "libglxserver_nvidia.so.${pkgver}" "${pkgdir}/usr/lib/nvidia/xorg/libglxserver_nvidia.so"
install -Dm755 "libGLX_nvidia.so.${pkgver}" "${pkgdir}/usr/lib/libGLX_nvidia.so.${pkgver}"
# OpenGL libraries
install -Dm755 "libEGL_nvidia.so.${pkgver}" "${pkgdir}/usr/lib/libEGL_nvidia.so.${pkgver}"
install -Dm755 "libGLESv1_CM_nvidia.so.${pkgver}" "${pkgdir}/usr/lib/libGLESv1_CM_nvidia.so.${pkgver}"
install -Dm755 "libGLESv2_nvidia.so.${pkgver}" "${pkgdir}/usr/lib/libGLESv2_nvidia.so.${pkgver}"
install -Dm644 "10_nvidia.json" "${pkgdir}/usr/share/glvnd/egl_vendor.d/10_nvidia.json"
# OpenGL core library
install -Dm755 "libnvidia-glcore.so.${pkgver}" "${pkgdir}/usr/lib/libnvidia-glcore.so.${pkgver}"
install -Dm755 "libnvidia-eglcore.so.${pkgver}" "${pkgdir}/usr/lib/libnvidia-eglcore.so.${pkgver}"
install -Dm755 "libnvidia-glsi.so.${pkgver}" "${pkgdir}/usr/lib/libnvidia-glsi.so.${pkgver}"
# misc
install -Dm755 "libnvidia-api.so.1" "${pkgdir}/usr/lib/libnvidia-api.so.1"
install -Dm755 "libnvidia-fbc.so.${pkgver}" "${pkgdir}/usr/lib/libnvidia-fbc.so.${pkgver}"
install -Dm755 "libnvidia-encode.so.${pkgver}" "${pkgdir}/usr/lib/libnvidia-encode.so.${pkgver}"
install -Dm755 "libnvidia-cfg.so.${pkgver}" "${pkgdir}/usr/lib/libnvidia-cfg.so.${pkgver}"
install -Dm755 "libnvidia-ml.so.${pkgver}" "${pkgdir}/usr/lib/libnvidia-ml.so.${pkgver}"
install -Dm755 "libnvidia-glvkspirv.so.${pkgver}" "${pkgdir}/usr/lib/libnvidia-glvkspirv.so.${pkgver}"
install -Dm755 "libnvidia-allocator.so.${pkgver}" "${pkgdir}/usr/lib/libnvidia-allocator.so.${pkgver}"
install -Dm755 "libnvidia-gpucomp.so.${pkgver}" "${pkgdir}/usr/lib/libnvidia-gpucomp.so.${pkgver}"
# Vulkan ICD
install -Dm644 "nvidia_icd.json" "${pkgdir}/usr/share/vulkan/icd.d/nvidia_icd.json"
install -Dm644 "nvidia_layers.json" "${pkgdir}/usr/share/vulkan/implicit_layer.d/nvidia_layers.json"
# VulkanSC
install -D -m755 nvidia-pcc -t "${pkgdir}/usr/bin"
install -D -m755 "libnvidia-vksc-core.so.${pkgver}" -t "${pkgdir}/usr/lib"
install -D -m644 nvidia_icd_vksc.json -t "${pkgdir}/usr/share/vulkansc/icd.d"
# VDPAU
install -Dm755 "libvdpau_nvidia.so.${pkgver}" "${pkgdir}/usr/lib/vdpau/libvdpau_nvidia.so.${pkgver}"
# nvidia-tls library
install -Dm755 "libnvidia-tls.so.${pkgver}" "${pkgdir}/usr/lib/libnvidia-tls.so.${pkgver}"
# CUDA
install -Dm755 "libcuda.so.${pkgver}" "${pkgdir}/usr/lib/libcuda.so.${pkgver}"
install -Dm755 "libnvcuvid.so.${pkgver}" "${pkgdir}/usr/lib/libnvcuvid.so.${pkgver}"
install -Dm755 "libcudadebugger.so.${pkgver}" "${pkgdir}/usr/lib/libcudadebugger.so.${pkgver}"
# NVVM Compiler library loaded by the CUDA driver to do JIT link-time-optimization
install -Dm644 "libnvidia-nvvm.so.${pkgver}" "${pkgdir}/usr/lib/libnvidia-nvvm.so.${pkgver}"
install -Dm755 "libnvidia-nvvm70.so.4" "${pkgdir}/usr/lib/libnvidia-nvvm70.so.4"
# PTX JIT Compiler (Parallel Thread Execution (PTX) is a pseudo-assembly language for CUDA)
install -Dm755 "libnvidia-ptxjitcompiler.so.${pkgver}" "${pkgdir}/usr/lib/libnvidia-ptxjitcompiler.so.${pkgver}"
# raytracing
install -Dm755 "nvoptix.bin" "${pkgdir}/usr/share/nvidia/nvoptix.bin"
install -Dm755 "libnvoptix.so.${pkgver}" "${pkgdir}/usr/lib/libnvoptix.so.${pkgver}"
install -Dm755 "libnvidia-rtcore.so.${pkgver}" "${pkgdir}/usr/lib/libnvidia-rtcore.so.${pkgver}"
# NGX
install -Dm755 nvidia-ngx-updater "${pkgdir}/usr/bin/nvidia-ngx-updater"
install -Dm755 "libnvidia-ngx.so.${pkgver}" "${pkgdir}/usr/lib/libnvidia-ngx.so.${pkgver}"
install -Dm755 _nvngx.dll "${pkgdir}/usr/lib/nvidia/wine/_nvngx.dll"
install -Dm755 nvngx.dll "${pkgdir}/usr/lib/nvidia/wine/nvngx.dll"
install -Dm755 nvngx_dlssg.dll "${pkgdir}/usr/lib/nvidia/wine/nvngx_dlssg.dll"
# Optical flow
install -Dm755 "libnvidia-opticalflow.so.${pkgver}" "${pkgdir}/usr/lib/libnvidia-opticalflow.so.${pkgver}"
# Cryptography library wrapper
ls libnvidia-pkcs*
ls *openssl*
install -Dm755 "libnvidia-pkcs11.so.${pkgver}" "${pkgdir}/usr/lib/libnvidia-pkcs11.so.${pkgver}"
install -Dm755 "libnvidia-pkcs11-openssl3.so.${pkgver}" "${pkgdir}/usr/lib/libnvidia-pkcs11-openssl3.so.${pkgver}"
# Sandboxhelper
install -Dm755 "libnvidia-sandboxutils.so.${pkgver}" "${pkgdir}/usr/lib/libnvidia-sandboxutils.so.${pkgver}"
# Present Helper
install -Dm755 "libnvidia-present.so.${pkgver}" "${pkgdir}/usr/lib/libnvidia-present.so.${pkgver}"
# Debug
install -Dm755 nvidia-debugdump "${pkgdir}/usr/bin/nvidia-debugdump"
# nvidia-xconfig
install -Dm755 nvidia-xconfig "${pkgdir}/usr/bin/nvidia-xconfig"
install -Dm644 nvidia-xconfig.1.gz "${pkgdir}/usr/share/man/man1/nvidia-xconfig.1.gz"
# nvidia-bug-report
install -Dm755 nvidia-bug-report.sh "${pkgdir}/usr/bin/nvidia-bug-report.sh"
# nvidia-smi
install -Dm755 nvidia-smi "${pkgdir}/usr/bin/nvidia-smi"
install -Dm644 nvidia-smi.1.gz "${pkgdir}/usr/share/man/man1/nvidia-smi.1.gz"
# nvidia-cuda-mps
install -Dm755 nvidia-cuda-mps-server "${pkgdir}/usr/bin/nvidia-cuda-mps-server"
install -Dm755 nvidia-cuda-mps-control "${pkgdir}/usr/bin/nvidia-cuda-mps-control"
install -Dm644 nvidia-cuda-mps-control.1.gz "${pkgdir}/usr/share/man/man1/nvidia-cuda-mps-control.1.gz"
# nvidia-modprobe
# This should be removed if nvidia fixed their uvm module!
install -Dm4755 nvidia-modprobe "${pkgdir}/usr/bin/nvidia-modprobe"
install -Dm644 nvidia-modprobe.1.gz "${pkgdir}/usr/share/man/man1/nvidia-modprobe.1.gz"
# nvidia-persistenced
install -Dm755 nvidia-persistenced "${pkgdir}/usr/bin/nvidia-persistenced"
install -Dm644 nvidia-persistenced.1.gz "${pkgdir}/usr/share/man/man1/nvidia-persistenced.1.gz"
install -Dm644 nvidia-persistenced-init/systemd/nvidia-persistenced.service.template "${pkgdir}/usr/lib/systemd/system/nvidia-persistenced.service"
sed -i 's/__USER__/nvidia-persistenced/' "${pkgdir}/usr/lib/systemd/system/nvidia-persistenced.service"
# application profiles
install -Dm644 "nvidia-application-profiles-${pkgver}-rc" "${pkgdir}/usr/share/nvidia/nvidia-application-profiles-${pkgver}-rc"
install -Dm644 "nvidia-application-profiles-${pkgver}-key-documentation" "${pkgdir}/usr/share/nvidia/nvidia-application-profiles-${pkgver}-key-documentation"
# Application profiles to fix vram usage at electron applications
install -Dm644 "$srcdir"/limit-vram-usage "${pkgdir}/etc/nvidia/nvidia-application-profiles-rc.d/limit-vram-usage"
install -Dm644 LICENSE "${pkgdir}/usr/share/licenses/nvidia-utils/LICENSE"
install -Dm644 README.txt "${pkgdir}/usr/share/doc/nvidia/README"
install -Dm644 NVIDIA_Changelog "${pkgdir}/usr/share/doc/nvidia/NVIDIA_Changelog"
cp -r html "${pkgdir}/usr/share/doc/nvidia/"
ln -s nvidia "${pkgdir}/usr/share/doc/nvidia-utils"
# new power management support
install -Dm644 systemd/system/*.service -t "${pkgdir}/usr/lib/systemd/system"
install -Dm755 systemd/system-sleep/nvidia "${pkgdir}/usr/lib/systemd/system-sleep/nvidia"
install -Dm755 systemd/nvidia-sleep.sh "${pkgdir}/usr/bin/nvidia-sleep.sh"
install -Dm755 nvidia-powerd "${pkgdir}/usr/bin/nvidia-powerd"
install -Dm644 nvidia-dbus.conf "${pkgdir}/usr/share/dbus-1/system.d/nvidia-dbus.conf"
install -Dm644 "${srcdir}/systemd-homed-override.conf" "${pkgdir}/usr/lib/systemd/system/systemd-homed.service.d/10-nvidia-no-freeze-session.conf"
install -Dm644 "${srcdir}/systemd-suspend-override.conf" "${pkgdir}/usr/lib/systemd/system/systemd-suspend.service.d/10-nvidia-no-freeze-session.conf"
install -Dm644 "${srcdir}/systemd-suspend-override.conf" "${pkgdir}/usr/lib/systemd/system/systemd-suspend-then-hibernate.service.d/10-nvidia-no-freeze-session.conf"
install -Dm644 "${srcdir}/systemd-suspend-override.conf" "${pkgdir}/usr/lib/systemd/system/systemd-hibernate.service.d/10-nvidia-no-freeze-session.conf"
install -Dm644 "${srcdir}/systemd-suspend-override.conf" "${pkgdir}/usr/lib/systemd/system/systemd-hybrid-sleep.service.d/10-nvidia-no-freeze-session.conf"
# distro specific files must be installed in /usr/share/X11/xorg.conf.d
install -Dm644 "${srcdir}/nvidia-drm-outputclass.conf" "${pkgdir}/usr/share/X11/xorg.conf.d/10-nvidia-drm-outputclass.conf"
install -Dm644 "${srcdir}/nvidia-utils.sysusers" "${pkgdir}/usr/lib/sysusers.d/$pkgname.conf"
install -Dm644 "${srcdir}/nvidia.rules" "$pkgdir"/usr/lib/udev/rules.d/60-nvidia.rules
# Blacklist nouveau and nova
install -Dm644 /dev/stdin "${pkgdir}/usr/lib/modprobe.d/${pkgname}.conf" <<END
blacklist nouveau
blacklist nova_core
blacklist nova_drm
END
echo "nvidia-uvm" | install -Dm644 /dev/stdin "${pkgdir}/usr/lib/modules-load.d/${pkgname}.conf"
# Enable PreserveVideoMemoryAllocations and TemporaryFilePath
# Fixes Wayland Sleep, when restoring the session
install -Dm644 "${srcdir}/nvidia-sleep.conf" "${pkgdir}/usr/lib/modprobe.d/nvidia-sleep.conf"
# Lists NVIDIA driver files for container runtimes like nvidia-container-toolkit
install -Dm644 sandboxutils-filelist.json "${pkgdir}/usr/share/nvidia/files.d/sandboxutils-filelist.json"
create_links
}
@@ -0,0 +1,27 @@
{
"rules": [
{
"pattern": {
"op": "or",
"sub": [
{ "feature": "procname", "matches": "Proton Pass" },
{ "feature": "procname", "matches": "Proton Mail" },
{ "feature": "procname", "matches": "vesktop" },
{ "feature": "procname", "matches": "discord" },
{ "feature": "procname", "matches": "DiscordCanary" },
{ "feature": "procname", "matches": "spotify" },
{ "feature": "procname", "matches": "chromium" },
{ "feature": "procname", "matches": "chrome" },
{ "feature": "procname", "matches": "ghostty" },
{ "feature": "procname", "matches": "webcord" },
{ "feature": "procname", "matches": "brave" },
{ "feature": "procname", "matches": "firefox" },
{ "feature": "procname", "matches": "alacritty" },
{ "feature": "procname", "matches": "konsole" },
{ "feature": "procname", "matches": "niri" }
]
},
"profile": "No VidMem Reuse"
}
]
}
@@ -0,0 +1,26 @@
post_install() {
# Enable NVIDIA Services at first installation
# The services are mandatory, see under systemd configuration
# https://download.nvidia.com/XFree86/Linux-x86_64/560.35.03/README/powermanagement.html#SystemdConfigur74e29
# This is also an requirement to have sleep working together with PreserveAllocations
# https://gitlab.archlinux.org/archlinux/packaging/packages/nvidia-utils/-/commit/55644f78820fd382fbdf283b1fd7f08e6b7c22d7
# https://gitlab.archlinux.org/archlinux/packaging/packages/nvidia-utils/-/merge_requests/16
systemctl enable nvidia-resume nvidia-hibernate nvidia-suspend
}
post_upgrade() {
# Only enable the services for the 560.35.03-16 version
# This avoids, that the services are automatically enabled in every upgrade
if (( $(vercmp $2 560.35.03-16) < 0)); then
for service in nvidia-resume nvidia-hibernate nvidia-suspend; do
if ! systemctl is-enabled --quiet $service; then
echo "Enabling $service..."
systemctl enable $service
fi
done
fi
}
post_remove() {
systemctl disable nvidia-resume nvidia-hibernate nvidia-suspend
}
@@ -0,0 +1,8 @@
Section "OutputClass"
Identifier "nvidia"
MatchDriver "nvidia-drm"
Driver "nvidia"
Option "AllowEmptyInitialConfiguration"
ModulePath "/usr/lib/nvidia/xorg"
ModulePath "/usr/lib/xorg/modules"
EndSection
@@ -0,0 +1 @@
options nvidia NVreg_PreserveVideoMemoryAllocations=1 NVreg_TemporaryFilePath=/var/tmp
@@ -0,0 +1 @@
u! nvidia-persistenced 143 'NVIDIA Persistence Daemon'
@@ -0,0 +1,9 @@
# Device nodes are created by nvidia-modprobe, which is called by the nvidia DDX.
# In case the DDX is not started, the device nodes are never created, so call
# nvidia-modprobe in the udev rules to cover the Wayland/EGLStream and compute
# case without a started display. In the case where vfio-pci is used
# nvidia-modprobe should not be invoked.
ACTION=="add|bind", ATTR{vendor}=="0x10de", ATTR{class}=="0x03[0-9]*", \
DRIVER=="nvidia", TEST!="/dev/nvidia-uvm", \
RUN+="/usr/bin/nvidia-modprobe", \
RUN+="/usr/bin/nvidia-modprobe -c0 -u"
@@ -0,0 +1,2 @@
[Service]
Environment="SYSTEMD_HOME_LOCK_FREEZE_SESSION=false"
@@ -0,0 +1,2 @@
[Service]
Environment="SYSTEMD_SLEEP_FREEZE_USER_SESSIONS=false"