Files
nextcloud_ecosystem/OLD CONFIGS/nix_new/modules/nixos/desktop/greeter.nix
T
2026-02-22 17:28:02 +01:00

92 lines
2.9 KiB
Nix
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
{ config, pkgs, lib, ... }:
let
cfg = config.desktop.greeter;
in
{
options.desktop.greeter = {
enable = lib.mkEnableOption "greetd + tuigreet greeter (starts Hyprland)";
greeterConfSource = lib.mkOption {
type = lib.types.path;
default = ../../../files/conf/greeter/greeter.conf;
description = "Path to greeter.conf in your repo; will be installed to /etc/xdg/greeter/greeter.conf";
};
vt = lib.mkOption {
type = lib.types.int;
default = 1;
description = "Virtual terminal (VT) greetd runs on (typically 1).";
};
extraArgs = lib.mkOption {
type = lib.types.listOf lib.types.str;
default = [ "--time" "--remember" "--remember-session" "--asterisks" ];
description = "Extra command-line arguments passed to tuigreet.";
};
useDbusRunSession = lib.mkOption {
type = lib.types.bool;
default = true;
description = "Wrap Hyprland with dbus-run-session (often helps session env).";
};
installGreeterPackages = lib.mkOption {
type = lib.types.bool;
default = true;
description = "Add tuigreet (and optional qtgreet) to systemPackages.";
};
enableTty1Fix = lib.mkOption {
type = lib.types.bool;
default = true;
description = "Ensure greetd owns tty1 (avoids boot console overriding greetd).";
};
};
config = lib.mkIf cfg.enable {
# greetd + tuigreet configuration
services.greetd = {
enable = true;
settings = {
terminal.vt = cfg.vt;
default_session = {
# greetd service runs the greeter as this user
user = "greetd";
# Build: tuigreet ... --cmd <Hyprland>
command =
let
hyprCmd =
if cfg.useDbusRunSession
then "${pkgs.dbus}/bin/dbus-run-session ${pkgs.hyprland}/bin/Hyprland"
else "${pkgs.hyprland}/bin/Hyprland";
tuigreetArgs = lib.concatStringsSep " " cfg.extraArgs;
in
"${pkgs.tuigreet}/bin/tuigreet ${tuigreetArgs} --cmd ${hyprCmd}";
};
};
};
# Install your custom greeter config into /etc/xdg/greeter/greeter.conf
environment.etc."xdg/greeter/greeter.conf".source = cfg.greeterConfSource;
# Supporting bits (Wayland sessions almost always want these)
services.dbus.enable = lib.mkDefault true;
security.polkit.enable = lib.mkDefault true;
# Optional: keep greeter tools available system-wide
environment.systemPackages = lib.mkIf cfg.installGreeterPackages (with pkgs; [
tuigreet
qtgreet
]);
# Fix "Graphical System started" but no greeter: ensure tty1 isnt stolen by console/getty
boot.kernelParams = lib.mkIf cfg.enableTty1Fix [ "console=tty1" ];
systemd.services."getty@tty1".enable = lib.mkIf cfg.enableTty1Fix false;
systemd.services."autovt@tty1".enable = lib.mkIf cfg.enableTty1Fix false;
};
}