Skip to content

Commit

Permalink
Merge pull request #17082 from abbradar/fix-early-kbd
Browse files Browse the repository at this point in the history
Use new early kbd-setting code in initrd and fix layouts from external packages
  • Loading branch information
abbradar authored Jul 20, 2016
2 parents afcf317 + cf64a7e commit 3cc54bb
Show file tree
Hide file tree
Showing 3 changed files with 17 additions and 28 deletions.
4 changes: 0 additions & 4 deletions nixos/modules/system/boot/stage-1-init.sh
Original file line number Diff line number Diff line change
Expand Up @@ -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@

Expand Down
11 changes: 1 addition & 10 deletions nixos/modules/system/boot/stage-1.nix
Original file line number Diff line number Diff line change
Expand Up @@ -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 {
Expand All @@ -203,7 +194,7 @@ let

isExecutable = true;

inherit udevRules extraUtils modulesClosure busyboxKeymap;
inherit udevRules extraUtils modulesClosure;

inherit (config.boot) resumeDevice devSize runSize;

Expand Down
30 changes: 16 additions & 14 deletions nixos/modules/tasks/kbd.nix
Original file line number Diff line number Diff line change
Expand Up @@ -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
'';

Expand Down Expand Up @@ -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).
'';
};

Expand All @@ -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) {
Expand Down Expand Up @@ -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}
'';
})
]))
];
Expand Down

0 comments on commit 3cc54bb

Please sign in to comment.