{config, ...}: let inherit (config.services.secrets) secrets; ports = import ../data/ports.nix; in { systemd.tmpfiles.rules = [ "d /caches - storage storage" "d /caches/main_webdav_serve - storage storage" "d /caches/media_webdav_serve - storage storage" ]; services.rclone-serve = { enable = true; remotes = map (remote: { user = "storage"; } // remote) [ { id = "public"; remote = "Public:"; type = "webdav"; extraArgs = [ "--addr=0.0.0.0:${toString ports.webdav.public}" "--htpasswd=${secrets.webdav_public_htpasswd.path}" "--baseurl=/Public/" ]; } { id = "uploads"; remote = "Uploads:"; type = "webdav"; extraArgs = [ "--addr=0.0.0.0:${toString ports.webdav.uploads}" "--htpasswd=${secrets.webdav_uploads_htpasswd.path}" "--baseurl=/Uploads/" ]; } { id = "music"; remote = "Music:"; type = "http"; extraArgs = [ "--addr=0.0.0.0:${toString ports.http.music}" "--baseurl=/Music/" "--read-only" ]; } { id = "public"; remote = "Public:"; type = "http"; extraArgs = [ "--addr=0.0.0.0:${toString ports.http.public}" "--baseurl=/Public/" "--read-only" ]; } { id = "uploads_public"; remote = "Uploads:Public"; type = "http"; extraArgs = [ "--addr=0.0.0.0:${toString ports.http.uploads_public}" "--baseurl=/Uploads/" "--read-only" ]; } ]; }; }