aboutsummaryrefslogtreecommitdiff
path: root/modules/desktop
diff options
context:
space:
mode:
authorCollin Williams <96917990+bluedragon1221@users.noreply.github.com>2026-01-14 13:34:55 -0600
committerCollin Williams <96917990+bluedragon1221@users.noreply.github.com>2026-01-14 13:35:17 -0600
commitbd5c9fd6ecb52095e463a2edc0d3ee32f43c849d (patch)
tree7b2ee53341e45abb27cec521ce0eeb2c02c6e311 /modules/desktop
parentf649bb618d65619cdab2bc6ac86e14d63bcf84de (diff)
configurable greeter for greetd
Diffstat (limited to 'modules/desktop')
-rw-r--r--modules/desktop/nixos/greeters/greetd.nix28
-rw-r--r--modules/desktop/options.nix50
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";
+ }
];
};
}