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

{
  services = {
    transmission = {
      enable = true;
      package = inputs.nixpkgs-unstable.legacyPackages.x86_64-linux.transmission_4;
      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;
      package = inputs.nixpkgs-unstable.legacyPackages.x86_64-linux.radarr;
    };
    sonarr = {
      enable = true;
      package = inputs.nixpkgs-unstable.legacyPackages.x86_64-linux.sonarr;
    };
    prowlarr.enable = true;

    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 = {
    podman.autoPrune.enable = true;
    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"];
        };
      };
    };
  };
}