summary refs log tree commit diff
path: root/nixos/modules/services
diff options
context:
space:
mode:
authoraszlig <aszlig@redmoonstudios.org>2017-06-28 21:25:10 +0200
committeraszlig <aszlig@redmoonstudios.org>2017-06-28 21:39:19 +0200
commite82d1262123710b257038c5482a89f6a81ad6e81 (patch)
tree5b49050af131368bf21e798633da56869480cbb0 /nixos/modules/services
parent35b974a8e9a3234088502e289876ccff526950de (diff)
downloadnixlib-e82d1262123710b257038c5482a89f6a81ad6e81.tar
nixlib-e82d1262123710b257038c5482a89f6a81ad6e81.tar.gz
nixlib-e82d1262123710b257038c5482a89f6a81ad6e81.tar.bz2
nixlib-e82d1262123710b257038c5482a89f6a81ad6e81.tar.lz
nixlib-e82d1262123710b257038c5482a89f6a81ad6e81.tar.xz
nixlib-e82d1262123710b257038c5482a89f6a81ad6e81.tar.zst
nixlib-e82d1262123710b257038c5482a89f6a81ad6e81.zip
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 <aszlig@redmoonstudios.org>
Diffstat (limited to 'nixos/modules/services')
-rw-r--r--nixos/modules/services/x11/xserver.nix11
1 files 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