homefree/services/jellyfin.nix
Ellis Rahhal ddd2e5f9cb * Updated landing page
* Added caching policy to landing page Caddy config
* Added radicale
* Added cryptpad
* Added jellyfin
2024-11-26 00:09:34 -08:00

71 lines
2.1 KiB
Nix

{ config, pkgs, ... }:
{
services.jellyfin = {
enable = config.homefree.services.jellyfin.enable;
openFirewall = true;
user = config.homefree.system.adminUsername;
};
environment.systemPackages = [
pkgs.jellyfin
pkgs.jellyfin-web
pkgs.jellyfin-ffmpeg
];
## Support Intro Skipper plugin
nixpkgs.overlays = with pkgs; [
(
final: prev:
{
jellyfin-web = prev.jellyfin-web.overrideAttrs (finalAttrs: previousAttrs: {
installPhase = ''
runHook preInstall
# this is the important line
sed -i "s#</head>#<script src=\"configurationpage?name=skip-intro-button.js\"></script></head>#" dist/index.html
mkdir -p $out/share
cp -a dist $out/share/jellyfin-web
runHook postInstall
'';
});
}
)
];
homefree.proxied-hosts = if config.homefree.services.jellyfin.enable == true then [
{
label = "jellyfin";
subdomains = [ "jellyfin" ];
http-domains = [ "homefree.${config.homefree.system.localDomain}" ];
https-domains = [ config.homefree.system.domain ];
port = 8096;
public = config.homefree.services.jellyfin.public;
}
] else [];
##--------------------------------------------------------------------------------
## Enable hardware transcoding
## Only works on Intel
## @TODO: Move to hardware config
## @TODO: Add flags for which capabilities are needed by each service
##--------------------------------------------------------------------------------
## enable vaapi on OS-level
nixpkgs.config.packageOverrides = pkgs: {
vaapiIntel = pkgs.vaapiIntel.override { enableHybridCodec = true; };
};
hardware.graphics = {
enable = true;
extraPackages = with pkgs; [
intel-media-driver
intel-vaapi-driver # previously vaapiIntel
vaapiVdpau
intel-compute-runtime # OpenCL filter support (hardware tonemapping and subtitle burn-in)
vpl-gpu-rt # QSV on 11th gen or newer
intel-media-sdk # QSV up to 11th gen
];
};
}