diff --git a/modules/applications/default.nix b/modules/applications/default.nix index 8b91151..3ad5179 100644 --- a/modules/applications/default.nix +++ b/modules/applications/default.nix @@ -14,6 +14,7 @@ ./git ./gnupg ./grok.nix + ./gnome.nix ./greetd.nix ./ly ./gtk diff --git a/modules/applications/gnome.nix b/modules/applications/gnome.nix new file mode 100644 index 0000000..c482c36 --- /dev/null +++ b/modules/applications/gnome.nix @@ -0,0 +1,26 @@ +{ + pkgs, + lib, + config, + ... +}: +let + cfg = config.my.applications.gnome; +in +{ + options.my.applications.gnome = { + enable = lib.mkEnableOption "GNOME desktop environment"; + }; + + config = lib.mkIf cfg.enable { + services.desktopManager.gnome.enable = true; + + # ly is the display manager for switching between installed sessions. + services.displayManager.gdm.enable = lib.mkForce false; + + environment.systemPackages = with pkgs; [ + gnome-tweaks # GNOME desktop customization tool + gnome-extension-manager # GNOME Shell extension manager + ]; + }; +} diff --git a/modules/applications/ly/default.nix b/modules/applications/ly/default.nix index 4904570..bdae7a2 100644 --- a/modules/applications/ly/default.nix +++ b/modules/applications/ly/default.nix @@ -17,6 +17,8 @@ in }; config = lib.mkIf cfg.enable { + services.displayManager.defaultSession = lib.mkDefault "niri"; + services.displayManager.ly = { enable = true; settings = { diff --git a/modules/applications/wayland.nix b/modules/applications/wayland.nix index e702877..0d400e5 100644 --- a/modules/applications/wayland.nix +++ b/modules/applications/wayland.nix @@ -15,19 +15,27 @@ in config = lib.mkIf cfg.enable { programs.xwayland.enable = true; + # Keep global Wayland portal settings in this module so hardware/application + # modules do not each append their own portal backends. xdg.portal = { enable = true; wlr.enable = true; extraPortals = [ - pkgs.xdg-desktop-portal-wlr + pkgs.xdg-desktop-portal-gnome pkgs.xdg-desktop-portal-gtk + pkgs.xdg-desktop-portal-wlr ]; xdgOpenUsePortal = true; config = { - common.default = [ + common.default = [ "gtk" ]; + niri.default = [ "wlr" "gtk" ]; + gnome.default = [ + "gnome" + "gtk" + ]; }; }; diff --git a/modules/features/gui/desktop.nix b/modules/features/gui/desktop.nix index 4dd3f49..a5c060f 100644 --- a/modules/features/gui/desktop.nix +++ b/modules/features/gui/desktop.nix @@ -8,11 +8,12 @@ let in { options.my.features.gui.desktop = { - enable = lib.mkEnableOption "Niri Wayland compositor environment"; + enable = lib.mkEnableOption "Graphical desktop sessions"; }; config = lib.mkIf cfg.enable { my.applications = { + gnome.enable = true; gtk.enable = true; niri.enable = true; wayland.enable = true; diff --git a/modules/system/camera.nix b/modules/system/camera.nix index 08ff67a..c2dd31b 100644 --- a/modules/system/camera.nix +++ b/modules/system/camera.nix @@ -32,10 +32,5 @@ in pulse.enable = true; }; security.rtkit.enable = true; - - xdg.portal = { - enable = true; - extraPortals = [ pkgs.xdg-desktop-portal-gtk ]; - }; }; }