{ config, lib, ... }: let cfg = config.homelab.apps.plex; in { options.homelab.apps.plex.enable = lib.mkEnableOption "Plex"; config = lib.mkIf cfg.enable { users.users.plex = { uid = lib.mkForce 3009; isSystemUser = true; group = config.users.groups.media; home = "/var/empty"; shell = null; }; virtualisation.oci-containers.containers = { plex = { hostname = "plex"; image = "plexinc/pms-docker:1.41.0.8992-8463ad060"; autoStart = true; ports = [ "32400:32400/tcp" # Plex Media Server "1900:1900/udp" # Plex DLNA Server "32469:32469/tcp" # Plex DLNA Server "32410:32410/udp" # GDM network discovery "32412:32412/udp" # GDM network discovery "32413:32413/udp" # GDM network discovery "32414:32414/udp" # GDM network discovery # "8324:8324/tcp" # Controlling Plex for Roku via Plex Companion ]; environment = { ADVERTISE_AP = "..."; # TODO Configure ip ALLOWED_NETWORKS = "192.168.0.0/24,172.16.0.0/16"; CHANGE_CONFIG_DIR_OWNERSHIP = "false"; HOSTNAME = "PlexServer"; PLEX_CLAIM = "..."; # TODO Add token PLEX_UID = config.users.users.plex.uid; PLEX_GID = config.users.groups.media.gid; TZ = config.time.timeZone; }; volumes = [ # TODO "config:/var/lib/plexmediaserver" # TODO "transcode-temp:/transcode" # TODO "media:/data" ]; }; }; }; }