{
  mkTarget,
  lib,
  options,
  ...
}:
mkTarget {
  config =
    let
      eachConfig =
        config:
        lib.genAttrs [ "services" "programs" ] (
          source: lib.optionalAttrs (options.${source} ? vicinae) { vicinae = config; }
        );
    in
    [
      (
        { colors, polarity }:
        eachConfig {
          settings.theme = {
            light.name = "stylix";
            dark.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 }: eachConfig { settings.launcher_window.opacity = opacity.popups; })
    ];
}
