Pulled in latest master changes

This commit is contained in:
Anton Hvornum 2021-05-28 09:30:35 +02:00
commit e993590f5f
No known key found for this signature in database
GPG Key ID: F1234C5BA67C59DF
13 changed files with 97 additions and 72 deletions

View File

@ -10,7 +10,7 @@ The installer also doubles as a python library to install Arch Linux and manage
* archinstall [discord](https://discord.gg/cqXU88y) server * archinstall [discord](https://discord.gg/cqXU88y) server
* archinstall [matrix.org](https://app.element.io/#/room/#archinstall:matrix.org) channel * archinstall [matrix.org](https://app.element.io/#/room/#archinstall:matrix.org) channel
* archinstall [#archinstall@freenode (IRC)](irc://#archinstall@FreeNode) * archinstall [#archinstall@irc.libera.chat](irc://#archinstall@irc.libera.chat:6697)
* archinstall [documentation](https://python-archinstall.readthedocs.io/en/latest/index.html) * archinstall [documentation](https://python-archinstall.readthedocs.io/en/latest/index.html)
# Installation & Usage # Installation & Usage
@ -34,7 +34,7 @@ Prequisites:
Assuming you are on a Arch Linux live-ISO and booted into EFI mode. Assuming you are on a Arch Linux live-ISO and booted into EFI mode.
# archinstall --config <path to config file or URL> [optional: --vars '<space_seperated KEY=VALUE pairs>'] # archinstall --config <path to config file or URL>
# Help? # Help?

View File

@ -23,7 +23,7 @@ from .lib.user_interaction import *
parser = ArgumentParser() parser = ArgumentParser()
__version__ = "2.2.0.RC1" __version__ = "2.3.0.dev0"
storage['__version__'] = __version__ storage['__version__'] = __version__

View File

@ -110,7 +110,7 @@ def cpu_vendor() -> Optional[str]:
def is_vm() -> bool: def is_vm() -> bool:
try: try:
# systemd-detect-virt issues a non-zero exit code if it is not on a virtual machine # 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": if b"none" not in b"".join(SysCommand("systemd-detect-virt")).lower():
return True return True
except: except:
pass pass

View File

@ -579,6 +579,7 @@ def select_profile():
print(' -- The above list is a set of pre-programmed profiles. --') print(' -- The above list is a set of pre-programmed profiles. --')
print(' -- They might make it easier to install things like desktop environments. --') print(' -- They might make it easier to install things like desktop environments. --')
print(' -- The desktop profile will let you select a DE/WM profile, e.g gnome, kde, sway --')
print(' -- (Leave blank and hit enter to skip this step and continue) --') print(' -- (Leave blank and hit enter to skip this step and continue) --')
selected_profile = generic_select(actual_profiles_raw, 'Enter a pre-programmed profile name if you want to install one: ', options_output=False) selected_profile = generic_select(actual_profiles_raw, 'Enter a pre-programmed profile name if you want to install one: ', options_output=False)

View File

@ -6,9 +6,6 @@ python-archinstall Documentation
| |
| A demo can be viewed here: `https://www.youtube.com/watch?v=9Xt7X_Iqg6E <https://www.youtube.com/watch?v=9Xt7X_Iqg6E>`_ which uses the default guided installer. | A demo can be viewed here: `https://www.youtube.com/watch?v=9Xt7X_Iqg6E <https://www.youtube.com/watch?v=9Xt7X_Iqg6E>`_ which uses the default guided installer.
.. warning::
This installer currently requires that your machine has EFI-mode enabled.
Some of the features of Archinstall are: Some of the features of Archinstall are:
* **No external dependencies or installation requirements.** Runs without any external requirements or installation processes. * **No external dependencies or installation requirements.** Runs without any external requirements or installation processes.

View File

@ -39,7 +39,7 @@ And to run it, execute archinstall as a Python module:
| The ``--script guided`` argument is optional as it's the default behavior. | The ``--script guided`` argument is optional as it's the default behavior.
| But this will start the process of guiding you through a installation of a quite minimal Arch Linux experience. | But this will start the process of guiding you through a installation of a quite minimal Arch Linux experience.
Installing directly from a config file Installing directly from a configuration file
-------------------------------------- --------------------------------------
.. note:: .. note::
@ -58,6 +58,7 @@ Installing directly from a config file
], ],
"!encryption-password": "supersecret", "!encryption-password": "supersecret",
"filesystem": "btrfs", "filesystem": "btrfs",
"gfx_driver": "VMware / VirtualBox (open-source)",
"harddrive": { "harddrive": {
"path": "/dev/nvme0n1" "path": "/dev/nvme0n1"
}, },
@ -66,14 +67,11 @@ Installing directly from a config file
"linux" "linux"
], ],
"keyboard-language": "us", "keyboard-language": "us",
"mirror-region": { "mirror-region": "Worldwide",
"Worldwide": {
"https://mirror.rackspace.com/archlinux/$repo/os/$arch": true
}
},
"nic": { "nic": {
"NetworkManager": true "NetworkManager": true
}, },
"ntp": true,
"packages": ["docker", "git", "wget", "zsh"], "packages": ["docker", "git", "wget", "zsh"],
"profile": "gnome", "profile": "gnome",
"services": ["docker"], "services": ["docker"],
@ -82,6 +80,8 @@ Installing directly from a config file
"!password": "devel" "!password": "devel"
} }
}, },
"sys-encoding": "utf-8",
"sys-language": "en_US",
"timezone": "US/Eastern", "timezone": "US/Eastern",
"users": {} "users": {}
} }
@ -92,46 +92,55 @@ To run it, execute archinstall as a Python module:
python -m archinstall --config <local path or remote URL> python -m archinstall --config <local path or remote URL>
+----------------------+--------------------------------------------------------+----------------------------------------------------------------------------+-----------------------------------------------+ +----------------------+--------------------------------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------+-----------------------------------------------+
| Key | Values/Description | Description | Required | | Key | Values/Description | Description | Required |
| | | | | | | | | |
+======================+========================================================+============================================================================+===============================================+ +======================+======================================================================================================================================+======================================================================================+===============================================+
| audio | pipewire/pulseaudio | Audioserver to be installed | No | | audio | pipewire/pulseaudio | Audioserver to be installed | No |
+----------------------+--------------------------------------------------------+----------------------------------------------------------------------------+-----------------------------------------------+ +----------------------+--------------------------------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------+-----------------------------------------------+
| bootloader | systemd-bootctl/grub-install | Bootloader to be installed | Yes | | bootloader | systemd-bootctl/grub-install | Bootloader to be installed | Yes |
+----------------------+--------------------------------------------------------+----------------------------------------------------------------------------+-----------------------------------------------+ +----------------------+--------------------------------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------+-----------------------------------------------+
| custom-commands | [ <command1>, <command2>, ...] | Custom commands to be run post install | No | | custom-commands | [ <command1>, <command2>, ...] | Custom commands to be run post install | No |
+----------------------+--------------------------------------------------------+----------------------------------------------------------------------------+-----------------------------------------------+ +----------------------+--------------------------------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------+-----------------------------------------------+
| !encryption-password | any | Password to encrypt disk, not encrypted if password not provided | No | | !encryption-password | any | Password to encrypt disk, not encrypted if password not provided | No |
+----------------------+--------------------------------------------------------+----------------------------------------------------------------------------+-----------------------------------------------+ +----------------------+--------------------------------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------+-----------------------------------------------+
| filesystem | ext4 / btrfs / fat32 etc. | Filesystem for root and home partitions | Yes | | filesystem | ext4 / btrfs / fat32 etc. | Filesystem for root and home partitions | Yes |
+----------------------+--------------------------------------------------------+----------------------------------------------------------------------------+-----------------------------------------------+ +----------------------+--------------------------------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------+-----------------------------------------------+
| harddrive | { "path": <path of device> } | Path of device to be used | Yes | | gfx_driver | "VMware / VirtualBox (open-source)" or "Nvidia" or "Intel (open-source)" or "AMD / ATI (open-source)" or "All open-source (default)" | Graphics Drivers to install | No |
+----------------------+--------------------------------------------------------+----------------------------------------------------------------------------+-----------------------------------------------+ | | | | |
| hostname | any | Hostname of machine after installation | Yes | +----------------------+--------------------------------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------+-----------------------------------------------+
+----------------------+--------------------------------------------------------+----------------------------------------------------------------------------+-----------------------------------------------+ | harddrive | { "path": <path of device> } | Path of device to be used | Yes |
| kernels | [ "kernel1", "kernel2"] | List of kernels to install eg: linux, linux-lts, linux-zen etc | Atleast 1 | +----------------------+--------------------------------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------+-----------------------------------------------+
+----------------------+--------------------------------------------------------+----------------------------------------------------------------------------+-----------------------------------------------+ | hostname | any | Hostname of machine after installation | Yes |
| keyboard-language | 2 letter code for your keyboard language | eg: us, de etc | Yes | +----------------------+--------------------------------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------+-----------------------------------------------+
+----------------------+--------------------------------------------------------+----------------------------------------------------------------------------+-----------------------------------------------+ | kernels | [ "kernel1", "kernel2"] | List of kernels to install eg: linux, linux-lts, linux-zen etc | Atleast 1 |
| mirror-region | {"<Region Name>": { "Mirror Name": True/False}, ..} | List of regions and mirrors to use | Yes | +----------------------+--------------------------------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------+-----------------------------------------------+
+----------------------+--------------------------------------------------------+----------------------------------------------------------------------------+-----------------------------------------------+ | keyboard-language | 2 letter code for your keyboard language | eg: us, de etc | Yes |
| nic | nic to use, Use value NetworkManager for installing it | | Yes | +----------------------+--------------------------------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------+-----------------------------------------------+
+----------------------+--------------------------------------------------------+----------------------------------------------------------------------------+-----------------------------------------------+ | mirror-region | {"<Region Name>": { "Mirror Name": True/False}, ..} | List of regions and mirrors to use | Yes |
| packages | [ "package1", "package2", ..] | List of packages to install post-installation | No | +----------------------+--------------------------------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------+-----------------------------------------------+
+----------------------+--------------------------------------------------------+----------------------------------------------------------------------------+-----------------------------------------------+ | nic | { NetworkManager: <boolean>, nic: <nic name> } | | Yes |
| profile | Name of profile to install | profiles are present in profiles/, use the name of a profile to install it | No | +----------------------+--------------------------------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------+-----------------------------------------------+
+----------------------+--------------------------------------------------------+----------------------------------------------------------------------------+-----------------------------------------------+ | ntp | <boolean> | Set to true to set-up ntp post install | No |
| !root-password | any | The root account password | No | +----------------------+--------------------------------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------+-----------------------------------------------+
+----------------------+--------------------------------------------------------+----------------------------------------------------------------------------+-----------------------------------------------+ | packages | [ "package1", "package2", ..] | List of packages to install post-installation | No |
| services | [ "service1", "service2", ..] | Services to enable post-installation | No | +----------------------+--------------------------------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------+-----------------------------------------------+
+----------------------+--------------------------------------------------------+----------------------------------------------------------------------------+-----------------------------------------------+ | profile | Name of the profile to install | Profiles are present in profiles/, use the name of a profile to install it | No |
| superusers | { "<username>": { "!password": "<password>"}, ..} | List of superuser credentials, see config for reference | Yes, if root account password is not provided | +----------------------+--------------------------------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------+-----------------------------------------------+
+----------------------+--------------------------------------------------------+----------------------------------------------------------------------------+-----------------------------------------------+ | !root-password | any | The root account password | No |
| timezone | Timezone to configure in installation | Timezone eg: UTC, Asia/Kolkata etc. | Yes | +----------------------+--------------------------------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------+-----------------------------------------------+
+----------------------+--------------------------------------------------------+----------------------------------------------------------------------------+-----------------------------------------------+ | services | [ "service1", "service2", ..] | Services to enable post-installation | No |
| users | { "<username>": { "!password": "<password>"}, ..} | List of regular user credentials, see config for reference | Yes, can be {} | +----------------------+--------------------------------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------+-----------------------------------------------+
+----------------------+--------------------------------------------------------+----------------------------------------------------------------------------+-----------------------------------------------+ | sys-encoding | "utf-8" | Set to change system encoding post-install, ignored if --advanced flag is not passed | No |
+----------------------+--------------------------------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------+-----------------------------------------------+
| sys-language | "en_US" | Set to change system language post-install, ignored if --advanced flag is not passed | No |
+----------------------+--------------------------------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------+-----------------------------------------------+
| superusers | { "<username>": { "!password": "<password>"}, ..} | List of superuser credentials, see configuration for reference | Yes, if root account password is not provided |
+----------------------+--------------------------------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------+-----------------------------------------------+
| timezone | Timezone to configure in installation | Timezone eg: UTC, Asia/Kolkata etc. | Yes |
+----------------------+--------------------------------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------+-----------------------------------------------+
| users | { "<username>": { "!password": "<password>"}, ..} | List of regular user credentials, see configuration for reference | Yes, can be {} |
+----------------------+--------------------------------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------+-----------------------------------------------+
Description individual steps Description individual steps
============================ ============================

