1
0
Fork 0
mirror of https://github.com/NixOS/nixpkgs.git synced 2025-06-23 17:56:53 +03:00
nixpkgs/nixos/modules/services/display-managers/cosmic-greeter.nix

70 lines
2.2 KiB
Nix

# SPDX-License-Identifier: MIT
# SPDX-FileCopyrightText: Lily Foster <lily@lily.flowers>
# Portions of this code are adapted from nixos-cosmic
# https://github.com/lilyinstarlight/nixos-cosmic
{
config,
lib,
pkgs,
...
}:
let
cfg = config.services.displayManager.cosmic-greeter;
cfgAutoLogin = config.services.displayManager.autoLogin;
in
{
meta.maintainers = lib.teams.cosmic.members;
options.services.displayManager.cosmic-greeter = {
enable = lib.mkEnableOption "COSMIC greeter";
package = lib.mkPackageOption pkgs "cosmic-greeter" { };
};
config = lib.mkIf cfg.enable {
services.greetd = {
enable = true;
settings = {
default_session = {
user = "cosmic-greeter";
command = ''${lib.getExe' pkgs.coreutils "env"} XCURSOR_THEME="''${XCURSOR_THEME:-Pop}" systemd-cat -t cosmic-greeter ${lib.getExe pkgs.cosmic-comp} ${lib.getExe cfg.package}'';
};
initial_session = lib.mkIf (cfgAutoLogin.enable && (cfgAutoLogin.user != null)) {
user = cfgAutoLogin.user;
command = ''${lib.getExe' pkgs.coreutils "env"} XCURSOR_THEME="''${XCURSOR_THEME:-Pop}" systemd-cat -t cosmic-session ${lib.getExe pkgs.cosmic-session}'';
};
};
};
# Daemon for querying background state and such
systemd.services.cosmic-greeter-daemon = {
wantedBy = [ "multi-user.target" ];
before = [ "greetd.service" ];
serviceConfig = {
Type = "dbus";
BusName = "com.system76.CosmicGreeter";
ExecStart = lib.getExe' cfg.package "cosmic-greeter-daemon";
Restart = "on-failure";
};
};
# The greeter user is hardcoded in `cosmic-greeter`
users.groups.cosmic-greeter = { };
users.users.cosmic-greeter = {
description = "COSMIC login greeter user";
isSystemUser = true;
home = "/var/lib/cosmic-greeter";
createHome = true;
group = "cosmic-greeter";
};
# Required for authentication
security.pam.services.cosmic-greeter = { };
hardware.graphics.enable = true;
services.accounts-daemon.enable = true;
services.dbus.packages = [ cfg.package ];
services.libinput.enable = true;
};
}