{ lib, config, pkgs, ... }: with lib; let cfg = config.modules.desktop.regreet; in { options.modules.desktop.regreet = { enable = mkEnableOption "Enable regreet, a clean and customizable greeter for greetd"; # TODO: add packages here? }; config = mkIf cfg.enable { services.greetd = { enable = true; settings = { default_session = let swayConfig = let monitors = config.modules.desktop.monitors; monitorConfig = if monitors.enable && (builtins.length monitors.monitors > 0) then let firstMonitor = builtins.head monitors.monitors; in "output ${firstMonitor.name} scale ${toString firstMonitor.scale}" else ""; in command: pkgs.writeText "kiosk-sway-config" '' ${monitorConfig} xwayland disable exec '${command}; ${pkgs.sway}/bin/swaymsg exit' ''; swayKiosk = command: "${pkgs.dbus}/bin/dbus-run-session ${lib.getExe pkgs.sway} --unsupported-gpu --config ${swayConfig command}"; in { command = swayKiosk (lib.getExe pkgs.regreet); }; }; }; programs.regreet = { enable = true; settings = { background = { path = "${../../assets/lockscreen.png}"; fit = "Cover"; }; }; font = with config.modules.desktop.fonts.fonts.sansSerif; { inherit size package; name = family; }; }; }; }