{ config, lib, pkgs, inputs, ... }:

{
  services = {
    transmission = {
      enable = true;
      home = "/var/lib/transmission";
      group = "medias";
      settings = {
        rpc-bind-address = "127.0.0.1";
        rpc-port = 9091;
        rpc-host-whitelist = "*";
        rpc-whitelist-enabled = false;
        peer-port = 51413;
        incomplete-dir = "/mnt/medias/incomplete";
        download-dir = "/mnt/medias/torrent";
      };
    };

    radarr.enable = true;
    sonarr.enable = true;
    jackett = {
      enable = true;
      package = inputs.nixpkgs-unstable.legacyPackages.x86_64-linux.jackett;
    };

    jellyfin = {
      enable = true;
      package = inputs.nixpkgs-unstable.legacyPackages.x86_64-linux.jellyfin;
    };

    navidrome = {
      enable = true;
      settings = {
        MusicFolder = "/mnt/medias/musique";
        ImageCacheSize = 0;
      };
    };
  };

  systemd.services.transmission.serviceConfig = {
    BindPaths = [ "/mnt/medias" ];
    LimitNOFILE = 1048576;
  };

  networking = {
    firewall.allowedTCPPorts = [
      config.services.transmission.settings.peer-port
    ];

    firewall.allowedUDPPorts = [
      config.services.transmission.settings.peer-port
    ];
  };

  virtualisation.oci-containers = {
    backend = "podman";
    containers = {
      slimserver = {
        image = "docker.io/lmscommunity/logitechmediaserver:stable";
        volumes = [
          "/mnt/medias/musique:/music:ro"
          "/var/lib/slimserver:/config:rw"
          "/etc/localtime:/etc/localtime:ro"
        ];
        ports = [
          "10.30.0.1:9000:9000/tcp"
          "10.30.0.1:9090:9090/tcp"
          "10.30.0.1:3483:3483/tcp"
          "10.30.0.1:3483:3483/udp"
        ];
        extraOptions = ["--pull=always"];
      };
    };
  };
}