about summary refs log tree commit diff
path: root/nixos/modules/services/x11/display-managers/lightdm.nix
diff options
context:
space:
mode:
authorWill Fancher <elvishjerricco@gmail.com>2018-03-04 12:29:08 -0500
committerobadz <obadz-git@obadz.com>2018-03-04 23:54:09 +0000
commit6b9a99e55d537c27c5b384d58c997839a0519df9 (patch)
tree2384371f4d57ff5870ed1c25439aa6c51d3b32ba /nixos/modules/services/x11/display-managers/lightdm.nix
parent9b732aa7c20247db370778ea4b8603883d28be16 (diff)
downloadnixlib-6b9a99e55d537c27c5b384d58c997839a0519df9.tar
nixlib-6b9a99e55d537c27c5b384d58c997839a0519df9.tar.gz
nixlib-6b9a99e55d537c27c5b384d58c997839a0519df9.tar.bz2
nixlib-6b9a99e55d537c27c5b384d58c997839a0519df9.tar.lz
nixlib-6b9a99e55d537c27c5b384d58c997839a0519df9.tar.xz
nixlib-6b9a99e55d537c27c5b384d58c997839a0519df9.tar.zst
nixlib-6b9a99e55d537c27c5b384d58c997839a0519df9.zip
LightDM: Set default user session when possible.
Diffstat (limited to 'nixos/modules/services/x11/display-managers/lightdm.nix')
-rw-r--r--nixos/modules/services/x11/display-managers/lightdm.nix21
1 files changed, 16 insertions, 5 deletions
diff --git a/nixos/modules/services/x11/display-managers/lightdm.nix b/nixos/modules/services/x11/display-managers/lightdm.nix
index b5e936830918..9d30155a7234 100644
--- a/nixos/modules/services/x11/display-managers/lightdm.nix
+++ b/nixos/modules/services/x11/display-managers/lightdm.nix
@@ -9,6 +9,10 @@ let
   xEnv = config.systemd.services."display-manager".environment;
   cfg = dmcfg.lightdm;
 
+  dmDefault = xcfg.desktopManager.default;
+  wmDefault = xcfg.windowManager.default;
+  hasDefaultUserSession = dmDefault != "none" || wmDefault != "none";
+
   inherit (pkgs) stdenv lightdm writeScript writeText;
 
   # lightdm runs with clearenv(), but we need a few things in the enviornment for X to startup
@@ -54,14 +58,13 @@ let
         autologin-user-timeout = ${toString cfg.autoLogin.timeout}
         autologin-session = ${defaultSessionName}
       ''}
+      ${optionalString hasDefaultUserSession ''
+        user-session=${defaultSessionName}
+      ''}
       ${cfg.extraSeatDefaults}
     '';
 
-  defaultSessionName =
-    let
-      dm = xcfg.desktopManager.default;
-      wm = xcfg.windowManager.default;
-    in dm + optionalString (wm != "none") ("+" + wm);
+  defaultSessionName = dmDefault + optionalString (wmDefault != "none") ("+" + wmDefault);
 in
 {
   # Note: the order in which lightdm greeter modules are imported
@@ -179,6 +182,14 @@ in
           default session: ${defaultSessionName} is not valid.
         '';
       }
+      { assertion = hasDefaultUserSession -> elem defaultSessionName dmcfg.session.names;
+        message = ''
+          services.xserver.desktopManager.default and
+          services.xserver.windowMananger.default are not set to valid
+          values. The current default session: ${defaultSessionName}
+          is not valid.
+        '';
+      }
       { assertion = !cfg.greeter.enable -> (cfg.autoLogin.enable && cfg.autoLogin.timeout == 0);
         message = ''
           LightDM can only run without greeter if automatic login is enabled and the timeout for it