{ config, lib, pkgs, self, ... }: let cfg = config.modules.system.desktop.gnome; in { options.modules.system.desktop.gnome = { enable = lib.mkOption { default = false; example = true; }; }; config = lib.mkIf cfg.enable { services.xserver = { enable = true; displayManager.gdm.enable = true; desktopManager.gnome.enable = true; }; services.flatpak.enable = true; services.fwupd.enable = true; programs.dconf.enable = true; dconf.settings = { "io/github/celluloid-player/celluloid" = { draggable-video-area-enable = true; }; "org/gnome/Console" = { font-scale = 1.4; use-system-font = false; custom-font = "ComicShannsMono Nerd Font 10"; }; "org/gnome/desktop/interface" = { color-scheme = "prefer-dark"; cursor-theme = "Adwaita"; enable-hot-corners = false; font-name = "Cantarell 11"; gtk-theme = "adw-gtk3-dark"; icon-theme = "MoreWaita"; monospace-font-name = "UbuntuMono Nerd Font 11"; toolbar-style = "both-horiz"; }; "org/gnome/desktop/peripherals/touchpad" = { tap-to-click = true; }; "org/gnome/desktop/sound" = { theme-name = "freedesktop"; }; "org/gnome/desktop/search-providers" = { disabled = [ "org.gnome.Epiphany.desktop" ]; }; "org/gnome/desktop/wm/keybindings" = { switch-group = [ "grave" ]; switch-group-backward = [ "grave" ]; }; "org/gnome/desktop/wm/preferences" = { button-layout = "appmenu:close"; }; "org/gnome/gnome-session" = { auto-save-session = true; }; "org/gnome/gnome-system-monitor" = { show-dependencies = true; }; "org/gnome/mutter" = { center-new-windows = true; edge-tiling = true; experimental-features = [ "scale-monitor-framebuffer" ]; }; "org/gnome/settings-daemon/plugins/media-keys" = { volume-up = [ "F12" "XF86AudioRaiseVolume" ]; volume-down = [ "F11" "XF86AudioLowerVolume" ]; }; "org/gnome/shell" = { disable-user-extensions = false; enabled-extensions = [ "appindicatorsupport@rgcjonas.gmail.com" # "arcmenu@arcmenu.com" "blur-my-shell@aunetx" "burn-my-windows@schneegans.github.com" "clipboard-indicator@tudmotu.com" "CoverflowAltTab@palatis.blogspot.com" # "dash-to-panel@jderose9.github.com" # "desktop-cube@schneegans.github.com" # "EasyScreenCast@iacopodeenosee.gmail.com" "espresso@coadmunkee.github.com" "flypie@schneegans.github.com" # "forge@jmmaranan.com" "gsconnect@andyholmes.github.io" # "gSnap@micahosborne" "hidetopbar@mathieu.bidon.ca" "just-perfection-desktop@just-perfection" # "mediacontrols@cliffniff.github.com" # "mousefollowsfocus@matthes.biz" # "pano@elhan.io" # "paperwm@hedning:matrix.org" "pip-on-top@rafostar.github.com" # "search-light@icedman.github.com" # "smart-auto-move@khimaros.com" "space-bar@luchrioh" # "tiling-assistant@leleat-on-github" "tilingshell@ferrarodomenico.com" "Vitals@CoreCoding.com" "windowIsReady_Remover@nunofarruca@gmail.com" # "worksets@blipk.xyz" # "wsmatrix@martin.zurowietz.de" ]; favorite-apps = [ "firefox.desktop" "org.gnome.Nautilus.desktop" ]; }; "org/gnome/shell/extensions/blur-my-shell/panel" = { static-blur = true; }; "org/gnome/shell/extensions/blur-my-shell/applications" = { blur = false; }; "org/gnome/shell/extensions/burn-my-windows" = { fire-close-effect = false; glide-open-effect = true; glide-close-effect = true; }; "org/gnome/shell/extensions/dash-to-panel" = { intellihide = true; panel-positions = '' {"0":"TOP"} ''; trans-panel-opacity = 0.3; trans-use-custom-opacity = true; trans-use-dynamic-opacity = true; }; "org/gnome/shell/extensions/espresso" = { enable-fullscreen = true; show-indicator = true; show-notifications = false; inhibit-apps = [ "com.obsproject.Studio.desktop" ]; }; "org/gnome/shell/extensions/flypie" = { preview-on-right-side = true; }; "org/gnome/shell/extensions/forge" = { window-gap-size = 8; window-gap-hidden-on-single = false; }; "org/gnome/shell/extensions/hidetopbar" = { mouse-sensitive = true; mouse-sensitive-fullscreen-window = true; enable-active-window = false; }; "org/gnome/shell/extensions/just-perfection" = { activities-button = false; window-demands-attention-focus = true; workspace-wrap-around = true; }; "org/gnome/shell/extensions/paperwm" = { use-default-background = true; }; "org/gnome/shell/extensions/pip-on-top" = { stick = true; }; "org/gnome/shell/extensions/search-light" = { popup-at-cursor-monitor = true; }; "org/gnome/shell/extensions/space-bar/behavior" = { enable-activate-workspace-shortcuts = true; show-empty-workspaces = true; smart-workspace-names = false; }; "org/gnome/shell/extensions/tiling-assistant" = { screen-top-gap = 8; screen-right-gap = 8; screen-bottom-gap = 8; screen-left-gap = 8; window-gap = 8; }; "org/gnome/shell/extensions/tilingshell" = { inner-gaps = 16; outer-gaps = 8; enable-blur-snap-assistant = true; }; "org/gtk/settings/file-chooser" = { show-hidden = true; sort-directories-first = true; }; "org/gtk/gtk4/settings/file-chooser" = { show-hidden = true; sort-directories-first = true; }; }; environment.sessionVariables = { QT_STYLE_OVERRIDE = lib.mkForce "kvantum"; QT_WAYLAND_DECORATION = lib.mkForce "adwaita"; }; home.configFile = { "Kvantum/kvantum.kvconfig".text = lib.generators.toINI { } { General.theme = "KvLibadwaitaDark"; }; "Kvantum/KvLibadwaita".source = "${self.inputs.kvlibadwaita}/src/KvLibadwaita"; }; user.packages = with pkgs; [ authenticator # bottles # bustle celluloid # d-spy # drawing # fragments dconf-editor ghex ghostty # gnome-builder gnome-decoder gnome-firmware gnome-frog # gnome-obfuscate gnome-podcasts identity # mission-center mousam newsflash # schemes shortwave sysprof ] ++ ( if config.virtualisation.podman.enable then [ pods ] else [ ] ); environment.systemPackages = with pkgs.unstable; [ adw-gtk3 kdePackages.qtstyleplugin-kvantum libsForQt5.qtstyleplugin-kvantum morewaita-icon-theme nautilus-python qadwaitadecorations qadwaitadecorations-qt6 ## Shell extensions gnomeExtensions.appindicator gnomeExtensions.arcmenu gnomeExtensions.blur-my-shell gnomeExtensions.burn-my-windows gnomeExtensions.clipboard-indicator gnomeExtensions.coverflow-alt-tab gnomeExtensions.dash-to-panel gnomeExtensions.desktop-cube gnomeExtensions.easyScreenCast gnomeExtensions.espresso gnomeExtensions.fly-pie gnomeExtensions.forge gnomeExtensions.gsconnect gnomeExtensions.gsnap gnomeExtensions.hide-top-bar gnomeExtensions.just-perfection gnomeExtensions.media-controls gnomeExtensions.mouse-follows-focus # gnomeExtensions.pano (disabled due to: https://github.com/NixOS/nixpkgs/issues/369438) gnomeExtensions.paperwm gnomeExtensions.pip-on-top gnomeExtensions.search-light gnomeExtensions.smart-auto-move gnomeExtensions.space-bar gnomeExtensions.tiling-assistant gnomeExtensions.tiling-shell gnomeExtensions.todotxt gnomeExtensions.vitals gnomeExtensions.window-is-ready-remover gnomeExtensions.worksets gnomeExtensions.workspace-matrix ]; home.services.gpg-agent.pinentryPackage = pkgs.pinentry-gnome3; }; }