{ config, lib, ... }:
with lib;
let
  cfg = config.eboskma.programs.picom;
in
{
  options.eboskma.programs.picom = {
    enable = mkEnableOption "activate picom";
  };

  config = mkIf cfg.enable {
    # home.packages = [pkgs.nixgl.auto.nixGLDefault];

    services.picom = {
      enable = true;

      backend = "glx";
      vSync = true;

      fade = false;
      fadeSteps = [
        8.0e-2
        8.0e-2
      ];

      shadow = true;

      inactiveOpacity = 0.9;

      opacityRules = [
        "0:_NET_WM_STATE@[*]:32a = '_NET_WM_STATE_HIDDEN'"
        "100:fullscreen"
        "100:name = 'Zoom Meeting'"
        "100:name = 'zoom_linux_float_video_window'"
        "100:class_g = 'Rofi'"
        "100:class_g = 'mpv'"
        "100:window_type = 'combo'"
        "100:window_type = 'dock'"
        "100:window_type = 'dropdown_menu'"
        "100:window_type = 'menu'"
        "100:window_type = 'popup_menu'"
        "100:window_type = 'splash'"
        "100:window_type = 'tooltip'"
        "100:window_type = 'utility'"
        "90:!focused"
      ];

      settings = {
        unredir-if-possible = false;
        mark-ovredir-focused = true;
        use-ewmh-active-win = true;
        blur = {
          method = "dual_kawase";
          size = 10;
          deviation = 5.0;
        };
        inactive-dim = 0.1;

        wintypes = {
          dock = {
            shadow = false;
          };
          dnd = {
            shadow = false;
          };
          popup_menu = {
            shadow = false;
            opacity = 1.0;
          };
          dropdown_menu = {
            shadow = false;
            opacity = 1.0;
          };
        };
      };
    };
  };
}