Summary
defaults/keyboard.py, defaults/language.py, and defaults/timezone.py implement full wizard step classes with get_finals() but are not registered in utils/builder.py's templates dict.
Impact
The installer does not configure keyboard layout, system language, or timezone on the installed system. The installed system uses whatever defaults the image ships.
For images where GNOME Initial Setup is disabled (needs_user_creation=True — Bluefin, Bazzite, etc.), users must configure keyboard/language/timezone manually after first boot via GNOME Settings or localectl.
Current state
# builder.py — registered templates
templates = {
"conn-check": BootcDefaultConnCheck,
"welcome": BootcDefaultWelcome,
"disk": BootcDefaultDisk,
"slurp": BootcDefaultSlurp,
"encryption": BootcDefaultEncryption,
"image": BootcDefaultImage,
"user": BootcDefaultUsers,
"qr_companion": BootcDefaultQrCompanion,
"yes-no": BootcLayoutYesNo,
}
# keyboard, language, timezone — NOT imported, NOT registered
The modules exist as dead code. The get_finals() return values are never included in the installer recipe or written to the installed system.
Options
- Remove the dead code entirely — simplest, reduces confusion
- Wire them up — register in
builder.py, add to the bundled recipe.json steps, and implement the corresponding write-to-installed-system logic in fisherman (WriteLocale, WriteTimezone, WriteKeymap)
- Document intentionally — if GNOME Initial Setup handles this on first boot for all supported images, add a comment in
builder.py explaining why these steps are omitted
Assisted-by: Claude Sonnet 4.5 via pi
Summary
defaults/keyboard.py,defaults/language.py, anddefaults/timezone.pyimplement full wizard step classes withget_finals()but are not registered inutils/builder.py'stemplatesdict.Impact
The installer does not configure keyboard layout, system language, or timezone on the installed system. The installed system uses whatever defaults the image ships.
For images where GNOME Initial Setup is disabled (
needs_user_creation=True— Bluefin, Bazzite, etc.), users must configure keyboard/language/timezone manually after first boot via GNOME Settings orlocalectl.Current state
The modules exist as dead code. The
get_finals()return values are never included in the installer recipe or written to the installed system.Options
builder.py, add to the bundledrecipe.jsonsteps, and implement the corresponding write-to-installed-system logic in fisherman (WriteLocale,WriteTimezone,WriteKeymap)builder.pyexplaining why these steps are omittedAssisted-by: Claude Sonnet 4.5 via pi