{ 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" = { }; }; WorkingDir = "/var/lib/jellyfin"; Volumes = { "/etc/jellyfin" = { }; "/var/lib/jellyfin" = { }; "/var/log/jellyfin" = { }; "/tmp/jellyfin" = { }; }; }; }