diff options
Diffstat (limited to 'nixpkgs/pkgs/servers/jellyfin/web.nix')
-rw-r--r-- | nixpkgs/pkgs/servers/jellyfin/web.nix | 81 |
1 files changed, 81 insertions, 0 deletions
diff --git a/nixpkgs/pkgs/servers/jellyfin/web.nix b/nixpkgs/pkgs/servers/jellyfin/web.nix new file mode 100644 index 000000000000..1bd4a305a7ad --- /dev/null +++ b/nixpkgs/pkgs/servers/jellyfin/web.nix @@ -0,0 +1,81 @@ +{ lib +, fetchFromGitHub +, pkgs +, stdenv +, nodejs +}: + +stdenv.mkDerivation rec { + pname = "jellyfin-web"; + version = "10.7.5"; + # TODO: on the next major release remove src.postFetch + # and use the lock file in web-update.sh: + # https://github.com/jellyfin/jellyfin-web/commit/6efef9680d55a93f4333ef8bfb65a8a650c99a49 + + src = fetchFromGitHub { + owner = "jellyfin"; + repo = "jellyfin-web"; + rev = "v${version}"; + sha256 = "5y6hWEDxY5WbOUdjujmuMV3bQVvYU2J9oIANBVN5XOc="; + postFetch = '' + mkdir -p $out + cd $out + tar -xzf $downloadedFile --strip-components=1 + + # replace unsupported dependency url + # https://github.com/svanderburg/node2nix/issues/163 + substituteInPlace package.json \ + --replace \ + "https://github.com/jellyfin/JavascriptSubtitlesOctopus#4.0.0-jf-smarttv" \ + "https://github.com/jellyfin/JavascriptSubtitlesOctopus/archive/refs/tags/4.0.0-jf-smarttv.tar.gz" + ''; + }; + + nativeBuildInputs = [ + nodejs + ]; + + buildPhase = + let + nodeDependencies = ((import ./node-composition.nix { + inherit pkgs nodejs; + inherit (stdenv.hostPlatform) system; + }).nodeDependencies.override (old: { + # access to path '/nix/store/...-source' is forbidden in restricted mode + src = src; + + # dont run the prepare script: + # Error: Cannot find module '/nix/store/...-node-dependencies-jellyfin-web-.../jellyfin-web/scripts/prepare.js + # npm run build:production runs the same command + dontNpmInstall = true; + })); + in + '' + runHook preBuild + + ln -s ${nodeDependencies}/lib/node_modules ./node_modules + export PATH="${nodeDependencies}/bin:$PATH" + + npm run build:production + + runHook postBuild + ''; + + installPhase = '' + runHook preInstall + + mkdir -p $out/share + cp -a dist $out/share/jellyfin-web + + runHook postInstall + ''; + + passthru.updateScript = ./web-update.sh; + + meta = with lib; { + description = "Web Client for Jellyfin"; + homepage = "https://jellyfin.org/"; + license = licenses.gpl2Plus; + maintainers = with maintainers; [ nyanloutre minijackson purcell jojosch ]; + }; +} |