358e9b24

By: Ammar Nanjiani <ammar.nanjiani@gmail.com>

feat(jellyfin): host media archive on theoden, fronted by traefik

Native services.jellyfin (nixarr not needed for LAN-only use; the Aug 2025
nixarr experiment was retired for VPN reasons and its jellyfin extras are
public-exposure plumbing). Replaces the stale media->homeserver_ip DNS
record with jellyfin->traefik LB.

- hosts/servers/theoden/jellyfin.nix: services.jellyfin on :8096,
  jellyfin user in storage group for /mnt/storage/movies read
- k8s/apps/jellyfin/: romm-pattern Service+manual Endpoints to
  192.168.1.27, bifrost-pattern dual IngressRoute + certs
  (jellyfin.lan via lan-ca, jellyfin.dimensiondoor.xyz via letsencrypt)
- adguard.nix: jellyfin.lan rewrite -> 192.168.1.52
- htpc.nix: kodi-gbm withPackages + jellyfin addon (rivendell)
- dns.tf: media record -> jellyfin record

Leftovers cleaned on theoden: /mnt/storage/{jellyfin,arr-data} (44K
husks + dead Mullvad wg key) removed.

Total

13m39s

Time to Start Worker time Duration Time to finish Idle
Config 2s 11s 11s 13s 2s
Eval 11s 6m09s 6m09s 6m21s 0s
Build 6m16s 36m33s 7m25s 13m41s 0s
Suite 2s 42m54s 13m39s 13m41s 2s

Timeline

Config Eval Build
0s1m2m3m4m5m6m7m8m9m10m11m12m13m