|
5 | 5 | from archinstall.lib.disk.disk_menu import DiskLayoutConfigurationMenu |
6 | 6 | from archinstall.lib.disk.encryption_menu import DiskEncryptionMenu |
7 | 7 | from archinstall.lib.models.device_model import DiskEncryption, DiskLayoutConfiguration, DiskLayoutType, EncryptionType, FilesystemType, PartitionModification |
| 8 | +from archinstall.lib.packages import list_available_packages |
8 | 9 | from archinstall.tui.menu_item import MenuItem, MenuItemGroup |
9 | 10 |
|
10 | 11 | from .args import ArchConfig |
|
29 | 30 | from .models.locale import LocaleConfiguration |
30 | 31 | from .models.mirrors import MirrorConfiguration |
31 | 32 | from .models.network_configuration import NetworkConfiguration, NicType |
| 33 | +from .models.packages import Repository |
32 | 34 | from .models.profile_model import ProfileConfiguration |
33 | 35 | from .models.users import Password, User |
34 | 36 | from .output import FormattedOutput |
| 37 | +from .pacman.config import PacmanConfig |
35 | 38 | from .translationhandler import Language, translation_handler |
36 | 39 | from .utils.util import get_password |
37 | 40 |
|
@@ -168,7 +171,7 @@ def _get_menu_options(self) -> list[MenuItem]: |
168 | 171 | ), |
169 | 172 | MenuItem( |
170 | 173 | text=str(_('Additional packages')), |
171 | | - action=ask_additional_packages_to_install, |
| 174 | + action=self._select_additional_packages, |
172 | 175 | value=[], |
173 | 176 | preview_action=self._prev_additional_pkgs, |
174 | 177 | key='packages' |
@@ -536,13 +539,38 @@ def _select_profile(self, current_profile: ProfileConfiguration | None): |
536 | 539 | profile_config = ProfileMenu(preset=current_profile).run() |
537 | 540 | return profile_config |
538 | 541 |
|
| 542 | + def _select_additional_packages(self, preset: list[str]) -> list[str]: |
| 543 | + config: MirrorConfiguration | None = self._item_group.find_by_key('mirror_config').value |
| 544 | + |
| 545 | + repositories: set[Repository] = set() |
| 546 | + if config: |
| 547 | + repositories = set(config.optional_repositories) |
| 548 | + |
| 549 | + packages = ask_additional_packages_to_install( |
| 550 | + preset, |
| 551 | + repositories=repositories |
| 552 | + ) |
| 553 | + |
| 554 | + return packages |
| 555 | + |
539 | 556 | def _create_user_account(self, preset: list[User] | None = None) -> list[User]: |
540 | 557 | preset = [] if preset is None else preset |
541 | 558 | users = ask_for_additional_users(defined_users=preset) |
542 | 559 | return users |
543 | 560 |
|
544 | 561 | def _mirror_configuration(self, preset: MirrorConfiguration | None = None) -> MirrorConfiguration | None: |
545 | 562 | mirror_configuration = MirrorMenu(preset=preset).run() |
| 563 | + |
| 564 | + if mirror_configuration: |
| 565 | + if mirror_configuration.optional_repositories: |
| 566 | + # reset the package list cache in case the repository selection has changed |
| 567 | + list_available_packages.cache_clear() |
| 568 | + |
| 569 | + # enable the repositories in the config |
| 570 | + pacman_config = PacmanConfig(None) |
| 571 | + pacman_config.enable(mirror_configuration.optional_repositories) |
| 572 | + pacman_config.apply() |
| 573 | + |
546 | 574 | return mirror_configuration |
547 | 575 |
|
548 | 576 | def _prev_mirror_config(self, item: MenuItem) -> str | None: |
|
0 commit comments