diff options
author | Mihai Fufezan <fufexan@protonmail.com> | 2023-03-13 23:35:06 +0200 |
---|---|---|
committer | Mihai Fufezan <fufexan@protonmail.com> | 2023-03-20 02:01:50 +0200 |
commit | 692c28ec10f0ddbf043d6c70720a62e7293d4833 (patch) | |
tree | 2f5d247df11e4b2a519ea322035d7cbd456e5ebb /nixos/modules/programs/regreet.nix | |
parent | aacfc0950b84657b32ebb4106e21eef4db8e626b (diff) | |
download | nixlib-692c28ec10f0ddbf043d6c70720a62e7293d4833.tar nixlib-692c28ec10f0ddbf043d6c70720a62e7293d4833.tar.gz nixlib-692c28ec10f0ddbf043d6c70720a62e7293d4833.tar.bz2 nixlib-692c28ec10f0ddbf043d6c70720a62e7293d4833.tar.lz nixlib-692c28ec10f0ddbf043d6c70720a62e7293d4833.tar.xz nixlib-692c28ec10f0ddbf043d6c70720a62e7293d4833.tar.zst nixlib-692c28ec10f0ddbf043d6c70720a62e7293d4833.zip |
nixos/regreet: init
Diffstat (limited to 'nixos/modules/programs/regreet.nix')
-rw-r--r-- | nixos/modules/programs/regreet.nix | 75 |
1 files changed, 75 insertions, 0 deletions
diff --git a/nixos/modules/programs/regreet.nix b/nixos/modules/programs/regreet.nix new file mode 100644 index 000000000000..89b93737f4a2 --- /dev/null +++ b/nixos/modules/programs/regreet.nix @@ -0,0 +1,75 @@ +{ lib +, pkgs +, config +, ... +}: +let + cfg = config.programs.regreet; + settingsFormat = pkgs.formats.toml { }; +in +{ + options.programs.regreet = { + enable = lib.mkEnableOption null // { + description = lib.mdDoc '' + Enable ReGreet, a clean and customizable greeter for greetd. + + To use ReGreet, {option}`services.greetd` has to be enabled and + {option}`services.greetd.settings.default_session` should contain the + appropriate configuration to launch + {option}`config.programs.regreet.package`. For examples, see the + [ReGreet Readme](https://github.com/rharish101/ReGreet#set-as-default-session). + + A minimal configuration that launches ReGreet in {command}`cage` is + enabled by this module by default. + ''; + }; + + package = lib.mkPackageOptionMD pkgs [ "greetd" "regreet" ] { }; + + settings = lib.mkOption { + type = lib.types.either lib.types.path settingsFormat.type; + default = { }; + description = lib.mdDoc '' + ReGreet configuration file. Refer + <https://github.com/rharish101/ReGreet/blob/main/regreet.sample.toml> + for options. + ''; + }; + + extraCss = lib.mkOption { + type = lib.types.either lib.types.path lib.types.lines; + default = ""; + description = lib.mdDoc '' + Extra CSS rules to apply on top of the GTK theme. Refer to + [GTK CSS Properties](https://docs.gtk.org/gtk4/css-properties.html) for + modifiable properties. + ''; + }; + }; + + config = lib.mkIf cfg.enable { + services.greetd = { + enable = lib.mkDefault true; + settings.default_session.command = lib.mkDefault "${lib.getExe pkgs.cage} -s -- ${lib.getExe cfg.package}"; + }; + + environment.etc = { + "greetd/regreet.css" = + if lib.isPath cfg.extraCss + then {source = cfg.extraCss;} + else {text = cfg.extraCss;}; + + "greetd/regreet.toml".source = + if lib.isPath cfg.settings + then cfg.settings + else settingsFormat.generate "regreet.toml" cfg.settings; + }; + + systemd.tmpfiles.rules = let + user = config.services.greetd.settings.default_session.user; + in [ + "d /var/log/regreet 0755 greeter ${user} - -" + "d /var/cache/regreet 0755 greeter ${user} - -" + ]; + }; +} |