{
  pkgs,
  lib,
  self,
  config,
  ...
}: let
  cfg = config.pim.gnome;
in {
  options.pim.gnome.enable = lib.mkEnableOption "gnome";

  config = lib.mkIf cfg.enable {
    home.packages = with pkgs; [gnome.gnome-tweaks];

    dconf.settings = with lib.hm.gvariant; {
      "org/gnome/desktop/sound".allow-volume-above-100-percent = true;
      "org/gnome/desktop/wm.preferences".num-workspaces = 4;
      "org/gnome/mutter".edge-tiling = true;

      "org/gnome/shell" = {
        disable-extension-version-validation = true;

        enabled-extensions = [
          "workspaces-by-open-apps@favo02.github.com"
          "pop-shell@system76.com"
          "windowIsReady_Remover@nunofarruca@gmail.com"
          "randomwallpaper@iflow.space"
          "Vitals@CoreCoding.com"
          "tailscale-status@maxgallup.github.com"
        ];
      };

      "org/gnome/desktop/input-sources" = {
        sources = [(mkTuple ["xkb" "us"])];
        xkb-options = ["terminate:ctrl_alt_bksp" "caps:escape"];
      };

      "org/gnome/shell/extensions/pop-shell" = {
        active-hint = true;
        fullscreen-launcher = false;
        mouse-cursor-focus-location = mkUint32 4;
        mouse-cursor-follows-active-window = true;
        show-skip-taskbar = false;
        show-title = true;
        smart-gaps = false;
        snap-to-grid = false;
        stacking-with-mouse = true;
        tile-by-default = true;
      };

      "org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom0" = {
        binding = "<Super>t";
        command = lib.getExe config.programs.alacritty.package;
        name = "Terminal";
      };

      "org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom1" = {
        binding = "<Super>e";
        command = "${lib.getExe config.programs.librewolf.package} --browser";
        name = "Browser";
      };

      "org/gnome/desktop/wm/keybindings" = {
        close = ["<Shift><Super>q"];
        minimize = mkEmptyArray type.string;
        move-to-workspace-1 = ["<Shift><Super>1"];
        move-to-workspace-2 = ["<Shift><Super>2"];
        move-to-workspace-3 = ["<Shift><Super>3"];
        move-to-workspace-4 = ["<Shift><Super>4"];
        switch-applications = mkEmptyArray type.string;
        switch-applications-backward = mkEmptyArray type.string;
        switch-to-workspace-1 = ["<Super>1"];
        switch-to-workspace-2 = ["<Super>2"];
        switch-to-workspace-3 = ["<Super>3"];
        switch-to-workspace-4 = ["<Super>4"];
        toggle-fullscreen = ["<Super>f"];
      };

      "org/gnome/shell/extensions/space-iflow-randomwallpaper" = {
        auto-fetch = true;
        change-type = 2;
        hide-panel-icon = true;
        history-length = 1;
        hours = 0;
        minutes = 30;
        sources = ["42"];
        fetch-on-startup = true;
      };

      "org/gnome/shell/extensions/space-iflow-randomwallpaper/sources/general/42".type = 4;
      "org/gnome/shell/extensions/space-iflow-randomwallpaper/sources/localFolder/42".folder = "${self}/wallpapers";
    };
  };
}