summary refs log tree commit diff
path: root/nixos/modules/services/x11/xserver.nix
diff options
context:
space:
mode:
authorArtturin <Artturin@artturin.com>2021-07-25 06:43:59 +0300
committerArtturin <Artturin@artturin.com>2021-11-16 23:30:27 +0200
commit670f5474b955ae020ee0d794a5a688a2918c6c47 (patch)
tree078e88008d17a331224a9aa80fd5fd7cdb9282d6 /nixos/modules/services/x11/xserver.nix
parent19b22191f7de3d172562f2fdcf1e9be21df23fef (diff)
downloadnixpkgs-670f5474b955ae020ee0d794a5a688a2918c6c47.tar
nixpkgs-670f5474b955ae020ee0d794a5a688a2918c6c47.tar.gz
nixpkgs-670f5474b955ae020ee0d794a5a688a2918c6c47.tar.bz2
nixpkgs-670f5474b955ae020ee0d794a5a688a2918c6c47.tar.lz
nixpkgs-670f5474b955ae020ee0d794a5a688a2918c6c47.tar.xz
nixpkgs-670f5474b955ae020ee0d794a5a688a2918c6c47.tar.zst
nixpkgs-670f5474b955ae020ee0d794a5a688a2918c6c47.zip
nixos/{startx,xserver,sx}: make it possible to use both a gui dm
and startx at the same time without using lib.mkForce
Diffstat (limited to 'nixos/modules/services/x11/xserver.nix')
-rw-r--r--nixos/modules/services/x11/xserver.nix24
1 files changed, 18 insertions, 6 deletions
diff --git a/nixos/modules/services/x11/xserver.nix b/nixos/modules/services/x11/xserver.nix
index cb620f10b13..24d92573442 100644
--- a/nixos/modules/services/x11/xserver.nix
+++ b/nixos/modules/services/x11/xserver.nix
@@ -588,11 +588,22 @@ in
   config = mkIf cfg.enable {
 
     services.xserver.displayManager.lightdm.enable =
-      let dmconf = cfg.displayManager;
-          default = !(dmconf.gdm.enable
-                    || dmconf.sddm.enable
-                    || dmconf.xpra.enable );
-      in mkIf (default) true;
+      let dmConf = cfg.displayManager;
+          default = !(dmConf.gdm.enable
+                    || dmConf.sddm.enable
+                    || dmConf.xpra.enable
+                    || dmConf.sx.enable
+                    || dmConf.startx.enable);
+      in mkIf (default) (mkDefault true);
+
+    # so that the service won't be enabled when only startx is used
+    systemd.services.display-manager.enable  =
+      let dmConf = cfg.displayManager;
+          noDmUsed = !(dmConf.gdm.enable
+                    || dmConf.sddm.enable
+                    || dmConf.xpra.enable
+                    || dmConf.lightdm.enable);
+      in mkIf (noDmUsed) (mkDefault false);
 
     hardware.opengl.enable = mkDefault true;
 
@@ -702,7 +713,8 @@ in
             rm -f /tmp/.X0-lock
           '';
 
-        script = "${cfg.displayManager.job.execCmd}";
+        # TODO: move declaring the systemd service to its own mkIf
+        script = mkIf (config.systemd.services.display-manager.enable == true) "${cfg.displayManager.job.execCmd}";
 
         # Stop restarting if the display manager stops (crashes) 2 times
         # in one minute. Starting X typically takes 3-4s.