forked from mirrors/nixpkgs
Merge pull request #23709 from lheckemann/xserver-layout-existence
xserver: check that selected layout exists
This commit is contained in:
commit
98a36b2847
|
@ -258,7 +258,7 @@ in
|
||||||
type = types.str;
|
type = types.str;
|
||||||
default = "us";
|
default = "us";
|
||||||
description = ''
|
description = ''
|
||||||
Keyboard layout.
|
Keyboard layout, or multiple keyboard layouts separated by commas.
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -578,6 +578,35 @@ in
|
||||||
|
|
||||||
services.xserver.xkbDir = mkDefault "${pkgs.xkeyboard_config}/etc/X11/xkb";
|
services.xserver.xkbDir = mkDefault "${pkgs.xkeyboard_config}/etc/X11/xkb";
|
||||||
|
|
||||||
|
system.extraDependencies = [
|
||||||
|
(pkgs.runCommand "xkb-layouts-exist" {
|
||||||
|
layouts=cfg.layout;
|
||||||
|
} ''
|
||||||
|
missing=()
|
||||||
|
while read -d , layout
|
||||||
|
do
|
||||||
|
[[ -f "${cfg.xkbDir}/symbols/$layout" ]] || missing+=($layout)
|
||||||
|
done <<< "$layouts,"
|
||||||
|
if [[ ''${#missing[@]} -eq 0 ]]
|
||||||
|
then
|
||||||
|
touch $out
|
||||||
|
exit 0
|
||||||
|
fi
|
||||||
|
|
||||||
|
cat >&2 <<EOF
|
||||||
|
|
||||||
|
Some of the selected keyboard layouts do not exist:
|
||||||
|
|
||||||
|
''${missing[@]}
|
||||||
|
|
||||||
|
Set services.xserver.layout to the name of an existing keyboard
|
||||||
|
layout (check ${cfg.xkbDir}/symbols for options).
|
||||||
|
|
||||||
|
EOF
|
||||||
|
exit -1
|
||||||
|
'')
|
||||||
|
];
|
||||||
|
|
||||||
services.xserver.config =
|
services.xserver.config =
|
||||||
''
|
''
|
||||||
Section "ServerFlags"
|
Section "ServerFlags"
|
||||||
|
|
Loading…
Reference in a new issue