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 = let
12      flatpakOption = {
13        packages = lib.mkOption {
14          type = lib.types.listOf (lib.types.either lib.types.str lib.types.attr);
15          default = [];
16        };
17        overrides = lib.mkOption {
18          type = lib.types.attrsOf (lib.types.attrsOf lib.types.anything);
19          default = {};
20        };
21      };
22    in {
23      host = flatpakOption;
24      user = flatpakOption;
25    };
26
27    cache = {
28      directories = [
29        "/var/lib/flatpak"
30      ];
31    };
32
33    persistHome = {
34      directories = [
35        ".var" # Flatpak app data
36      ];
37    };
38
39    cacheHome = {config, ...}: {
40      directories = [
41        "${config.xdg.data.directory}/flatpak"
42      ];
43    };
44
45    nixos = {host, ...}: {
46      imports = [inputs.nix-flatpak.nixosModules.nix-flatpak];
47
48      services.flatpak = {
49        enable = true;
50
51        inherit (host.settings.desktop.flatpak) packages;
52      };
53    };
54
55    hjem = {user, ...}: {
56      imports = [inputs.nix-flatpak.hjemModules.nix-flatpak];
57
58      services.flatpak = {
59        enable = true;
60
61        packages = user.system.settings.desktop.flatpak.packages;
62
63        overrides.settings = lib.mergeAttrsList [
64          {
65            global = {
66              Context.filesystems = [
67                "/nix/store:ro"
68                "/run/current-system/sw/share/X11/fonts:ro"
69                "xdg-data/fonts:ro"
70                "home/.icons:ro"
71                "xdg-config/gtk-3.0/gtk.css:ro"
72                "xdg-config/gtk-4.0/gtk.css:ro"
73              ];
74            };
75          }
76          (user.system.settings.desktop.flatpak.overrides)
77        ];
78      };
79
80      xdg.data.files."fonts" = {
81        type = "symlink";
82        source = "/run/current-system/sw/share/X11/fonts";
83      };
84    };
85  };
86}