78 lines
2.3 KiB
Nix
78 lines
2.3 KiB
Nix
{ config, lib, ... }:
|
|
|
|
let
|
|
cfg = config.homelab.apps.plex;
|
|
in {
|
|
options.homelab.apps.plex.enable = lib.mkEnableOption "Plex";
|
|
|
|
config = lib.mkIf cfg.enable {
|
|
homelab = {
|
|
users = {
|
|
apps.enable = true;
|
|
media.enable = true;
|
|
};
|
|
virtualisation.containers.enable = true;
|
|
};
|
|
|
|
users.users.plex = {
|
|
uid = lib.mkForce 3009;
|
|
isSystemUser = true;
|
|
group = config.users.groups.apps.name;
|
|
extraGroups = [
|
|
config.users.groups.media.name
|
|
];
|
|
home = "/var/empty";
|
|
shell = null;
|
|
};
|
|
|
|
fileSystems."/srv/video" = {
|
|
device = "192.168.0.11:/mnt/SMALL/MEDIA/VIDEO";
|
|
fsType = "nfs";
|
|
options = [
|
|
"ro"
|
|
"nfsvers=4.2"
|
|
"async" "soft"
|
|
"timeo=100" "retry=50" "actimeo=1800" "lookupcache=all"
|
|
"nosuid" "tcp"
|
|
];
|
|
};
|
|
|
|
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 = toString config.users.users.plex.uid;
|
|
PLEX_GID = toString config.users.groups.media.gid;
|
|
TZ = config.time.timeZone;
|
|
};
|
|
volumes = [
|
|
"plex-config:/var/lib/plexmediaserver"
|
|
"plex-transcode:/transcode"
|
|
"/srv/video:/data/video"
|
|
];
|
|
labels = {
|
|
"traefik.enable" = "true";
|
|
"traefik.http.routers.plex.rule=" = "Host(`plex.depeuter.dev`)";
|
|
"traefik.http.services.plex.loadbalancer.server.port" = "32400";
|
|
};
|
|
};
|
|
};
|
|
};
|
|
}
|