Send patches - preferably formatted by git format-patch - to patches at archlinux32 dot org.
summaryrefslogtreecommitdiff
path: root/archinstall/lib
diff options
context:
space:
mode:
authorDylan M. Taylor <dylan@dylanmtaylor.com>2021-11-23 15:10:21 -0500
committerGitHub <noreply@github.com>2021-11-23 21:10:21 +0100
commit72d02a391dd1f2aedaeaac59b943d8655366bb3e (patch)
tree55efd25c6e83b3c6c1927eab53fa958bfccccc9b /archinstall/lib
parent6b6c9c84bed1e4640f5f46282da1767827f977a9 (diff)
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
Diffstat (limited to 'archinstall/lib')
-rw-r--r--archinstall/lib/disk/blockdevice.py3
-rw-r--r--archinstall/lib/installer.py19
2 files changed, 19 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()