at 25.11-pre 2.2 kB view raw
1# SPDX-License-Identifier: MIT 2# SPDX-FileCopyrightText: Lily Foster <lily@lily.flowers> 3# Portions of this code are adapted from nixos-cosmic 4# https://github.com/lilyinstarlight/nixos-cosmic 5 6{ 7 config, 8 lib, 9 pkgs, 10 ... 11}: 12 13let 14 cfg = config.services.displayManager.cosmic-greeter; 15 cfgAutoLogin = config.services.displayManager.autoLogin; 16in 17 18{ 19 meta.maintainers = lib.teams.cosmic.members; 20 21 options.services.displayManager.cosmic-greeter = { 22 enable = lib.mkEnableOption "COSMIC greeter"; 23 package = lib.mkPackageOption pkgs "cosmic-greeter" { }; 24 }; 25 26 config = lib.mkIf cfg.enable { 27 services.greetd = { 28 enable = true; 29 settings = { 30 default_session = { 31 user = "cosmic-greeter"; 32 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}''; 33 }; 34 initial_session = lib.mkIf (cfgAutoLogin.enable && (cfgAutoLogin.user != null)) { 35 user = cfgAutoLogin.user; 36 command = ''${lib.getExe' pkgs.coreutils "env"} XCURSOR_THEME="''${XCURSOR_THEME:-Pop}" systemd-cat -t cosmic-session ${lib.getExe pkgs.cosmic-session}''; 37 }; 38 }; 39 }; 40 41 # Daemon for querying background state and such 42 systemd.services.cosmic-greeter-daemon = { 43 wantedBy = [ "multi-user.target" ]; 44 before = [ "greetd.service" ]; 45 serviceConfig = { 46 Type = "dbus"; 47 BusName = "com.system76.CosmicGreeter"; 48 ExecStart = lib.getExe' cfg.package "cosmic-greeter-daemon"; 49 Restart = "on-failure"; 50 }; 51 }; 52 53 # The greeter user is hardcoded in `cosmic-greeter` 54 users.groups.cosmic-greeter = { }; 55 users.users.cosmic-greeter = { 56 description = "COSMIC login greeter user"; 57 isSystemUser = true; 58 home = "/var/lib/cosmic-greeter"; 59 createHome = true; 60 group = "cosmic-greeter"; 61 }; 62 # Required for authentication 63 security.pam.services.cosmic-greeter = { }; 64 65 hardware.graphics.enable = true; 66 services.accounts-daemon.enable = true; 67 services.dbus.packages = [ cfg.package ]; 68 services.libinput.enable = true; 69 }; 70}