Send patches - preferably formatted by git format-patch - to patches at archlinux32 dot org.
summaryrefslogtreecommitdiff
path: root/examples
diff options
context:
space:
mode:
Diffstat (limited to 'examples')
-rw-r--r--examples/creds-sample.json20
-rw-r--r--examples/guided.py31
-rw-r--r--examples/minimal.py6
-rw-r--r--examples/swiss.py33
4 files changed, 48 insertions, 42 deletions
diff --git a/examples/creds-sample.json b/examples/creds-sample.json
index 16aeb8cc..0681e16f 100644
--- a/examples/creds-sample.json
+++ b/examples/creds-sample.json
@@ -1,9 +1,15 @@
{
"!root-password": "<root password>",
- "!users": {
- "username": {"!password": "<user password>"}
- },
- "!superusers": {
- "admin": {"!password": "<admin password>"}
- }
-} \ No newline at end of file
+ "!users": [
+ {
+ "username": "<USERNAME>",
+ "!password": "<PASSWORD>",
+ "sudo": false
+ },
+ {
+ "username": "<SUDO_USERNAME>",
+ "!password": "<PASSWORD>",
+ "sudo": true
+ }
+ ]
+}
diff --git a/examples/guided.py b/examples/guided.py
index 15226668..19b0d638 100644
--- a/examples/guided.py
+++ b/examples/guided.py
@@ -3,7 +3,7 @@ import os
import time
import archinstall
-from archinstall import ConfigurationOutput
+from archinstall import ConfigurationOutput, Menu
from archinstall.lib.models.network_configuration import NetworkConfigurationHandler
if archinstall.arguments.get('help'):
@@ -45,9 +45,8 @@ def ask_user_questions():
# Set which region to download packages from during the installation
global_menu.enable('mirror-region')
- if archinstall.arguments.get('advanced', False):
- global_menu.enable('sys-language', True)
- global_menu.enable('sys-encoding', True)
+ global_menu.enable('sys-language')
+ global_menu.enable('sys-encoding')
# Ask which harddrives/block-devices we will install to
# and convert them into archinstall.BlockDevice() objects.
@@ -58,6 +57,10 @@ def ask_user_questions():
# Get disk encryption password (or skip if blank)
global_menu.enable('!encryption-password')
+ if archinstall.arguments.get('advanced', False) or archinstall.arguments.get('HSM', None):
+ # Enables the use of HSM
+ global_menu.enable('HSM')
+
# Ask which boot-loader to use (will only ask if we're in UEFI mode, otherwise will default to GRUB)
global_menu.enable('bootloader')
@@ -69,7 +72,6 @@ def ask_user_questions():
# Ask for a root password (optional, but triggers requirement for super-user if skipped)
global_menu.enable('!root-password')
- global_menu.enable('!superusers')
global_menu.enable('!users')
# Ask for archinstall-specific profiles (such as desktop environments etc)
@@ -131,6 +133,7 @@ def perform_installation(mountpoint):
Only requirement is that the block devices are
formatted and setup prior to entering this function.
"""
+
with archinstall.Installer(mountpoint, kernels=archinstall.arguments.get('kernels', ['linux'])) as installation:
# Mount all the drives to the desired mountpoint
# This *can* be done outside of the installation, but the installer can deal with it.
@@ -216,13 +219,8 @@ def perform_installation(mountpoint):
if archinstall.arguments.get('profile', None):
installation.install_profile(archinstall.arguments.get('profile', None))
- if archinstall.arguments.get('!users',{}):
- for user, user_info in archinstall.arguments.get('!users', {}).items():
- installation.user_create(user, user_info["!password"], sudo=False)
-
- if archinstall.arguments.get('!superusers',{}):
- for superuser, user_info in archinstall.arguments.get('!superusers', {}).items():
- installation.user_create(superuser, user_info["!password"], sudo=True)
+ if users := archinstall.arguments.get('!users', None):
+ installation.create_users(users)
if timezone := archinstall.arguments.get('timezone', None):
installation.set_timezone(timezone)
@@ -257,9 +255,9 @@ def perform_installation(mountpoint):
installation.log("For post-installation tips, see https://wiki.archlinux.org/index.php/Installation_guide#Post-installation", fg="yellow")
if not archinstall.arguments.get('silent'):
- prompt = 'Would you like to chroot into the newly created installation and perform post-installation configuration?'
- choice = archinstall.Menu(prompt, ['yes', 'no'], default_option='yes').run()
- if choice == 'yes':
+ prompt = str(_('Would you like to chroot into the newly created installation and perform post-installation configuration?'))
+ choice = Menu(prompt, Menu.yes_no(), default_option=Menu.yes()).run()
+ if choice == Menu.yes():
try:
installation.drop_to_shell()
except:
@@ -300,7 +298,8 @@ if archinstall.arguments.get('dry_run'):
exit(0)
if not archinstall.arguments.get('silent'):
- input('Press Enter to continue.')
+ input(str(_('Press Enter to continue.')))
+archinstall.configuration_sanity_check()
perform_filesystem_operations()
perform_installation(archinstall.storage.get('MOUNT_POINT', '/mnt'))
diff --git a/examples/minimal.py b/examples/minimal.py
index d80c4045..8b4c847f 100644
--- a/examples/minimal.py
+++ b/examples/minimal.py
@@ -1,6 +1,8 @@
import archinstall
# Select a harddrive and a disk password
+from archinstall import User
+
archinstall.log("Minimal only supports:")
archinstall.log(" * Being installed to a single disk")
@@ -28,8 +30,8 @@ def install_on(mountpoint):
installation.add_additional_packages(['nano', 'wget', 'git'])
installation.install_profile('minimal')
- installation.user_create('devel', 'devel')
- installation.user_set_pw('root', 'airoot')
+ user = User('devel', 'devel', False)
+ installation.create_users(user)
# Once this is done, we output some useful information to the user
# And the installation is complete.
diff --git a/examples/swiss.py b/examples/swiss.py
index baf7b618..d0f02dc1 100644
--- a/examples/swiss.py
+++ b/examples/swiss.py
@@ -20,7 +20,7 @@ import pathlib
from typing import TYPE_CHECKING, Any
import archinstall
-from archinstall import ConfigurationOutput, NetworkConfigurationHandler
+from archinstall import ConfigurationOutput, NetworkConfigurationHandler, Menu
if TYPE_CHECKING:
_: Any
@@ -38,8 +38,8 @@ TODO exec con return parameter
"""
def select_activate_NTP():
prompt = "Would you like to use automatic time synchronization (NTP) with the default time servers? [Y/n]: "
- choice = archinstall.Menu(prompt, ['yes', 'no'], default_option='yes').run()
- if choice == 'yes':
+ choice = Menu(prompt, Menu.yes_no(), default_option=Menu.yes()).run()
+ if choice == Menu.yes():
return True
else:
return False
@@ -160,8 +160,8 @@ class SetupMenu(archinstall.GeneralMenu):
def _setup_selection_menu_options(self):
self.set_option('archinstall-language',
archinstall.Selector(
- _('Select Archinstall language'),
- lambda x: self._select_archinstall_language('English'),
+ _('Archinstall language'),
+ lambda x: self._select_archinstall_language(x),
default='English',
enabled=True))
self.set_option('ntp',
@@ -219,7 +219,7 @@ class MyMenu(archinstall.GlobalMenu):
if self._execution_mode in ('full','lineal'):
options_list = ['keyboard-layout', 'mirror-region', 'harddrives', 'disk_layouts',
'!encryption-password','swap', 'bootloader', 'hostname', '!root-password',
- '!superusers', '!users', 'profile', 'audio', 'kernels', 'packages','additional-repositories','nic',
+ '!users', 'profile', 'audio', 'kernels', 'packages','additional-repositories','nic',
'timezone', 'ntp']
if archinstall.arguments.get('advanced',False):
options_list.extend(['sys-language','sys-encoding'])
@@ -229,7 +229,7 @@ class MyMenu(archinstall.GlobalMenu):
mandatory_list = ['harddrives']
elif self._execution_mode == 'only_os':
options_list = ['keyboard-layout', 'mirror-region','bootloader', 'hostname',
- '!root-password', '!superusers', '!users', 'profile', 'audio', 'kernels',
+ '!root-password', '!users', 'profile', 'audio', 'kernels',
'packages', 'additional-repositories', 'nic', 'timezone', 'ntp']
mandatory_list = ['hostname']
if archinstall.arguments.get('advanced',False):
@@ -262,8 +262,12 @@ class MyMenu(archinstall.GlobalMenu):
def check(s):
return self.option(s).has_selection()
+ def has_superuser() -> bool:
+ users = self._menu_options['!users'].current_selection
+ return any([u.sudo for u in users])
+
_, missing = self.mandatory_overview()
- if mode in ('full','only_os') and (not check('!root-password') and not check('!superusers')):
+ if mode in ('full','only_os') and (not check('!root-password') and not has_superuser()):
missing += 1
if mode in ('full', 'only_hd') and check('harddrives'):
if not self.option('harddrives').is_empty() and not check('disk_layouts'):
@@ -420,13 +424,8 @@ def os_setup(installation):
if archinstall.arguments.get('profile', None):
installation.install_profile(archinstall.arguments.get('profile', None))
- if archinstall.arguments.get('!users',{}):
- for user, user_info in archinstall.arguments.get('!users', {}).items():
- installation.user_create(user, user_info["!password"], sudo=False)
-
- if archinstall.arguments.get('!superusers',{}):
- for superuser, user_info in archinstall.arguments.get('!superusers', {}).items():
- installation.user_create(superuser, user_info["!password"], sudo=True)
+ if users := archinstall.arguments.get('!users', None):
+ installation.create_users(users)
if timezone := archinstall.arguments.get('timezone', None):
installation.set_timezone(timezone)
@@ -480,8 +479,8 @@ def perform_installation(mountpoint, mode):
installation.log("For post-installation tips, see https://wiki.archlinux.org/index.php/Installation_guide#Post-installation", fg="yellow")
if not archinstall.arguments.get('silent'):
prompt = 'Would you like to chroot into the newly created installation and perform post-installation configuration?'
- choice = archinstall.Menu(prompt, ['yes', 'no'], default_option='yes').run()
- if choice == 'yes':
+ choice = Menu(prompt, Menu.yes_no(), default_option=Menu.yes()).run()
+ if choice == Menu.yes():
try:
installation.drop_to_shell()
except: