{ lib, pkgs, assetRel, config, ... }: let accentColor = "#306cf8"; monitors = config.monitors; themePkg = pkgs.sddm-astronaut.override { themeConfig = { Background = "${assetRel "login_wallpaper.jpg"}"; FullBlur = "false"; PartialBlur = "true"; HideVirtualKeyboard = "true"; HideLoginButton = "true"; BlurMax = "170"; Blur = "0.8"; HaveFormBackground = "false"; FormPosition = "right"; HighlightBorderColor = accentColor; HighlightBackgroundColor = accentColor; DropdownSelectedBackgroundColor = accentColor; HoverUserIconColor = accentColor; HoverPasswordIconColor = accentColor; HoverSystemButtonsIconsColor = accentColor; HoverSessionButtonTextColor = accentColor; HoverVirtualKeyboardButtonTextColor = accentColor; WarningColor = accentColor; }; }; in { services.displayManager.sddm = { enable = true; theme = "sddm-astronaut-theme"; # Force the use qt6 based sddm, as the default is still qt5 package = lib.mkForce pkgs.kdePackages.sddm; extraPackages = [ themePkg ]; }; # Disable all non-primary monitors on the login screen services.xserver.displayManager.setupCommands = lib.concatStringsSep "\n" ( map (m: "${pkgs.xorg.xrandr}/bin/xrandr --output ${m.name} --off") ( lib.filter (m: !m.isPrimary) monitors ) ); environment.systemPackages = [ themePkg ]; }