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}