summary refs log tree commit diff
path: root/nixos/modules/services/desktops/flatpak.nix
diff options
context:
space:
mode:
authorJan Tojnar <jtojnar@gmail.com>2018-02-13 02:09:51 +0100
committerJan Tojnar <jtojnar@gmail.com>2018-05-15 13:31:13 +0200
commitec80c5e4c48df8264e5e230bb81eb55e045382dc (patch)
treee4d54ef918d1910a91a272cfa783f05f98505cde /nixos/modules/services/desktops/flatpak.nix
parent843bc0f73a648426b2206cda88c5bf49563c3990 (diff)
downloadnixlib-ec80c5e4c48df8264e5e230bb81eb55e045382dc.tar
nixlib-ec80c5e4c48df8264e5e230bb81eb55e045382dc.tar.gz
nixlib-ec80c5e4c48df8264e5e230bb81eb55e045382dc.tar.bz2
nixlib-ec80c5e4c48df8264e5e230bb81eb55e045382dc.tar.lz
nixlib-ec80c5e4c48df8264e5e230bb81eb55e045382dc.tar.xz
nixlib-ec80c5e4c48df8264e5e230bb81eb55e045382dc.tar.zst
nixlib-ec80c5e4c48df8264e5e230bb81eb55e045382dc.zip
nixos/flatpak: allow specifying extra portals
Diffstat (limited to 'nixos/modules/services/desktops/flatpak.nix')
-rw-r--r--nixos/modules/services/desktops/flatpak.nix35
1 files changed, 27 insertions, 8 deletions
diff --git a/nixos/modules/services/desktops/flatpak.nix b/nixos/modules/services/desktops/flatpak.nix
index d191eeff990f..23480e652675 100644
--- a/nixos/modules/services/desktops/flatpak.nix
+++ b/nixos/modules/services/desktops/flatpak.nix
@@ -3,26 +3,45 @@
 
 with lib;
 
-{
+let
+  cfg = config.services.flatpak;
+in {
   ###### interface
   options = {
     services.flatpak = {
       enable = mkEnableOption "flatpak";
+
+      extraPortals = mkOption {
+        type = types.listOf types.package;
+        default = [];
+        description = ''
+          List of additional portals to add to path. Portals allow interaction
+          with system, like choosing files or taking screenshots. At minimum,
+          a desktop portal implementation should be listed. GNOME already
+          adds <package>xdg-desktop-portal-gtk</package>; for KDE, there
+          is <package>xdg-desktop-portal-kde</package>. Other desktop
+          environments will probably want to do the same.
+        '';
+      };
     };
   };
 
 
   ###### implementation
-  config = mkIf config.services.flatpak.enable {
+  config = mkIf cfg.enable {
     environment.systemPackages = [ pkgs.flatpak ];
 
-    services.dbus.packages = [ pkgs.flatpak ];
+    services.dbus.packages = [ pkgs.flatpak pkgs.xdg-desktop-portal ] ++ cfg.extraPortals;
+
+    systemd.packages = [ pkgs.flatpak pkgs.xdg-desktop-portal ] ++ cfg.extraPortals;
 
-    systemd.packages = [ pkgs.flatpak ];
+    environment.variables = {
+      PATH = [
+        "$HOME/.local/share/flatpak/exports/bin"
+        "/var/lib/flatpak/exports/bin"
+      ];
 
-    environment.variables.PATH = [
-      "$HOME/.local/share/flatpak/exports/bin"
-      "/var/lib/flatpak/exports/bin"
-    ];
+      XDG_DESKTOP_PORTAL_PATH = map (p: "${p}/share/xdg-desktop-portal/portals") cfg.extraPortals;
+    };
   };
 }