View File

@ -8,6 +8,7 @@
], ],
"!encryption-password": "supersecret", "!encryption-password": "supersecret",
"filesystem": "btrfs", "filesystem": "btrfs",
"gfx_driver": "VMware / VirtualBox (open-source)",
"harddrive": { "harddrive": {
"path": "/dev/nvme0n1" "path": "/dev/nvme0n1"
}, },
@ -16,14 +17,11 @@
"linux" "linux"
], ],
"keyboard-language": "us", "keyboard-language": "us",
"mirror-region": { "mirror-region": "Worldwide",
"Worldwide": {
"https://mirror.rackspace.com/archlinux/$repo/os/$arch": true
}
},
"nic": { "nic": {
"NetworkManager": true "NetworkManager": true
}, },
"ntp": true,
"packages": ["docker", "git", "wget", "zsh"], "packages": ["docker", "git", "wget", "zsh"],
"profile": "gnome", "profile": "gnome",
"services": ["docker"], "services": ["docker"],
@ -32,6 +30,8 @@
"!password": "devel" "!password": "devel"
} }
}, },
"sys-encoding": "utf-8",
"sys-language": "en_US",
"timezone": "US/Eastern", "timezone": "US/Eastern",
"users": {} "users": {}
} }

View File

@ -5,7 +5,7 @@ import time
import archinstall import archinstall
from archinstall.lib.general import run_custom_user_commands from archinstall.lib.general import run_custom_user_commands
from archinstall.lib.hardware import has_uefi from archinstall.lib.hardware import has_uefi, AVAILABLE_GFX_DRIVERS
from archinstall.lib.networking import check_mirror_reachable from archinstall.lib.networking import check_mirror_reachable
from archinstall.lib.profiles import Profile from archinstall.lib.profiles import Profile
@ -61,7 +61,6 @@ def ask_user_questions():
if not archinstall.arguments.get('sys-encoding', None): if not archinstall.arguments.get('sys-encoding', None):
archinstall.arguments['sys-encoding'] = 'utf-8' archinstall.arguments['sys-encoding'] = 'utf-8'
# Ask which harddrive/block-device we will install to # Ask which harddrive/block-device we will install to
if archinstall.arguments.get('harddrive', None): if archinstall.arguments.get('harddrive', None):
archinstall.arguments['harddrive'] = archinstall.BlockDevice(archinstall.arguments['harddrive']) archinstall.arguments['harddrive'] = archinstall.BlockDevice(archinstall.arguments['harddrive'])
@ -259,7 +258,10 @@ def perform_installation_steps():
print() print()
print('This is your chosen configuration:') print('This is your chosen configuration:')
archinstall.log("-- Guided template chosen (with below config) --", level=logging.DEBUG) archinstall.log("-- Guided template chosen (with below config) --", level=logging.DEBUG)
archinstall.log(json.dumps(archinstall.arguments, indent=4, sort_keys=True, cls=archinstall.JSON), level=logging.INFO) user_configuration = json.dumps(archinstall.arguments, indent=4, sort_keys=True, cls=archinstall.JSON)
archinstall.log(user_configuration, level=logging.INFO)
with open("/var/log/archinstall/user_configuration.json", "w") as config_file:
config_file.write(user_configuration)
print() print()
if not archinstall.arguments.get('silent'): if not archinstall.arguments.get('silent'):
@ -442,13 +444,21 @@ else:
archinstall.arguments['harddrive'].keep_partitions = False archinstall.arguments['harddrive'].keep_partitions = False
# Temporary workaround to make Desktop Environments work # Temporary workaround to make Desktop Environments work
if archinstall.arguments.get('profile', None) is not None: if archinstall.arguments.get('profile', None) is not None:
archinstall.arguments['profile'] = archinstall.Profile(None, archinstall.arguments.get('profile', None)) if type(archinstall.arguments.get('profile', None)) is dict:
archinstall.arguments['profile'] = archinstall.Profile(None, archinstall.arguments.get('profile', None)['path'])
else:
archinstall.arguments['profile'] = archinstall.Profile(None, archinstall.arguments.get('profile', None))
else: else:
archinstall.arguments['profile'] = None archinstall.arguments['profile'] = None
if archinstall.arguments.get('mirror-region', None) is not None: if archinstall.arguments.get('mirror-region', None) is not None:
selected_region = archinstall.arguments.get('mirror-region', None) if type(archinstall.arguments.get('mirror-region', None)) is dict:
archinstall.arguments['mirror-region'] = {selected_region: archinstall.list_mirrors()[selected_region]} archinstall.arguments['mirror-region'] = archinstall.arguments.get('mirror-region', None)
else:
selected_region = archinstall.arguments.get('mirror-region', None)
archinstall.arguments['mirror-region'] = {selected_region: archinstall.list_mirrors()[selected_region]}
archinstall.arguments['sys-language'] = archinstall.arguments.get('sys-language', 'en_US') archinstall.arguments['sys-language'] = archinstall.arguments.get('sys-language', 'en_US')
archinstall.arguments['sys-encoding'] = archinstall.arguments.get('sys-encoding', 'utf-8') archinstall.arguments['sys-encoding'] = archinstall.arguments.get('sys-encoding', 'utf-8')
if archinstall.arguments.get('gfx_driver', None) is not None:
archinstall.storage['gfx_driver_packages'] = AVAILABLE_GFX_DRIVERS.get(archinstall.arguments.get('gfx_driver', None), None)
perform_installation_steps() perform_installation_steps()

