summary refs log tree commit diff
path: root/nixos/modules/services/x11/display-managers/default.nix
diff options
context:
space:
mode:
authorvolth <volth@webmaster.ms>2018-09-01 19:27:17 +0000
committerxeji <36407913+xeji@users.noreply.github.com>2018-09-01 21:27:17 +0200
commit2413fcdfebd2179083fbee9e8c50bbde4fb8121e (patch)
treee18718d19c46697fc24830b033ee0d3a3dc06ebd /nixos/modules/services/x11/display-managers/default.nix
parent37a45e5a9712727bc8de1b7382d920422306774d (diff)
downloadnixpkgs-2413fcdfebd2179083fbee9e8c50bbde4fb8121e.tar
nixpkgs-2413fcdfebd2179083fbee9e8c50bbde4fb8121e.tar.gz
nixpkgs-2413fcdfebd2179083fbee9e8c50bbde4fb8121e.tar.bz2
nixpkgs-2413fcdfebd2179083fbee9e8c50bbde4fb8121e.tar.lz
nixpkgs-2413fcdfebd2179083fbee9e8c50bbde4fb8121e.tar.xz
nixpkgs-2413fcdfebd2179083fbee9e8c50bbde4fb8121e.tar.zst
nixpkgs-2413fcdfebd2179083fbee9e8c50bbde4fb8121e.zip
services.xserver.windowManager.session: handle duplicate names (#37690)
Diffstat (limited to 'nixos/modules/services/x11/display-managers/default.nix')
-rw-r--r--nixos/modules/services/x11/display-managers/default.nix21
1 files changed, 11 insertions, 10 deletions
diff --git a/nixos/modules/services/x11/display-managers/default.nix b/nixos/modules/services/x11/display-managers/default.nix
index 66886f23737..f561c5f8b7a 100644
--- a/nixos/modules/services/x11/display-managers/default.nix
+++ b/nixos/modules/services/x11/display-managers/default.nix
@@ -27,6 +27,15 @@ let
     Xft.hintstyle: hintslight
   '';
 
+  mkCases = session:
+    concatStrings (
+      mapAttrsToList (name: starts: ''
+                       (${name})
+                         ${concatMapStringsSep "\n  " (n: n.start) starts}
+                         ;;
+                     '') (lib.groupBy (n: n.name) session)
+    );
+
   # file provided by services.xserver.displayManager.session.wrapper
   xsessionWrapper = pkgs.writeScript "xsession-wrapper"
     ''
@@ -139,21 +148,13 @@ let
 
       # Start the window manager.
       case "$windowManager" in
-        ${concatMapStrings (s: ''
-          (${s.name})
-            ${s.start}
-            ;;
-        '') wm}
+        ${mkCases wm}
         (*) echo "$0: Window manager '$windowManager' not found.";;
       esac
 
       # Start the desktop manager.
       case "$desktopManager" in
-        ${concatMapStrings (s: ''
-          (${s.name})
-            ${s.start}
-            ;;
-        '') dm}
+        ${mkCases dm}
         (*) echo "$0: Desktop manager '$desktopManager' not found.";;
       esac