{ lib, pkgs, config, ... }: let inherit (lib) mkOption mkIf getExe types mkMerge; cfg = config.module.desktop; in { options = { module.desktop.displayManager = mkOption { default = "greetd"; type = types.enum [ "cosmic" "gdm" "greetd" "sddm" ]; }; }; config = mkMerge [ (mkIf (cfg.displayManager == "cosmic") { services.displayManager.cosmic-greeter.enable = true; }) (mkIf (cfg.displayManager == "gdm") { services.displayManager.gdm = { enable = true; wayland = true; }; }) (mkIf (cfg.displayManager == "greetd") { programs.regreet.enable = true; services.greetd = { enable = true; vt = 1; settings = { default_session = { command = "${getExe pkgs.cage} -s -m last -- ${getExe pkgs.greetd.regreet}"; }; }; }; }) (mkIf (cfg.displayManager == "sddm") { services.displayManager.sddm = { enable = true; wayland.enable = true; }; }) ]; }