1111
1212from ..locale .utils import list_timezones
1313from ..models .audio_configuration import Audio , AudioConfiguration
14- from ..models .packages import AvailablePackage
14+ from ..models .packages import AvailablePackage , PackageGroup
1515from ..output import warn
1616from ..translationhandler import Language
1717
@@ -174,30 +174,41 @@ def ask_additional_packages_to_install(
174174
175175 repositories |= {Repository .Core , Repository .Extra }
176176 packages = list_available_packages (tuple (repositories ))
177+ package_groups = PackageGroup .from_available_packages (packages )
177178
178179 # Additional packages (with some light weight error handling for invalid package names)
179180 header = str (_ ('Only packages such as base, base-devel, linux, linux-firmware, efibootmgr and optional profile packages are installed.' )) + '\n '
180181 header += str (_ ('Select any packages from the below list that should be installed additionally' )) + '\n '
181182
182183 # there are over 15k packages so this needs to be quick
183- preset_packages = []
184+ preset_packages : list [ AvailablePackage | PackageGroup ] = []
184185 for p in preset :
185186 if p in packages :
186187 preset_packages .append (packages [p ])
188+ elif p in package_groups :
189+ preset_packages .append (package_groups [p ])
187190
188191 items = [
189192 MenuItem (
190193 name ,
191194 value = pkg ,
192195 preview_action = lambda x : x .value .info ()
193- ) for name ,
194- pkg in packages .items ()
196+ ) for name , pkg in packages .items ()
197+ ]
198+
199+ items += [
200+ MenuItem (
201+ name ,
202+ value = group ,
203+ preview_action = lambda x : x .value .info ()
204+ ) for name , group in package_groups .items ()
195205 ]
196- group = MenuItemGroup (items , sort_items = True )
197- group .set_selected_by_value (preset_packages )
206+
207+ menu_group = MenuItemGroup (items , sort_items = True )
208+ menu_group .set_selected_by_value (preset_packages )
198209
199210 result = SelectMenu (
200- group ,
211+ menu_group ,
201212 header = header ,
202213 alignment = Alignment .LEFT ,
203214 allow_reset = True ,
@@ -214,7 +225,7 @@ def ask_additional_packages_to_install(
214225 case ResultType .Reset :
215226 return []
216227 case ResultType .Selection :
217- selected_pacakges : list [AvailablePackage ] = result .get_values ()
228+ selected_pacakges : list [AvailablePackage | PackageGroup ] = result .get_values ()
218229 return [pkg .name for pkg in selected_pacakges ]
219230
220231
0 commit comments