* Fix Limine install with ESP mounted outside /boot
Place limine.conf next to the EFI binary on the ESP so it is found
regardless of ESP mountpoint, and block unbootable layouts (non-UKI
Limine with ESP not at /boot and no separate /boot partition) in
GlobalMenu validation, guided.main() and _add_limine_bootloader().
Fixes#4333
* Extract bootloader layout validation into lib/bootloader/utils
* Consolidate Limine layout validation in bootloader utils
Move the boot-partition FAT check from GlobalMenu into
validate_bootloader_layout so all three call sites (GlobalMenu,
guided.py, Installer._add_limine_bootloader) share one function.
Return a BootloaderValidationFailure dataclass (kind + description)
instead of str | None, so callers can match on the failure kind and
the description is built where partition context is in scope.
* Encapsulate FAT filesystem detection in FilesystemType.is_fat()
* Add Pacman settings submenu with Color and ParallelDownloads
Replace the standalone Parallel Downloads menu item with a Pacman
submenu containing ParallelDownloads (default 5) and Color (default on).
Settings are applied to both live and target system pacman.conf.
Hidden behind --advanced flag.
Backward compatible with old configs using "parallel_downloads" key.
* Skip _apply_to_live when user exits Pacman menu without changes
* Use TypedDict for PacmanConfiguration serialization
* Show Pacman menu by default, keep ParallelDownloads behind --advanced
The directives were added because a PR branch accidentally lagged
behind master and did not contain the mypy python_version bump from
commit 0175949ca.
This fixes commit d70e03fa3.
* Update mypy to 1.20.0
This commit also removes a cast that is no longer needed after
https://github.com/python/mypy/pull/20602
* Ignore os.system deprecation warnings from mypy to fix CI
* Add configuration for swap algorithm. Backward compatible implementation
* Fix interaction to default to Yes and show (default)
* Fix mypy error
* Any -> str, str
* feedback Enums
* test file
* line length warning
* Renames
* Fix default values in TUI menu for display
* Address feedback
* More feedback, really appreciate it.
* Adapt to use same | None = None pattern
* Pytests
* Add missing import for Zram
* Add dialog to install EFI bootloader to removable location
This is just for GRUB and Limine for now.
* Move bootloader removable and UKI selections to bootloader submenu
* Update ask_for_bootloader_removable() prompt for ease of translation
* Fix issue where removable and UKI options were always enabled at first
* Minor cosmetic fixes to bootloader removable code
* Add has_removable_support to Bootloader
* Validate UKI and removable options in installer
* Use has_removable_support() where appropriate
* Fix potential AttributeError when bootloader_config is None
* Set default value for bootloader configuration menu item
* Update documentation after EFI removable/Limine changes
* Update limine.conf and non-removable location paths (as per Wiki)
* Do not create fallback boot menu entries when using UKIs on Limine
* Remove useless ask_* wrappers in bootloader_menu
* Improve bootloader menu previews
* Make bootloader menu __init__.py empty
* Adding the option to skip boot loader
* Fixed a variable complaint
* Fixed ruff and mypy
* Fixed mypy
* Fixed mypy
* Fixed import recursion
* Fixed ruff
* Fixed circular imports
* Fixed ruff
* Hiding the menu option for bootloader when --skip-boot is given. Still setting it default to None to avoid it sneaking into the config file or being set behind the scenes causing if statements to trigger.
* Created an Enum None type for Bootloader called NO_BOOTLOADER
* Fixed ruff
* Spelling error
* Hiding NO_BOOTLOADER if --skip-boot is omitted
* Fixed TUI error when bootloader was missing
* Fixed mypy complaints
* Fixed ruff complaint
* Made the Bootloader option visible during --skip-boot and set the default value to NO_BOOTLOADER when --skip-boot is present