{ pkgs, config, service_configs, lib, ... }: { imports = [ (lib.serviceMountWithZpool "sonarr" service_configs.zpool_ssds [ service_configs.sonarr.dataDir ]) (lib.serviceMountWithZpool "sonarr" service_configs.zpool_hdds [ service_configs.torrents_path ]) (lib.serviceFilePerms "sonarr" [ "Z ${service_configs.sonarr.dataDir} 0700 ${config.services.sonarr.user} ${config.services.sonarr.group}" ]) (lib.mkCaddyReverseProxy { subdomain = "sonarr"; port = service_configs.ports.private.sonarr.port; auth = true; }) (lib.mkArrSettingsService { name = "sonarr"; port = service_configs.ports.private.sonarr.port; dataDir = service_configs.sonarr.dataDir; # Stop Sonarr from auto-upgrading to PROPER/REPACK releases purely on # revision. Repack/Proper +5 in the recyclarr custom formats already gives # them a small preference; PreferAndUpgrade made revision override CF score # entirely, which silently swapped scored 4K WEB-DL files for low-scored # 1080p Bluray Remux PROPERs. settings.mediamanagement.downloadPropersAndRepacks = "doNotPrefer"; }) ]; systemd.tmpfiles.rules = [ "d /torrents/media 2775 root ${service_configs.media_group} -" "d ${service_configs.media.tvDir} 2775 root ${service_configs.media_group} -" "d ${service_configs.media.moviesDir} 2775 root ${service_configs.media_group} -" ]; services.sonarr = { enable = true; dataDir = service_configs.sonarr.dataDir; settings.server.port = service_configs.ports.private.sonarr.port; settings.update.mechanism = "external"; }; users.users.${config.services.sonarr.user}.extraGroups = [ service_configs.media_group ]; }