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.
This commit is contained in:
parent
1e4d9e08cd
commit
1b21c9db91
@ -1,5 +1,7 @@
|
|||||||
{ config, pkgs ,lib ,... }:
|
{ config, pkgs ,lib ,... }:
|
||||||
|
|
||||||
with lib;
|
with lib;
|
||||||
|
|
||||||
{
|
{
|
||||||
options.xdg.portal = {
|
options.xdg.portal = {
|
||||||
enable =
|
enable =
|
||||||
@ -19,6 +21,17 @@ with lib;
|
|||||||
environments you probably want to add them yourself.
|
environments you probably want to add them yourself.
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
|
|
||||||
|
gtkUsePortal = mkOption {
|
||||||
|
type = types.bool;
|
||||||
|
default = false;
|
||||||
|
description = ''
|
||||||
|
Sets environment variable <literal>GTK_USE_PORTAL</literal> to <literal>1</literal>.
|
||||||
|
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 <literal>false</literal> to respect its opt-in nature.
|
||||||
|
'';
|
||||||
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
config =
|
config =
|
||||||
@ -28,10 +41,17 @@ with lib;
|
|||||||
|
|
||||||
in mkIf cfg.enable {
|
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;
|
services.dbus.packages = packages;
|
||||||
systemd.packages = packages;
|
systemd.packages = packages;
|
||||||
|
|
||||||
environment.variables = {
|
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;
|
XDG_DESKTOP_PORTAL_PATH = map (p: "${p}/share/xdg-desktop-portal/portals") cfg.extraPortals;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
Loading…
x
Reference in New Issue
Block a user