summary refs log tree commit diff
path: root/nixos/modules
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
parent843bc0f73a648426b2206cda88c5bf49563c3990 (diff)
downloadnixpkgs-ec80c5e4c48df8264e5e230bb81eb55e045382dc.tar
nixpkgs-ec80c5e4c48df8264e5e230bb81eb55e045382dc.tar.gz
nixpkgs-ec80c5e4c48df8264e5e230bb81eb55e045382dc.tar.bz2
nixpkgs-ec80c5e4c48df8264e5e230bb81eb55e045382dc.tar.lz
nixpkgs-ec80c5e4c48df8264e5e230bb81eb55e045382dc.tar.xz
nixpkgs-ec80c5e4c48df8264e5e230bb81eb55e045382dc.tar.zst
nixpkgs-ec80c5e4c48df8264e5e230bb81eb55e045382dc.zip
nixos/flatpak: allow specifying extra portals
Diffstat (limited to 'nixos/modules')
-rw-r--r--nixos/modules/services/desktops/flatpak.nix35
-rw-r--r--nixos/modules/services/x11/desktop-managers/gnome3.nix1
2 files changed, 28 insertions, 8 deletions
diff --git a/nixos/modules/services/desktops/flatpak.nix b/nixos/modules/services/desktops/flatpak.nix
index d191eeff990..23480e65267 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;
+    };
   };
 }
diff --git a/nixos/modules/services/x11/desktop-managers/gnome3.nix b/nixos/modules/services/x11/desktop-managers/gnome3.nix
index 10e8ef0ed38..27b62df7097 100644
--- a/nixos/modules/services/x11/desktop-managers/gnome3.nix
+++ b/nixos/modules/services/x11/desktop-managers/gnome3.nix
@@ -120,6 +120,7 @@ in {
     services.xserver.libinput.enable = mkDefault true; # for controlling touchpad settings via gnome control center
     services.udev.packages = [ pkgs.gnome3.gnome-settings-daemon ];
     systemd.packages = [ pkgs.gnome3.vino ];
+    services.flatpak.extraPortals = [ pkgs.xdg-desktop-portal-gtk ];
 
     # If gnome3 is installed, build vim for gtk3 too.
     nixpkgs.config.vim.gui = "gtk3";