# DarkForge Linux — NVIDIA Open Kernel Modules + Userspace # RTX 5090 (Blackwell, GB202) requires nvidia-open 570.86.16+ # This package builds the open-source kernel modules and installs # the proprietary userspace libraries (Vulkan ICD, OpenGL, EGL, GBM). # # NOTE: This is a complex multi-step package. The kernel modules are # built against the running kernel headers, and the userspace libraries # come from a separate download. [package] name = "nvidia-open" version = "570.133.07" description = "NVIDIA open kernel modules and proprietary userspace (RTX 5090)" url = "https://github.com/NVIDIA/open-gpu-kernel-modules" license = "MIT/GPL-2.0" [source] url = "https://github.com/NVIDIA/open-gpu-kernel-modules/archive/refs/tags/${version}.tar.gz" sha256 = "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" # Additional source: the userspace driver (proprietary blob) [[source.patches]] url = "https://us.download.nvidia.com/XFree86/Linux-x86_64/${version}/NVIDIA-Linux-x86_64-${version}.run" sha256 = "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" strip = 0 [dependencies] run = ["glibc", "wayland", "libdrm"] build = ["gcc", "make", "linux"] [build] system = "custom" # Prepare: extract the .run blob for userspace libraries prepare = """chmod +x ../NVIDIA-Linux-x86_64-${version}.run && ../NVIDIA-Linux-x86_64-${version}.run --extract-only --target=nvidia-userspace""" # Build: compile the open kernel modules against current kernel configure = "" make = """make -j32 modules \ KERNEL_UNAME=$(uname -r) \ SYSSRC=/usr/src/linux \ SYSOUT=/usr/src/linux""" # Install: kernel modules + userspace libs install = """# Install kernel modules make modules_install DESTDIR=${PKG} KERNEL_UNAME=$(uname -r) # Install userspace libraries from the extracted blob cd nvidia-userspace # GLX / OpenGL install -Dm755 libGLX_nvidia.so.${version} ${PKG}/usr/lib/libGLX_nvidia.so.${version} ln -sf libGLX_nvidia.so.${version} ${PKG}/usr/lib/libGLX_nvidia.so.0 # EGL install -Dm755 libEGL_nvidia.so.${version} ${PKG}/usr/lib/libEGL_nvidia.so.${version} ln -sf libEGL_nvidia.so.${version} ${PKG}/usr/lib/libEGL_nvidia.so.0 # GBM (for Wayland) install -Dm755 libnvidia-egl-gbm.so.1.1.2 ${PKG}/usr/lib/libnvidia-egl-gbm.so.1.1.2 ln -sf libnvidia-egl-gbm.so.1.1.2 ${PKG}/usr/lib/libnvidia-egl-gbm.so.1 mkdir -p ${PKG}/usr/share/egl/egl_external_platform.d install -Dm644 15_nvidia_gbm.json ${PKG}/usr/share/egl/egl_external_platform.d/ # Vulkan ICD install -Dm755 libGLESv2_nvidia.so.${version} ${PKG}/usr/lib/libGLESv2_nvidia.so.${version} install -Dm644 nvidia_icd.json ${PKG}/usr/share/vulkan/icd.d/nvidia_icd.json install -Dm755 libcuda.so.${version} ${PKG}/usr/lib/libcuda.so.${version} ln -sf libcuda.so.${version} ${PKG}/usr/lib/libcuda.so.1 ln -sf libcuda.so.1 ${PKG}/usr/lib/libcuda.so # nvidia-drm modeset (KMS) install -Dm755 libnvidia-drm-outputclass-helper.so.${version} ${PKG}/usr/lib/libnvidia-drm-outputclass-helper.so.${version} # nvidia-smi and other tools install -Dm755 nvidia-smi ${PKG}/usr/bin/nvidia-smi install -Dm755 nvidia-settings ${PKG}/usr/bin/nvidia-settings 2>/dev/null || true # 32-bit compatibility libraries (for Steam/Wine) if [ -d 32 ]; then install -Dm755 32/libGLX_nvidia.so.${version} ${PKG}/usr/lib32/libGLX_nvidia.so.${version} ln -sf libGLX_nvidia.so.${version} ${PKG}/usr/lib32/libGLX_nvidia.so.0 install -Dm755 32/libcuda.so.${version} ${PKG}/usr/lib32/libcuda.so.${version} ln -sf libcuda.so.${version} ${PKG}/usr/lib32/libcuda.so.1 fi"""