{ inputs, config, lib, pkgs, ... }:

with lib;
with lib.my;
let cfg = config.modules.desktop.themes.gtk;
in {
  options.modules.desktop.themes.gtk = { enable = mkBoolOpt false; };

  config = mkIf cfg.enable {

    systemd.packages = [ pkgs.dconf ];

    services.dbus.packages = with pkgs; [ dconf ];

    home-manager.users.${config.user.name} = {

      gtk = {
        enable = true;
        theme = { name = "gruvbox-dark"; };
        iconTheme = { name = "gruvbox-dark"; };
      };

      home = {

        pointerCursor = {
          package = pkgs.unstable.paper-icon-theme;
          name = "Paper";
          size = 24;
          gtk.enable = true;
          x11.enable = true;
        };

        file = {
          ".themes/gruvbox-dark" = {
            source = "${inputs.gruvbox-gtk-theme}/themes/Gruvbox-Dark-BL";
          };
          ".icons/gruvbox-dark" = {
            source = "${inputs.gruvbox-gtk-theme}/icons/Gruvbox-Dark";
          };
        };
      };
    };
  };
}
