1# flatpak service.
2{ config, lib, pkgs, ... }:
3
4with lib;
5
6let
7 cfg = config.services.flatpak;
8in {
9 meta = {
10 doc = ./flatpak.md;
11 maintainers = pkgs.flatpak.meta.maintainers;
12 };
13
14 ###### interface
15 options = {
16 services.flatpak = {
17 enable = mkEnableOption (lib.mdDoc "flatpak");
18 };
19 };
20
21
22 ###### implementation
23 config = mkIf cfg.enable {
24
25 assertions = [
26 { assertion = (config.xdg.portal.enable == true);
27 message = "To use Flatpak you must enable XDG Desktop Portals with xdg.portal.enable.";
28 }
29 ];
30
31 environment.systemPackages = [ pkgs.flatpak ];
32
33 security.polkit.enable = true;
34
35 services.dbus.packages = [ pkgs.flatpak ];
36
37 systemd.packages = [ pkgs.flatpak ];
38
39 environment.profiles = [
40 "$HOME/.local/share/flatpak/exports"
41 "/var/lib/flatpak/exports"
42 ];
43
44 # It has been possible since https://github.com/flatpak/flatpak/releases/tag/1.3.2
45 # to build a SELinux policy module.
46
47 # TODO: use sysusers.d
48 users.users.flatpak = {
49 description = "Flatpak system helper";
50 group = "flatpak";
51 isSystemUser = true;
52 };
53
54 users.groups.flatpak = { };
55 };
56}