From 129ceaea8be14362e2b22cbbf8b83ae0e392d1e8 Mon Sep 17 00:00:00 2001 From: Anton Hvornum Date: Tue, 11 May 2021 13:37:08 +0200 Subject: Renamed keyboard-language to keyboard-layout to avoid confusion. Added encryption checks for disk layout selection, if disk encryption password is given - but no partitions were found using encryption, the user will be asked which partitions to encrypt - unless there's only /boot and / then we'll automatically select / because that's what we support for now. --- archinstall/lib/disk.py | 12 +++++++++++- archinstall/lib/user_interaction.py | 16 +++++++++++++++- 2 files changed, 26 insertions(+), 2 deletions(-) (limited to 'archinstall/lib') diff --git a/archinstall/lib/disk.py b/archinstall/lib/disk.py index 30b66835..3241c455 100644 --- a/archinstall/lib/disk.py +++ b/archinstall/lib/disk.py @@ -730,4 +730,14 @@ def disk_layouts(): return json.loads(b''.join(handle).decode('UTF-8')) except SysCallError as err: log(f"Could not return disk layouts: {err}") - return None \ No newline at end of file + return None + +def encrypted_partitions(blockdevices :dict) -> bool: + for partition in blockdevices.values(): + if partition.get('encrypted', False): + yield partition + +def find_partition_by_mountpoint(partitions, relative_mountpoint :str): + for partition in partitions: + if partition.get('mountpoint', None) == relative_mountpoint: + return partition \ No newline at end of file diff --git a/archinstall/lib/user_interaction.py b/archinstall/lib/user_interaction.py index ab95909f..91720065 100644 --- a/archinstall/lib/user_interaction.py +++ b/archinstall/lib/user_interaction.py @@ -150,6 +150,20 @@ def generic_multi_select(options, text="Select one or more of the options above sys.stdout.flush() return selected_options +def select_encrypted_partitions(blockdevices :dict) -> dict: + print(blockdevices[0]) + + if len(blockdevices) == 1: + if len(blockdevices[0]['partitions']) == 2: + root = find_partition_by_mountpoint(blockdevices[0]['partitions'], '/') + blockdevices[0]['partitions'][root]['encrypted'] = True + return True + + options = [] + for partition in blockdevices.values(): + options.append({key: val for key, val in partition.items() if val}) + + print(generic_multi_select(options, f"Choose which partitions to encrypt (leave blank when done): ")) class MiniCurses(): def __init__(self, width, height): @@ -594,7 +608,7 @@ def wipe_and_create_partitions(block_device): else: partition_type = 'msdos' - partitions_result = [part.__dump__() for part in block_device.partitions.values()] + partitions_result = [] # Test code: [part.__dump__() for part in block_device.partitions.values()] suggested_layout = [ { # Boot "type" : "primary", -- cgit v1.2.3-70-g09d2