{ config, pkgs, lib, ... }: let inherit (config.rose-pine) sources; cfg = config.services.mako.rose-pine; enable = cfg.enable && config.services.mako.enable; themeName = if (cfg.flavor == "main") then "rose-pine" else "rose-pine-${cfg.flavor}"; theme = lib.rp.fromINI (sources.mako + "/theme/${themeName}.theme"); # Settings that need to be extracted and put in extraConfig extraConfigAttrs = lib.attrsets.getAttrs ["urgency=high"] theme; in { options.services.mako.rose-pine = lib.rp.mkRosePineOpt {name = "mako";}; # Will cause infinite recursion if config.services.mako is directly set as a # whole. config.services.mako = lib.mkIf enable { backgroundColor = theme.background-color; textColor = theme.text-color; borderColor = theme.border-color; progressColor = theme.progress-color; extraConfig = builtins.readFile ( (pkgs.formats.ini {}).generate "mako-extra-config" extraConfigAttrs ); }; }