index : archinstall32 | |
Archlinux32 installer | gitolite user |
summaryrefslogtreecommitdiff |
-rw-r--r-- | archinstall/lib/hardware.py | 125 |
diff --git a/archinstall/lib/hardware.py b/archinstall/lib/hardware.py index e9c63e41..7c164096 100644 --- a/archinstall/lib/hardware.py +++ b/archinstall/lib/hardware.py @@ -1,73 +1,120 @@ -import os, subprocess, json -from .general import sys_command -from .networking import list_interfaces, enrichIfaceTypes +import json +import os +import subprocess from typing import Optional -__packages__ = ['xf86-video-amdgpu', 'xf86-video-ati', 'xf86-video-intel', 'xf86-video-nouveau', 'xf86-video-fbdev', 'xf86-video-vesa', 'xf86-video-vmware', 'nvidia', 'mesa'] +from .general import SysCommand +from .networking import list_interfaces, enrich_iface_types + +__packages__ = [ + "mesa", + "xf86-video-amdgpu", + "xf86-video-ati", + "xf86-video-nouveau", + "xf86-video-vmware", + "libva-mesa-driver", + "libva-intel-driver", + "intel-media-driver", + "vulkan-radeon", + "vulkan-intel", + "nvidia", +] AVAILABLE_GFX_DRIVERS = { # Sub-dicts are layer-2 options to be selected # and lists are a list of packages to be installed - 'AMD / ATI' : { - 'amd' : ['xf86-video-amdgpu'], - 'ati' : ['xf86-video-ati'] - }, - 'intel' : ['xf86-video-intel'], - 'nvidia' : { - 'open-source' : ['xf86-video-nouveau'], - 'proprietary' : ['nvidia'] + "All open-source (default)": [ + "mesa", + "xf86-video-amdgpu", + "xf86-video-ati", + "xf86-video-nouveau", + "xf86-video-vmware", + "libva-mesa-driver", + "libva-intel-driver", + "intel-media-driver", + "vulkan-radeon", + "vulkan-intel", + ], + "AMD / ATI (open-source)": [ + "mesa", + "xf86-video-amdgpu", + "xf86-video-ati", + "libva-mesa-driver", + "vulkan-radeon", + ], + "Intel (open-source)": [ + "mesa", + "libva-intel-driver", + "intel-media-driver", + "vulkan-intel", + ], + "Nvidia": { + "open-source": ["mesa", "xf86-video-nouveau", "libva-mesa-driver"], + "proprietary": ["nvidia"], }, - 'mesa' : ['mesa'], - 'fbdev' : ['xf86-video-fbdev'], - 'vesa' : ['xf86-video-vesa'], - 'vmware / virtualbox' : ['xf86-video-vmware'] + "VMware / VirtualBox (open-source)": ["mesa", "xf86-video-vmware"], } -def hasWifi()->bool: - return 'WIRELESS' in enrichIfaceTypes(list_interfaces().values()).values() -def hasAMDCPU()->bool: +def has_wifi() -> bool: + return 'WIRELESS' in enrich_iface_types(list_interfaces().values()).values() + + +def has_amd_cpu() -> bool: if subprocess.check_output("lscpu | grep AMD", shell=True).strip().decode(): return True return False -def hasIntelCPU()->bool: + + +def has_intel_cpu() -> bool: if subprocess.check_output("lscpu | grep Intel", shell=True).strip().decode(): return True return False -def hasUEFI()->bool: + +def has_uefi() -> bool: return os.path.isdir('/sys/firmware/efi') -def graphicsDevices()->dict: + +def graphics_devices() -> dict: cards = {} - for line in sys_command(f"lspci"): + for line in SysCommand("lspci"): if b' VGA ' in line: - _, identifier = line.split(b': ',1) + _, identifier = line.split(b': ', 1) cards[identifier.strip().lower().decode('UTF-8')] = line return cards -def hasNvidiaGraphics()->bool: - return any('nvidia' in x for x in graphicsDevices()) -def hasAmdGraphics()->bool: - return any('amd' in x for x in graphicsDevices()) +def has_nvidia_graphics() -> bool: + return any('nvidia' in x for x in graphics_devices()) -def hasIntelGraphics()->bool: - return any('intel' in x for x in graphicsDevices()) +def has_amd_graphics() -> bool: + return any('amd' in x for x in graphics_devices()) + + +def has_intel_graphics() -> bool: + return any('intel' in x for x in graphics_devices()) + + +def cpu_vendor() -> Optional[str]: + cpu_info_raw = SysCommand("lscpu -J") + cpu_info = json.loads(b"".join(cpu_info_raw).decode('UTF-8'))['lscpu'] -def cpuVendor()-> Optional[str]: - cpu_info = json.loads(subprocess.check_output("lscpu -J", shell=True).decode('utf-8'))['lscpu'] for info in cpu_info: - if info.get('field',None): - if info.get('field',None) == "Vendor ID:": - return info.get('data',None) + if info.get('field', None) == "Vendor ID:": + return info.get('data', None) + return None -def isVM() -> bool: + +def is_vm() -> bool: try: - subprocess.check_call(["systemd-detect-virt"]) # systemd-detect-virt issues a none 0 exit code if it is not on a virtual machine - return True + # systemd-detect-virt issues a non-zero exit code if it is not on a virtual machine + if b"".join(SysCommand("systemd-detect-virt")).lower() != b"none": + return True except: - return False + pass + + return False # TODO: Add more identifiers |