linuxPackages_latest.broadcom_sta: add patch to compile on Kernel 6.12 (#359484)
[NixPkgs.git] / pkgs / by-name / tv / tvbrowser / package.nix
blobf997652c27ecb19f32cfeb4a01f4c5d79411885e
1 { lib
2 , fetchurl
3 , stdenv
4 , fetchzip
5 , ant
6 , jdk
7 , makeWrapper
8 , stripJavaArchivesHook
9 , callPackage
12 let
13   minimalJavaVersion = "11";
15   newsPlugin = fetchurl {
16     url = "https://www.tvbrowser.org/data/uploads/1372016422809_543/NewsPlugin.jar";
17     hash = "sha256-5XoypuMd2AFBE2SJ6EdECuvq6D81HLLuu9UoA9kcKAM=";
18   };
20 stdenv.mkDerivation rec {
21   pname = "tvbrowser";
22   version = "4.2.7";
24   src = fetchzip {
25     url = "mirror://sourceforge/${pname}/TV-Browser%20Releases%20%28Java%20${minimalJavaVersion}%20and%20higher%29/${version}/${pname}_${version}_src.zip";
26     hash = "sha256-dmNfI6T0MU7UtMH+C/2hiAeDwZlFCB4JofQViZezoqI=";
27   };
29   nativeBuildInputs = [ ant jdk makeWrapper stripJavaArchivesHook ];
31   buildPhase = ''
32     runHook preBuild
34     ant runtime-linux -Dnewsplugin.url=file://${newsPlugin}
35     ant tvbrowser-desktop-entry
37     runHook postBuild
38   '';
40   installPhase = ''
41     runHook preInstall
43     mkdir -p $out/share/tvbrowser
44     cp -R runtime/tvbrowser_linux/* $out/share/tvbrowser
46     mkdir -p $out/share/applications
47     mv -t $out/share/applications $out/share/tvbrowser/tvbrowser.desktop
48     sed -e 's|=imgs/|='$out'/share/tvbrowser/imgs/|'  \
49         -e 's|=tvbrowser.sh|='$out'/bin/tvbrowser|'  \
50         -i $out/share/applications/tvbrowser.desktop
52     for i in 16 32 48 128; do
53       mkdir -p $out/share/icons/hicolor/''${i}x''${i}/apps
54       ln -s $out/share/tvbrowser/imgs/tvbrowser$i.png  \
55           $out/share/icons/hicolor/''${i}x''${i}/apps/tvbrowser.png
56     done
58     mkdir -p $out/bin
59     makeWrapper  \
60         $out/share/tvbrowser/tvbrowser.sh  \
61         $out/bin/tvbrowser  \
62         --prefix PATH : ${jdk}/bin  \
63         --prefix XDG_DATA_DIRS : $out/share  \
64         --set PROGRAM_DIR $out/share/tvbrowser
66     runHook postInstall
67   '';
69   passthru.tests.startwindow = callPackage ./test.nix {};
71   meta = with lib; {
72     description = "Electronic TV Program Guide";
73     downloadPage = "https://www.tvbrowser.org/index.php?id=tv-browser";
74     homepage = "https://www.tvbrowser.org/";
75     changelog = "https://www.tvbrowser.org/index.php?id=news";
76     sourceProvenance = with sourceTypes; [ binaryBytecode fromSource ];
77     license = licenses.gpl3Plus;
78     platforms = platforms.linux;
79     mainProgram = "tvbrowser";
80     maintainers = with maintainers; [ yarny ];
81     longDescription = ''
82       TV-Browser shows TV program data arranged like in printed
83       TV programs after downloading it from the internet.
84       Plugins are used to download program data
85       and to provide additional functionality.
86     '';
87   };