grafana-alloy: don't build the frontend twice
[NixPkgs.git] / nixos / modules / services / desktops / flatpak.nix
blobda07f602b3a07589e0d4cd4f5c2f83dce956d744
1 # flatpak service.
2 { config, lib, pkgs, ... }:
3 let
4   cfg = config.services.flatpak;
5 in {
6   meta = {
7     doc = ./flatpak.md;
8     maintainers = pkgs.flatpak.meta.maintainers;
9   };
11   ###### interface
12   options = {
13     services.flatpak = {
14       enable = lib.mkEnableOption "flatpak";
16       package = lib.mkPackageOption pkgs "flatpak" { };
17     };
18   };
21   ###### implementation
22   config = lib.mkIf cfg.enable {
24     assertions = [
25       { assertion = (config.xdg.portal.enable == true);
26         message = "To use Flatpak you must enable XDG Desktop Portals with xdg.portal.enable.";
27       }
28     ];
30     environment.systemPackages = [ cfg.package ];
32     security.polkit.enable = true;
34     fonts.fontDir.enable = true;
36     services.dbus.packages = [ cfg.package ];
38     systemd.packages = [ cfg.package ];
39     systemd.tmpfiles.packages = [ cfg.package ];
41     environment.profiles = [
42       "$HOME/.local/share/flatpak/exports"
43       "/var/lib/flatpak/exports"
44     ];
46     # It has been possible since https://github.com/flatpak/flatpak/releases/tag/1.3.2
47     # to build a SELinux policy module.
49     # TODO: use sysusers.d
50     users.users.flatpak = {
51       description = "Flatpak system helper";
52       group = "flatpak";
53       isSystemUser = true;
54     };
56     users.groups.flatpak = { };
57   };