{ theme ? "default" }:

let
  configs = {
    default = {
      global = { background = "#26233a"; foreground = "#e0def4"; };
      urgency_low = { background = "#26273d"; highlight = "#31748f"; };
      urgency_normal = { background = "#362e3c"; highlight = "#f6c177"; };
      urgency_critical = { background = "#362e3c"; highlight = "#eb6f92"; };
    };

    moon = {
      global = { background = "#393552"; foreground = "#e0def4"; };
      urgency_low = { background = "#393955"; highlight = "#3e8fb0"; };
      urgency_normal = { background = "#443c53"; highlight = "#f6c177"; };
      urgency_critical = { background = "#433754"; highlight = "#eb6f92"; };
    };

    dawn = {
      global = { background = "#f2e9e1"; foreground = "#393552"; };
      urgency_low = { background = "#e7e0da"; highlight = "#286983"; };
      urgency_normal = { background = "#3e8fb0"; highlight = "#ea9d34"; };
      urgency_critical = { background = "#ede0d9"; highlight = "#b4637a"; };
    };
  };

  formatWithColor = color: "<b><span foreground='${color}'>%s</span></b>\n%b";

  getConfig = name:
    if name == "moon" then configs.moon
    else if name == "dawn" then configs.dawn
    else configs.default;

  selectedConfig = getConfig theme;

  urgencyIcons = {
    urgency_low = "dialog-information";
    urgency_normal = "dialog-warning";
    urgency_critical = "dialog-error";
  };

  urgencyColors =
    builtins.listToAttrs (map
      (urgency: {
        name = urgency;
        value = rec {
          inherit (selectedConfig.${urgency}) background highlight;
          frame_color = highlight;
          default_icon = urgencyIcons.${urgency};
          format = formatWithColor highlight;
        };
      })
      [ "urgency_low" "urgency_normal" "urgency_critical" ]);
in
{
  global = {
    width = 400;
    offset = "5x5";
    progress_bar_min_width = 380;
    progress_bar_max_width = 380;
    progress_bar_corner_radius = 2;

    padding = 10;
    horizontal_padding = 10;
    frame_width = 1;
    gap_size = 3;
    font = "Monospace 14";

    icon_theme = "rose-pine-icons";
    enable_recursive_icon_lookup = true;
    corner_radius = 2;
  } // selectedConfig.global;
} // urgencyColors