{ config, lib, pkgs, ... }:
{
  imports = [ ./scripts ];

  config = lib.mkIf config.home.desktop.enable {
    programs.rofi = {
      enable = true;
      package = pkgs.rofi-wayland;
      terminal = "foot";
      font = "${config.look.fonts.main} 14";
      theme = let
        inherit (config.lib.formats.rasi) mkLiteral;
      in {
        "*" = {
          lightbg = mkLiteral "#EEE8D5";
          lightfg = mkLiteral "#586875";
          blue = mkLiteral "#268BD2";
          red = mkLiteral "#DC322F";
          background-color = mkLiteral "#00000000";
          separatorcolor = mkLiteral "#00000000";
          normal-foreground = mkLiteral "#${config.look.colors.text}";
          normal-background = mkLiteral "#${config.look.colors.dark}1A";
          urgent-foreground = mkLiteral "#${config.look.colors.urgent}";
          active-foreground = mkLiteral "#${config.look.colors.split}";
          selected-active-foreground = mkLiteral "#${config.look.colors.prime}";
          background = mkLiteral "#${config.look.colors.dark}D9";
          bordercolor = mkLiteral "#${config.look.colors.prime}";
          selected-normal-foreground = mkLiteral "#FFFFFF";
          selected-normal-background = mkLiteral "#${config.look.colors.prime}80";
          border-color = mkLiteral "#${config.look.colors.prime}";
          urgent-background = mkLiteral "#${config.look.colors.accent}26";
          active-background = mkLiteral "#${config.look.colors.accent}26";
          selected-active-background = mkLiteral "#${config.look.colors.split}54";
        };
        "#window" = {
          background-color = mkLiteral "@background";
          width = 500;
          border = mkLiteral "${config.look.border.string}";
          padding = 5;
        };
        "#message" = {
          border = mkLiteral "1px dash 0px 0px";
          border-color = mkLiteral "@separatorcolor";
          padding = 1;
        };
        "#textbox" = {
          text-color = mkLiteral "@normal-foreground";
        };
        "#listview" = {
          fixed-height = 0;
          border-color = mkLiteral "@separatorcolor";
          scrollbar = mkLiteral "false";
          columns = 2;
        };
        "#element" = {
          border = 0;
          padding = 1;
        };
        "#element-text" = {
          background-color = mkLiteral "inherit";
          text-color = mkLiteral "inherit";
        };
        "#element.normal.normal" = {
          text-color = mkLiteral "@normal-foreground";
        };
        "#element.normal.urgent" = {
          text-color = mkLiteral "@urgent-foreground";
        };
        "#element.normal.active" = {
          background-color = mkLiteral "@active-background";
          text-color = mkLiteral "@active-foreground";
        };
        "#element.selected.normal" = {
          background-color = mkLiteral "@selected-normal-background";
          text-color = mkLiteral "@selected-normal-foreground";
        };
        "#element.selected.urgent" = {
          background-color = mkLiteral "@urgent-background";
          text-color = mkLiteral "@urgent-foreground";
        };
        "#element.selected.active" = {
          background-color = mkLiteral "@selected-active-background";
          text-color = mkLiteral "@selected-active-foreground";
        };
        "#element.alternate.normal" = {
          text-color = mkLiteral "@normal-foreground";
        };
        "#element.alternate.urgent" = {
          text-color = mkLiteral "@urgent-foreground";
        };
        "#element.alternate.active" = {
          background-color = mkLiteral "@active-background";
          text-color = mkLiteral "@active-foreground";
        };
        "#mode-switcher" = {
          border = mkLiteral "2px dash 0px 0px";
          border-color = mkLiteral "@separatorcolor";
        };
        "#button.selected" = {
          background-color = mkLiteral "@selected-normal-background";
          text-color = mkLiteral "@selected-normal-foreground";
        };
        "#case-indicator" = {
          spacing = mkLiteral "0";
          text-color = mkLiteral "@normal-foreground";
        };
        "#entry" = {
          spacing = 0;
          text-color = mkLiteral "@normal-foreground";
        };
        "#prompt" = {
          spacing = 0;
          text-color = mkLiteral "@normal-foreground";
        };
        "#inputbar" = {
          spacing = 0;
          text-color = mkLiteral "@normal-foreground";
          padding = 1;
          children = map mkLiteral [ "prompt" "textbox-prompt-colon" "entry"];
        };
        "#textbox-prompt-colon" = {
          expand = false;
          str = ":";
          margin = mkLiteral "0px 0.3em 0em 0em";
          text-color = mkLiteral "@normal-foreground";
        };
      };
    };

    home.packages = with pkgs; [
      bemoji
      rofi-bluetooth
    ];
  };
}
