{ lib, ... }: let storage = "/storage/hot/data"; binds = [ (mkBind "change" "/var/lib/changedetection-io") (mkBind "cups" "/var/lib/cups") (mkBind "deluge" "/var/lib/deluge/.config/deluge") (mkBind "dkim" "/var/dkim") (mkBind "dovecot_index" "/var/lib/dovecot/indices") (mkBind "forgejo" "/var/lib/forgejo") (mkBind "grocy" "/var/lib/grocy") (mkBind "hass" "/var/lib/hass") (mkBind "jellyfin" "/var/lib/jellyfin") (mkBind "jellyfin_cache" "/var/cache/jellyfin") (mkBind "kavita" "/var/lib/kavita") (mkBind "letsencrypt" "/etc/letsencrypt") (mkBind "murmur" "/var/lib/murmur") (mkBind "nextcloud" "/var/lib/nextcloud") (mkBind "ovpn" "/var/lib/ovpn") (mkBind "paperless" "/var/lib/paperless") (mkBind "postgres" "/var/lib/postgresql") (mkBind "rabbitmq" "/var/lib/rabbitmq") (mkBind "sieve" "/var/sieve") (mkBind "terraria" "/var/lib/terraria") (mkBind "uptime_kuma" "/var/lib/uptime-kuma") (mkBind "vaultwarden" "/var/lib/vaultwarden") (mkBind "vmail" "/var/vmail") ]; mkBind = name: path: { ${path} = { device = "${storage}/${name}"; options = [ "bind" "nofail" "X-mount.mkdir=1777" ]; }; }; in { fileSystems = lib.foldl' (acc: bind: acc // bind) { } binds; }