View File

@ -4,6 +4,8 @@ import archinstall
is_top_level_profile = True is_top_level_profile = True
__description__ = 'Provides a selection of desktop environments and tiling window managers, e.g. gnome, kde, sway'
# New way of defining packages for a profile, which is iterable and can be used out side # New way of defining packages for a profile, which is iterable and can be used out side
# of the profile to get a list of "what packages will be installed". # of the profile to get a list of "what packages will be installed".
__packages__ = [ __packages__ = [

View File

@ -2,6 +2,8 @@
is_top_level_profile = True is_top_level_profile = True
__description__ = 'A very basic installation that allows you to customize Arch Linux as you see fit.'
def _prep_function(*args, **kwargs): def _prep_function(*args, **kwargs):
""" """

View File

@ -6,6 +6,8 @@ import archinstall
is_top_level_profile = True is_top_level_profile = True
__description__ = 'Provides a selection of various server packages to install and enable, e.g. httpd, nginx, mariadb'
available_servers = [ available_servers = [
"cockpit", "cockpit",
"docker", "docker",

View File

@ -25,7 +25,7 @@ def _prep_function(*args, **kwargs):
other code in this stage. So it's a safe way to ask the user other code in this stage. So it's a safe way to ask the user
for more input before any other installer steps start. for more input before any other installer steps start.
""" """
__builtins__["_gfx_driver_packages"] = archinstall.select_driver() archinstall.storage["gfx_driver_packages"] = archinstall.select_driver()
return True return True
@ -34,7 +34,7 @@ def _prep_function(*args, **kwargs):
# through importlib.util.spec_from_file_location("sway", "/somewhere/sway.py") # through importlib.util.spec_from_file_location("sway", "/somewhere/sway.py")
# or through conventional import sway # or through conventional import sway
if __name__ == "sway": if __name__ == "sway":
if "nvidia" in _gfx_driver_packages: if "nvidia" in archinstall.storage.get("gfx_driver_packages", None):
choice = input("The proprietary Nvidia driver is not supported by Sway. It is likely that you will run into issues. Continue anyways? [y/N] ") choice = input("The proprietary Nvidia driver is not supported by Sway. It is likely that you will run into issues. Continue anyways? [y/N] ")
if choice.lower() in ("n", ""): if choice.lower() in ("n", ""):
raise archinstall.lib.exceptions.HardwareIncompatibilityError("Sway does not support the proprietary nvidia drivers.") raise archinstall.lib.exceptions.HardwareIncompatibilityError("Sway does not support the proprietary nvidia drivers.")
@ -43,4 +43,4 @@ if __name__ == "sway":
archinstall.storage['installation_session'].add_additional_packages(__packages__) archinstall.storage['installation_session'].add_additional_packages(__packages__)
# Install the graphics driver packages # Install the graphics driver packages
archinstall.storage['installation_session'].add_additional_packages(_gfx_driver_packages) archinstall.storage['installation_session'].add_additional_packages(f"xorg-server xorg-xinit {' '.join(archinstall.storage.get('gfx_driver_packages', None))}")

View File

@ -4,6 +4,8 @@ import archinstall
is_top_level_profile = True is_top_level_profile = True
__description__ = 'Installs a minimal system as well as xorg and graphics drivers.'
__packages__ = [ __packages__ = [
'dkms', 'dkms',
'xorg-server', 'xorg-server',
@ -22,7 +24,7 @@ def _prep_function(*args, **kwargs):
for more input before any other installer steps start. for more input before any other installer steps start.
""" """
__builtins__['_gfx_driver_packages'] = archinstall.select_driver() archinstall.storage["gfx_driver_packages"] = archinstall.select_driver()
# TODO: Add language section and/or merge it with the locale selected # TODO: Add language section and/or merge it with the locale selected
# earlier in for instance guided.py installer. # earlier in for instance guided.py installer.
@ -35,13 +37,13 @@ def _prep_function(*args, **kwargs):
# or through conventional import xorg # or through conventional import xorg
if __name__ == 'xorg': if __name__ == 'xorg':
try: try:
if "nvidia" in _gfx_driver_packages: if "nvidia" in archinstall.storage.get("gfx_driver_packages", None):
if "linux-zen" in archinstall.storage['installation_session'].base_packages or "linux-lts" in archinstall.storage['installation_session'].base_packages: if "linux-zen" in archinstall.storage['installation_session'].base_packages or "linux-lts" in archinstall.storage['installation_session'].base_packages:
archinstall.storage['installation_session'].add_additional_packages("dkms") # I've had kernel regen fail if it wasn't installed before nvidia-dkms archinstall.storage['installation_session'].add_additional_packages("dkms") # I've had kernel regen fail if it wasn't installed before nvidia-dkms
archinstall.storage['installation_session'].add_additional_packages("xorg-server xorg-xinit nvidia-dkms") archinstall.storage['installation_session'].add_additional_packages("xorg-server xorg-xinit nvidia-dkms")
else: else:
archinstall.storage['installation_session'].add_additional_packages(f"xorg-server xorg-xinit {' '.join(_gfx_driver_packages)}") archinstall.storage['installation_session'].add_additional_packages(f"xorg-server xorg-xinit {' '.join(archinstall.storage.get('gfx_driver_packages', None))}")
else: else:
archinstall.storage['installation_session'].add_additional_packages(f"xorg-server xorg-xinit {' '.join(_gfx_driver_packages)}") archinstall.storage['installation_session'].add_additional_packages(f"xorg-server xorg-xinit {' '.join(archinstall.storage.get('gfx_driver_packages', None))}")
except: except:
archinstall.storage['installation_session'].add_additional_packages("xorg-server xorg-xinit") # Prep didn't run, so there's no driver to install archinstall.storage['installation_session'].add_additional_packages("xorg-server xorg-xinit") # Prep didn't run, so there's no driver to install