at 24.11-pre 2.8 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 = '' 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.mkPackageOption pkgs [ "greetd" "regreet" ] { }; 28 29 settings = lib.mkOption { 30 type = lib.types.either lib.types.path settingsFormat.type; 31 default = { }; 32 description = '' 33 ReGreet configuration file. Refer 34 <https://github.com/rharish101/ReGreet/blob/main/regreet.sample.toml> 35 for options. 36 ''; 37 }; 38 39 cageArgs = lib.mkOption { 40 type = lib.types.listOf lib.types.str; 41 default = [ "-s" ]; 42 example = lib.literalExpression 43 '' 44 [ "-s" "-m" "last" ] 45 ''; 46 description = '' 47 Additional arguments to be passed to 48 [cage](https://github.com/cage-kiosk/cage). 49 ''; 50 }; 51 52 extraCss = lib.mkOption { 53 type = lib.types.either lib.types.path lib.types.lines; 54 default = ""; 55 description = '' 56 Extra CSS rules to apply on top of the GTK theme. Refer to 57 [GTK CSS Properties](https://docs.gtk.org/gtk4/css-properties.html) for 58 modifiable properties. 59 ''; 60 }; 61 }; 62 63 config = lib.mkIf cfg.enable { 64 services.greetd = { 65 enable = lib.mkDefault true; 66 settings.default_session.command = lib.mkDefault "${pkgs.dbus}/bin/dbus-run-session ${lib.getExe pkgs.cage} ${lib.escapeShellArgs cfg.cageArgs} -- ${lib.getExe cfg.package}"; 67 }; 68 69 environment.etc = { 70 "greetd/regreet.css" = 71 if lib.isPath cfg.extraCss 72 then {source = cfg.extraCss;} 73 else {text = cfg.extraCss;}; 74 75 "greetd/regreet.toml".source = 76 if lib.isPath cfg.settings 77 then cfg.settings 78 else settingsFormat.generate "regreet.toml" cfg.settings; 79 }; 80 81 systemd.tmpfiles.settings."10-regreet" = let 82 defaultConfig = { 83 user = "greeter"; 84 group = config.users.users.${config.services.greetd.settings.default_session.user}.group; 85 mode = "0755"; 86 }; 87 in { 88 "/var/log/regreet".d = defaultConfig; 89 "/var/cache/regreet".d = defaultConfig; 90 }; 91 }; 92}