50 lines
983 B
Nix
50 lines
983 B
Nix
{
|
|
pkgs,
|
|
config,
|
|
lib,
|
|
namespace,
|
|
inputs,
|
|
system,
|
|
...
|
|
}: let
|
|
inherit (builtins) toString;
|
|
inherit (lib) mkIf mkEnableOption mkOption types;
|
|
|
|
cfg = config.${namespace}.services.media.jellyfin;
|
|
in {
|
|
options.${namespace}.services.media.jellyfin = {
|
|
enable = mkEnableOption "Enable jellyfin server";
|
|
};
|
|
|
|
config = mkIf cfg.enable {
|
|
environment.systemPackages = with pkgs; [
|
|
jellyfin
|
|
jellyfin-web
|
|
jellyfin-ffmpeg
|
|
mediainfo
|
|
id3v2
|
|
yt-dlp
|
|
];
|
|
|
|
services = {
|
|
# port is harcoded in nixpkgs module
|
|
jellyfin = {
|
|
enable = true;
|
|
openFirewall = true;
|
|
user = "media";
|
|
group = "media";
|
|
};
|
|
|
|
caddy = {
|
|
enable = true;
|
|
virtualHosts = {
|
|
"jellyfin.kruining.eu".extraConfig = ''
|
|
reverse_proxy http://[::1]:8096
|
|
'';
|
|
};
|
|
};
|
|
};
|
|
|
|
systemd.services.jellyfin.serviceConfig.killSignal = lib.mkForce "SIGKILL";
|
|
};
|
|
}
|