nanuqsaurus/modules/desktop/gnome.nix
randogoth eb9d7fb9b8 gnome: fix two extensions broken by the GNOME 49 -> 50 bump
Tracking nixos-26.05 moved GNOME Shell from 49 to 50, and the shell
hard-disables any extension whose metadata.json shell-version array
lacks the running major. Two enabled extensions were left OUT OF DATE,
for different reasons:

- logomenu@aryan_k was pinned to the v38 zip only because the
  custom-menu patch was written against v38. nixpkgs 26.05 already
  ships v41, which supports shell 50, and the patch applies to it
  cleanly. Drop the version/src pin and keep the override patch-only.

- all-in-one-clipboard is still packaged as v19 (shell <=49) on the
  nixos-26.05 branch; the shell-50 build (v30) landed in unstable and
  was never backported. Pin src to the v30 zip until it is.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01ABzc7ivGbjKRCASa8uEkjd
2026-08-31 20:20:04 +03:00

149 lines
4.3 KiB
Nix

{ pkgs, lib, ... }:
let
logoMenuExtension = pkgs.gnomeExtensions.logo-menu.overrideAttrs (old: {
patches = (old.patches or [ ]) ++ [ ./patches/logo-menu-custom-menu.patch ];
});
# nixos-26.05 still packages v19, which caps out at GNOME Shell 49; the
# shell-50 build landed only in nixpkgs unstable. Drop once 26.05 backports it.
aioClipboardExtension = pkgs.gnomeExtensions.all-in-one-clipboard.overrideAttrs (_: {
version = "30";
src = pkgs.fetchzip {
url = "https://extensions.gnome.org/extension-data/all-in-one-clipboardNiffirgkcaJ.github.com.v30.shell-extension.zip";
hash = "sha256-zESXhXVWVttjAN/75zNfF7u7uJKGMARpilBgYkkpMWs=";
stripRoot = false;
};
});
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
aioClipboardExtension
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
];
}