Simple Desktop Display Manager (SDDM) is a modern display manager for X11 and Wayland sessions.

Installation

SDDM can be enabled as the display manager with these lines.

❄︎ /etc/nixos/configuration.nix
services.displayManager.sddm = {
  enable = true;

  # Enables experimental Wayland support
  wayland.enable = true;
};

Configuration

Wayland

❄︎ /etc/nixos/configuration.nix
services.displayManager.sddm = {
  enable = true;

  wayland = {
    enable = true;

    # default compositor is "weston", you can optionally change it to kwin
    #compositor = "kwin";
    };
  };
};

Autologin

❄︎ /etc/nixos/configuration.nix
services.displayManager = {
  sddm = {
    enable = true;
    wayland.enable = true;
  };
  autoLogin = {
    enable = true;    
    user = "user"; # Replace with the desired user
  };
};

Disable/Enable fprint

With fprint enabled on the system, SDDM will expect a fingerprint after entering any password. SDDM does not show any prompt for this and this will time out after some time and SDDM will attempt to use your entered password. If you have your fingerprints enrolled, you can press enter and use your fingerprint reader. Find additional options for fprint on the Fingerprint scanner page.

Enable fprint system wide

You can enable this behavior by enabling fprint. You will need to use a method to enroll your fingerprints, desktop environments such as KDE have GUI for doing so.

❄︎ /etc/nixos/configuration.nix
services.fprintd.enable = true;

Disable fprint for login

Stops SDDM from prompting for fingerprint.

❄︎ /etc/nixos/configuration.nix
security.pam.services.login.fprintAuth = false;

Troubleshooting

SDDM Hangs after entering password

With fprint enabled, SDDM will expect a fingerprint after entering any password. SDDM is likely waiting for a fingerprint without a prompt. You can disable this behavior by seeing the fprint configuration section of this article.

Installing themes

You can install and configure a theme like so

❄︎ /etc/nixos/configuration.nix
{ pkgs, ... }:
{
  services.displayManager.sddm = {
    enable = true;
    theme = "catppuccin-mocha-mauve";
  };

  environment.systemPackages = [ 
    (pkgs.catppuccin-sddm.override {
      flavor = "mocha";
      accent = "mauve";
    })
  ];
}