at 23.11-pre 2.3 kB view raw
1{ lib 2, pkgs 3, config 4, ... 5}: 6let 7 cfg = config.programs.regreet; 8 settingsFormat = pkgs.formats.toml { }; 9in 10{ 11 options.programs.regreet = { 12 enable = lib.mkEnableOption null // { 13 description = lib.mdDoc '' 14 Enable ReGreet, a clean and customizable greeter for greetd. 15 16 To use ReGreet, {option}`services.greetd` has to be enabled and 17 {option}`services.greetd.settings.default_session` should contain the 18 appropriate configuration to launch 19 {option}`config.programs.regreet.package`. For examples, see the 20 [ReGreet Readme](https://github.com/rharish101/ReGreet#set-as-default-session). 21 22 A minimal configuration that launches ReGreet in {command}`cage` is 23 enabled by this module by default. 24 ''; 25 }; 26 27 package = lib.mkPackageOptionMD pkgs [ "greetd" "regreet" ] { }; 28 29 settings = lib.mkOption { 30 type = lib.types.either lib.types.path settingsFormat.type; 31 default = { }; 32 description = lib.mdDoc '' 33 ReGreet configuration file. Refer 34 <https://github.com/rharish101/ReGreet/blob/main/regreet.sample.toml> 35 for options. 36 ''; 37 }; 38 39 extraCss = lib.mkOption { 40 type = lib.types.either lib.types.path lib.types.lines; 41 default = ""; 42 description = lib.mdDoc '' 43 Extra CSS rules to apply on top of the GTK theme. Refer to 44 [GTK CSS Properties](https://docs.gtk.org/gtk4/css-properties.html) for 45 modifiable properties. 46 ''; 47 }; 48 }; 49 50 config = lib.mkIf cfg.enable { 51 services.greetd = { 52 enable = lib.mkDefault true; 53 settings.default_session.command = lib.mkDefault "${pkgs.dbus}/bin/dbus-run-session ${lib.getExe pkgs.cage} -s -- ${lib.getExe cfg.package}"; 54 }; 55 56 environment.etc = { 57 "greetd/regreet.css" = 58 if lib.isPath cfg.extraCss 59 then {source = cfg.extraCss;} 60 else {text = cfg.extraCss;}; 61 62 "greetd/regreet.toml".source = 63 if lib.isPath cfg.settings 64 then cfg.settings 65 else settingsFormat.generate "regreet.toml" cfg.settings; 66 }; 67 68 systemd.tmpfiles.rules = let 69 user = config.services.greetd.settings.default_session.user; 70 in [ 71 "d /var/log/regreet 0755 greeter ${user} - -" 72 "d /var/cache/regreet 0755 greeter ${user} - -" 73 ]; 74 }; 75}