diff --git a/hardware/gpu/intel.nix b/hardware/gpu/intel.nix index 60f1381..d71d997 100644 --- a/hardware/gpu/intel.nix +++ b/hardware/gpu/intel.nix @@ -4,6 +4,7 @@ # https://github.com/NixOS/nixpkgs/blob/nixos-22.11/pkgs/development/libraries/ffmpeg/generic.nix # https://github.com/NixOS/nixpkgs/blob/nixos-22.11/pkgs/development/libraries/jellyfin-ffmpeg/default.nix + # https://nixos.wiki/wiki/Accelerated_Video_Playback nixpkgs.config.openglSupport = true; # why is this not set by hardware.opengl.enable ? nixpkgs.config.vaapiSupport = true; @@ -11,13 +12,20 @@ nixpkgs.config.vdpauSupport = true; # intel nixpkgs.config.libmfxSupport = true; # intel + nixpkgs.config.packageOverrides = pkgs: { + vaapiIntel = pkgs.vaapiIntel.override { enableHybridCodec = true; }; + intel-vaapi-driver = pkgs.intel-vaapi-driver.override { enableHybridCodec = true; }; + }; + hardware.opengl.enable = true; hardware.opengl.driSupport = true; hardware.opengl.extraPackages = with pkgs; [ mesa.drivers - vaapiIntel - libvdpau-va-gl + intel-media-driver + (if (lib.versionOlder (lib.versions.majorMinor lib.version) "23.11") then vaapiIntel else intel-vaapi-driver) vaapiVdpau + libvdpau-va-gl intel-ocl + intel-compute-runtime # OpenCL filter support (hardware tonemapping and subtitle burn-in) ]; } diff --git a/profiles/web/services/jellyfin.nix b/profiles/web/services/jellyfin.nix index ec51524..35ca536 100644 --- a/profiles/web/services/jellyfin.nix +++ b/profiles/web/services/jellyfin.nix @@ -35,21 +35,7 @@ proxyWebsockets = true; }; }; - # Hardware acceleration - # https://nixos.wiki/wiki/Jellyfin - nixpkgs.config.packageOverrides = pkgs: { - vaapiIntel = pkgs.vaapiIntel.override { enableHybridCodec = true; }; - }; - hardware.opengl = { - enable = true; - extraPackages = with pkgs; [ - intel-media-driver - vaapiIntel - vaapiVdpau - libvdpau-va-gl - intel-compute-runtime # OpenCL filter support (hardware tonemapping and subtitle burn-in) - ]; - }; + # Allow Jellyfin access to VAAPI users.users.${config.services.jellyfin.user}.extraGroups = [ "video" "render" ]; systemd.services.jellyfin.serviceConfig.PrivateDevices = lib.mkForce false;