{ config, lib, ... }: let cfg = config.hive.displayManager; in { options.hive.displayManager = with lib; { name = mkOption { type = types.enum ["sddm" "gdm" "cosmic"]; default = "sddm"; description = "The display manager to use."; }; autologin = mkOption { type = types.nullOr types.str; default = null; description = "The autologin username or null for no autologin."; }; }; imports = [ ./gdm.nix ./sddm.nix ]; config = { services.xserver.enable = true; services.xserver = { xkb.layout = "de"; xkb.variant = ""; xkb.options = "caps:ctrl_modifier"; }; services.displayManager.autoLogin.enable = cfg.autologin != null; services.displayManager.autoLogin.user = cfg.autologin; }; }