diff --git a/nixos/doc/manual/release-notes/rl-2311.section.md b/nixos/doc/manual/release-notes/rl-2311.section.md index 2c5f47c67962..ef4465d9ddfd 100644 --- a/nixos/doc/manual/release-notes/rl-2311.section.md +++ b/nixos/doc/manual/release-notes/rl-2311.section.md @@ -20,6 +20,8 @@ ## Other Notable Changes {#sec-release-23.11-notable-changes} +- The Cinnamon module now enables XDG desktop integration by default. If you are experiencing collisions related to xdg-desktop-portal-gtk you can safely remove `xdg.portal.extraPortals = [ pkgs.xdg-desktop-portal-gtk ];` from your NixOS configuration. + - A new option was added to the virtualisation module that enables specifying explicitly named network interfaces in QEMU VMs. The existing `virtualisation.vlans` is still supported for cases where the name of the network interface is irrelevant. - `services.nginx` gained a `defaultListen` option at server-level with support for PROXY protocol listeners, also `proxyProtocol` is now exposed in `services.nginx.virtualHosts..listen` option. It is now possible to run PROXY listeners and non-PROXY listeners at a server-level, see [#213510](https://github.com/NixOS/nixpkgs/pull/213510/) for more details. diff --git a/nixos/modules/services/x11/desktop-managers/cinnamon.nix b/nixos/modules/services/x11/desktop-managers/cinnamon.nix index 2d8addb0f10e..9adbcec7f2f0 100644 --- a/nixos/modules/services/x11/desktop-managers/cinnamon.nix +++ b/nixos/modules/services/x11/desktop-managers/cinnamon.nix @@ -187,6 +187,15 @@ in xdg.mime.enable = true; xdg.icons.enable = true; + xdg.portal.enable = true; + xdg.portal.extraPortals = [ + pkgs.xdg-desktop-portal-xapp + (pkgs.xdg-desktop-portal-gtk.override { + # Do not build portals that we already have. + buildPortalsInGnome = false; + }) + ]; + # Override GSettings schemas environment.sessionVariables.NIX_GSETTINGS_OVERRIDES_DIR = "${nixos-gsettings-overrides}/share/gsettings-schemas/nixos-gsettings-overrides/glib-2.0/schemas"; diff --git a/pkgs/development/libraries/xdg-desktop-portal-xapp/default.nix b/pkgs/development/libraries/xdg-desktop-portal-xapp/default.nix new file mode 100644 index 000000000000..80d409c080cb --- /dev/null +++ b/pkgs/development/libraries/xdg-desktop-portal-xapp/default.nix @@ -0,0 +1,61 @@ +{ stdenv +, lib +, fetchFromGitHub +, meson +, ninja +, pkg-config +, python3 +, wrapGAppsHook +, cinnamon +, glib +, gsettings-desktop-schemas +, gtk3 +, mate +, xdg-desktop-portal +}: + +stdenv.mkDerivation rec { + pname = "xdg-desktop-portal-xapp"; + version = "1.0.0"; + + src = fetchFromGitHub { + owner = "linuxmint"; + repo = "xdg-desktop-portal-xapp"; + rev = version; + hash = "sha256-oXV4u/w4MWhKHf5vNbUNcyEJpKVFWcyEs1HEqo6eCyU="; + }; + + nativeBuildInputs = [ + meson + ninja + pkg-config + python3 + wrapGAppsHook + ]; + + buildInputs = [ + cinnamon.cinnamon-desktop # org.cinnamon.desktop.background + glib + gsettings-desktop-schemas # org.gnome.system.location + gtk3 + mate.mate-desktop # org.mate.background + xdg-desktop-portal + ]; + + mesonFlags = [ + "-Dsystemduserunitdir=${placeholder "out"}/lib/systemd/user" + ]; + + postPatch = '' + chmod +x data/meson_install_schemas.py + patchShebangs data/meson_install_schemas.py + ''; + + meta = with lib; { + description = "Backend implementation for xdg-desktop-portal for Cinnamon, MATE, Xfce"; + homepage = "https://github.com/linuxmint/xdg-desktop-portal-xapp"; + maintainers = teams.cinnamon.members; + platforms = platforms.linux; + license = licenses.lgpl21Plus; + }; +} diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 1855f5e93915..09fb4c56823a 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -35426,6 +35426,8 @@ with pkgs; xdg-desktop-portal-wlr = callPackage ../development/libraries/xdg-desktop-portal-wlr { }; + xdg-desktop-portal-xapp = callPackage ../development/libraries/xdg-desktop-portal-xapp { }; + xdg-user-dirs = callPackage ../tools/X11/xdg-user-dirs { }; xdg-utils = callPackage ../tools/X11/xdg-utils {