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>
21 lines
943 B
Bash
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
|