{ pkgs, lib, flake, 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 = "t"; command = lib.getExe config.programs.alacritty.package; name = "Terminal"; }; "org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom1" = { binding = "e"; command = "${lib.getExe config.programs.librewolf.package} --browser"; name = "Browser"; }; "org/gnome/desktop/wm/keybindings" = { close = ["q"]; minimize = mkEmptyArray type.string; move-to-workspace-1 = ["1"]; move-to-workspace-2 = ["2"]; move-to-workspace-3 = ["3"]; move-to-workspace-4 = ["4"]; switch-applications = mkEmptyArray type.string; switch-applications-backward = mkEmptyArray type.string; switch-to-workspace-1 = ["1"]; switch-to-workspace-2 = ["2"]; switch-to-workspace-3 = ["3"]; switch-to-workspace-4 = ["4"]; toggle-fullscreen = ["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 = "${flake}/wallpapers"; }; }; }