{ self, lib, ... }: { flake.nixosModules.jellyfin = { config, pkgs, ... }: let cfg = config.hostOptions.server; in { imports = [ self.nixosModules.hostOptions self.nixosModules.nginx ]; services.jellyfin = { enable = true; openFirewall = false; dataDir = "${cfg.dataPath}/jellyfin/"; hardwareAcceleration = { enable = true; device = lib.mkDefault "/dev/dri/renderD128"; }; }; # transcoding users.users.jellyfin.extraGroups = ["video" "render"]; environment.systemPackages = with pkgs; [jellyfin-ffmpeg]; services.nginx.virtualHosts."jellyfin.${cfg.domain}" = { enableACME = true; forceSSL = true; locations."/" = { proxyPass = "http://127.0.0.1:8096"; proxyWebsockets = true; extraConfig = '' proxy_buffering off; ''; }; }; }; }