← recipes

Commit 773abf1e

0
files
+0
added
-0
deleted
@@ -1,19 +1,16 @@
1 1 pkgname: nvidia-dkms
2 2 pkgver: '610.57.04'
3 -pkgrel: '3'
4 -pkgdesc: NVIDIA drivers, xorg config, udev rules and DKMS kernel modules
3 +pkgrel: '4'
4 +pkgdesc: NVIDIA kernel modules (DKMS), Xorg config and udev rules
5 5 url: https://www.nvidia.com/en-us/drivers/unix/
6 6 arch: x86_64
7 7 license:
8 8 - custom
9 9
10 -# `kernel` (a NIE `linux-headers`) – DKMS musi budować pod TO SAMO jądro, które
11 -# dostarcza `nvidia-kernel` i które jest w obrazie ISO. Wcześniejszy
12 -# `linux-headers` to meta na `kernel-lts` (6.18), więc moduły powstawały pod
13 -# inne jądro niż uruchomione („moduły nvidia zbudowane pod …” w pagan-drivers).
14 10 depends:
15 11 - kernel
16 12 - dkms
13 +
17 14 makedepends:
18 15 - grep
19 16
@@ -26,12 +23,11 @@ build: |
26 23 sh NVIDIA-Linux-x86_64-${pkgver}.run --extract-only
27 24 cd NVIDIA-Linux-x86_64-${pkgver}
28 25
29 - # --- 1. Przygotowanie źródeł DKMS ---
26 + # --- 1. Źródła DKMS ---
30 27 _srcdir="${PKGDIR}/usr/src/nvidia-${pkgver}"
31 28 install -dm0755 "${_srcdir}"
32 29 cp -r kernel/* "${_srcdir}/"
33 30
34 - # Tworzenie pliku dkms.conf w katalogu źródeł
35 31 cat > "${_srcdir}/dkms.conf" << EOF
36 32 PACKAGE_NAME="nvidia"
37 33 PACKAGE_VERSION="${pkgver}"
@@ -54,60 +50,12 @@ build: |
54 50 DEST_MODULE_LOCATION[3]="/kernel/drivers/video/nvidia"
55 51 EOF
56 52
57 - # --- 2. Tworzenie struktury dla przestrzeni użytkownika ---
58 - install -dm0755 ${PKGDIR}/usr/{lib,{bin,share/{applications,pixmaps,man/man1,doc/nvidia}}}
59 - install -dm0755 ${PKGDIR}/usr/share/glvnd/egl_vendor.d
60 - install -dm0755 ${PKGDIR}/usr/share/vulkan/implicit_layer.d
61 - install -dm0755 ${PKGDIR}/lib/udev/rules.d
62 -
63 - # Instalacja bibliotek użytkownika
64 - for _lib in *.so.${pkgver}; do
65 - if [ -f "$_lib" ]; then
66 - install -m 0755 "$_lib" ${PKGDIR}/usr/lib/
67 - fi
68 - done
69 -
70 - # Narzędzia i podręcznik MAN
71 - install -m 0755 nvidia-{xconfig,settings,smi} ${PKGDIR}/usr/bin/
72 - install -m 0644 nvidia-{xconfig,settings,smi}.1.gz ${PKGDIR}/usr/share/man/man1/
73 -
74 - # Skróty i ikony
75 - sed -e "s@__UTILS_PATH__/@@" -e "s@__PIXMAP_PATH__/@@" nvidia-settings.desktop \
76 - > ${PKGDIR}/usr/share/applications/nvidia-settings.desktop
77 - install -m 0644 nvidia-settings.png ${PKGDIR}/usr/share/pixmaps/
78 -
79 - # Sterownik i rozszerzenia Xorg
80 - install -dm0755 ${PKGDIR}/usr/lib/xorg/modules/{drivers,extensions}
81 - install -m 0755 nvidia_drv.so ${PKGDIR}/usr/lib/xorg/modules/drivers/
82 - install -m 0755 libglxserver_nvidia.so.${pkgver} ${PKGDIR}/usr/lib/xorg/modules/extensions/
83 - ln -s libglxserver_nvidia.so.${pkgver} ${PKGDIR}/usr/lib/xorg/modules/extensions/libglxserver_nvidia.so
84 -
85 - # Pliki profilu GLVND (EGL) i Vulkan ICD
86 - if [ -f 10_nvidia.json ]; then
87 - install -m 0644 10_nvidia.json ${PKGDIR}/usr/share/glvnd/egl_vendor.d/
88 - fi
89 - if [ -f nvidia_icd.json ]; then
90 - install -m 0644 nvidia_icd.json ${PKGDIR}/usr/share/vulkan/implicit_layer.d/
91 - fi
92 -
93 - # Symlinki SONAME dla bibliotek
94 - find ${PKGDIR}/usr/lib -maxdepth 1 -type f -name '*.so.*' -print0 | while read -d $'\0' _lib; do
95 - _soname=$(readelf -d "${_lib}" 2>/dev/null | grep -Elo 'soname.*: \[[^]]*' | sed "s/soname: \[//" || true)
96 - if [ -n "${_soname}" ]; then
97 - _base=$(echo ${_soname} | sed -r 's/(.*)\.so.*/\1.so/')
98 - _dir=$(dirname "${_lib}")
99 - [[ -e "${_dir}/${_soname}" ]] || ln -s $(basename "${_lib}") "${_dir}/${_soname}"
100 - [[ -e "${_dir}/${_base}" ]] || ln -s $(basename "${_soname}") "${_dir}/${_base}"
101 - fi
102 - done
103 -
104 - # Dokumentacja
105 - if [ -d html ]; then
106 - cp -r html/* ${PKGDIR}/usr/share/doc/nvidia/
107 - fi
108 -
109 - # --- 3. Konfiguracja Xorg ---
53 + # --- 2. Tylko rzeczy specyficzne dla DKMS: config Xorg + udev + modprobe ---
54 + install -dm0755 ${PKGDIR}/usr/lib/udev/rules.d
55 + install -dm0755 ${PKGDIR}/etc/modprobe.d
110 56 install -dm0755 ${PKGDIR}/etc/X11/xorg.conf.d
57 +
58 + # Xorg OutputClass
111 59 cat > ${PKGDIR}/etc/X11/xorg.conf.d/10-nvidia-drm.conf << "EOF"
112 60 Section "OutputClass"
113 61 Identifier "nvidia"
@@ -117,49 +65,27 @@ build: |
117 65 EndSection
118 66 EOF
119 67
120 - # --- 4. Reguły udev dla /dev/nvidia* ---
121 - cat > ${PKGDIR}/lib/udev/rules.d/60-nvidia.rules << "EOF"
122 - KERNEL=="nvidia", RUN+="/usr/bin/bash -c '/usr/bin/mknod -Z -m 666 /dev/nvidiactl c $$(grep nvidia-frontend /proc/devices | cut -d \ -f 1) 255'"
123 - KERNEL=="nvidia", RUN+="/usr/bin/bash -c 'for i in $$(cat /proc/driver/nvidia/gpus/*/information | grep Minor | cut -d \ -f 4); do /usr/bin/mknod -Z -m 666 /dev/nvidia$${i} c $$(grep nvidia-frontend /proc/devices | cut -d \ -f 1) $${i}; done'"
124 - KERNEL=="nvidia_modeset", RUN+="/usr/bin/bash -c '/usr/bin/mknod -Z -m 666 /dev/nvidia-modeset c $$(grep nvidia-frontend /proc/devices | cut -d \ -f 1) 254'"
125 - KERNEL=="nvidia_uvm", RUN+="/usr/bin/bash -c '/usr/bin/mknod -Z -m 666 /dev/nvidia-uvm c $$(grep nvidia-uvm /proc/devices | cut -d \ -f 1) 0'"
126 - KERNEL=="nvidia_uvm", RUN+="/usr/bin/bash -c '/usr/bin/mknod -Z -m 666 /dev/nvidia-uvm-tools c $$(grep nvidia-uvm /proc/devices | cut -d \ -f 1) 1'"
127 - EOF
128 -
129 - # Autoload nvidia-drm z KMS (modeset=1). Bez tego nic nie załaduje modułów
130 - # (jądro nie ma nouveau, a DDX ładuje się dopiero po starcie Xorga), więc
131 - # OutputClass MatchDriver "nvidia-drm" NIE pasuje i X spada na modesetting
132 - # (karta NVIDIA ignorowana: brak akceleracji i multi-monitora).
133 - install -dm0755 ${PKGDIR}/lib/udev/rules.d
134 - cat > ${PKGDIR}/lib/udev/rules.d/99-pagan-nvidia-autoload.rules << "EOF"
135 - # PaganLinux: automatyczne załadowanie sterownika NVIDIA (proprietary).
136 - # modeset=1 -> nvidia-drm daje KMS (Xorg + Wayland).
68 + # Autoload nvidia-drm (KMS)
69 + cat > ${PKGDIR}/usr/lib/udev/rules.d/99-pagan-nvidia-autoload.rules << "EOF"
137 70 ACTION=="add", SUBSYSTEM=="pci", ATTR{vendor}=="0x10de", ATTR{class}=="0x030000", RUN+="/usr/sbin/modprobe nvidia-drm modeset=1"
138 71 ACTION=="add", SUBSYSTEM=="pci", ATTR{vendor}=="0x10de", ATTR{class}=="0x030200", RUN+="/usr/sbin/modprobe nvidia-drm modeset=1"
139 72 EOF
140 - # Czarna lista Nouveau
141 - install -dm0755 ${PKGDIR}/etc/modprobe.d
73 +
74 + # Blacklist nouveau
142 75 cat > ${PKGDIR}/etc/modprobe.d/nouveau.conf << "EOF"
143 76 blacklist nouveau
144 77 options nouveau modeset=0
145 78 EOF
146 79
147 - # Czyszczenie kolidujących bibliotek EGL
148 - rm -f ${PKGDIR}/usr/lib/libEGL.so*
149 - rm -f ${PKGDIR}/usr/lib/libGLES*.so*
150 -
151 80 hooks:
152 81 post-install: |
153 - # Rejestracja i budowanie modułów przez DKMS dla zainstalowanych jąder
154 82 dkms add -m nvidia -v ${pkgver} || true
155 83 dkms build -m nvidia -v ${pkgver} || true
156 84 dkms install -m nvidia -v ${pkgver} || true
157 85 ldconfig
158 86 udevadm control --reload-rules || true
159 87 pre-remove: |
160 - # Usunięcie modułów z DKMS PRZED odinstalowaniem pakietu. Wcześniej ta
161 - # komenda leżała w `package:` (faza BUDOWY), więc przy odinstalowaniu moduły
162 - # zostawały w /usr/lib/modules i psuły `depmod`/kolejne wersje sterownika.
163 88 dkms remove -m nvidia -v ${pkgver} --all || true
89 +
164 90 package: |
165 91 true