Use nvidia-open instead of nvidia-open-dkms for mainline kernels (#4347)
This commit is contained in:
parent
0175949cab
commit
a3c6bd5d45
|
|
@ -43,6 +43,7 @@ class GfxPackage(Enum):
|
||||||
LibvaIntelDriver = 'libva-intel-driver'
|
LibvaIntelDriver = 'libva-intel-driver'
|
||||||
LibvaNvidiaDriver = 'libva-nvidia-driver'
|
LibvaNvidiaDriver = 'libva-nvidia-driver'
|
||||||
Mesa = 'mesa'
|
Mesa = 'mesa'
|
||||||
|
NvidiaOpen = 'nvidia-open'
|
||||||
NvidiaOpenDkms = 'nvidia-open-dkms'
|
NvidiaOpenDkms = 'nvidia-open-dkms'
|
||||||
VulkanIntel = 'vulkan-intel'
|
VulkanIntel = 'vulkan-intel'
|
||||||
VulkanRadeon = 'vulkan-radeon'
|
VulkanRadeon = 'vulkan-radeon'
|
||||||
|
|
|
||||||
|
|
@ -10,7 +10,7 @@ from types import ModuleType
|
||||||
from typing import TYPE_CHECKING, NotRequired, TypedDict
|
from typing import TYPE_CHECKING, NotRequired, TypedDict
|
||||||
|
|
||||||
from archinstall.default_profiles.profile import GreeterType, Profile
|
from archinstall.default_profiles.profile import GreeterType, Profile
|
||||||
from archinstall.lib.hardware import GfxDriver
|
from archinstall.lib.hardware import GfxDriver, GfxPackage
|
||||||
from archinstall.lib.models.profile import ProfileConfiguration
|
from archinstall.lib.models.profile import ProfileConfiguration
|
||||||
from archinstall.lib.networking import fetch_data_from_url
|
from archinstall.lib.networking import fetch_data_from_url
|
||||||
from archinstall.lib.output import debug, error, info
|
from archinstall.lib.output import debug, error, info
|
||||||
|
|
@ -222,13 +222,22 @@ class ProfileHandler:
|
||||||
def install_gfx_driver(self, install_session: Installer, driver: GfxDriver) -> None:
|
def install_gfx_driver(self, install_session: Installer, driver: GfxDriver) -> None:
|
||||||
debug(f'Installing GFX driver: {driver.value}')
|
debug(f'Installing GFX driver: {driver.value}')
|
||||||
|
|
||||||
if driver in [GfxDriver.NvidiaOpenKernel]:
|
|
||||||
headers = [f'{kernel}-headers' for kernel in install_session.kernels]
|
|
||||||
# Fixes https://github.com/archlinux/archinstall/issues/585
|
|
||||||
install_session.add_additional_packages(headers)
|
|
||||||
|
|
||||||
driver_pkgs = driver.gfx_packages()
|
driver_pkgs = driver.gfx_packages()
|
||||||
pkg_names = [p.value for p in driver_pkgs]
|
pkg_names = [p.value for p in driver_pkgs]
|
||||||
|
|
||||||
|
# For Nvidia open kernel modules, use nvidia-open instead of nvidia-open-dkms
|
||||||
|
# when all selected kernels are mainline (no dkms needed). This avoids
|
||||||
|
# installing dkms + kernel headers and speeds up installation.
|
||||||
|
if driver == GfxDriver.NvidiaOpenKernel:
|
||||||
|
needs_dkms = any('-' in k for k in install_session.kernels)
|
||||||
|
|
||||||
|
if needs_dkms:
|
||||||
|
headers = [f'{kernel}-headers' for kernel in install_session.kernels]
|
||||||
|
install_session.add_additional_packages(headers)
|
||||||
|
else:
|
||||||
|
pkg_names = [GfxPackage.NvidiaOpen.value if p == GfxPackage.NvidiaOpenDkms.value else p for p in pkg_names]
|
||||||
|
pkg_names = [p for p in pkg_names if p != GfxPackage.Dkms.value]
|
||||||
|
|
||||||
install_session.add_additional_packages(pkg_names)
|
install_session.add_additional_packages(pkg_names)
|
||||||
|
|
||||||
def install_profile_config(self, install_session: Installer, profile_config: ProfileConfiguration) -> None:
|
def install_profile_config(self, install_session: Installer, profile_config: ProfileConfiguration) -> None:
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue