# https://github.com/glabrie/dotfiles/blob/main/modules/system/settings/greetd.nix { inputs, ... }: { flake.modules.nixos.greetd = { pkgs, lib, config, ... }: let niriPackage = if config.programs.niri.enable then config.programs.niri.package else pkgs.niri; niriExe = lib.getExe niriPackage; regreetExe = lib.getExe config.programs.regreet.package; greeterNiriConfig = pkgs.writeText "niri-greeter.kdl" '' spawn-at-startup "${regreetExe}" hotkey-overlay { skip-at-startup } ''; in { programs.regreet.enable = true; services.greetd = { enable = true; settings = { default_session = { command = "${pkgs.dbus}/bin/dbus-run-session -- ${niriExe} --config ${greeterNiriConfig}"; user = "greeter"; }; }; }; systemd.services.greetd.serviceConfig = { Type = "idle"; StandardInput = "tty"; StandardOutput = "tty"; StandardError = "journal"; # Without this errors will spam on screen # Without these bootlogs will spam on screen TTYReset = true; TTYVHangup = true; TTYVTDisallocate = true; }; # Let's allow our keyring to work from the start security.pam.services.greetd.enableGnomeKeyring = true; }; }