{ config , pkgs , lib , ... }: { dconf.settings = { # Desktop interface settings "org/gnome/desktop/interface" = { color-scheme = "prefer-dark"; enable-hot-corners = false; clock-show-weekday = true; show-battery-percentage = true; icon-theme = "Papirus-Dark"; cursor-theme = "Bibata-Modern-Classic"; }; "org/gnome/desktop/input-sources" = { sources = [ (lib.gvariant.mkTuple [ "xkb" "gb" ]) ]; xkb-options = [ "terminate:ctrl_alt_bksp" ]; }; # Window manager preferences "org/gnome/desktop/wm/preferences" = { button-layout = "appmenu:minimize,maximize,close"; num-workspaces = 4; }; # Keybindings "org/gnome/desktop/wm/keybindings" = { close = [ "q" ]; switch-to-workspace-1 = [ "1" ]; switch-to-workspace-2 = [ "2" ]; switch-to-workspace-3 = [ "3" ]; switch-to-workspace-4 = [ "4" ]; move-to-workspace-1 = [ "1" ]; move-to-workspace-2 = [ "2" ]; move-to-workspace-3 = [ "3" ]; move-to-workspace-4 = [ "4" ]; }; # Shell settings "org/gnome/shell" = { favorite-apps = [ "firefox.desktop" "kitty.desktop" "org.gnome.Nautilus.desktop" "thunderbird.desktop" "chromium-browser.desktop" ]; enabled-extensions = [ "user-theme@gnome-shell-extensions.gcampax.github.com" "appindicatorsupport@rgcjonas.gmail.com" "caffeine@patapon.info" "screen-rotate@shyzus.github.io" "gsconnect@andyholmes.github.io" ]; }; # Mutter (window manager) settings "org/gnome/mutter" = { dynamic-workspaces = false; edge-tiling = true; workspaces-only-on-primary = true; }; # File manager (Nautilus) settings "org/gnome/nautilus/preferences" = { default-folder-viewer = "list-view"; search-filter-time-type = "last_modified"; show-hidden-files = true; }; # Power settings "org/gnome/settings-daemon/plugins/power" = { sleep-inactive-ac-type = "nothing"; sleep-inactive-battery-timeout = 1800; }; # Privacy settings "org/gnome/desktop/privacy" = { remember-recent-files = true; remove-old-temp-files = true; remove-old-trash-files = true; }; # Session settings "org/gnome/desktop/session" = { idle-delay = lib.gvariant.mkUint32 900; # 15 minutes }; # Screensaver settings "org/gnome/desktop/screensaver" = { lock-enabled = true; lock-delay = lib.gvariant.mkUint32 0; }; # Caffeine extension settings "org/gnome/shell/extensions/caffeine" = { enable-fullscreen = true; restore-state = true; show-indicator = "always"; show-notifications = false; }; }; # GNOME-specific packages home.packages = with pkgs; [ gnome-tweaks gnomeExtensions.appindicator gnomeExtensions.user-themes gnomeExtensions.caffeine gnomeExtensions.gsconnect dconf-editor catppuccin-gtk papirus-icon-theme bibata-cursors ]; # GTK theme configuration gtk = { enable = true; gtk4.theme = config.gtk.theme; theme = { name = "catppuccin-frappe-blue-standard"; package = pkgs.catppuccin-gtk; }; iconTheme = { name = "Papirus-Dark"; package = pkgs.papirus-icon-theme; }; cursorTheme = { name = "Bibata-Modern-Classic"; package = pkgs.bibata-cursors; }; }; # Home Manager cursor configuration home.pointerCursor = { enable = true; name = "Bibata-Modern-Classic"; package = pkgs.bibata-cursors; gtk.enable = true; x11.enable = true; }; home.file."Pictures/wallpapers/tokyo-night.png".source = ../../assets/wallpapers/tokyo-night.png; # Set initial default wallpaper on first install if user hasn't configured a custom wallpaper yet. # If the user changes their wallpaper via GNOME Settings, dconf read detects it and leaves it untouched across reboots/updates. home.activation.setInitialWallpaper = lib.hm.dag.entryAfter [ "dconf" ] '' WALLPAPER="${config.home.homeDirectory}/Pictures/wallpapers/tokyo-night.png" VAL="$(${pkgs.dconf}/bin/dconf read /org/gnome/desktop/background/picture-uri 2>/dev/null || true)" if [ -z "$VAL" ]; then $DRY_RUN_CMD ${pkgs.dconf}/bin/dconf write /org/gnome/desktop/background/picture-uri "'file://$WALLPAPER'" $DRY_RUN_CMD ${pkgs.dconf}/bin/dconf write /org/gnome/desktop/background/picture-uri-dark "'file://$WALLPAPER'" $DRY_RUN_CMD ${pkgs.dconf}/bin/dconf write /org/gnome/desktop/background/picture-options "'zoom'" $DRY_RUN_CMD ${pkgs.dconf}/bin/dconf write /org/gnome/desktop/screensaver/picture-uri "'file://$WALLPAPER'" $DRY_RUN_CMD ${pkgs.dconf}/bin/dconf write /org/gnome/desktop/screensaver/picture-options "'zoom'" fi ''; }