{ containers.jellyfin = { autoStart = true; allowedDevices = [ { node = "/dev/dri/card0"; modifier = "rw"; } { node = "/dev/dri/renderD128"; modifier = "rw"; } ]; bindMounts = { "/media" = { hostPath = "/mnt/sdb1/media"; isReadOnly = false; }; "/dev/dri/card0" = { hostPath = "/dev/dri/card0"; isReadOnly = false; }; "/dev/dri/renderD128" = { hostPath = "/dev/dri/renderD128"; isReadOnly = false; }; }; config = { pkgs, ... }: { services = { jellyfin = { enable = true; # port = 8096 }; tailscale = { enable = true; useRoutingFeatures = "server"; interfaceName = "userspace-networking"; }; }; environment.systemPackages = with pkgs; [ jellyfin jellyfin-web jellyfin-ffmpeg libva-utils ]; ## Hardware transcoding nixpkgs.config.allowUnfree = true; hardware.graphics = { enable = true; extraPackages = with pkgs; [ ## Intel Core i5 Skylake intel-ocl intel-media-driver intel-compute-runtime-legacy1 ]; }; ## Grab EPG data daily systemd = { services = { epg = { script = "${pkgs.nodejs}/bin/npm run --prefix /media/TV/epg/ grab -- --channels=custom.channels.xml"; path = [ pkgs.bash pkgs.nodejs ]; serviceConfig = { Type = "oneshot"; User = "root"; }; startAt = "daily"; # Creates a timer }; jellyfin.environment.LIBVA_DRIVER_NAME = "iHD"; }; timers.epg.timerConfig.Persistent = true; }; environment.sessionVariables = { LIBVA_DRIVER_NAME = "iHD"; }; system.stateVersion = "24.05"; }; }; }