{ 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-bin = pkgs.runCommandLocal "jellyfin-plugin-bookshelf-bin" { } '' mkdir -p $out/var/lib/jellyfin/plugins cp -r ${selfPkgs.jellyfin-plugin-bookshelf-bin} $out/var/lib/jellyfin/plugins/bookshelf ''; jellyfin-plugin-intro-skipper-bin = pkgs.runCommandLocal "jellyfin-plugin-intro-skipper-bin" { } '' mkdir -p $out/var/lib/jellyfin/plugins cp -r ${selfPkgs.jellyfin-plugin-intro-skipper-bin} $out/var/lib/jellyfin/plugins/intro-skipper ''; jellyfin-plugin-opensubtitles-bin = pkgs.runCommandLocal "jellyfin-plugin-opensubtitles-bin" { } '' mkdir -p $out/var/lib/jellyfin/plugins cp -r ${selfPkgs.jellyfin-plugin-opensubtitles-bin} $out/var/lib/jellyfin/plugins/opensubtitles ''; jellyfin-plugin-playbackreporting-bin = pkgs.runCommandLocal "jellyfin-plugin-playbackreporting-bin" { } '' mkdir -p $out/var/lib/jellyfin/plugins cp -r ${selfPkgs.jellyfin-plugin-playbackreporting-bin} $out/var/lib/jellyfin/plugins/playbackreporting ''; jellyfin-plugin-reports-bin = pkgs.runCommandLocal "jellyfin-plugin-reports-bin" { } '' mkdir -p $out/var/lib/jellyfin/plugins cp -r ${selfPkgs.jellyfin-plugin-reports-bin} $out/var/lib/jellyfin/plugins/reports ''; jellyfin-plugin-sso-bin = pkgs.runCommandLocal "jellyfin-plugin-sso-bin" { } '' mkdir -p $out/var/lib/jellyfin/plugins cp -r ${selfPkgs.jellyfin-plugin-sso-bin} $out/var/lib/jellyfin/plugins/sso ''; jellyfin-plugin-subtitleextract-bin = pkgs.runCommandLocal "jellyfin-plugin-subtitleextract-bin" { } '' mkdir -p $out/var/lib/jellyfin/plugins cp -r ${selfPkgs.jellyfin-plugin-subtitleextract-bin} $out/var/lib/jellyfin/plugins/subtitleextract ''; jellyfin-plugin-tmdbboxsets-bin = pkgs.runCommandLocal "jellyfin-plugin-tmdbboxsets-bin" { } '' mkdir -p $out/var/lib/jellyfin/plugins cp -r ${selfPkgs.jellyfin-plugin-tmdbboxsets-bin} $out/var/lib/jellyfin/plugins/tmdbboxsets ''; jellyfin-plugin-tvdb-bin = pkgs.runCommandLocal "jellyfin-plugin-tvdb-bin" { } '' mkdir -p $out/var/lib/jellyfin/plugins cp -r ${selfPkgs.jellyfin-plugin-tvdb-bin} $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 = with pkgs; [ entrypoint jellyfin jellyfin-web jellyfin-plugin-bookshelf-bin jellyfin-plugin-intro-skipper-bin jellyfin-plugin-opensubtitles-bin jellyfin-plugin-playbackreporting-bin jellyfin-plugin-reports-bin jellyfin-plugin-sso-bin jellyfin-plugin-subtitleextract-bin jellyfin-plugin-tmdbboxsets-bin jellyfin-plugin-tvdb-bin jellyfin-ffmpeg curl jq ]; pathsToLink = [ "/bin" "/lib" "/var" ]; }; config = { Entrypoint = [ "entrypoint" ]; ExposedPorts = { "8096/tcp" = { }; }; WorkingDir = "/var/lib/jellyfin"; Volumes = { "/etc/jellyfin" = { }; "/var/lib/jellyfin/data" = { }; "/var/lib/jellyfin/metadata" = { }; "/var/lib/jellyfin/root" = { }; "/var/log/jellyfin" = { }; "/tmp/jellyfin" = { }; }; Env = [ # FIXME: https://github.com/NixOS/nixpkgs/issues/176081 "FONTCONFIG_FILE=${pkgs.fontconfig.out}/etc/fonts/fonts.conf" "FONTCONFIG_PATH=${pkgs.fontconfig.out}/etc/fonts/" ]; }; }