From 72d02a391dd1f2aedaeaac59b943d8655366bb3e Mon Sep 17 00:00:00 2001 From: "Dylan M. Taylor" Date: Tue, 23 Nov 2021 15:10:21 -0500 Subject: Add accessibility packages to installed system if using the on the live ISO (#760) * Add group of accesibility tools * Conditionally extend base packages * Enable it if accessibility in use in guided * Fix circular import --- archinstall/lib/installer.py | 19 +++++++++++++++++-- 1 file changed, 17 insertions(+), 2 deletions(-) (limited to 'archinstall/lib/installer.py') 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() -- cgit v1.2.3-70-g09d2