diff options
author | Linus Heckemann <git@sphalerite.org> | 2017-03-23 20:06:52 +0000 |
---|---|---|
committer | Linus Heckemann <git@sphalerite.org> | 2017-03-23 21:02:38 +0000 |
commit | c5c0459a60c1e64afc66c3b76434b88961d67abb (patch) | |
tree | 95104367e463730888639f8903119d70b54f1e5d /nixos/modules/services/x11/xserver.nix | |
parent | c2b9b8031f302d936ed798c716eecd01ae270f8b (diff) | |
download | nixlib-c5c0459a60c1e64afc66c3b76434b88961d67abb.tar nixlib-c5c0459a60c1e64afc66c3b76434b88961d67abb.tar.gz nixlib-c5c0459a60c1e64afc66c3b76434b88961d67abb.tar.bz2 nixlib-c5c0459a60c1e64afc66c3b76434b88961d67abb.tar.lz nixlib-c5c0459a60c1e64afc66c3b76434b88961d67abb.tar.xz nixlib-c5c0459a60c1e64afc66c3b76434b88961d67abb.tar.zst nixlib-c5c0459a60c1e64afc66c3b76434b88961d67abb.zip |
xserver: check that selected layout exists
Fixes #5638
Diffstat (limited to 'nixos/modules/services/x11/xserver.nix')
-rw-r--r-- | nixos/modules/services/x11/xserver.nix | 29 |
1 files changed, 29 insertions, 0 deletions
diff --git a/nixos/modules/services/x11/xserver.nix b/nixos/modules/services/x11/xserver.nix index 8438e6dcc702..2e2d567a060b 100644 --- a/nixos/modules/services/x11/xserver.nix +++ b/nixos/modules/services/x11/xserver.nix @@ -578,6 +578,35 @@ in 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 = '' Section "ServerFlags" |