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