{
  mkTarget,
  lib,
  options,
  ...
}:
mkTarget {
  config = lib.optionals (options.services ? vicinae) [
    (
      { colors, polarity }:
      {
        services.vicinae = {
          settings.theme.name = "stylix";
          themes.stylix = {
            meta = {
              name = "stylix";
              description = "theme generated by stylix";
              variant = if polarity == "either" then "light" else polarity;
            };
            colors = with colors.withHashtag; {
              core = {
                background = base00;
                foreground = base05;
                secondary_background = base01;
                border = base02;
                accent = base0D;
              };
              accents = {
                # TODO: magenta and purple shouldn't be the same color
                blue = base0D;
                green = base0B;
                magenta = base0E;
                orange = base09;
                purple = base0E;
                red = base08;
                yellow = base0A;
                cyan = base0C;
              };
              list.item = {
                selection = {
                  background.name = base02;
                  secondary_background = base03;
                };
                hover.background = base01;
              };
            };
          };
        };
      }
    )
    (
      { opacity }:
      {
        services.vicinae.settings.window.opacity = opacity.popups;
      }
    )
  ];
}
