nixos/modules/services/plex/default.nix

63 lines
1.5 KiB
Nix
Raw Normal View History

2024-02-02 13:45:05 +01:00
{
config,
inputs,
lib,
...
}:
let
cfg = config.services.az-plex;
volumePath = "/mnt/media";
2024-02-02 13:45:05 +01:00
in
{
2023-06-06 21:46:36 +02:00
options = {
2024-02-02 13:45:05 +01:00
services.az-plex.enable = lib.mkEnableOption "Enable Plex running in Docker";
2022-01-24 22:10:46 +01:00
};
2023-05-29 17:10:15 +02:00
2023-06-06 21:46:36 +02:00
config = lib.mkIf cfg.enable {
age.secrets.plexClaim.file = "${inputs.self}/scrts/plex_claim.age";
2023-06-06 21:46:36 +02:00
networking = {
firewall.allowedTCPPorts = [
32400 # Web Interface/ Remote Access
2022-11-02 15:40:09 +01:00
];
2023-06-06 21:46:36 +02:00
firewall.allowedUDPPorts = [
1900 # DLNA
5353 # Bonjour/Avahi
32410 # GDM network discovery
32412 # GDM network discovery
32413 # GDM network discovery
32414 # GDM network discovery
32469 # Plex DLNA Server
2022-11-02 15:40:09 +01:00
];
};
2023-06-06 21:46:36 +02:00
services.az-docker.enable = true;
virtualisation.oci-containers = {
backend = "docker";
containers."plex" = {
autoStart = true;
# https://fleet.linuxserver.io/image?name=linuxserver/plex
2024-03-11 12:34:32 +01:00
image = "lscr.io/linuxserver/plex:1.40.0@sha256:e21358a1a1328e0a68d237bc7fce259991855c66e1bd094acf63ecb8ea13e06c";
2023-06-06 21:46:36 +02:00
environment = {
TZ = " Europe/Zurich ";
PUID = "1000";
PGID = "1000";
VERSION = "docker";
};
environmentFiles = [ config.age.secrets.plexClaim.path ];
volumes = [
2024-01-29 22:34:06 +01:00
"${volumePath}:/mnt/media"
2023-06-06 21:46:36 +02:00
"/var/lib/plex/config:/config"
"/var/lib/plex/tmp:/transcode"
"/etc/localtime:/etc/localtime:ro"
];
2024-02-02 13:45:05 +01:00
extraOptions = [
"--network=host"
"--log-opt=tag='plex'"
];
2023-06-06 21:46:36 +02:00
};
};
2022-11-02 15:40:09 +01:00
};
2022-01-24 22:10:46 +01:00
}