{
  lib,
  config,
  pkgs,
  options,
  inputs,
  ...
}:
{
  options.mods = {
    hyprland = {
      anyrun = {
        enable = lib.mkOption {
          default = true;
          example = false;
          type = lib.types.bool;
          description = "Enables anyrun";
        };
        useDefaultConfig = lib.mkOption {
          default = true;
          example = false;
          type = lib.types.bool;
          description = ''
            Use preconfigured anyrun config.
          '';
        };
        customConfig = lib.mkOption {
          default = { };
          example = { };
          type = with lib.types; attrsOf anything;
          description = ''
            Custom anyrun configuration.
            Will be merged with default configuration if enabled.
          '';
        };
        useDefaultCss = lib.mkOption {
          default = true;
          example = false;
          type = lib.types.bool;
          description = ''
            Use preconfigured anyrun css.
          '';
        };
        customCss = lib.mkOption {
          default = '''';
          example = ''
            #window {
              border-radius: none;
            }
          '';
          type = lib.types.lines;
          description = ''
            Custom anyrun css.
            Will be merged with default css if enabled.
          '';
        };
      };
    };
  };

  config = lib.mkIf config.mods.hyprland.anyrun.enable (
    lib.optionalAttrs (options ? programs.anyrun) {
      programs.anyrun = {
        enable = true;
        config =
          if config.mods.hyprland.anyrun.useDefaultConfig then
            {
              plugins = [
                inputs.anyrun.packages.${pkgs.system}.applications
                inputs.anyrun.packages.${pkgs.system}.rink
                inputs.anyrun.packages.${pkgs.system}.translate
                inputs.anyrun.packages.${pkgs.system}.websearch
              ];
              #position = "center";
              hideIcons = false;
              width = {
                fraction = 0.3;
              };
              y = {
                fraction = 0.5;
              };
              layer = "overlay";
              hidePluginInfo = true;
              closeOnClick = true;
            }
            // config.mods.hyprland.anyrun.customConfig
          else
            config.mods.hyprland.anyrun.customConfig;

        extraCss =
          if config.mods.hyprland.anyrun.useDefaultCss then
            ''
              #window {
                border-radius: 10px;
                background-color: none; 
              }

              box#main {
                border-radius: 10px;
              }

              list#main {
                border-radius: 10px;
                margin: 0px 10px 10px 10px;
              }

              list#plugin {
                border-radius: 10px;
              }

              list#match {
                border-radius: 10px;
              }

              entry#entry {
                border: none;
                border-radius: 10px;
                margin: 10px 10px 0px 10px;
              }

              label#match-desc {
                font-size: 12px;
                border-radius: 10px;
              }

              label#match-title {
                font-size: 12px;
                border-radius: 10px;
              }

              label#plugin {
                font-size: 16px;
                border-radius: 10px;
              }

              * {
                border-radius: 10px;
              }
            ''
            + config.mods.hyprland.anyrun.customCss
          else
            config.mods.hyprland.anyrun.customCss;
      };
    }
  );
}
