From 6d9ec8d8a7a09c6b179f5ff522dcc1b89cf57463 Mon Sep 17 00:00:00 2001 From: Christoph Urlacher Date: Tue, 8 Jul 2025 20:14:20 +0200 Subject: [PATCH] Modules: Add desktopportal module --- system/modules/desktopportal/default.nix | 57 ++++++++++++++++++++++++ system/modules/desktopportal/options.nix | 9 ++++ 2 files changed, 66 insertions(+) create mode 100644 system/modules/desktopportal/default.nix create mode 100644 system/modules/desktopportal/options.nix diff --git a/system/modules/desktopportal/default.nix b/system/modules/desktopportal/default.nix new file mode 100644 index 00000000..75ee9915 --- /dev/null +++ b/system/modules/desktopportal/default.nix @@ -0,0 +1,57 @@ +{ + config, + lib, + mylib, + pkgs, + ... +}: let + inherit (config.modules) desktopportal; +in { + options.modules.desktopportal = import ./options.nix {inherit lib mylib;}; + + config = lib.mkIf desktopportal.enable { + xdg = { + portal = { + enable = true; + xdgOpenUsePortal = true; + wlr.enable = false; + + # TODO: Replace lib.optional(s) throughout the config with mkMerge + config = lib.mkMerge [ + { + # https://discourse.nixos.org/t/clicked-links-in-desktop-apps-not-opening-browers/29114/26 + common.default = ["*"]; + } + + (lib.mkIf desktopportal.termfilechooser.enable { + common."org.freedesktop.impl.portal.FileChooser" = ["termfilechooser"]; + }) + + (lib.mkIf desktopportal.hyprland.enable { + hyprland.default = ["hyprland"]; + }) + + (lib.mkIf + (desktopportal.hyprland.enable && desktopportal.termfilechooser.enable) { + hyprland."org.freedesktop.impl.portal.FileChooser" = ["termfilechooser"]; + }) + ]; + + extraPortals = with pkgs; + lib.mkMerge [ + [ + xdg-desktop-portal-gtk # Fallback + ] + + (lib.mkIf desktopportal.hyprland.enable [ + xdg-desktop-portal-hyprland + ]) + + (lib.mkIf desktopportal.termfilechooser.enable [ + xdg-desktop-portal-termfilechooser # Filechooser using yazi + ]) + ]; + }; + }; + }; +} diff --git a/system/modules/desktopportal/options.nix b/system/modules/desktopportal/options.nix new file mode 100644 index 00000000..14cee219 --- /dev/null +++ b/system/modules/desktopportal/options.nix @@ -0,0 +1,9 @@ +{ + lib, + mylib, + ... +}: { + enable = lib.mkEnableOption "Enable XDG desktop portals"; + termfilechooser.enable = lib.mkEnableOption "Enable xdg-desktop-portal-termfilechooser"; + hyprland.enable = lib.mkEnableOption "Configure portals for Hyprland"; +}