{ osConfig, config, pkgs, lib, ... }: with lib; let cfg = config.desktop.gnome; inherit (config.lib.stylix) colors; in { options = { desktop.gnome.enable = mkEnableOption "enable gnome desktop"; }; config = mkIf cfg.enable { home.packages = (with pkgs.gnomeExtensions; [ # extensions alphabetical-app-grid app-icons-taskbar caffeine pano removable-drive-menu space-bar switcher tactile window-is-ready-remover ]) ++ (with pkgs; [ # regular packages junction celluloid mission-center dconf pwvucontrol wl-clipboard ]); programs.gnome-shell.extensions = [ {package = pkgs.gnomeExtensions.alphabetical-app-grid;} {package = pkgs.gnomeExtensions.app-icons-taskbar;} {package = pkgs.gnomeExtensions.caffeine;} {package = pkgs.gnomeExtensions.pano;} {package = pkgs.gnomeExtensions.removable-drive-menu;} {package = pkgs.gnomeExtensions.space-bar;} {package = pkgs.gnomeExtensions.switcher;} {package = pkgs.gnomeExtensions.tactile;} {package = pkgs.gnomeExtensions.window-is-ready-remover;} ]; gtk = { enable = true; iconTheme = let name = if (lib.strings.hasPrefix "gruvbox" osConfig.module.stylix.theme) then "Gruvbox-Plus-Dark" else if config.stylix.polarity == "dark" then "Papirus-Dark" else "Papirus-Light"; package = if (lib.strings.hasPrefix "gruvbox" osConfig.module.stylix.theme) then pkgs.gruvbox-plus-icons else if (lib.strings.hasPrefix "rose-pine" osConfig.module.stylix.theme) then pkgs.papirus-icon-theme.override {color = "indigo";} else if (lib.strings.hasPrefix "nord" osConfig.module.stylix.theme) then pkgs.papirus-icon-theme.override {color = "nordic";} else pkgs.papirus-icon-theme; in {inherit name package;}; }; qt = { enable = true; platformTheme.name = lib.mkForce "adwaita"; }; dconf.settings = with lib.hm.gvariant; { "org/gnome/desktop/a11y/applications" = { screen-reader-enabled = false; }; "org/gnome/desktop/app-folders/folders/Utilities" = { apps = ["org.gnome.baobab.desktop" "org.gnome.FileRoller.desktop" "org.gnome.DiskUtility.desktop" "org.gnome.Connections.desktop" "org.gnome.seahorse.Application.desktop" "org.gnome.Loupe.desktop" "org.gnome.Evince.desktop" "org.gnome.font-viewer.desktop" "org.freedesktop.GnomeAbrt.desktop" "nm-connection-editor.desktop" "org.gnome.DejaDup.desktop" "org.gnome.tweaks.desktop" "org.gnome.Usage.desktop"]; categories = ["X-GNOME-Utilities"]; name = "X-GNOME-Utilities.directory"; translate = true; }; "org/gnome/desktop/input-sources" = { mru-sources = [(mkTuple ["xkb" "us"])]; # sources = [(mkTuple ["xkb" "us"]) (mkTuple ["xkb" "ua"]) (mkTuple ["xkb" "us+colemak_dh"])]; xkb-options = ["terminate:ctrl_alt_bksp"]; }; "org/gnome/desktop/interface" = { # accent-color = "slate"; clock-show-seconds = true; color-scheme = "prefer-dark"; enable-animations = true; gtk-enable-primary-paste = false; scaling-factor = mkUint32 1; toolbar-style = "text"; toolkit-accessibility = false; }; "org/gnome/desktop/peripherals/mouse" = { accel-profile = "flat"; }; "org/gnome/desktop/peripherals/keyboard" = { delay = 250; repeat-interval = 25; }; "org/gnome/desktop/peripherals/touchpad" = { two-finger-scrolling-enabled = true; }; "org/gnome/desktop/search-providers" = { disabled = ["org.gnome.Epiphany.desktop"]; sort-order = ["org.gnome.Settings.desktop" "org.gnome.Contacts.desktop" "org.gnome.Nautilus.desktop"]; }; "org/gnome/desktop/wm/keybindings" = { close = ["q"]; move-to-monitor-down = ["Down"]; move-to-monitor-left = ["Left"]; move-to-monitor-right = ["Right"]; move-to-monitor-up = ["Up"]; move-to-workspace-1 = ["1"]; move-to-workspace-2 = ["2"]; move-to-workspace-3 = ["3"]; move-to-workspace-4 = ["4"]; move-to-workspace-5 = ["5"]; move-to-workspace-last = ["End"]; move-to-workspace-left = ["Left"]; move-to-workspace-right = ["Right"]; switch-input-source = ["Space"]; switch-input-source-backward = ["Space"]; switch-to-workspace-1 = ["1"]; switch-to-workspace-2 = ["2"]; switch-to-workspace-3 = ["3"]; switch-to-workspace-4 = ["4"]; switch-to-workspace-left = ["Left"]; switch-to-workspace-right = ["Right"]; }; "org/gnome/desktop/wm/preferences" = { auto-raise = true; button-layout = "icon:close"; }; "org/gnome/epiphany" = { ask-for-default = false; }; "org/gnome/mutter" = { dynamic-workspaces = true; experimental-features = ["scale-monitor-framebuffer"]; workspaces-only-on-primary = true; }; "org/gnome/nm-applet" = { disable-connected-notifications = true; }; "org/gnome/settings-daemon/plugins/color" = { night-light-enabled = true; night-light-schedule-automatic = false; }; "org/gnome/shell" = { enabled-extensions = [ "AlphabeticalAppGrid@stuarthayhurst" "appindicatorsupport@rgcjonas.gmail.com" "aztaskbar@aztaskbar.gitlab.com" "caffeine@patapon.info" "drive-menu@gnome-shell-extensions.gcampax.github.com" "pano@elhan.io" "space-bar@luchrioh" "switcher@landau.fi" "tactile@lundal.io" "user-theme@gnome-shell-extensions.gcampax.github.com" ]; }; "org/gnome/shell/app-switcher" = { current-workspace-only = true; }; "org/gnome/shell/extensions/caffeine" = { indicator-position-max = 1; }; "org/gnome/shell/extensions/space-bar/appearance" = { application-styles = ".space-bar {n -natural-hpadding: 12px;n}nn.space-bar-workspace-label.active {n margin: 0 4px;n background-color: rgba(255,255,255,0.3);n color: rgba(255,255,255,1);n border-color: rgba(0,0,0,0);n font-weight: 700;n border-radius: 4px;n border-width: 0px;n padding: 3px 8px;n}nn.space-bar-workspace-label.inactive {n margin: 0 4px;n background-color: rgba(0,0,0,0);n color: rgba(255,255,255,1);n border-color: rgba(0,0,0,0);n font-weight: 700;n border-radius: 4px;n border-width: 0px;n padding: 3px 8px;n}nn.space-bar-workspace-label.inactive.empty {n margin: 0 4px;n background-color: rgba(0,0,0,0);n color: rgba(255,255,255,0.5);n border-color: rgba(0,0,0,0);n font-weight: 700;n border-radius: 4px;n border-width: 0px;n padding: 3px 8px;n}"; }; "org/gnome/shell/extensions/space-bar/behavior" = { show-empty-workspaces = false; }; "org/gnome/shell/extensions/switcher" = { activate-after-ms = mkUint32 0; activate-by-key = mkUint32 1; fade-enable = true; font-size = mkUint32 24; icon-size = mkUint32 24; max-width-percentage = mkUint32 60; only-current-workspace = true; show-executables = false; show-switcher = ["space"]; workspace-indicator = true; }; "org/gnome/shell/extensions/aztaskbar" = with lib.hm.gvariant; { favorites = true; icon-size = 25; icon-style = "REGULAR"; # intellihide = true; main-panel-height = mkTuple [true 40]; position-offset = 4; prefs-visible-page = ""; show-apps-button = mkTuple [true 0]; show-panel-activities-button = true; show-weather-by-clock = "LEFT"; taskbar-spacing = 2; # update-notifier-project-version = 30; }; "org/gnome/shell/extensions/tactile" = { background-color = "#${colors.base00}"; border-color = "#${colors.base0D}"; border-size = 3; col-3 = 0; gap-size = 6; layout-2-col-1 = 1; layout-2-row-2 = 0; layout-3-col-1 = 2; layout-3-col-2 = 1; layout-3-col-3 = 0; layout-3-row-2 = 0; monitor-1-layout = 3; text-color = "#${colors.base05}"; tile-0-2 = ["z"]; tile-1-1 = ["r"]; tile-1-2 = ["x"]; tile-2-0 = ["f"]; tile-2-1 = ["s"]; tile-2-2 = ["c"]; tile-3-0 = ["p"]; tile-3-1 = ["t"]; tile-3-2 = ["d"]; }; "org/gnome/software" = { download-updates = false; download-updates-notify = false; first-run = false; }; "org/gnome/tweaks" = { show-extensions-notice = false; }; }; }; }