From 0a1ae34275fb9d1839aaa775d83ab3bc9aa11c20 Mon Sep 17 00:00:00 2001 From: Jim Martin Date: Sat, 19 Sep 2026 00:45:52 -0500 Subject: [PATCH] nvidia-utils: carry missing ARM EGL library fix --- pkgbuilds/nvidia-utils/.omarchy/package.json | 6 + pkgbuilds/nvidia-utils/LICENSE | 12 + pkgbuilds/nvidia-utils/PKGBUILD | 240 ++++++++++++++++++ pkgbuilds/nvidia-utils/README.package.md | 36 +++ .../nvidia-utils/nvidia-drm-outputclass.conf | 8 + pkgbuilds/nvidia-utils/nvidia-utils.conf | 15 ++ pkgbuilds/nvidia-utils/nvidia-utils.install | 21 ++ pkgbuilds/nvidia-utils/nvidia-utils.sysusers | 1 + pkgbuilds/nvidia-utils/nvidia.rules | 7 + .../nvidia-utils/systemd-homed-override.conf | 2 + .../systemd-suspend-override.conf | 2 + 11 files changed, 350 insertions(+) create mode 100644 pkgbuilds/nvidia-utils/.omarchy/package.json create mode 100644 pkgbuilds/nvidia-utils/LICENSE create mode 100644 pkgbuilds/nvidia-utils/PKGBUILD create mode 100644 pkgbuilds/nvidia-utils/README.package.md create mode 100644 pkgbuilds/nvidia-utils/nvidia-drm-outputclass.conf create mode 100644 pkgbuilds/nvidia-utils/nvidia-utils.conf create mode 100644 pkgbuilds/nvidia-utils/nvidia-utils.install create mode 100644 pkgbuilds/nvidia-utils/nvidia-utils.sysusers create mode 100644 pkgbuilds/nvidia-utils/nvidia.rules create mode 100644 pkgbuilds/nvidia-utils/systemd-homed-override.conf create mode 100644 pkgbuilds/nvidia-utils/systemd-suspend-override.conf diff --git a/pkgbuilds/nvidia-utils/.omarchy/package.json b/pkgbuilds/nvidia-utils/.omarchy/package.json new file mode 100644 index 0000000..7ddd330 --- /dev/null +++ b/pkgbuilds/nvidia-utils/.omarchy/package.json @@ -0,0 +1,6 @@ +{ + "source": "local", + "channels": [ + "edge" + ] +} diff --git a/pkgbuilds/nvidia-utils/LICENSE b/pkgbuilds/nvidia-utils/LICENSE new file mode 100644 index 0000000..b87c5e4 --- /dev/null +++ b/pkgbuilds/nvidia-utils/LICENSE @@ -0,0 +1,12 @@ +Copyright Arch Linux Contributors + +Permission to use, copy, modify, and/or distribute this software for +any purpose with or without fee is hereby granted. + +THE SOFTWARE IS PROVIDED “AS IS” AND THE AUTHOR DISCLAIMS ALL +WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES +OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE +FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY +DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN +AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT +OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. diff --git a/pkgbuilds/nvidia-utils/PKGBUILD b/pkgbuilds/nvidia-utils/PKGBUILD new file mode 100644 index 0000000..105281e --- /dev/null +++ b/pkgbuilds/nvidia-utils/PKGBUILD @@ -0,0 +1,240 @@ +# Maintainer: Sven-Hendrik Haase +# Maintainer: Peter Jung +# Contributor: James Rayner +# Contributor: Vasiliy Stelmachenok +# Contributor: Thomas Baechler + +pkgbase=nvidia-utils +pkgname=('nvidia-utils') +pkgver=615.71.09 +pkgrel=1.1 +arch=('aarch64') +url="https://www.nvidia.com/" +license=('LicenseRef-NVIDIA-Driver-License-Agreement') +options=('!strip') +source_aarch64=("https://download.nvidia.com/XFree86/Linux-aarch64/${pkgver}/NVIDIA-Linux-aarch64-${pkgver}.run") +source=('nvidia-drm-outputclass.conf' + 'nvidia-utils.sysusers' + 'nvidia.rules' + 'systemd-homed-override.conf' + 'systemd-suspend-override.conf' + 'nvidia-utils.conf') +sha512sums=('de7116c09f282a27920a1382df84aa86f559e537664bb30689605177ce37dc5067748acf9afd66a3269a6e323461356592fdfc624c86523bf105ff8fe47d3770' + '1bcf2c6ee71686c0d32625e746ec8c0f7cf42fc63c76c3076ff2526b2661e8b9e9f76eaa2c4b213c7cc437a6f06006cc07672c4974d7f4515b2de2fd7c47a891' + '7f1457dc454144fdece5abf795744c4c948a13feb8d49c20e2a1b8b8973e86f980233b521485d73eb039c396688f287a3a5b3de8cb1fb20ed70cc62e4ba91250' + 'a0183adce78e40853edf7e6b73867e7a8ea5dabac8e8164e42781f64d5232fbe869f850ab0697c3718ebced5cde760d0e807c05da50a982071dfe1157c31d6b8' + '55def6319f6abb1a4ccd28a89cd60f1933d155c10ba775b8dfa60a2dc5696b4b472c14b252dc0891f956e70264be87c3d5d4271e929a4fc4b1a68a6902814cee' + 'a380e5faeb19293c90f613cd92bcd1cef7597ee52f79f03ffdffe5d37d2badc05b6bdb4c26a9d610868ae4c16eafd56e7d16f769e849dc0335d0d248c6235fe9') +sha512sums_aarch64=('316f90d5e0ba74db3a79a91464955240aa2c14e986653067fe902c132c771898d2866afc4e6498069b33665596e17b1b5282980936e1e6e31cabb53787e70196') + +_pkg=NVIDIA-Linux-${CARCH}-${pkgver} + +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 + +} + +package_nvidia-utils() { + pkgdesc="NVIDIA drivers utilities" + depends=('libglvnd' 'egl-wayland' 'egl-wayland2' 'egl-gbm' 'egl-x11') + optdepends=('nvidia-settings: configuration tool' + 'xorg-server: Xorg support' + 'xorg-server-devel: nvidia-xconfig' + 'opencl-nvidia: OpenCL support') + conflicts=('nvidia-libgl') + provides=('vulkan-driver' '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}" + if [[ $CARCH == aarch64 ]]; then + # Required by the ARM EGL/GLX libraries. + install -Dm755 "libnvidia-rmapi-tegra.so.${pkgver}" "${pkgdir}/usr/lib/libnvidia-rmapi-tegra.so.${pkgver}" + fi + + # 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-fmdrv.so.${pkgver}" "${pkgdir}/usr/lib/libnvidia-fmdrv.so.${pkgver}" + install -Dm755 "libnvidia-imex.so.${pkgver}" "${pkgdir}/usr/lib/libnvidia-imex.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" + + if [[ $CARCH = x86_64 ]]; then + # 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" + fi + + # 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}" + if [[ $CARCH = x86_64 ]]; then + 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" + fi + + # Optical flow + install -Dm755 "libnvidia-opticalflow.so.${pkgver}" "${pkgdir}/usr/lib/libnvidia-opticalflow.so.${pkgver}" + + if [[ $CARCH = x86_64 ]]; then + # Cryptography library wrapper + 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}" + fi + + # 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}" + + # https://github.com/microsoft/TileIR + install -Dm755 "libnvidia-tileiras.so.${pkgver}" "${pkgdir}/usr/lib/libnvidia-tileiras.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" + + 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 dlsnetparams.csv "${pkgdir}/usr/share/nvidia/nvidia-powerd/dlsnetparams.csv" + 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 + + # Enable kernel suspend notifiers for open modules and override TemporaryFilePath + # from default /tmp to /var/tmp + install -Dm644 "${srcdir}/nvidia-utils.conf" "${pkgdir}/usr/lib/modprobe.d/nvidia-utils.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 +} diff --git a/pkgbuilds/nvidia-utils/README.package.md b/pkgbuilds/nvidia-utils/README.package.md new file mode 100644 index 0000000..791d59e --- /dev/null +++ b/pkgbuilds/nvidia-utils/README.package.md @@ -0,0 +1,36 @@ +# Temporary NVIDIA ARM packaging correction + +Carries Arch Linux's `nvidia-utils` recipe at +[f9ae10b379f8b1d0832ec92bca1c12072aa123e9](https://gitlab.archlinux.org/archlinux/packaging/packages/nvidia-utils/-/commit/f9ae10b379f8b1d0832ec92bca1c12072aa123e9), +restricted to aarch64 and the nvidia-utils output. Upstream contributor credits, +packaging license and support files are retained. The OpenCL/DKMS split outputs +and their unused kernel source preparation are omitted. + +NVIDIA 615.71.09's ARM EGL/GLX libraries require +`libnvidia-rmapi-tegra.so.615.71.09`. NVIDIA includes it in its archive, but the +Arch recipe omits it. Adding that library and its generated symlink fixes +Hyprland's EGL initialization failure on DGX Spark. No rendering overrides are +installed. The correction passed package installation, normal desktop login +and reboot on a Spark running kernel 7.2.6 with NVIDIA 615.71.09. + +This recipe builds only for edge, using release 1.1 to sit above Arch's broken +release 1 and below a prospective fixed release 2. There is deliberately no +automatic NVIDIA version watcher: driver userspace must remain compatible with +the kernel package supplied by Arch Linux ARM. Check both packages before each +release; a stale overlay must not hold back a driver transition. + +## Delivery and removal + +Publishing requires an aarch64 edge build. Consumers must put `[omarchy]` +before `[extra]` in pacman.conf for unqualified installation and updates to +select this package. A higher pkgrel alone does not overcome repository order. +The tested Spark has that ordering; this PR does not change shared runtime or +installer configuration. Deployment must verify that ordering on the intended +ARM installation/update paths. This is not a claim of fresh-ISO validation. + +The upstream Arch submission is pending account approval. Once Arch Linux ARM +ships the missing library, validate that package on the Spark, remove this +recipe AND the published overlay package/database entry, and verify that normal +updates select the fixed Arch package. A higher Arch version alone does not +bypass an earlier repository's stale package. Do not use an epoch or rename the +package to prevent that transition. diff --git a/pkgbuilds/nvidia-utils/nvidia-drm-outputclass.conf b/pkgbuilds/nvidia-utils/nvidia-drm-outputclass.conf new file mode 100644 index 0000000..9c36f59 --- /dev/null +++ b/pkgbuilds/nvidia-utils/nvidia-drm-outputclass.conf @@ -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 diff --git a/pkgbuilds/nvidia-utils/nvidia-utils.conf b/pkgbuilds/nvidia-utils/nvidia-utils.conf new file mode 100644 index 0000000..580794a --- /dev/null +++ b/pkgbuilds/nvidia-utils/nvidia-utils.conf @@ -0,0 +1,15 @@ +# Blacklist nouveau and nova +blacklist nouveau +blacklist nova_core +blacklist nova_drm + +# Make sure that all modules are loaded after the main one. +softdep nvidia post: nvidia-uvm nvidia-drm + +# https://download.nvidia.com/XFree86/Linux-x86_64/595.45.04/README/powermanagement.html +# Enable Suspend Notifiers for faster and more modern suspend +options nvidia NVreg_UseKernelSuspendNotifiers=1 +# +# The destination should not be using tmpfs, so we prefer +# /var/tmp instead of /tmp +options nvidia NVreg_TemporaryFilePath=/var/tmp diff --git a/pkgbuilds/nvidia-utils/nvidia-utils.install b/pkgbuilds/nvidia-utils/nvidia-utils.install new file mode 100644 index 0000000..e2bb8f8 --- /dev/null +++ b/pkgbuilds/nvidia-utils/nvidia-utils.install @@ -0,0 +1,21 @@ +post_upgrade() { + # With 595+ open kernel modules, video memory preservation is handled by + # kernel suspend notifiers, making the nvidia suspend/hibernate services unnecessary. + # Disable them for users upgrading from older versions. + if (( $(vercmp $2 595.58.03-1) < 0)); then + for service in nvidia-resume nvidia-hibernate nvidia-suspend nvidia-suspend-then-hibernate; do + if systemctl is-enabled --quiet $service 2>/dev/null; then + echo "Disabling $service (no longer needed with open kernel modules)..." + systemctl disable $service + fi + done + fi +} + +pre_remove() { + for service in nvidia-resume nvidia-hibernate nvidia-suspend nvidia-suspend-then-hibernate; do + if systemctl is-enabled --quiet $service 2>/dev/null; then + systemctl disable $service + fi + done +} diff --git a/pkgbuilds/nvidia-utils/nvidia-utils.sysusers b/pkgbuilds/nvidia-utils/nvidia-utils.sysusers new file mode 100644 index 0000000..0166d15 --- /dev/null +++ b/pkgbuilds/nvidia-utils/nvidia-utils.sysusers @@ -0,0 +1 @@ +u! nvidia-persistenced 143 'NVIDIA Persistence Daemon' diff --git a/pkgbuilds/nvidia-utils/nvidia.rules b/pkgbuilds/nvidia-utils/nvidia.rules new file mode 100644 index 0000000..0ae41b2 --- /dev/null +++ b/pkgbuilds/nvidia-utils/nvidia.rules @@ -0,0 +1,7 @@ +# 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", SUBSYSTEM=="module", KERNEL=="nvidia_drm", TEST!="/dev/nvidia-uvm", \ + RUN+="/usr/bin/nvidia-modprobe -c0 -u" diff --git a/pkgbuilds/nvidia-utils/systemd-homed-override.conf b/pkgbuilds/nvidia-utils/systemd-homed-override.conf new file mode 100644 index 0000000..605d113 --- /dev/null +++ b/pkgbuilds/nvidia-utils/systemd-homed-override.conf @@ -0,0 +1,2 @@ +[Service] +Environment="SYSTEMD_HOME_LOCK_FREEZE_SESSION=false" diff --git a/pkgbuilds/nvidia-utils/systemd-suspend-override.conf b/pkgbuilds/nvidia-utils/systemd-suspend-override.conf new file mode 100644 index 0000000..2a45482 --- /dev/null +++ b/pkgbuilds/nvidia-utils/systemd-suspend-override.conf @@ -0,0 +1,2 @@ +[Service] +Environment="SYSTEMD_SLEEP_FREEZE_USER_SESSIONS=false"