Send patches - preferably formatted by git format-patch - to patches at archlinux32 dot org.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--archinstall/lib/disk/blockdevice.py3
-rw-r--r--archinstall/lib/installer.py19
-rw-r--r--examples/guided.py3
3 files changed, 22 insertions, 3 deletions
diff --git a/archinstall/lib/disk/blockdevice.py b/archinstall/lib/disk/blockdevice.py
index c4802a5f..d8c34893 100644
--- a/archinstall/lib/disk/blockdevice.py
+++ b/archinstall/lib/disk/blockdevice.py
@@ -2,7 +2,6 @@ import os
import json
import logging
import time
-from .helpers import convert_size_to_gb
from ..exceptions import DiskError
from ..output import log
from ..general import SysCommand
@@ -156,6 +155,8 @@ class BlockDevice:
@property
def size(self):
+ from .helpers import convert_size_to_gb
+
output = json.loads(SysCommand(f"lsblk --json -b -o+SIZE {self.path}").decode('UTF-8'))
for device in output['blockdevices']:
diff --git a/archinstall/lib/installer.py b/archinstall/lib/installer.py
index 676070f6..07de94e0 100644
--- a/archinstall/lib/installer.py
+++ b/archinstall/lib/installer.py
@@ -25,6 +25,9 @@ from .exceptions import DiskError, ServiceException, RequirementError, HardwareI
# Any package that the Installer() is responsible for (optional and the default ones)
__packages__ = ["base", "base-devel", "linux-firmware", "linux", "linux-lts", "linux-zen", "linux-hardened"]
+# Additional packages that are installed if the user is running the Live ISO with accessibility tools enabled
+__accessibility_packages__ = ["brltty", "espeakup", "alsa-utils"]
+
class InstallationFile:
def __init__(self, installation, filename, owner, mode="w"):
@@ -52,6 +55,10 @@ class InstallationFile:
return self.fh.poll(*args)
+def accessibility_tools_in_use() -> bool:
+ return os.system('systemctl is-active --quiet espeakup.service') == 0
+
+
class Installer:
"""
`Installer()` is the wrapper for most basic installation steps.
@@ -96,6 +103,10 @@ class Installer:
for kernel in kernels:
self.base_packages.append(kernel)
+ # If using accessibility tools in the live environment, append those to the packages list
+ if accessibility_tools_in_use():
+ self.base_packages.extend(__accessibility_packages__)
+
self.post_base_install = []
storage['session'] = self
@@ -307,6 +318,10 @@ class Installer:
with Boot(self) as session:
session.SysCommand(["timedatectl", "set-ntp", 'true'])
+ def enable_espeakup(self):
+ self.log('Enabling espeakup.service for speech synthesis (accessibility).', level=logging.INFO)
+ self.enable_service('espeakup')
+
def enable_service(self, *services):
for service in services:
self.log(f'Enabling service {service}', level=logging.INFO)
@@ -448,7 +463,7 @@ class Installer:
self.MODULES.append('btrfs')
if '/usr/bin/btrfs-progs' not in self.BINARIES:
self.BINARIES.append('/usr/bin/btrfs')
-
+
# There is not yet an fsck tool for NTFS. If it's being used for the root filesystem, the hook should be removed.
if partition.filesystem == 'ntfs3' and partition.mountpoint == self.target:
if 'fsck' in self.HOOKS:
@@ -615,7 +630,7 @@ class Installer:
self.helper_flags['bootloader'] = bootloader
elif bootloader == "grub-install":
- self.pacstrap('grub') # no need?
+ self.pacstrap('grub') # no need?
if real_device := self.detect_encryption(root_partition):
root_uuid = SysCommand(f"blkid -s UUID -o value {real_device.path}").decode().rstrip()
diff --git a/examples/guided.py b/examples/guided.py
index 1ee31d38..e58fd56b 100644
--- a/examples/guided.py
+++ b/examples/guided.py
@@ -334,6 +334,9 @@ def perform_installation(mountpoint):
if archinstall.arguments.get('ntp', False):
installation.activate_time_syncronization()
+ if installation.accessibility_tools_in_use():
+ installation.enable_espeakup()
+
if (root_pw := archinstall.arguments.get('!root-password', None)) and len(root_pw):
installation.user_set_pw('root', root_pw)