{ config, ... }: let workDir = "/srv/containers/nextcloud"; dataDir = "/srv/data/nextcloud"; in { systemd.tmpfiles.rules = [ "d ${workDir}/html 2700 33 33" "d ${workDir}/db 2700 999 999" "d ${dataDir} 2770 33 admin" ]; virtualisation.oci-containers.containers = { nextcloud = { autoStart = true; image = "nextcloud:32"; ports = [ "0.0.0.0:10003:80" ]; volumes = [ "${workDir}/html:/var/www/html" "${dataDir}:/var/www/html/data" ]; environmentFiles = [ config.age.secrets.nextcloud.path ]; dependsOn = [ "nextcloud-db" "nextcloud-redis" ]; extraOptions = [ "--group-add=10000" # admin group ]; }; nextcloud-db = { image = "postgres:18"; # trixie volumes = [ "${workDir}/db:/var/lib/postgresql" ]; environmentFiles = [ config.age.secrets.nextcloud-db.path ]; }; nextcloud-redis = { image = "redis:8-alpine"; # trixie }; }; }