{ mkTarget, pkgs, config, lib, ... }: mkTarget { autoEnable = pkgs.stdenv.hostPlatform.isLinux; autoEnableExpr = "pkgs.stdenv.hostPlatform.isLinux"; options = { useWallpaper = config.lib.stylix.mkEnableWallpaper "ReGreet" true; extraCss = lib.mkOption { description = '' Extra code added to `programs.regreet.extraCss` option. ''; type = lib.types.lines; default = ""; example = "window.background { border-radius: 0; }"; }; }; config = [ { warnings = let cfg = config.programs.regreet; in lib.optional ( cfg.enable && # defined in https://github.com/NixOS/nixpkgs/blob/8f3e1f807051e32d8c95cd12b9b421623850a34d/nixos/modules/programs/regreet.nix#L153 config.services.greetd.settings.default_session.command != "${lib.getExe' pkgs.dbus "dbus-run-session"} ${lib.getExe pkgs.cage} ${lib.escapeShellArgs cfg.cageArgs} -- ${lib.getExe cfg.package}" ) "stylix: regreet: custom services.greetd.settings.default_session.command value may not work: ${config.services.greetd.settings.default_session.command}"; programs.regreet.theme = { package = pkgs.adw-gtk3; name = "adw-gtk3"; }; } ( { cfg, colors }: let baseCss = colors { # This is strongly inspired by ../gtk/gtk.mustache. template = ./gtk.css.mustache; extension = ".css"; }; finalCss = pkgs.runCommandLocal "gtk.css" { } '' cat ${baseCss} >>$out echo ${lib.escapeShellArg cfg.extraCss} >>$out ''; in { programs.regreet.extraCss = finalCss.outPath; } ) ( { polarity }: { programs.regreet.settings.GTK.application_prefer_dark_theme = polarity == "dark"; } ) ( { cfg, image }: { programs.regreet.settings.background.path = lib.mkIf cfg.useWallpaper image; } ) ( { cfg, imageScalingMode }: { programs.regreet.settings.background.fit = lib.mkIf cfg.useWallpaper ( if imageScalingMode == "fill" then "Cover" else if imageScalingMode == "fit" then "Contain" else if imageScalingMode == "stretch" then "Fill" # No other available options else null ); } ) ( { fonts }: { programs.regreet.font = { inherit (fonts.sansSerif) name package; }; } ) ( { cursor }: { programs.regreet.cursorTheme = { inherit (cursor) name package; }; } ) ( { polarity, icons }: { programs.regreet.iconTheme = { inherit (icons) package; name = if (polarity == "dark") then icons.dark else icons.light; }; } ) ]; }