back to jellyfin

This commit is contained in:
Jana Dönszelmann 2025-10-21 17:33:56 +02:00
parent d3662d77d0
commit a60d56425c
No known key found for this signature in database
9 changed files with 202 additions and 126 deletions

View file

@ -0,0 +1,145 @@
{ pkgs, lib, config, ... }:
let
jellyfin-config = ''
{
"includeCorsCredentials": false,
"multiserver": false,
"themes": [
{
"name": "Apple TV",
"id": "appletv",
"color": "#bcbcbc"
}, {
"name": "Blue Radiance",
"id": "blueradiance",
"color": "#011432"
}, {
"name": "Dark",
"id": "dark",
"color": "#202020",
"default": true
}, {
"name": "Light",
"id": "light",
"color": "#303030"
}, {
"name": "Purple Haze",
"id": "purplehaze",
"color": "#000420"
}, {
"name": "WMC",
"id": "wmc",
"color": "#0c2450"
}
],
"menuLinks": [
{
"name": "Link SSO Account",
"icon": "add_link",
"url": "https://media.donsz.nl/SSOViews/linking"
}
],
"servers": [],
"plugins": [
"playAccessValidation/plugin",
"experimentalWarnings/plugin",
"htmlAudioPlayer/plugin",
"htmlVideoPlayer/plugin",
"photoPlayer/plugin",
"comicsPlayer/plugin",
"bookPlayer/plugin",
"youtubePlayer/plugin",
"backdropScreensaver/plugin",
"pdfPlayer/plugin",
"logoScreensaver/plugin",
"sessionPlayer/plugin",
"chromecastPlayer/plugin",
"syncPlay/plugin"
]
}
'';
in
{
environment.systemPackages = [
pkgs.jellyfin
pkgs.jellyfin-web
pkgs.jellyfin-ffmpeg
];
services.nginx.virtualHosts."media.donsz.nl" = {
forceSSL = true;
enableACME = true;
locations."/" = {
proxyPass = "http://localhost:8096";
extraConfig = ''
proxy_buffering off;
'';
};
locations."/socket" = {
inherit (config.services.nginx.virtualHosts."media.donsz.nl".locations."/")
proxyPass
;
proxyWebsockets = true;
};
};
users.groups.jellyfin = { };
users.users.jellyfin = {
isSystemUser = true;
group = "jellyfin";
extraGroups = [ "storage" ];
};
services.nginx.virtualHosts."media.donsz.nl".locations."/web/config.json".extraConfig = ''
add_header Content-Type application/json;
add_header Access-Control-Allow-Origin *;
return 200 '${jellyfin-config}';
'';
services.jellyfin = {
enable = true;
openFirewall = true;
user = "jellyfin";
group = "jellyfin";
};
# Only set this if you're using intel-vaapi-driver (see below):
nixpkgs.config.packageOverrides = pkgs: {
intel-vaapi-driver = pkgs.intel-vaapi-driver.override { enableHybridCodec = true; };
};
systemd.services.jellyfin.environment.LIBVA_DRIVER_NAME = "iHD"; # or i965, see below
environment.sessionVariables = { LIBVA_DRIVER_NAME = "iHD"; }; # ditto
hardware.graphics = {
enable = true;
extraPackages = with pkgs; [
intel-ocl
intel-media-driver
intel-media-sdk
];
};
# hardware.graphics = {
# enable = true;
# package = pkgs.intel-media-driver;
# };
# systemd.services.jellyfin = {
# # if EncoderAppPath is manually set in the web UI, it can never be updated through --ffmpeg
# preStart = "test ! -e /var/lib/jellyfin/config/encoding.xml || sed -i '/<EncoderAppPath>/d' /var/lib/jellyfin/config/encoding.xml";
# serviceConfig = {
# # allow access to GPUs for hardware transcoding
# DeviceAllow = lib.mkForce "char-drm";
# BindPaths = lib.mkForce "/dev/dri";
# # to allow restarting from web ui
# Restart = lib.mkForce "always";
# Slice = "mediaplayback.slice";
# };
# };
}