mirror of
https://github.com/NixOS/nixpkgs.git
synced 2024-11-01 15:11:25 +00:00
Merge pull request #17082 from abbradar/fix-early-kbd
Use new early kbd-setting code in initrd and fix layouts from external packages
This commit is contained in:
commit
3cc54bbad9
@ -172,10 +172,6 @@ udevadm trigger --action=add
|
||||
udevadm settle
|
||||
|
||||
|
||||
# Load boot-time keymap before any LVM/LUKS initialization
|
||||
@extraUtils@/bin/busybox loadkmap < "@busyboxKeymap@"
|
||||
|
||||
|
||||
# XXX: Use case usb->lvm will still fail, usb->luks->lvm is covered
|
||||
@preLVMCommands@
|
||||
|
||||
|
@ -185,15 +185,6 @@ let
|
||||
};
|
||||
|
||||
|
||||
# The binary keymap for busybox to load at boot.
|
||||
busyboxKeymap = pkgs.runCommand "boottime-keymap"
|
||||
{ preferLocalBuild = true; }
|
||||
''
|
||||
${pkgs.kbd}/bin/loadkeys -qb "${config.i18n.consoleKeyMap}" > $out ||
|
||||
${pkgs.kbd}/bin/loadkeys -qbu "${config.i18n.consoleKeyMap}" > $out
|
||||
'';
|
||||
|
||||
|
||||
# The init script of boot stage 1 (loading kernel modules for
|
||||
# mounting the root FS).
|
||||
bootStage1 = pkgs.substituteAll {
|
||||
@ -203,7 +194,7 @@ let
|
||||
|
||||
isExecutable = true;
|
||||
|
||||
inherit udevRules extraUtils modulesClosure busyboxKeymap;
|
||||
inherit udevRules extraUtils modulesClosure;
|
||||
|
||||
inherit (config.boot) resumeDevice devSize runSize;
|
||||
|
||||
|
@ -14,8 +14,8 @@ let
|
||||
|
||||
optimizedKeymap = pkgs.runCommand "keymap" {
|
||||
nativeBuildInputs = [ pkgs.kbd ];
|
||||
LOADKEYS_KEYMAP_PATH = "${kbdEnv}/share/keymaps/**";
|
||||
} ''
|
||||
cd ${kbdEnv}/share/keymaps
|
||||
loadkeys -b ${optionalString isUnicode "-u"} "${config.i18n.consoleKeyMap}" > $out
|
||||
'';
|
||||
|
||||
@ -61,7 +61,7 @@ in
|
||||
default = false;
|
||||
type = types.bool;
|
||||
description = ''
|
||||
Enable setting font and keymap as early as possible (in initrd).
|
||||
Enable setting font as early as possible (in initrd).
|
||||
'';
|
||||
};
|
||||
|
||||
@ -83,6 +83,20 @@ in
|
||||
environment.etc."vconsole.conf".source = vconsoleConf;
|
||||
# Provide kbd with additional packages.
|
||||
environment.etc."kbd".source = "${kbdEnv}/share";
|
||||
|
||||
boot.initrd.preLVMCommands = mkBefore ''
|
||||
kbd_mode ${if isUnicode then "-u" else "-a"} -C /dev/console
|
||||
printf "\033%%${if isUnicode then "G" else "@"}" >> /dev/console
|
||||
loadkmap < ${optimizedKeymap}
|
||||
|
||||
${optionalString config.boot.earlyVconsoleSetup ''
|
||||
setfont -C /dev/console $extraUtils/share/consolefonts/font.psf
|
||||
''}
|
||||
|
||||
${concatImapStringsSep "\n" (n: color: ''
|
||||
printf "${makeColorCS n color}" >> /dev/console
|
||||
'') config.i18n.consoleColors}
|
||||
'';
|
||||
}
|
||||
|
||||
(mkIf (!config.boot.earlyVconsoleSetup) {
|
||||
@ -112,18 +126,6 @@ in
|
||||
cp -L $font $out/share/consolefonts/font.psf
|
||||
fi
|
||||
'';
|
||||
|
||||
boot.initrd.preLVMCommands = mkBefore ''
|
||||
kbd_mode ${if isUnicode then "-u" else "-a"} -C /dev/console
|
||||
printf "\033%%${if isUnicode then "G" else "@"}" >> /dev/console
|
||||
loadkmap < ${optimizedKeymap}
|
||||
|
||||
setfont -C /dev/console $extraUtils/share/consolefonts/font.psf
|
||||
|
||||
${concatImapStringsSep "\n" (n: color: ''
|
||||
printf "${makeColorCS n color}" >> /dev/console
|
||||
'') config.i18n.consoleColors}
|
||||
'';
|
||||
})
|
||||
]))
|
||||
];
|
||||
|
Loading…
Reference in New Issue
Block a user