Files
omarchycn/migrations/1784476564.sh
T
David Heinemeier HanssonandClaude Fable 5 c030337cb6 Only bundle vconsole.conf in the initramfs for Latin keyboard layouts
Bundling vconsole.conf makes Plymouth apply the user's layout at the LUKS
prompt, but for layouts whose letter keys aren't Latin (Hebrew, Greek,
Cyrillic, Arabic, ...) that makes the necessarily-Latin passphrase
untypeable and locks the user out of their machine.

mkinitcpio sources its conf.d drop-ins as shell, so omarchy_hooks.conf now
checks XKBLAYOUT at every rebuild and only bundles the file for Latin
layouts; non-Latin layouts keep the US fallback the passphrase was set
under. A migration strips the unconditional line and rebuilds the UKI on
affected installs.

Closes #6229.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-19 09:04:09 -07:00

21 lines
943 B
Bash

echo "Keep non-Latin keyboard layouts out of the initramfs so the LUKS passphrase stays typeable"
# Bundling vconsole.conf in the initramfs makes Plymouth apply the user's
# layout at the LUKS prompt. For layouts that don't type Latin letters, that
# makes the (Latin) passphrase untypeable and locks the user out (#6229).
# Drop the bundling for those layouts and rebuild the UKI. The packaged
# omarchy_hooks.conf now applies the same condition on every rebuild.
hooks_conf="/etc/mkinitcpio.conf.d/omarchy_hooks.conf"
layout=$(. /etc/vconsole.conf 2>/dev/null && echo "${XKBLAYOUT%%,*}")
if [[ $layout =~ ^(af|am|ara|bd|bg|by|et|ge|gr|il|in|iq|ir|kg|kh|kz|la|lk|mk|mm|mn|mv|np|rs|ru|sy|th|tj|ua)$ ]] &&
[[ -f $hooks_conf ]] && grep -qx 'FILES+=(/etc/vconsole.conf)' "$hooks_conf"; then
sudo sed -i '\|^FILES+=(/etc/vconsole.conf)$|d' "$hooks_conf"
if omarchy-cmd-present limine-mkinitcpio; then
sudo limine-mkinitcpio
fi
fi