Unverified Commit 8296c4d2 authored by Artturi's avatar Artturi Committed by GitHub
Browse files

Merge pull request #140096 from Artturin/gdmoptions

parents 2652e0b4 33b7bd26
Loading
Loading
Loading
Loading
+34 −25
Original line number Diff line number Diff line
@@ -6,6 +6,8 @@ let

  cfg = config.services.xserver.displayManager;
  gdm = pkgs.gnome.gdm;
  settingsFormat = pkgs.formats.ini { };
  configFile = settingsFormat.generate "custom.conf" cfg.gdm.settings;

  xSessionWrapper = if (cfg.setupCommands == "") then null else
    pkgs.writeScript "gdm-x-session-wrapper" ''
@@ -105,6 +107,18 @@ in
        type = types.bool;
      };

      settings = mkOption {
        type = settingsFormat.type;
        default = { };
        example = {
          debug.enable = true;
        };
        description = ''
          Options passed to the gdm daemon.
          See <link xlink:href="https://help.gnome.org/admin/gdm/stable/configuration.html.en#daemonconfig">here</link> for supported options.
        '';
      };

    };

  };
@@ -270,31 +284,26 @@ in
    # Use AutomaticLogin if delay is zero, because it's immediate.
    # Otherwise with TimedLogin with zero seconds the prompt is still
    # presented and there's a little delay.
    environment.etc."gdm/custom.conf".text = ''
      [daemon]
      WaylandEnable=${boolToString cfg.gdm.wayland}
      ${optionalString cfg.autoLogin.enable (
        if cfg.gdm.autoLogin.delay > 0 then ''
          TimedLoginEnable=true
          TimedLogin=${cfg.autoLogin.user}
          TimedLoginDelay=${toString cfg.gdm.autoLogin.delay}
        '' else ''
          AutomaticLoginEnable=true
          AutomaticLogin=${cfg.autoLogin.user}
        '')
      }

      [security]

      [xdmcp]

      [greeter]

      [chooser]
    services.xserver.displayManager.gdm.settings = {
      daemon = mkMerge [
        { WaylandEnable = cfg.gdm.wayland; }
        # nested if else didn't work
        (mkIf (cfg.autoLogin.enable && cfg.gdm.autoLogin.delay != 0 ) {
          TimedLoginEnable = true;
          TimedLogin = cfg.autoLogin.user;
          TimedLoginDelay = cfg.gdm.autoLogin.delay;
        })
        (mkIf (cfg.autoLogin.enable && cfg.gdm.autoLogin.delay == 0 ) {
          AutomaticLoginEnable = true;
          AutomaticLogin = cfg.autoLogin.user;
        })
      ];
      debug = mkIf cfg.gdm.debug {
        Enable = true;
      };
    };

      [debug]
      ${optionalString cfg.gdm.debug "Enable=true"}
    '';
    environment.etc."gdm/custom.conf".source = configFile;

    environment.etc."gdm/Xsession".source = config.services.xserver.displayManager.sessionData.wrapper;