66from archinstall .tui .ui .menu_item import MenuItem , MenuItemGroup
77from archinstall .tui .ui .result import ResultType
88
9- from ..hardware import SysInfo
109from ..menu .abstract_menu import AbstractSubMenu
1110from ..models .bootloader import Bootloader , BootloaderConfiguration
1211
@@ -15,10 +14,12 @@ class BootloaderMenu(AbstractSubMenu[BootloaderConfiguration]):
1514 def __init__ (
1615 self ,
1716 bootloader_conf : BootloaderConfiguration ,
17+ uefi : bool ,
1818 skip_boot : bool = False ,
1919 ):
2020 self ._bootloader_conf = bootloader_conf
2121 self ._skip_boot = skip_boot
22+ self ._uefi = uefi
2223 menu_options = self ._define_menu_options ()
2324
2425 self ._item_group = MenuItemGroup (menu_options , sort_items = False , checkmarks = True )
@@ -30,15 +31,14 @@ def __init__(
3031
3132 def _define_menu_options (self ) -> list [MenuItem ]:
3233 bootloader = self ._bootloader_conf .bootloader
33- has_uefi = SysInfo .has_uefi ()
3434
3535 # UKI availability
36- uki_enabled = has_uefi and bootloader .has_uki_support ()
36+ uki_enabled = self . _uefi and bootloader .has_uki_support ()
3737 if not uki_enabled :
3838 self ._bootloader_conf .uki = False
3939
4040 # Removable availability
41- removable_enabled = has_uefi and bootloader .has_removable_support ()
41+ removable_enabled = self . _uefi and bootloader .has_removable_support ()
4242 if not removable_enabled :
4343 self ._bootloader_conf .removable = False
4444
@@ -92,12 +92,12 @@ def run(self) -> BootloaderConfiguration:
9292 return self ._bootloader_conf
9393
9494 def _select_bootloader (self , preset : Bootloader | None ) -> Bootloader | None :
95- bootloader = select_bootloader (preset , self ._skip_boot )
95+ bootloader = select_bootloader (preset , self ._uefi , self . _skip_boot )
9696
9797 if bootloader :
9898 # Update UKI option based on bootloader
9999 uki_item = self ._menu_item_group .find_by_key ('uki' )
100- if not SysInfo . has_uefi () or not bootloader .has_uki_support ():
100+ if not self . _uefi or not bootloader .has_uki_support ():
101101 uki_item .enabled = False
102102 uki_item .value = False
103103 self ._bootloader_conf .uki = False
@@ -106,7 +106,7 @@ def _select_bootloader(self, preset: Bootloader | None) -> Bootloader | None:
106106
107107 # Update removable option based on bootloader
108108 removable_item = self ._menu_item_group .find_by_key ('removable' )
109- if not SysInfo . has_uefi () or not bootloader .has_removable_support ():
109+ if not self . _uefi or not bootloader .has_removable_support ():
110110 removable_item .enabled = False
111111 removable_item .value = False
112112 self ._bootloader_conf .removable = False
@@ -180,27 +180,23 @@ def _select_removable(self, preset: bool) -> bool:
180180
181181def select_bootloader (
182182 preset : Bootloader | None ,
183+ uefi : bool ,
183184 skip_boot : bool = False ,
184185) -> Bootloader | None :
185186 options = []
186187 hidden_options = []
187- default = None
188188 header = tr ('Select bootloader to install' )
189189
190- if skip_boot :
191- default = Bootloader . NO_BOOTLOADER
192- else :
190+ default = Bootloader . get_default ( uefi , skip_boot )
191+
192+ if not skip_boot :
193193 hidden_options += [Bootloader .NO_BOOTLOADER ]
194194
195- if not SysInfo . has_uefi () :
195+ if not uefi :
196196 options += [Bootloader .Grub , Bootloader .Limine ]
197- if not default :
198- default = Bootloader .Grub
199197 header += '\n ' + tr ('UEFI is not detected and some options are disabled' )
200198 else :
201199 options += [b for b in Bootloader if b not in hidden_options ]
202- if not default :
203- default = Bootloader .Systemd
204200
205201 items = [MenuItem (o .value , value = o ) for o in options ]
206202 group = MenuItemGroup (items )
0 commit comments