{ config, pkgs, ... }: let waylandSessions = "${config.services.displayManager.sessionData.desktops}/share/wayland-sessions"; x11Sessions = "${config.services.displayManager.sessionData.desktops}/share/xsessions"; moduleName = "hm-greeter"; in { users.users.greeter = { isSystemUser = true; group = "greeter"; }; users.groups.greeter = {}; services.greetd = { enable = true; settings = { terminal.vt = 1; default_session = { # Run Hyprland as the greeter compositor command = "${pkgs.dbus}/bin/dbus-run-session ${pkgs.hyprland}/bin/start-hyprland -- --config /etc/greetd/greeter.conf"; user = "greeter"; }; }; }; # Install the greeter Hyprland config file environment.etc."greetd/greeter.conf".source = ./conf/greeter.conf; # Give qtgreet access to session files on NixOS environment.etc."greetd/qtgreet-session-paths".text = '' WAYLAND_SESSIONS=${waylandSessions} X11_SESSIONS=${x11Sessions} ''; # Needed for Wayland logins in many setups services.seatd.enable = true; environment.systemPackages = with pkgs; [ qtgreet qt6Packages.qt6ct kdePackages.breeze kdePackages.breeze-icons ]; home.file.".nixlog/loaded.${moduleName}-module-loaded".text = "loaded\n"; }