summaryrefslogtreecommitdiff
path: root/hosts/poweredge/jellyfin.nix
diff options
context:
space:
mode:
authorTim Keller <tjk@tjkeller.xyz>2026-06-13 14:15:15 -0500
committerTim Keller <tjk@tjkeller.xyz>2026-06-13 14:15:15 -0500
commit4a6ebdc508197e9881768b281993a4ee99cda132 (patch)
treeed8faca951792407e2680c00c85c0231671deb59 /hosts/poweredge/jellyfin.nix
parent0a0947450252266623514e2afc7f68ebb3b57e8e (diff)
downloadnixos-4a6ebdc508197e9881768b281993a4ee99cda132.tar.xz
nixos-4a6ebdc508197e9881768b281993a4ee99cda132.zip
add jellyfin service
Diffstat (limited to 'hosts/poweredge/jellyfin.nix')
-rw-r--r--hosts/poweredge/jellyfin.nix68
1 files changed, 68 insertions, 0 deletions
diff --git a/hosts/poweredge/jellyfin.nix b/hosts/poweredge/jellyfin.nix
new file mode 100644
index 0000000..84f3ec0
--- /dev/null
+++ b/hosts/poweredge/jellyfin.nix
@@ -0,0 +1,68 @@
+{
+ containers.jellyfin = {
+ autoStart = true;
+ privateNetwork = true;
+ extraVeths.vb-jellyfin = {
+ hostBridge = "br-lan0";
+ #localMacAddress = "02:00:00:00:00:02"; # TODO update to 26.05
+ };
+ bindMounts = {
+ "/media" = {
+ hostPath = "/media/ingens/media";
+ isReadOnly = true;
+ };
+ };
+
+ # GPU
+ allowedDevices = [
+ { node = "/dev/dri/card1"; modifier = "rw"; }
+ { node = "/dev/dri/renderD128"; modifier = "rw"; }
+ ];
+
+ bindMounts = {
+ "/dev/dri/card1" = {
+ hostPath = "/dev/dri/card1";
+ isReadOnly = false;
+ };
+ "/dev/dri/renderD128" = {
+ hostPath = "/dev/dri/renderD128";
+ isReadOnly = false;
+ };
+ };
+
+ config = { lib, config, ... }: {
+ # Network
+ networking.interfaces.vb-jellyfin.useDHCP = true;
+ networking.firewall.allowedTCPPorts = [ 80 ]; # Caddy
+
+ # CUDA
+ nix.settings = {
+ substituters = [ "https://cache.flox.dev" ];
+ trusted-public-keys = [ "flox-cache-public-1:7F4OyH7ZCnFhcze3fJdfyXYLQw/aV7GEed86nQ7IsOs=" ];
+ };
+ #nixpkgs.config.cudaSupport = true;
+ users.users.jellyfin.extraGroups = [ "video" "render" ];
+
+ # Jellyfin
+ services.jellyfin = {
+ enable = true;
+ openFirewall = true;
+ #hardwareAcceleration = {
+ # enable = true;
+ # type = "nvenc";
+ # device = "/dev/dri/renderD128";
+ #};
+ };
+
+ # Reverse proxy
+ services.caddy = {
+ enable = true;
+ virtualHosts.":80".extraConfig = ''
+ reverse_proxy localhost:8096
+ '';
+ };
+
+ system.stateVersion = "26.05";
+ };
+ };
+}