Here is my setup.
I just use
services.nextcloud.enable = true to run Nextcloud, since I don’t run any of my services in containers or Flatpaks. Systemd feels most native to NixOS.
You get Nextcloud, Redis, and the MySQL database basically for free. I also use the Nix-packaged Nextcloud plugins and, for any missing, I pin their releases to my flake and add them as pkgs with an overlay.
The biggest change I made was to disable nginx because I already use Caddy as my reverse proxy for all my services. This means I had to write matching rules to convert the recommended nginx config into Caddy routes.
I wouldn’t suggest that everyone use this exact approach, but I do recommend starting with the native NixOS services and tweaking their settings to fit your needs rather than immediately jumping to containers or Flatpaks.