{ config, lib, pkgs, ... }: { options.server = { arr = { enable = lib.mkEnableOption "enable full arr"; prowlarr = { enable = lib.mkEnableOption "enable prowlarr"; port = lib.mkOption { default = 9696; }; }; radarr = { enable = lib.mkEnableOption "enable radarr"; port = lib.mkOption { default = 7878; }; }; sonarr = { enable = lib.mkEnableOption "enable sonarr"; port = lib.mkOption { default = 8989; }; }; lidarr = { enable = lib.mkEnableOption "enable lidarr"; port = lib.mkOption { default = 8686; }; }; qbittorrent = { enable = lib.mkEnableOption "enable qbittorrent"; port = lib.mkOption { default = 8088; }; password = lib.mkOption { default = "EO3HgIK+QJNQN53efrF6zQ==:Ju6k++dsM4pLLgYjP9sLbUWOiNuQMrUH/g6QArdtKXzYisuzaR+XeJL4hEC9Zo3ekVa8EVnPnQu/mJoHxxkLOA=="; } }; }; }; config = { config.server.arr = lib.mkIf config.server.arr.enable { prowlarr.enable = lib.mkDefault true; radarr.enable = lib.mkDefault true; sonarr.enable = lib.mkDefault true; lidarr.enable = lib.mkDefault true; qbittorrent.enable = lib.mkDefault true; }; services = { prowlarr = lib.mkIf config.server.arr.prowlarr.enable { enable = true; server = { bindaddress = "0.0.0.0"; port = config.server.arr.prowlarr.port; }; }; radarr = lib.mkIf config.server.arr.radarr.enable { enable = true; server = { bindaddress = "0.0.0.0"; port = config.server.arr.radarr.port; }; }; sonarr = lib.mkIf config.server.arr.sonarr.enable { enable = true; server = { bindaddress = "0.0.0.0"; port = config.server.arr.sonarr.port; }; }; lidarr = lib.mkIf config.server.arr.lidarr.enable { enable = true; server = { bindaddress = "0.0.0.0"; port = config.server.arr.lidarr.port; }; }; qbittorrent = lib.mkIf config.server.arr.qbittorrent.enable { enable = false; webuiPort = config.server.arr.qbittorrent.port; serverConfig = { LegalNotice.Accepted = true; Preferences = { WebUI = { Password_PBKDF2 = config.server.arr.qbittorrent.password; }; }; }; }; }; }; }