{ ... }: # Prowlarr — indexer manager (usenet + torrent), feeds SABnzbd/MediaManager. # dataDir is left at the module default: a *custom* dataDir makes the # upstream module force-reset it to 0700 root:root on every boot, stomping # DynamicUser's access ("unable to open database file"). Instead bind-mount # the real (migrated-from-ZimaOS) config dir onto the default path, so # DynamicUser+StateDirectory chowns it on first activation like a fresh # install — no manual chown needed. # # Mount onto /var/lib/private/prowlarr, NOT the public /var/lib/prowlarr: # StateDirectory symlinks the public path to .../private/; binding # onto the public path itself blocks systemd's migrate-on-start rename # ("Device or resource busy", exit 238/STATE_DIRECTORY). { services.prowlarr.enable = true; fileSystems."/var/lib/private/prowlarr" = { device = "/mnt/data/AppData/prowlarr/config"; fsType = "none"; options = [ "bind" ]; }; }