dotfiles/modules/sddm.nix
2025-06-26 17:03:29 +02:00

55 lines
1.4 KiB
Nix

{
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
];
}