{ lib, pkgs, config, ... }:
with lib;
let cfg = config.luj.mediaserver;
in
{
  options.luj.mediaserver = {
    enable = mkEnableOption "enable the mediaserver";
    tv.enable = mkEnableOption "enable the tv mediaserver";
    music.enable = mkEnableOption "enable the music mediaserver";
  };


  config = mkIf cfg.enable (
    mkMerge [{

      users.users.mediaserver = {
        name = "mediaserver";
        isNormalUser = true;
        home = "/home/mediaserver";
        group = config.users.groups.mediaserver.name;
      };

      users.groups.mediaserver = {
        name = "mediaserver";
      };

      luj.jackett = {
        enable = true;
        user = "mediaserver";
        group = "mediaserver";
        nginx.enable = true;
        nginx.subdomain = "jackett";
      };

      luj.flaresolverr.enable = true;

      luj.deluge = {
        enable = true;
        user = "mediaserver";
        group = "mediaserver";
        nginx.enable = true;
        nginx.subdomain = "downloads";
      };

    }


      (mkIf cfg.tv.enable {

        luj.sonarr = {
          enable = true;
          user = "mediaserver";
          group = "mediaserver";
          nginx.enable = true;
          nginx.subdomain = "series";
        };

        luj.radarr = {
          enable = true;
          user = "mediaserver";
          group = "mediaserver";
          nginx.enable = true;
          nginx.subdomain = "films";
        };
        luj.jellyfin = {
          enable = true;
          user = "mediaserver";
          group = "mediaserver";
          nginx.enable = true;
          nginx.subdomain = "tv";
        };


      })

      (mkIf cfg.music.enable {
        luj.lidarr = {
          enable = true;
          user = "mediaserver";
          group = "mediaserver";
          nginx.enable = true;
          nginx.subdomain = "songs";
        };

        luj.navidrome = {
          enable = true;
          user = "mediaserver";
          group = "mediaserver";
          nginx.enable = true;
          nginx.subdomain = "music";
        };


      })]);
}