main
 1{
 2  inputs,
 3  lib,
 4  ...
 5}: {
 6  flake-file.inputs.nix-flatpak = {
 7    url = "github:gmodena/nix-flatpak";
 8  };
 9
10  den.aspects.desktop.flatpak = {
11    settings = {
12      packages = lib.mkOption {
13        type = lib.types.listOf (lib.types.either lib.types.str lib.types.attr);
14        default = [];
15      };
16    };
17
18    cache = {
19      directories = [
20        "/var/lib/flatpak"
21      ];
22    };
23
24    persistHome = {
25      directories = [
26        ".var" # Flatpak app data
27      ];
28    };
29
30    cacheHome = {config, ...}: {
31      directories = [
32        "${config.xdg.dataHome}/flatpak"
33      ];
34    };
35
36    nixos = {host, ...}: {
37      imports = [inputs.nix-flatpak.nixosModules.nix-flatpak];
38
39      services.flatpak = {
40        enable = true;
41
42        inherit (host.settings.desktop.flatpak) packages;
43      };
44    };
45
46    homeManager = {user, ...}: {
47      imports = [inputs.nix-flatpak.homeManagerModules.nix-flatpak];
48
49      services.flatpak = {
50        enable = true;
51
52        packages = user.system.settings.desktop.flatpak.packages or [];
53
54        overrides.settings = user.system.settings.desktop.flatpak.overrides or {};
55      };
56    };
57  };
58}