{ pkgs, lib, ... }: let logoMenuExtension = pkgs.gnomeExtensions.logo-menu.overrideAttrs (old: { version = "38"; src = pkgs.fetchzip { url = "https://extensions.gnome.org/extension-data/logomenuaryan_k.v38.shell-extension.zip"; hash = "sha256-GdGn7YKfOOEM0kV1Gd9H5c1KKjs/+/4XCsxO2pFdqu4="; stripRoot = false; }; patches = (old.patches or [ ]) ++ [ ./patches/logo-menu-custom-menu.patch ]; }); in { xdg.portal = { enable = true; config = { common = { # Use GTK portal for file chooser to avoid hard dependency on Nautilus. default = "gnome"; "org.freedesktop.impl.portal.FileChooser" = "gtk"; }; }; extraPortals = [ pkgs.xdg-desktop-portal-gnome pkgs.xdg-desktop-portal-gtk ]; }; services.displayManager.gdm.enable = true; services.desktopManager.gnome.enable = true; # Virtual filesystem backend for Nautilus: mounting, trash, network shares. services.gvfs.enable = true; services.gnome.core-developer-tools.enable = false; services.gnome.games.enable = false; programs.dconf = { enable = true; profiles.user.databases = [ { settings = { "org/gnome/shell" = { disable-user-extensions = false; favorite-apps = [ "org.gnome.Nautilus.desktop" "org.gnome.Ptyxis.desktop" "com.ranfdev.DistroShelf.desktop" "io.github.kolunmi.Bazaar.desktop" ]; enabled-extensions = [ "all-in-one-clipboard@NiffirgkcaJ.github.com" "AlphabeticalAppGrid@stuarthayhurst" "app-hider@lynith.dev" "blur-my-shell@aunetx" "caffeine@patapon.info" "logomenu@aryan_k" "restartto@tiagoporsch.github.io" "status-tray@keithvassallo.com" ]; }; "org/gnome/desktop/interface" = { icon-theme = "Papirus-Dark"; gtk-theme = "Adwaita-dark"; color-scheme = "prefer-dark"; }; "org/gnome/desktop/wm/preferences" = { button-layout = "appmenu:minimize,maximize,close"; }; "org/gnome/desktop/search-providers" = { enabled = [ "io.github.kolunmi.Bazaar.desktop" "org.gnome.Settings.desktop" "org.gnome.clocks.desktop" "org.gnome.seahorse.Application.desktop" ]; }; "org/gnome/shell/extensions/logo-menu" = { menu-button-icon-image = lib.gvariant.mkInt32 51; menu-button-terminal = "ptyxis"; menu-button-system-monitor = "missioncenter"; menu-button-extensions-app = "com.mattjakeman.ExtensionManager.desktop"; hide-softwarecentre = true; }; }; } ]; }; environment.systemPackages = lib.mkAfter [ pkgs.gnome-browser-connector pkgs.gnome-extension-manager pkgs.mission-center pkgs.papirus-icon-theme pkgs.file-roller pkgs.unrar pkgs.gnomeExtensions.all-in-one-clipboard pkgs.gnomeExtensions.alphabetical-app-grid pkgs.gnomeExtensions.app-hider pkgs.gnomeExtensions.apps pkgs.gnomeExtensions.blur-my-shell pkgs.gnomeExtensions.caffeine logoMenuExtension pkgs.gnomeExtensions.places-status-indicator pkgs.gnomeExtensions.restart-to ]; environment.gnome.excludePackages = [ # comment out to include pkgs.gnome-tour pkgs.gnome-user-docs pkgs.gnome-software # baobab # disk usage analyzer pkgs.decibels # audio player pkgs.epiphany # web browser pkgs.geary # email client # gnome-text-editor # text editor # gnome-backgrounds pkgs.gnome-calculator pkgs.gnome-calendar pkgs.gnome-characters # gnome-clocks pkgs.gnome-console pkgs.gnome-contacts # gnome-font-viewer # gnome-logs pkgs.gnome-maps pkgs.gnome-music pkgs.gnome-system-monitor pkgs.gnome-weather pkgs.loupe pkgs.papers # gnome-connections pkgs.showtime pkgs.simple-scan pkgs.snapshot pkgs.yelp ]; }