nixos-config/systems/x86_64-linux/stargate/services/jellyfin.nix
2025-09-27 22:31:27 +02:00

66 lines
1.8 KiB
Nix

{
lib,
pkgs,
inputs,
namespace,
system,
target,
format,
virtual,
systems,
config,
...
}:
with lib;
with lib.custom; {
sops.secrets."services/jellyfin" = {
owner = config.services.jellyfin.user;
group = config.services.jellyfin.group;
};
services.declarative-jellyfin = {
enable = true;
openFirewall = true;
users = {
admin = {
mutable = false;
permissions.isAdministrator = true;
hashedPasswordFile = config.sops.secrets."services/jellyfin".path;
};
};
plugins = [
{
name = "intro skipper";
url = "https://github.com/intro-skipper/intro-skipper/releases/download/10.10/v1.10.10.19/intro-skipper-v1.10.10.19.zip";
version = "1.10.10.19";
targetAbi = "10.10.7.0"; # Required as intro-skipper doesn't provide a meta.json file
sha256 = "sha256:12hby8vkb6q2hn97a596d559mr9cvrda5wiqnhzqs41qg6i8p2fd";
}
];
system = {
serverName = "Jellyfin Homeserver for Bees";
# Use Hardware Acceleration for trickplay image generation
trickplayOptions = {
enableHwAcceleration = true;
enableHwEncoding = true;
};
UICulture = "ru";
};
encoding = {
enableHardwareEncoding = true;
hardwareAccelerationType = "vaapi";
enableDecodingColorDepth10Hevc = true; # enable if your system supports
allowHevcEncoding = true; # enable if your system supports
allowAv1Encoding = true; # enable if your system supports
hardwareDecodingCodecs = [
# enable the codecs your system supports
"h264"
"hevc"
"mpeg2video"
"vc1"
"vp9"
"av1"
];
};
};
users.users.${config.services.jellyfin.user}.extraGroups = ["video" "render"];
}