diff options
| author | Collin Williams <96917990+bluedragon1221@users.noreply.github.com> | 2026-01-14 13:34:55 -0600 |
|---|---|---|
| committer | Collin Williams <96917990+bluedragon1221@users.noreply.github.com> | 2026-01-14 13:35:17 -0600 |
| commit | bd5c9fd6ecb52095e463a2edc0d3ee32f43c849d (patch) | |
| tree | 7b2ee53341e45abb27cec521ce0eeb2c02c6e311 /modules/desktop | |
| parent | f649bb618d65619cdab2bc6ac86e14d63bcf84de (diff) | |
configurable greeter for greetd
Diffstat (limited to 'modules/desktop')
| -rw-r--r-- | modules/desktop/nixos/greeters/greetd.nix | 28 | ||||
| -rw-r--r-- | modules/desktop/options.nix | 50 |
2 files changed, 46 insertions, 32 deletions
diff --git a/modules/desktop/nixos/greeters/greetd.nix b/modules/desktop/nixos/greeters/greetd.nix index b612c86..02af31f 100644 --- a/modules/desktop/nixos/greeters/greetd.nix +++ b/modules/desktop/nixos/greeters/greetd.nix @@ -1,19 +1,35 @@ { + pkgs, config, lib, ... }: let cfg = config.collinux.desktop.greetd; + + session = + if cfg.cosmic-greeter.enable + then { + command = "${pkgs.cosmic-greeter}/bin/cosmic-greeter-start"; + user = config.collinux.user.name; + } + else if cfg.autologin.enable + then { + user = config.collinux.user.name; + command = with config.collinux.desktop; + if (wm.sway.enable && !gnome.enable && !wm.niri.enable) + then lib.getExe pkgs.sway + else if (wm.niri.enable && !gnome.enable && !wm.sway.enable) + then "${pkgs.niri}/bin/niri-session" + else null; + } + else {}; in lib.mkIf cfg.enable { services.greetd = { enable = true; - settings = rec { - initial_session = { - command = cfg.command; - user = config.collinux.user.name; - }; - default_session = initial_session; + settings = { + initial_session = session; + default_session = session; }; }; } diff --git a/modules/desktop/options.nix b/modules/desktop/options.nix index e59ed68..a4ba38d 100644 --- a/modules/desktop/options.nix +++ b/modules/desktop/options.nix @@ -22,18 +22,8 @@ in { greetd = { enable = mkEnableOption "greetd greeter"; - command = mkOption { - type = lib.types.str; - internal = true; - default = let - cfg = config.collinux.desktop; - in - if (cfg.wm.sway.enable && !cfg.gnome.enable && !cfg.wm.niri.enable) - then lib.getExe pkgs.sway - else if (cfg.wm.niri.enable && !cfg.gnome.enable && !cfg.wm.sway.enable) - then "${pkgs.niri}/bin/niri-session" - else null; - }; + autologin.enable = mkEnableOption "autologin"; + cosmic-greeter.enable = mkEnableOption "cosmic-greeter"; }; gdm.enable = mkEnableOption "gdm display manager"; @@ -55,13 +45,15 @@ in { cursor_data = mkOption { internal = true; type = lib.types.submodule { - package = mkOption { - internal = true; - type = lib.types.package; - }; - name = mkOption { - internal = true; - type = lib.types.str; + options = { + package = mkOption { + internal = true; + type = lib.types.package; + }; + name = mkOption { + internal = true; + type = lib.types.str; + }; }; }; default = @@ -81,13 +73,15 @@ in { theme_data = mkOption { internal = true; type = lib.types.submodule { - package = mkOption { - internal = true; - type = lib.types.package; - }; - name = mkOption { - internal = true; - type = lib.types.str; + options = { + package = mkOption { + internal = true; + type = lib.types.package; + }; + name = mkOption { + internal = true; + type = lib.types.str; + }; }; }; @@ -141,6 +135,10 @@ in { assertion = with config.collinux.desktop; !(gdm.enable && greetd.enable); message = "Can't enable gdm and greetd at the same time"; } + { + assertion = with config.collinux.desktop.greetd; enable && !(autologin.enable && cosmic-greeter.enable); + message = "Can't use autologin and cosmic-greeter at the same time"; + } ]; }; } |
