Loading nixos/modules/module-list.nix +1 −0 Original line number Diff line number Diff line Loading @@ -611,6 +611,7 @@ ./services/display-managers/default.nix ./services/display-managers/dms-greeter.nix ./services/display-managers/gdm.nix ./services/display-managers/generic.nix ./services/display-managers/greetd.nix ./services/display-managers/lemurs.nix ./services/display-managers/ly.nix Loading nixos/modules/services/display-managers/default.nix +1 −65 Original line number Diff line number Diff line Loading @@ -40,26 +40,7 @@ in { options = { services.displayManager = { enable = lib.mkEnableOption "systemd's display-manager service"; preStart = lib.mkOption { type = lib.types.lines; default = ""; example = "rm -f /var/log/my-display-manager.log"; description = "Script executed before the display manager is started."; }; execCmd = lib.mkOption { type = lib.types.str; example = lib.literalExpression ''"''${pkgs.lightdm}/bin/lightdm"''; description = "Command to start the display manager."; }; environment = lib.mkOption { type = with lib.types; attrsOf unspecified; default = { }; description = "Additional environment variables needed by the display manager."; }; enable = lib.mkEnableOption "shared display manager integration"; hiddenUsers = lib.mkOption { type = with lib.types; listOf str; Loading Loading @@ -250,50 +231,5 @@ in else null; }; # so that the service won't be enabled when only startx is used systemd.services.display-manager.enable = let dmConf = config.services.xserver.displayManager; noDmUsed = !( cfg.gdm.enable || cfg.sddm.enable || dmConf.xpra.enable || dmConf.lightdm.enable || cfg.ly.enable || cfg.lemurs.enable ); in lib.mkIf noDmUsed (lib.mkDefault false); systemd.services.display-manager = { description = "Display Manager"; after = [ "acpid.service" "systemd-logind.service" "systemd-user-sessions.service" "autovt@tty1.service" ]; conflicts = [ "autovt@tty1.service" ]; restartIfChanged = false; environment = cfg.environment; preStart = cfg.preStart; script = lib.mkIf (config.systemd.services.display-manager.enable == true) cfg.execCmd; # Stop restarting if the display manager stops (crashes) 2 times # in one minute. Starting X typically takes 3-4s. startLimitIntervalSec = 30; startLimitBurst = 3; serviceConfig = { Restart = "always"; RestartSec = "200ms"; SyslogIdentifier = "display-manager"; }; }; }; } nixos/modules/services/display-managers/gdm.nix +23 −20 Original line number Diff line number Diff line Loading @@ -217,6 +217,8 @@ in # Enable desktop session data enable = true; generic = { enable = true; environment = { GDM_X_SERVER_EXTRA_ARGS = toString (lib.filter (arg: arg != "-terminate") xdmcfg.xserverArgs); XDG_DATA_DIRS = lib.makeSearchPath "share" [ Loading @@ -239,6 +241,7 @@ in ${setSessionScript}/bin/set-session ${config.services.displayManager.sessionData.autologinSession} ''; }; }; systemd.tmpfiles.rules = [ "d /run/gdm/.config 0711 gdm gdm" Loading nixos/modules/services/display-managers/generic.nix 0 → 100644 +83 −0 Original line number Diff line number Diff line { config, lib, ... }: let cfg = config.services.displayManager.generic; in { imports = [ (lib.mkRenamedOptionModule [ "services" "displayManager" "preStart" ] [ "services" "displayManager" "generic" "preStart" ] ) (lib.mkRenamedOptionModule [ "services" "displayManager" "execCmd" ] [ "services" "displayManager" "generic" "execCmd" ] ) (lib.mkRenamedOptionModule [ "services" "displayManager" "environment" ] [ "services" "displayManager" "generic" "environment" ] ) ]; options = { services.displayManager.generic = { enable = lib.mkEnableOption "generic display manager integration - deprecated"; preStart = lib.mkOption { type = lib.types.lines; default = ""; example = "rm -f /var/log/my-display-manager.log"; description = "Script executed before the display manager is started."; }; execCmd = lib.mkOption { type = lib.types.nullOr lib.types.str; default = null; example = lib.literalExpression ''"''${pkgs.lightdm}/bin/lightdm"''; description = "Command to start the display manager."; }; environment = lib.mkOption { type = with lib.types; attrsOf unspecified; default = { }; description = "Additional environment variables needed by the display manager."; }; }; }; config = lib.mkIf (cfg.enable || cfg.execCmd != null) { warnings = [ (lib.mkIf (!cfg.enable) '' Enabling display-manager.service implicitly due to `services.displayManager.generic.execCmd` being set; this will be removed eventually. Please set `services.displayManager.generic.enable` explicitly, or switch your display manager to use upstream systemd units (preferred). '') ]; systemd.services.display-manager = { description = "Display Manager"; after = [ "acpid.service" "systemd-logind.service" "systemd-user-sessions.service" "autovt@tty1.service" ]; conflicts = [ "autovt@tty1.service" ]; restartIfChanged = false; environment = cfg.environment; preStart = cfg.preStart; script = cfg.execCmd; # Stop restarting if the display manager stops (crashes) 2 times # in one minute. Starting X typically takes 3-4s. startLimitIntervalSec = 30; startLimitBurst = 3; serviceConfig = { Restart = "always"; RestartSec = "200ms"; SyslogIdentifier = "display-manager"; }; }; }; } nixos/modules/services/display-managers/lemurs.nix +4 −1 Original line number Diff line number Diff line Loading @@ -75,8 +75,11 @@ in display = null; }; displayManager = { enable = true; generic = { enable = true; execCmd = "exec ${lib.getExe cfg.package} --config ${settingsFormat.generate "config.toml" cfg.settings}"; }; # set default settings lemurs.settings = let Loading Loading
nixos/modules/module-list.nix +1 −0 Original line number Diff line number Diff line Loading @@ -611,6 +611,7 @@ ./services/display-managers/default.nix ./services/display-managers/dms-greeter.nix ./services/display-managers/gdm.nix ./services/display-managers/generic.nix ./services/display-managers/greetd.nix ./services/display-managers/lemurs.nix ./services/display-managers/ly.nix Loading
nixos/modules/services/display-managers/default.nix +1 −65 Original line number Diff line number Diff line Loading @@ -40,26 +40,7 @@ in { options = { services.displayManager = { enable = lib.mkEnableOption "systemd's display-manager service"; preStart = lib.mkOption { type = lib.types.lines; default = ""; example = "rm -f /var/log/my-display-manager.log"; description = "Script executed before the display manager is started."; }; execCmd = lib.mkOption { type = lib.types.str; example = lib.literalExpression ''"''${pkgs.lightdm}/bin/lightdm"''; description = "Command to start the display manager."; }; environment = lib.mkOption { type = with lib.types; attrsOf unspecified; default = { }; description = "Additional environment variables needed by the display manager."; }; enable = lib.mkEnableOption "shared display manager integration"; hiddenUsers = lib.mkOption { type = with lib.types; listOf str; Loading Loading @@ -250,50 +231,5 @@ in else null; }; # so that the service won't be enabled when only startx is used systemd.services.display-manager.enable = let dmConf = config.services.xserver.displayManager; noDmUsed = !( cfg.gdm.enable || cfg.sddm.enable || dmConf.xpra.enable || dmConf.lightdm.enable || cfg.ly.enable || cfg.lemurs.enable ); in lib.mkIf noDmUsed (lib.mkDefault false); systemd.services.display-manager = { description = "Display Manager"; after = [ "acpid.service" "systemd-logind.service" "systemd-user-sessions.service" "autovt@tty1.service" ]; conflicts = [ "autovt@tty1.service" ]; restartIfChanged = false; environment = cfg.environment; preStart = cfg.preStart; script = lib.mkIf (config.systemd.services.display-manager.enable == true) cfg.execCmd; # Stop restarting if the display manager stops (crashes) 2 times # in one minute. Starting X typically takes 3-4s. startLimitIntervalSec = 30; startLimitBurst = 3; serviceConfig = { Restart = "always"; RestartSec = "200ms"; SyslogIdentifier = "display-manager"; }; }; }; }
nixos/modules/services/display-managers/gdm.nix +23 −20 Original line number Diff line number Diff line Loading @@ -217,6 +217,8 @@ in # Enable desktop session data enable = true; generic = { enable = true; environment = { GDM_X_SERVER_EXTRA_ARGS = toString (lib.filter (arg: arg != "-terminate") xdmcfg.xserverArgs); XDG_DATA_DIRS = lib.makeSearchPath "share" [ Loading @@ -239,6 +241,7 @@ in ${setSessionScript}/bin/set-session ${config.services.displayManager.sessionData.autologinSession} ''; }; }; systemd.tmpfiles.rules = [ "d /run/gdm/.config 0711 gdm gdm" Loading
nixos/modules/services/display-managers/generic.nix 0 → 100644 +83 −0 Original line number Diff line number Diff line { config, lib, ... }: let cfg = config.services.displayManager.generic; in { imports = [ (lib.mkRenamedOptionModule [ "services" "displayManager" "preStart" ] [ "services" "displayManager" "generic" "preStart" ] ) (lib.mkRenamedOptionModule [ "services" "displayManager" "execCmd" ] [ "services" "displayManager" "generic" "execCmd" ] ) (lib.mkRenamedOptionModule [ "services" "displayManager" "environment" ] [ "services" "displayManager" "generic" "environment" ] ) ]; options = { services.displayManager.generic = { enable = lib.mkEnableOption "generic display manager integration - deprecated"; preStart = lib.mkOption { type = lib.types.lines; default = ""; example = "rm -f /var/log/my-display-manager.log"; description = "Script executed before the display manager is started."; }; execCmd = lib.mkOption { type = lib.types.nullOr lib.types.str; default = null; example = lib.literalExpression ''"''${pkgs.lightdm}/bin/lightdm"''; description = "Command to start the display manager."; }; environment = lib.mkOption { type = with lib.types; attrsOf unspecified; default = { }; description = "Additional environment variables needed by the display manager."; }; }; }; config = lib.mkIf (cfg.enable || cfg.execCmd != null) { warnings = [ (lib.mkIf (!cfg.enable) '' Enabling display-manager.service implicitly due to `services.displayManager.generic.execCmd` being set; this will be removed eventually. Please set `services.displayManager.generic.enable` explicitly, or switch your display manager to use upstream systemd units (preferred). '') ]; systemd.services.display-manager = { description = "Display Manager"; after = [ "acpid.service" "systemd-logind.service" "systemd-user-sessions.service" "autovt@tty1.service" ]; conflicts = [ "autovt@tty1.service" ]; restartIfChanged = false; environment = cfg.environment; preStart = cfg.preStart; script = cfg.execCmd; # Stop restarting if the display manager stops (crashes) 2 times # in one minute. Starting X typically takes 3-4s. startLimitIntervalSec = 30; startLimitBurst = 3; serviceConfig = { Restart = "always"; RestartSec = "200ms"; SyslogIdentifier = "display-manager"; }; }; }; }
nixos/modules/services/display-managers/lemurs.nix +4 −1 Original line number Diff line number Diff line Loading @@ -75,8 +75,11 @@ in display = null; }; displayManager = { enable = true; generic = { enable = true; execCmd = "exec ${lib.getExe cfg.package} --config ${settingsFormat.generate "config.toml" cfg.settings}"; }; # set default settings lemurs.settings = let Loading