nix-config/nixos/viridian/multimedia/jellyfin/default.nix
jasmine f4067e3697
chore(viridian): update all Docker services to latest pinned releases
Update all container images to their latest stable releases with pinned
version tags (not "latest" tag for reproducibility).

Multimedia services:
- Jellyfin: 10.10.5 → 10.11.5
- Lidarr: 2.9.6.4552 → 3.1.0.4875
- Prowlarr: 1.30.2.4939 → 2.3.0.5236
- qBittorrent: 5.0.3 → 5.1.4
- Radarr: 5.18.4.9674 → 6.0.4.10291
- Sonarr: 4.0.13.2932 → 4.0.16.2944

Services:
- OpenGist: 1.10 → 1.11.1
2025-12-23 13:03:41 +08:00

49 lines
1.3 KiB
Nix

{...}: let
port = "8096";
in {
virtualisation.oci-containers.containers = {
# Volunteer-built media solution that puts you in control of your media
jellyfin = {
autoStart = true;
image = "jellyfin/jellyfin:10.11.5";
ports = [
"${port}:8096/tcp" # HTTP traffic
"8920:8920/tcp" # HTTPS traffic
# "1900:1900/udp" # Service auto-discovery
"7359:7359/udp" # Client auto-discovery
];
volumes = [
# Media library
"/srv/multimedia/library:/media:ro"
# Container data
"/srv/multimedia/containers/jellyfin/config:/config:rw"
"/srv/multimedia/containers/jellyfin/cache:/cache:rw"
];
environment = {
PUID = "1000";
PGID = "100";
};
extraOptions = [
"--group-add=303"
"--device=/dev/dri/renderD128:/dev/dri/renderD128"
"--network=media-stack"
];
};
};
services.traefik.dynamicConfigOptions.http.routers = {
jellyfin = {
rule = "Host(`jellyfin.home.arpa`)";
entryPoints = [
"websecure"
];
service = "jellyfin";
};
};
services.traefik.dynamicConfigOptions.http.services = {
jellyfin.loadBalancer.servers = [
{url = "http://127.0.0.1:${port}";}
];
};
}