{ config, lib, pkgs, ... }: let inherit (lib) types; cfg = config.common.services.greetd; in { options.common.services.greetd = { enable = lib.mkEnableOption "greetd"; autoLogin = { enable = lib.mkOption { type = types.bool; default = false; }; user = lib.mkOption { type = types.str; }; command = lib.mkOption { type = types.str; }; }; }; config = lib.mkIf cfg.enable { security.pam.services.greetd.fprintAuth = false; common.configure.persist.system.dirs = [ { directory = "/var/cache/tuigreet"; mode = "755"; user = "greeter"; group = "greeter"; } ]; systemd.tmpfiles.settings."greetd" = { "/var/cache/tuigreet" = { d = { mode = "755"; user = "greeter"; group = "greeter"; }; }; }; services.greetd = { enable = true; restart = true; useTextGreeter = true; settings = { initial_session = lib.mkIf cfg.autoLogin.enable { inherit (cfg.autoLogin) user command; }; default_session = { user = "greeter"; command = lib.concatStringsSep " " [ (lib.getExe pkgs.tuigreet) "--no-xsession-wrapper" "--remember" "--remember-session" "--time" "--user-menu" "--asterisks" "--power-shutdown" "'systemctl poweroff'" "--power-reboot" "'systemctl reboot'" ]; }; }; }; }; }