{
  lib,
  config,
  pkgs,
  ...
}:
let
  cfg = config.krop.hm.desktop.gnome;
in
{
  options.krop.hm.desktop.gnome = {
    enable = lib.mkOption {
      type = lib.types.bool;
      default = false;
      example = true;
      description = "Enable my gnome configuration";
    };
  };
  config = lib.mkIf cfg.enable {
    home.pointerCursor = {
      name = "Adwaita";
      package = pkgs.adwaita-icon-theme;
      gtk.enable = true;
      x11.enable = true;
      size = 24;
    };

    home.packages = with pkgs; [
      gnomeExtensions.grand-theft-focus
      gnomeExtensions.vitals
      gnomeExtensions.appindicator
    ];
    dconf = {
      settings = {
        "org/gnome/shell" = {
          disable-user-extensions = false;
          enabled-extensions = with pkgs.gnomeExtensions; [
            grand-theft-focus.extensionUuid
            vitals.extensionUuid
            appindicator.extensionUuid
          ];
          favorite-apps = [
            "firefox.desktop"
            "Alacritty.desktop"
            "thunderbird.desktop"
            "org.gnome.Nautilus.desktop"
          ];
        };
        "org/gnome/desktop/interface" = {
          color-scheme = "prefer-dark";
          accent-color = "red";
          show-battery-percentage = true;
          gtk-enable-primary-paste = false;
        };
        "org/gnome/mutter" = {
          dynamic-workspaces = true;
          edge-tiling = true;
          workspaces-only-on-primary = true;
        };
        "org/gnome/desktop/peripherals/touchpad" = {
          natural-scroll = false;
          click-method = "areas";
        };
        "org/gnome/desktop/wm/preferences" = {
          button-layout = "appmenu:minimize,maximize,close";
          resize-with-right-button = true;
        };
        "org/gnome/desktop/sound" = {
          event-sounds = false;
        };
        "org/gnome/desktop/search-providers" = {
          disabled = [
            "org.gnome.Contacts.desktop"
            "org.gnome.Calculator.desktop"
            "org.gnome.Calendar.desktop"
            "org.gnome.Characters.desktop"
            "org.gnome.clocks.desktop"
            "org.gnome.Software.desktop"
          ];
        };
        "org/gnome/shell/extensions/vitals" = {
          position-in-panel = 0;
          show-battery = true;
          icon-style = 1;
          hot-sensors = [
            "__temperature_max__"
            "_memory_available_"
            "_storage_free_"
          ];
        };
        "org/gnome/desktop/background" =
          let
            bgPath = "file://${./assets/nyan_cat.jpg}";
          in
          {
            picture-options = "zoom";
            picture-uri = bgPath;
            picture-uri-dark = bgPath;
          };
      };
    };

    gtk = {
      enable = true;
      theme = {
        name = "Adwaita-dark";
        package = pkgs.gnome-themes-extra;
      };
      gtk3.extraConfig = {
        gtk-application-prefer-dark-theme = 1;
      };
      gtk4.extraConfig = {
        gtk-application-prefer-dark-theme = 1;
      };
    };

    qt = {
      enable = true;
      platformTheme.name = "Adwaita-dark";
      style = {
        name = "Adwaita-dark";
        package = pkgs.adwaita-qt;
      };
    };

    xdg.portal = {
      enable = true;
      extraPortals = with pkgs; [ xdg-desktop-portal-gtk ];
      configPackages = with pkgs; [ xdg-desktop-portal-gtk ];
    };
  };
}