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