{
  pkgs,
  config,
  ...
}: let
  gruvboxPlus = import ./gruvbox-plus.nix {inherit pkgs;};
in let
  cssContent = with config.colorScheme.palette; ''
    @define-color accent_color #${base0D};
    @define-color accent_bg_color mix(#${base0D}, #${base00},0.3);
    @define-color accent_fg_color #${base00};
    @define-color destructive_color #${base0C};
    @define-color destructive_bg_color mix(#${base0C}, #${base00},0.3);
    @define-color destructive_fg_color #${base00};
    @define-color success_color #${base0B};
    @define-color success_bg_color mix(#${base0B}, black,0.6);
    @define-color success_fg_color #${base00};
    @define-color warning_color #${base0A};
    @define-color warning_bg_color mix(#${base0A}, black,0.6);
    @define-color warning_fg_color rgba(0, 0, 0, 0.8);
    @define-color error_color #${base08};
    @define-color error_bg_color mix(#${base0C}, #${base00},0.3);
    @define-color error_fg_color #${base02};
    @define-color window_bg_color #${base00};
    @define-color window_fg_color #${base04};
    @define-color view_bg_color #${base00};
    @define-color view_fg_color #${base04};
    @define-color headerbar_bg_color mix(#${base00},black,0.2);
    @define-color headerbar_fg_color #${base04};
    @define-color headerbar_border_color #${base00};
    @define-color headerbar_backdrop_color @window_bg_color;
    @define-color headerbar_shade_color rgba(0, 0, 0, 0.36);
    @define-color card_bg_color rgba(255, 255, 255, 0.08);
    @define-color card_fg_color #${base04};
    @define-color card_shade_color rgba(0, 0, 0, 0.36);
    @define-color dialog_bg_color #${base00};
    @define-color dialog_fg_color #${base04};
    @define-color popover_bg_color #${base00};
    @define-color popover_fg_color #${base04};
    @define-color shade_color rgba(0,0,0,0.36);
    @define-color scrollbar_outline_color rgba(0,0,0,0.5);
    @define-color blue_1 #${base0D};
    @define-color blue_2 #${base0D};
    @define-color blue_3 #${base0D};
    @define-color blue_4 #${base0D};
    @define-color blue_5 #${base0D};
    @define-color green_1 #${base0B};
    @define-color green_2 #${base0B};
    @define-color green_3 #${base0B};
    @define-color green_4 #${base0B};
    @define-color green_5 #${base0B};
    @define-color yellow_1 #${base0A};
    @define-color yellow_2 #${base0A};
    @define-color yellow_3 #${base0A};
    @define-color yellow_4 #${base0A};
    @define-color yellow_5 #${base0A};
    @define-color orange_1 #${base09};
    @define-color orange_2 #${base09};
    @define-color orange_3 #${base09};
    @define-color orange_4 #${base09};
    @define-color orange_5 #${base09};
    @define-color red_1 #${base08};
    @define-color red_2 #${base08};
    @define-color red_3 #${base08};
    @define-color red_4 #${base08};
    @define-color red_5 #${base08};
    @define-color purple_1 #${base0E};
    @define-color purple_2 #${base0E};
    @define-color purple_3 #${base0E};
    @define-color purple_4 #${base0E};
    @define-color purple_5 #${base0E};
    @define-color brown_1 #${base0F};
    @define-color brown_2 #${base0F};
    @define-color brown_3 #${base0F};
    @define-color brown_4 #${base0F};
    @define-color brown_5 #${base0F};
    @define-color light_1 #${base00};
    @define-color light_2 #f6f5f4;
    @define-color light_3 #deddda;
    @define-color light_4 #c0bfbc;
    @define-color light_5 #9a9996;
    @define-color dark_1 mix(#${base00},white,0.5);
    @define-color dark_2 mix(#${base00},white,0.2);
    @define-color dark_3 #${base00};
    @define-color dark_4 mix(#${base00},black,0.2);
    @define-color dark_5 mix(#${base00},black,0.4);
  '';
in {
  home.file = {
    ".local/share/icons/GruvboxPlus".source = "${gruvboxPlus}";
  };

  home.pointerCursor.name = "Bibata-Modern-Ice";
  home.pointerCursor.package = pkgs.bibata-cursors;
    
  gtk.enable = true;

  gtk.theme.package = pkgs.adw-gtk3;
  gtk.theme.name = "adw-gtk3";

  gtk.cursorTheme.package = pkgs.bibata-cursors;
  gtk.cursorTheme.name = "Bibata-Modern-Ice";
  gtk.cursorTheme.size = 24;

  gtk.iconTheme.package = gruvboxPlus;
  gtk.iconTheme.name = "GruvboxPlus";

  xdg.configFile."gtk-4.0/gtk.css" = {
    text = cssContent;
  };

  xdg.configFile."gtk-3.0/gtk.css" = {
    text = cssContent;
  };
  qt.enable = true;
  qt.platformTheme.name= "gtk3";
  qt.style.name = "Gruvbox";
  }