From 5952ea02df9fc1114de4e6a94d8e95e2f70ed2ad Mon Sep 17 00:00:00 2001 From: makefu Date: Thu, 25 Dec 2025 00:11:32 +0100 Subject: [PATCH] mediathekview: 14.2.0 -> 14.4.2 pin java version to openjdk25 as jre in nixpkgs is jre21 use finalAttrs instead of rec rewirte the java wrapper to include all java flags recommended by mediathekview source code as well as all mandatory flags to get the program working add sanity install check to ensure both java version and dependencies can at least be loaded by the program add makefu as maintainer open upstream issue: vlc and ffmpeg paths are not automatically detected (mediathekview/MediathekView#824) supersedes #414385 --- pkgs/by-name/me/mediathekview/package.nix | 37 ++++++++++++++--------- 1 file changed, 23 insertions(+), 14 deletions(-) diff --git a/pkgs/by-name/me/mediathekview/package.nix b/pkgs/by-name/me/mediathekview/package.nix index 8888c6da78b4..4f4ddc4f98c2 100644 --- a/pkgs/by-name/me/mediathekview/package.nix +++ b/pkgs/by-name/me/mediathekview/package.nix @@ -1,20 +1,21 @@ { lib, + pkgs, stdenv, fetchurl, makeWrapper, libglvnd, libnotify, - jre, + openjdk25, # 2025-12-25: pkgs.jre points to java 21 and there is no equivalent for jre25 zip, }: -stdenv.mkDerivation rec { - version = "14.2.0"; +stdenv.mkDerivation (finalAttrs: { + version = "14.4.2"; pname = "mediathekview"; src = fetchurl { - url = "https://download.mediathekview.de/stabil/MediathekView-${version}-linux.tar.gz"; - sha256 = "sha256-EWpa6YE9Fk7K14vvsbjadKuGGZGqNhlouDtwj6KpbdE="; + url = "https://download.mediathekview.de/stabil/MediathekView-${finalAttrs.version}-linux.tar.gz"; + sha256 = "sha256-sDZSXYzak2RKQiW1OGpgSvFlkZrttsoOxVqRaodol24="; }; nativeBuildInputs = [ @@ -35,29 +36,37 @@ stdenv.mkDerivation rec { mkdir -p $out/{bin,lib} install -m644 MediathekView.jar $out/lib + cp -r dependency $out/lib - makeWrapper ${jre}/bin/java $out/bin/mediathek \ - --add-flags "-jar $out/lib/MediathekView.jar" \ + makeWrapper ${openjdk25}/bin/java $out/bin/mediathek \ + --add-flags "--add-exports=java.desktop/sun.swing=ALL-UNNAMED -XX:MaxRAMPercentage=10.0 -XX:+UseShenandoahGC -XX:ShenandoahGCHeuristics=compact -XX:+UseStringDeduplication --add-opens=java.desktop/sun.awt.X11=ALL-UNNAMED --enable-native-access=ALL-UNNAMED -cp \"$out/lib/dependency/*:$out/lib/MediathekView.jar\" mediathek.Main" \ --suffix LD_LIBRARY_PATH : "${libraryPath}" - makeWrapper ${jre}/bin/java $out/bin/MediathekView \ - --add-flags "-jar $out/lib/MediathekView.jar" \ - --suffix LD_LIBRARY_PATH : "${libraryPath}" + ln -s $out/bin/mediathek $out/bin/MediathekView - makeWrapper ${jre}/bin/java $out/bin/MediathekView_ipv4 \ - --add-flags "-Djava.net.preferIPv4Stack=true -jar $out/lib/MediathekView.jar" \ + makeWrapper ${openjdk25}/bin/java $out/bin/MediathekView_ipv4 \ + --add-flags "-Djava.net.preferIPv4Stack=true --add-exports=java.desktop/sun.swing=ALL-UNNAMED -XX:MaxRAMPercentage=10.0 -XX:+UseShenandoahGC -XX:ShenandoahGCHeuristics=compact -XX:+UseStringDeduplication --add-opens=java.desktop/sun.awt.X11=ALL-UNNAMED --enable-native-access=ALL-UNNAMED -cp \"$out/lib/dependency/*:$out/lib/MediathekView.jar\" mediathek.Main" \ --suffix LD_LIBRARY_PATH : "${libraryPath}" runHook postInstall ''; + doInstallCheck = true; + # sanity to ensure that mediathek can actually start + # unfortunately the executable does not print its own version + installCheckPhase = '' + runHook postCheck + ($out/bin/${finalAttrs.meta.mainProgram} --help 2>&1 ||: ) | grep -q 'Diese Version von MediathekView unterst?tzt keine Kommandozeilenausf?hrung.' + runHook preCheck + ''; + meta = { description = "Offers access to the Mediathek of different tv stations (ARD, ZDF, Arte, etc.)"; homepage = "https://mediathekview.de/"; sourceProvenance = with lib.sourceTypes; [ binaryBytecode ]; license = lib.licenses.gpl3Plus; mainProgram = "mediathek"; - maintainers = [ ]; + maintainers = with lib.maintainers; [ makefu ]; platforms = lib.platforms.all; }; -} +})