* Add iwd standalone option to network configuration
Adds NicType.IWD as a third option alongside NM and NM_IWD: install
iwd, write /etc/iwd/main.conf with EnableNetworkConfiguration=true and
NameResolvingService=systemd, enable iwd.service + systemd-resolved.service.
iwd handles DHCP itself and resolved picks up its DNS via the symlink, so
no NetworkManager pulled in.
Also fills in parse_arg cases for NM_IWD and IWD so config files
round-trip both nic types.
Assisted-By: Flint
* wire up resolv stub and networkd service
* exclude virtual devices, dont harcode iface name instead match 'ether'
similar pattern to .network files shipped in /etc/systemd/network
* use dedent and rename menu option
* Fix truncated package metadata in additional packages preview (#3580)
* Simplify package info fix: use rstrip and CSS wrap instead of env var plumbing
* Apply preview text wrap conditionally via wrap_preview parameter
* Add missing wrap-preview CSS to OptionListScreen and pass parameter through SelectMenu
* Add console font selection to Locales menu
Add a 4th menu item "Console font" to the Locales configuration,
allowing users to select a console font for the target system.
The selected font is written to /etc/vconsole.conf.
If a terminus font (ter-*) is selected, the terminus-font package
is automatically installed on the target system.
* Switch list_console_fonts to pathlib and add @lru_cache
Address svartkanin's review on #4469. Replace os.listdir +
chained removesuffix with Path.glob('*.gz') + split('.')[0],
and cache the result via lru_cache - the kbd consolefonts
directory is static at runtime so re-scanning on every menu
reopen was wasted I/O.
* Extend validate_bootloader_layout with UEFI-dependent checks
Add is_uefi parameter and three new validations: Systemd-boot, Efistub
and rEFInd require UEFI; Efistub additionally requires a FAT boot
partition. Move the rEFInd UEFI-only check out of GlobalMenu so
guided.py and Installer silent-install paths get the same coverage.
* Encapsulate UEFI-only flag in Bootloader enum
Replace module-level _UEFI_ONLY_BOOTLOADERS tuple with an
is_uefi_only() method on the Bootloader enum, mirroring the
existing has_uki_support() / has_removable_support() pattern.
* Drop is_uefi parameter from validate_bootloader_layout
The UEFI flag is a constant system fact for the run, so the
validator retrieves it via SysInfo.has_uefi() directly instead
of having every caller pass it in. Updates all three call sites
in global_menu.py, installer.py and guided.py, and removes the
now-unused SysInfo import from guided.py.
* 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()
The methods don't need access to the class, so they don't need to
be classmethods. This change reduces the number of 'bad return'
warnings seen when running Pyright, Pyrefly, and ty.
* Add Fonts application with multi-select for emoji and CJK packages
* Rename to Additional fonts and add package descriptions
* Add noto-fonts to font package selection
* Move font descriptions into FontPackage enum method
* ci: trigger tests
* Add ttf-liberation and ttf-dejavu to font selection
* 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