{ config, lib, pkgs, namespace, ... }: let inherit (lib.${namespace}) enabled disabled mkBoolOpt; cfg = config.${namespace}.desktop.gnome; in { options.${namespace}.desktop.gnome = { enable = lib.mkEnableOption "GNOME desktop environment"; vscodium.enable = mkBoolOpt false "Set VSCodium as the default EDITOR/VISUAL"; }; config = lib.mkIf cfg.enable { services = { desktopManager.gnome = enabled; displayManager.gdm = { enable = lib.mkDefault true; wayland = lib.mkDefault true; }; gnome = lib.mkOverride 90 { at-spi2-core = disabled; core-apps = enabled; core-developer-tools = disabled; core-os-services = enabled; core-shell = enabled; evolution-data-server = enabled; games = disabled; gcr-ssh-agent = enabled; glib-networking = enabled; gnome-browser-connector = enabled; gnome-initial-setup = disabled; gnome-keyring = enabled; gnome-online-accounts = enabled; gnome-remote-desktop = enabled; gnome-settings-daemon = enabled; gnome-software = disabled; gnome-user-share = enabled; localsearch = enabled; rygel = enabled; sushi = enabled; tinysparql = enabled; }; }; xdg.portal.extraPortals = [ pkgs.xdg-desktop-portal-gtk ]; programs.kdeconnect = { enable = false; package = pkgs.gnomeExtensions.gsconnect; }; environment.variables = lib.mkIf cfg.vscodium.enable { EDITOR = "${lib.getExe' pkgs.vscodium "codium"} --wait"; VISUAL = "${lib.getExe' pkgs.vscodium "codium"} --wait"; }; }; }