79 lines
1.7 KiB
Nix
79 lines
1.7 KiB
Nix
{
|
|
config,
|
|
lib,
|
|
pkgs,
|
|
...
|
|
}:
|
|
let
|
|
inherit (lib)
|
|
mkIf
|
|
mkEnableOption
|
|
mkOption
|
|
types
|
|
mkMerge
|
|
;
|
|
cfg = config.nixos.services.greetd;
|
|
hyprcfg = config.nixos.programs.hyprland;
|
|
niricfg = config.nixos.programs.niri;
|
|
in
|
|
{
|
|
options = {
|
|
nixos.services.greetd = {
|
|
enable = mkEnableOption {
|
|
type = types.bool;
|
|
default = false;
|
|
description = "Enables the greetd service.";
|
|
};
|
|
user = mkOption {
|
|
type = types.str;
|
|
default = "cnst";
|
|
description = "The username to auto-login when autologin is enabled.";
|
|
};
|
|
};
|
|
};
|
|
|
|
config =
|
|
let
|
|
usernames = builtins.attrNames config.home-manager.users;
|
|
username = builtins.head usernames;
|
|
in
|
|
mkMerge [
|
|
(mkIf cfg.enable { services.greetd.enable = true; })
|
|
|
|
(mkIf hyprcfg.enable {
|
|
services.greetd =
|
|
let
|
|
session = {
|
|
command = "${lib.getExe config.programs.uwsm.package} start hyprland-uwsm.desktop";
|
|
user = cfg.user;
|
|
};
|
|
in
|
|
{
|
|
settings = {
|
|
terminal.vt = 1;
|
|
default_session = session;
|
|
initial_session = session;
|
|
};
|
|
};
|
|
})
|
|
|
|
(mkIf niricfg.enable {
|
|
services.greetd = {
|
|
enable = true;
|
|
settings = rec {
|
|
tuigreet_session =
|
|
let
|
|
session = "${pkgs.niri}/bin/niri-session";
|
|
tuigreet = "${lib.getExe pkgs.tuigreet}";
|
|
in
|
|
{
|
|
command = "${tuigreet} --time --remember --cmd ${session}";
|
|
user = "greeter";
|
|
};
|
|
default_session = tuigreet_session;
|
|
};
|
|
};
|
|
})
|
|
];
|
|
}
|