feat(teal): Add fava-web

Fava-web is a simple solution for accounting based on 'beancount' (a
text-based accounting system).

Previously we attempted to use frappe, but found it was overly-complex,
so something with simpler concepts that was more geared towards a
smaller use-case was at the top of our goals.

The fact that I have used beancount before also helped.

We've secured this behind our tailnet, as generally we trust anyone who
can access teal through the tailnet.

Change-Id: I0db2ee0bd98cb7560ca26d303396e179fcb0f283
Reviewed-on: https://git.clicks.codes/c/Infra/NixFiles/+/787
Reviewed-by: Samuel Shuert <coded@clicks.codes>
Tested-by: Skyler Grey <minion@clicks.codes>
diff --git a/modules/nixos/clicks/storage/impermanence/default.nix b/modules/nixos/clicks/storage/impermanence/default.nix
index 5dd5e43..646e7b5 100644
--- a/modules/nixos/clicks/storage/impermanence/default.nix
+++ b/modules/nixos/clicks/storage/impermanence/default.nix
@@ -45,7 +45,14 @@
     };
     persist = {
       directories = lib.mkOption {
-        type = lib.types.listOf lib.types.str;
+        type = lib.types.listOf
+          (lib.types.oneOf [
+            lib.types.str
+            (lib.types.attrsOf (lib.types.oneOf [
+              lib.types.str
+              (lib.types.attrsOf lib.types.str)
+            ]))
+          ]);
         description = "List of directories to store between boots";
         default = [ ];
       };