From 1b21c9db91e41c1773ea55c328d03013ac4e3327 Mon Sep 17 00:00:00 2001 From: worldofpeace Date: Fri, 26 Jul 2019 22:54:19 -0400 Subject: nixos/xdg: add gtkUsePortal option to portals Prior to this change GTK_USE_PORTAL was unconditionally set to "1". For this to not break things you have to have some sort of portal implementation in extraPortals. Setting GTK_USE_PORTAL in this manner is actually only useful when using portals for applications outside flatpak. For example people using non-flatpak Firefox who want native filechoosers. It's also WIP for electron applications to support this. --- nixos/modules/config/xdg/portal.nix | 22 +++++++++++++++++++++- 1 file changed, 21 insertions(+), 1 deletion(-) (limited to 'nixos') diff --git a/nixos/modules/config/xdg/portal.nix b/nixos/modules/config/xdg/portal.nix index 6a72fab3a4a4..89ddf80b5755 100644 --- a/nixos/modules/config/xdg/portal.nix +++ b/nixos/modules/config/xdg/portal.nix @@ -1,5 +1,7 @@ { config, pkgs ,lib ,... }: + with lib; + { options.xdg.portal = { enable = @@ -19,6 +21,17 @@ with lib; environments you probably want to add them yourself. ''; }; + + gtkUsePortal = mkOption { + type = types.bool; + default = false; + description = '' + Sets environment variable GTK_USE_PORTAL to 1. + This is needed for packages ran outside Flatpak to respect and use XDG Desktop Portals. + For example, you'd need to set this for non-flatpak Firefox to use native filechoosers. + Defaults to false to respect its opt-in nature. + ''; + }; }; config = @@ -28,10 +41,17 @@ with lib; in mkIf cfg.enable { + assertions = [ + { assertion = (cfg.gtkUsePortal -> cfg.extraPortals != []); + message = "Setting xdg.portal.gtkUsePortal to true requires a portal implementation in xdg.portal.extraPortals such as xdg-desktop-portal-gtk or xdg-desktop-portal-kde."; + } + ]; + services.dbus.packages = packages; systemd.packages = packages; + environment.variables = { - GTK_USE_PORTAL = "1"; + GTK_USE_PORTAL = optional cfg.gtkUsePortal "1"; XDG_DESKTOP_PORTAL_PATH = map (p: "${p}/share/xdg-desktop-portal/portals") cfg.extraPortals; }; }; -- cgit 1.4.1