{ flake.modules.nixos.sddm = { config, lib, pkgs, ... }: let primaryDisplays = builtins.filter (display: display.primary or false) (builtins.attrValues config.meta.host.displays); primaryDisplay = if primaryDisplays == [ ] then null else builtins.head primaryDisplays; primaryScale = if primaryDisplay == null then null else primaryDisplay.scale; greeterEnvironment = lib.optional (primaryScale != null) "QT_SCALE_FACTOR=${toString primaryScale}"; in { services.displayManager.sddm = { enable = true; enableHidpi = primaryScale == null; wayland.enable = true; wayland.compositor = "kwin"; theme = "${pkgs.sddm-astronaut}/share/sddm/themes/sddm-astronaut-theme"; extraPackages = with pkgs; [ kdePackages.qtmultimedia ]; settings = lib.optionalAttrs (greeterEnvironment != [ ]) { General.GreeterEnvironment = lib.concatStringsSep "," ( [ "QT_WAYLAND_SHELL_INTEGRATION=layer-shell" ] ++ greeterEnvironment ); }; }; }; }