108
packages/docker/jellyfin/default.nix
Normal file
108
packages/docker/jellyfin/default.nix
Normal file
@@ -0,0 +1,108 @@
|
||||
{
|
||||
pkgs,
|
||||
inputs,
|
||||
system,
|
||||
...
|
||||
}:
|
||||
let
|
||||
selfPkgs = inputs.self.packages.${system};
|
||||
|
||||
jellyfin = pkgs.jellyfin.overrideAttrs (_: {
|
||||
makeWrapperArgs = [
|
||||
"--add-flags"
|
||||
"--ffmpeg=${pkgs.jellyfin-ffmpeg}/bin/ffmpeg"
|
||||
];
|
||||
});
|
||||
|
||||
jellyfin-web = pkgs.runCommandLocal "jellyfin-web" { } ''
|
||||
mkdir -p $out/var/www
|
||||
cp -r ${pkgs.jellyfin-web}/share/jellyfin-web $out/var/www/jellyfin
|
||||
'';
|
||||
|
||||
jellyfin-plugin-bookshelf = pkgs.runCommandLocal "jellyfin-plugin-bookshelf" { } ''
|
||||
mkdir -p $out/var/lib/jellyfin/plugins
|
||||
cp -r ${selfPkgs.jellyfin-plugin-bookshelf} $out/var/lib/jellyfin/plugins/bookshelf
|
||||
'';
|
||||
|
||||
jellyfin-plugin-intro-skipper = pkgs.runCommandLocal "jellyfin-plugin-intro-skipper" { } ''
|
||||
mkdir -p $out/var/lib/jellyfin/plugins
|
||||
cp -r ${selfPkgs.jellyfin-plugin-intro-skipper} $out/var/lib/jellyfin/plugins/intro-skipper
|
||||
'';
|
||||
|
||||
jellyfin-plugin-playbackreporting = pkgs.runCommandLocal "jellyfin-plugin-playbackreporting" { } ''
|
||||
mkdir -p $out/var/lib/jellyfin/plugins
|
||||
cp -r ${selfPkgs.jellyfin-plugin-playbackreporting} $out/var/lib/jellyfin/plugins/playbackreporting
|
||||
'';
|
||||
|
||||
jellyfin-plugin-reports = pkgs.runCommandLocal "jellyfin-plugin-reports" { } ''
|
||||
mkdir -p $out/var/lib/jellyfin/plugins
|
||||
cp -r ${selfPkgs.jellyfin-plugin-reports} $out/var/lib/jellyfin/plugins/reports
|
||||
'';
|
||||
|
||||
jellyfin-plugin-sso = pkgs.runCommandLocal "jellyfin-plugin-sso" { } ''
|
||||
mkdir -p $out/var/lib/jellyfin/plugins
|
||||
cp -r ${selfPkgs.jellyfin-plugin-sso} $out/var/lib/jellyfin/plugins/sso
|
||||
'';
|
||||
|
||||
jellyfin-plugin-subtitleextract = pkgs.runCommandLocal "jellyfin-plugin-subtitleextract" { } ''
|
||||
mkdir -p $out/var/lib/jellyfin/plugins
|
||||
cp -r ${selfPkgs.jellyfin-plugin-subtitleextract} $out/var/lib/jellyfin/plugins/subtitleextract
|
||||
'';
|
||||
|
||||
jellyfin-plugin-tvdb = pkgs.runCommandLocal "jellyfin-plugin-tvdb" { } ''
|
||||
mkdir -p $out/var/lib/jellyfin/plugins
|
||||
cp -r ${selfPkgs.jellyfin-plugin-tvdb} $out/var/lib/jellyfin/plugins/tvdb
|
||||
'';
|
||||
|
||||
entrypoint = pkgs.writeTextFile {
|
||||
name = "entrypoint";
|
||||
executable = true;
|
||||
destination = "/bin/entrypoint";
|
||||
text = builtins.readFile ./entrypoint.sh;
|
||||
};
|
||||
in
|
||||
pkgs.dockerTools.buildImage {
|
||||
name = "jellyfin";
|
||||
fromImage = import ../base { inherit pkgs; };
|
||||
|
||||
copyToRoot = pkgs.buildEnv {
|
||||
name = "root";
|
||||
paths = [
|
||||
entrypoint
|
||||
jellyfin
|
||||
jellyfin-web
|
||||
jellyfin-plugin-bookshelf
|
||||
jellyfin-plugin-intro-skipper
|
||||
jellyfin-plugin-playbackreporting
|
||||
jellyfin-plugin-reports
|
||||
jellyfin-plugin-sso
|
||||
jellyfin-plugin-subtitleextract
|
||||
jellyfin-plugin-tvdb
|
||||
pkgs.jellyfin-ffmpeg
|
||||
pkgs.curl
|
||||
pkgs.jq
|
||||
];
|
||||
pathsToLink = [
|
||||
"/bin"
|
||||
"/lib"
|
||||
"/var"
|
||||
];
|
||||
};
|
||||
|
||||
runAsRoot = ''
|
||||
${pkgs.dockerTools.shadowSetup}
|
||||
'';
|
||||
|
||||
config = {
|
||||
Entrypoint = [ "entrypoint" ];
|
||||
ExposedPorts = {
|
||||
"8096/tcp" = { };
|
||||
};
|
||||
Volumes = {
|
||||
"/etc/jellyfin" = { };
|
||||
"/var/lib/jellyfin" = { };
|
||||
"/var/log/jellyfin" = { };
|
||||
"/tmp/jellyfin" = { };
|
||||
};
|
||||
};
|
||||
}
|
Reference in New Issue
Block a user