From 5473ce1668247cf91501a20ab536f17e7c24cbd5 Mon Sep 17 00:00:00 2001 From: Armel Cloarec Date: Thu, 28 Aug 2025 01:09:57 +0200 Subject: [PATCH 1/2] xdg-desktop-portal-phosh: init at 0.0.4 --- .../cargo_lock_deps_version.patch | 30 +++++++ .../xd/xdg-desktop-portal-phosh/package.nix | 87 +++++++++++++++++++ 2 files changed, 117 insertions(+) create mode 100644 pkgs/by-name/xd/xdg-desktop-portal-phosh/cargo_lock_deps_version.patch create mode 100644 pkgs/by-name/xd/xdg-desktop-portal-phosh/package.nix diff --git a/pkgs/by-name/xd/xdg-desktop-portal-phosh/cargo_lock_deps_version.patch b/pkgs/by-name/xd/xdg-desktop-portal-phosh/cargo_lock_deps_version.patch new file mode 100644 index 000000000000..881a22dbcf82 --- /dev/null +++ b/pkgs/by-name/xd/xdg-desktop-portal-phosh/cargo_lock_deps_version.patch @@ -0,0 +1,30 @@ +diff --git a/subprojects/pfs/Cargo.lock b/subprojects/pfs/Cargo.lock +index efe74be..9b5f48e 100644 +--- a/subprojects/pfs/Cargo.lock ++++ b/subprojects/pfs/Cargo.lock +@@ -458,9 +458,9 @@ checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe" + + [[package]] + name = "libadwaita" +-version = "0.7.1" ++version = "0.7.2" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "8611ee9fb85e7606c362b513afcaf5b59853f79e4d98caaaf581d99465014247" ++checksum = "500135d29c16aabf67baafd3e7741d48e8b8978ca98bac39e589165c8dc78191" + dependencies = [ + "gdk4", + "gio", +diff --git a/subprojects/pfs/Cargo.toml b/subprojects/pfs/Cargo.toml +index ae3b519..6cf25dd 100644 +--- a/subprojects/pfs/Cargo.toml ++++ b/subprojects/pfs/Cargo.toml +@@ -18,7 +18,7 @@ path = "src/examples/open/pfs_open.rs" + + [dependencies] + gettext-rs = { version = "0.7", features = ["gettext-system"] } +-glib-macros = "0.20.5" ++glib-macros = "0.20.12" + gtk = { version = "0.9", package = "gtk4", features = ["gnome_47"] } + + [dependencies.adw] + diff --git a/pkgs/by-name/xd/xdg-desktop-portal-phosh/package.nix b/pkgs/by-name/xd/xdg-desktop-portal-phosh/package.nix new file mode 100644 index 000000000000..f65cfd986a98 --- /dev/null +++ b/pkgs/by-name/xd/xdg-desktop-portal-phosh/package.nix @@ -0,0 +1,87 @@ +{ + stdenv, + lib, + fetchFromGitLab, + gnome-desktop, + libadwaita, + meson, + ninja, + pkg-config, + xdg-desktop-portal, + rustc, + desktop-file-utils, + cargo, + rustPlatform, + gettext, +}: +let + # Derived from subprojects/pfs.wrap + pfs = fetchFromGitLab { + domain = "gitlab.gnome.org"; + owner = "guidog"; + repo = "pfs"; + tag = "v0.0.4"; + hash = "sha256-b0S/jNE03h26bGA76fb/qlyJ8/MifZeltTc16UX2h9w="; + }; +in +stdenv.mkDerivation (finalAttrs: { + pname = "xdg-desktop-portal-phosh"; + version = "0.49.0"; + + src = fetchFromGitLab { + domain = "gitlab.gnome.org"; + owner = "guidog"; + repo = "xdg-desktop-portal-phosh"; + tag = "v${finalAttrs.version}"; + hash = "sha256-VF+ZNUP5Y2xm2nlNN3QsLJh8yNRJH7d3k+kLJ+4eu9s="; + }; + + cargoDeps = rustPlatform.fetchCargoVendor { + inherit (finalAttrs) pname version src; + hash = "sha256-h+VQqtirReLIHlVByKSb6DpqR1FtCxSwQpjowHX1mcg="; + }; + + nativeBuildInputs = [ + meson + ninja + pkg-config + rustc + desktop-file-utils + cargo + rustPlatform.cargoSetupHook + gettext + ]; + + buildInputs = [ + libadwaita + gnome-desktop + xdg-desktop-portal + ]; + + strictDeps = true; + + prePatch = '' + cp -r ${pfs} subprojects/pfs + chmod +w -R subprojects/pfs # Allow patches for subprojects to work + ''; + + patches = [ + # Patch that fixes the issue with two Rust package versions. + # For reasons that I don't understand, rustPlatform.fetchCargoVendor seems to not fetch the version inside the Cargo.lock file. + # Like with libadwaita, fetchCargoVendor download the version 0.7.2 but in the lock file specified 0.7.1 and in the toml file specified 0.7. + ./cargo_lock_deps_version.patch + ]; + + passthru = { + updateScript = lib.updateScript { }; + }; + + meta = with lib; { + description = "A backend implementation for xdg-desktop-portal that is using GTK/GNOME/Phosh to provide interfaces that aren't provided by the GTK portal"; + homepage = "https://gitlab.gnome.org/guidog/xdg-desktop-portal-phosh"; + changelog = "https://gitlab.gnome.org/guidog/xdg-desktop-portal-phosh/-/blob/main/NEWS"; + maintainers = with maintainers; [ armelclo ]; + platforms = platforms.linux; + license = licenses.gpl3Only; + }; +}) From 02af430cb107b2f900843f7910c99cdcf718f72a Mon Sep 17 00:00:00 2001 From: Armel Cloarec Date: Thu, 28 Aug 2025 19:10:39 +0200 Subject: [PATCH 2/2] nixos/phosh: add xdg-desktop-portal-phosh add meta.maintainers --- .../services/x11/desktop-managers/phosh.nix | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/nixos/modules/services/x11/desktop-managers/phosh.nix b/nixos/modules/services/x11/desktop-managers/phosh.nix index 12118089a1f7..8937a1f8c2bd 100644 --- a/nixos/modules/services/x11/desktop-managers/phosh.nix +++ b/nixos/modules/services/x11/desktop-managers/phosh.nix @@ -145,6 +145,11 @@ let in { + + meta = { + maintainers = with lib.maintainers; [ armelclo ]; + }; + options = { services.xserver.desktopManager.phosh = { enable = lib.mkOption { @@ -224,6 +229,16 @@ in }; }; + xdg.portal = { + enable = true; + extraPortals = [ + pkgs.xdg-desktop-portal-phosh + pkgs.xdg-desktop-portal-gnome + pkgs.xdg-desktop-portal-gtk + ]; + configPackages = lib.mkDefault [ pkgs.phosh ]; + }; + environment.systemPackages = [ pkgs.phoc cfg.package