From e82d1262123710b257038c5482a89f6a81ad6e81 Mon Sep 17 00:00:00 2001 From: aszlig Date: Wed, 28 Jun 2017 21:25:10 +0200 Subject: [PATCH] nixos/xserver: Don't use exec in xkb-layouts-exist First of all, thanks to @pbogdan for getting this problem reproduced: https://github.com/NixOS/nixpkgs/commit/2014db3efcd2a#commitcomment-22815396 Also thanks to @vcunat for bringing this to my attention: https://github.com/NixOS/nixpkgs/commit/44c64fef16ed5#commitcomment-22813503 Although it is not entirely clear why Nix has killed the build prior to finishing, it seems to be related to the process substition I was using. So instead of using "exec touch", let's wrap this inside an if so we don't exit too early. Tested this against all sub-tests in nixos/tests/keymap.nix and also a few configurations with wrong keyboard layout definitions. Signed-off-by: aszlig --- nixos/modules/services/x11/xserver.nix | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/nixos/modules/services/x11/xserver.nix b/nixos/modules/services/x11/xserver.nix index 1f4fb05129d4..01bab8fccadb 100644 --- a/nixos/modules/services/x11/xserver.nix +++ b/nixos/modules/services/x11/xserver.nix @@ -651,10 +651,13 @@ in system.extraDependencies = singleton (pkgs.runCommand "xkb-layouts-exist" { inherit (cfg) layout xkbDir; } '' - set -x - sed -n -e ':i /^! \(layout\|variant\) *$/ { - :l; n; /^!/bi; s/^ *\([^ ]\+\).*/\1/p; tl - }' "$xkbDir/rules/base.lst" | grep -qxF "$layout" && exec touch "$out" + if sed -n -e ':i /^! \(layout\|variant\) *$/ { + :l; n; /^!/bi; s/^ *\([^ ]\+\).*/\1/p; tl + }' "$xkbDir/rules/base.lst" | grep -qxF "$layout" + then + touch "$out" + exit 0 + fi cat >&2 <<-EOF