|
7 | 7 | from archinstall.tui.curses_menu import EditMenu, SelectMenu |
8 | 8 | from archinstall.tui.menu_item import MenuItem, MenuItemGroup |
9 | 9 | from archinstall.tui.result import ResultType |
10 | | -from archinstall.tui.types import Alignment, Orientation |
| 10 | +from archinstall.tui.types import Alignment, FrameProperties, Orientation |
11 | 11 |
|
12 | 12 | from ..menu.list_manager import ListManager |
13 | | -from ..models.users import User |
| 13 | +from ..models.users import User, StorageMechanism, HomedConfiguration |
14 | 14 | from ..utils.util import get_password |
15 | 15 |
|
16 | 16 |
|
@@ -111,7 +111,55 @@ def _add_user(self) -> User | None: |
111 | 111 | case _: |
112 | 112 | raise ValueError('Unhandled result type') |
113 | 113 |
|
114 | | - return User(username, password, sudo) |
| 114 | + homed_configuration = self._configure_homed() |
| 115 | + |
| 116 | + return User(username, password, sudo, homed_configuration) |
| 117 | + |
| 118 | + |
| 119 | + def _configure_homed(self) -> HomedConfiguration: |
| 120 | + header = str(tr('Should the user use systemd-homed?\n')) |
| 121 | + |
| 122 | + group = MenuItemGroup.yes_no() |
| 123 | + group.focus_item = MenuItem.no() |
| 124 | + |
| 125 | + result = SelectMenu[bool]( |
| 126 | + group, |
| 127 | + header=header, |
| 128 | + alignment=Alignment.CENTER, |
| 129 | + columns=2, |
| 130 | + orientation=Orientation.HORIZONTAL, |
| 131 | + search_enabled=False, |
| 132 | + allow_skip=False, |
| 133 | + ).run() |
| 134 | + |
| 135 | + match result.type_: |
| 136 | + case ResultType.Selection: |
| 137 | + if result.item() != MenuItem.yes(): |
| 138 | + return HomedConfiguration(use_homed=False) |
| 139 | + case _: |
| 140 | + raise ValueError('Unhandled result type') |
| 141 | + |
| 142 | + items = [ |
| 143 | + MenuItem('Directory', value=StorageMechanism.DIRECTORY), |
| 144 | + MenuItem('LUKS', value=StorageMechanism.LUKS), |
| 145 | + MenuItem('fscrypt', value=StorageMechanism.FSCRYPT), |
| 146 | + ] |
| 147 | + |
| 148 | + group = MenuItemGroup(items, sort_items=False) |
| 149 | + result = SelectMenu[StorageMechanism]( |
| 150 | + group, |
| 151 | + alignment=Alignment.CENTER, |
| 152 | + frame=FrameProperties.min('Filesystem'), |
| 153 | + allow_skip=False, |
| 154 | + ).run() |
| 155 | + |
| 156 | + match result.type_: |
| 157 | + case ResultType.Selection: |
| 158 | + return HomedConfiguration(use_homed=True, storage_mechanism=result.item().value) |
| 159 | + case _: |
| 160 | + raise ValueError('Unhandled result type') |
| 161 | + |
| 162 | + return HomedConfiguration(use_homed=False) |
115 | 163 |
|
116 | 164 |
|
117 | 165 | def ask_for_additional_users(prompt: str = '', defined_users: list[User] = []) -> list[User]: |
|
0 commit comments