Send patches - preferably formatted by git format-patch - to patches at archlinux32 dot org.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDylan M. Taylor <dylan@dylanmtaylor.com>2022-02-13 10:30:49 -0500
committerGitHub <noreply@github.com>2022-02-13 16:30:49 +0100
commitd9118a33b3a25839fde8626cde313115ddb79376 (patch)
treec8ba007ac0e60f9c9cb2713fb087d9c957a65d13
parent67b922002a30744ba35b36119bed650063e26d35 (diff)
Switch from flags to an 'additional repository' menu (#977)
* Add multilib flag to enable this repository and enable multi-lib testing if testing flag is also passed * Fix comments * Attempt to force pacman to use the config file from the host * Make sure the pacman configuration is copied to target * flake8 * Call enable on additional-repositories * Add method to select additional repositories * Add menu option for additional repos * This is a bit cleaner than having it all on one line * Add import * Use [] as default instead of None * Use empty array for default option here * Try this to ensure a valid array is returned on skipping * Add additional-repositories to schema * Missed changing this comment earlier
-rw-r--r--archinstall/lib/menu/selection_menu.py6
-rw-r--r--archinstall/lib/user_interaction.py22
-rw-r--r--examples/guided.py10
-rw-r--r--schema.json8
4 files changed, 44 insertions, 2 deletions
diff --git a/archinstall/lib/menu/selection_menu.py b/archinstall/lib/menu/selection_menu.py
index b6258d8c..97dfd2a7 100644
--- a/archinstall/lib/menu/selection_menu.py
+++ b/archinstall/lib/menu/selection_menu.py
@@ -32,6 +32,7 @@ from ..user_interaction import select_encrypted_partitions
from ..user_interaction import select_harddrives
from ..user_interaction import select_profile
from ..user_interaction import select_archinstall_language
+from ..user_interaction import select_additional_repositories
from ..translation import Translation
class Selector:
@@ -498,6 +499,11 @@ class GlobalMenu(GeneralMenu):
_('Additional packages to install'),
lambda: ask_additional_packages_to_install(storage['arguments'].get('packages', None)),
default=[])
+ self._menu_options['additional-repositories'] = \
+ Selector(
+ _('Additional repositories to enable'),
+ lambda: select_additional_repositories(),
+ default=[])
self._menu_options['nic'] = \
Selector(
_('Configure network'),
diff --git a/archinstall/lib/user_interaction.py b/archinstall/lib/user_interaction.py
index 66ad3e2a..f8822bac 100644
--- a/archinstall/lib/user_interaction.py
+++ b/archinstall/lib/user_interaction.py
@@ -966,6 +966,28 @@ def select_kernel() -> List[str]:
).run()
return selected_kernels
+def select_additional_repositories() -> List[str]:
+ """
+ Allows the user to select additional repositories (multilib, and testing) if desired.
+
+ :return: The string as a selected repository
+ :rtype: string
+ """
+
+ repositories = ["multilib", "testing"]
+
+ additional_repositories = Menu(
+ _('Choose which optional additional repositories to enable'),
+ repositories,
+ sort=False,
+ multi=True,
+ default_option=[]
+ ).run()
+
+ if additional_repositories is not None:
+ return additional_repositories
+
+ return []
def select_locale_lang(default):
locales = list_locales()
diff --git a/examples/guided.py b/examples/guided.py
index ddeed36f..24db7eb4 100644
--- a/examples/guided.py
+++ b/examples/guided.py
@@ -87,6 +87,8 @@ def ask_user_questions():
global_menu.enable('ntp')
+ global_menu.enable('additional-repositories')
+
global_menu.run()
@@ -143,8 +145,12 @@ def perform_installation(mountpoint):
# Set mirrors used by pacstrap (outside of installation)
if archinstall.arguments.get('mirror-region', None):
archinstall.use_mirrors(archinstall.arguments['mirror-region']) # Set the mirrors for the live medium
-
- if installation.minimal_installation(testing=archinstall.arguments.get('testing', False), multilib=archinstall.arguments.get('multilib', False)):
+
+ # Retrieve list of additional repositories and set boolean values appropriately
+ enable_testing = 'testing' in archinstall.arguments.get('additional-repositories', None)
+ enable_multilib = 'multilib' in archinstall.arguments.get('additional-repositories', None)
+
+ if installation.minimal_installation(testing=enable_testing, multilib=enable_multilib):
installation.set_locale(archinstall.arguments['sys-language'], archinstall.arguments['sys-encoding'].upper())
installation.set_hostname(archinstall.arguments['hostname'])
if archinstall.arguments['mirror-region'].get("mirrors", None) is not None:
diff --git a/schema.json b/schema.json
index bbb0b8c9..aacf3f07 100644
--- a/schema.json
+++ b/schema.json
@@ -4,6 +4,14 @@
"description": "A schema for the archinstall command config, more info over at https://archinstall.readthedocs.io/installing/guided.html#options-for-config",
"type": "object",
"properties": {
+ "additional-repositories": {
+ "description": "Additional repositories to optionally enable",
+ "type": "string",
+ "enum": [
+ "multilib",
+ "testing"
+ ]
+ },
"audio": {
"description": "Audio server to be installed",
"type": "string",