main
 1{
 2  inputs,
 3  lib,
 4  ...
 5}: {
 6  flake-file.inputs.silentSDDM = {
 7    url = "github:uiriansan/SilentSDDM";
 8    inputs.nixpkgs.follows = "nixpkgs";
 9  };
10
11  flake.modules.nixos.dm-sddm = {
12    pkgs,
13    config,
14    ...
15  }: let
16    sddm-theme = inputs.silentSDDM.packages.${pkgs.stdenv.hostPlatform.system}.default.override {
17      theme = "catppuccin-macchiato";
18      theme-overrides = {
19        "LoginScreen" = {
20          background = config.stylix.image;
21        };
22        "LockScreen" = {
23          background = config.stylix.image;
24        };
25      };
26    };
27  in {
28    environment.systemPackages = [sddm-theme sddm-theme.test];
29
30    qt.enable = true;
31
32    services.displayManager.sddm = {
33      enable = true;
34      package = lib.mkForce pkgs.kdePackages.sddm; # Use qt6 version of sddm
35      wayland.enable = !config.services.xserver.enable;
36      # See https://github.com/uiriansan/SilentSDDM?tab=readme-ov-file#NixOS-flake
37      theme = sddm-theme.pname;
38      extraPackages = sddm-theme.propagatedBuildInputs;
39      settings = {
40        General = {
41          GreeterEnvironment = lib.join "," [
42            "QML2_IMPORT_PATH=${sddm-theme}/share/sddm/themes/${sddm-theme.pname}/components/"
43            "QT_IM_MODULE=qtvirtualkeyboard"
44            "QT_FONT_DPI=${toString config.services.xserver.dpi}"
45          ];
46          InputMethod = "qtvirtualkeyboard";
47        };
48      };
49    };
50  };
51}