biglybt: 3.5.0.0 -> 3.6.0.0
[NixPkgs.git] / pkgs / applications / video / streamlink-twitch-gui / bin.nix
blob543b2b524708f19932734d8c71f65cc5418d4a4a
1 { autoPatchelfHook
2 , fetchurl
3 , lib
4 , copyDesktopItems
5 , makeDesktopItem
6 , makeWrapper
7 , stdenv
8 , wrapGAppsHook
9 , at-spi2-core
10 , atk
11 , alsa-lib
12 , cairo
13 , cups
14 , dbus
15 , expat
16 , gcc-unwrapped
17 , gdk-pixbuf
18 , glib
19 , pango
20 , gtk3-x11
21 , libudev0-shim
22 , libuuid
23 , mesa
24 , nss
25 , nspr
26 , xorg
27 , streamlink
29 let
30   basename = "streamlink-twitch-gui";
31   runtimeLibs = lib.makeLibraryPath [ gtk3-x11 libudev0-shim ];
32   runtimeBins = lib.makeBinPath [ streamlink ];
35 stdenv.mkDerivation rec {
36   pname = "${basename}-bin";
37   version = "2.4.1";
39   src = {
40     x86_64-linux = fetchurl {
41       url = "https://github.com/streamlink/${basename}/releases/download/v${version}/${basename}-v${version}-linux64.tar.gz";
42       hash = "sha256-uzD61Q1XIthAwoJHb0H4sTdYkUj0qGeGs1h0XFeV03E=";
43     };
44     i686-linux = fetchurl {
45       url = "https://github.com/streamlink/${basename}/releases/download/v${version}/${basename}-v${version}-linux32.tar.gz";
46       hash = "sha256-akJEd94PmH9YeBud+l5+5QpbnzXAD0jDBKJM4h/t2EA=";
47     };
48   }.${stdenv.hostPlatform.system} or (throw "Unsupported system: ${stdenv.hostPlatform.system}");
50   nativeBuildInputs = with xorg; [
51     at-spi2-core
52     atk
53     alsa-lib
54     autoPatchelfHook
55     cairo
56     copyDesktopItems
57     cups.lib
58     dbus.lib
59     expat
60     gcc-unwrapped
61     gdk-pixbuf
62     glib
63     pango
64     gtk3-x11
65     mesa
66     nss
67     nspr
68     libuuid
69     libX11
70     libxcb
71     libXcomposite
72     libXcursor
73     libXdamage
74     libXext
75     libXfixes
76     libXi
77     libXrandr
78     libXrender
79     libXScrnSaver
80     libXtst
81     makeWrapper
82     wrapGAppsHook
83   ];
85   buildInputs = [ streamlink ];
87   dontBuild = true;
88   dontConfigure = true;
90   installPhase = ''
91     runHook preInstall
92     mkdir -p $out/{bin,opt/${basename},share}
94     # Install all files, remove unnecessary ones
95     cp -a . $out/opt/${basename}/
96     rm -r $out/opt/${basename}/{{add,remove}-menuitem.sh,credits.html,icons/}
97     ln -s $out/opt/${basename}/${basename} $out/bin/
98     for res in 16 32 48 64 128 256; do
99       install -Dm644 \
100         icons/icon-"$res".png \
101         $out/share/icons/hicolor/"$res"x"$res"/apps/${basename}.png
102     done
103     runHook postInstall
104   '';
106   preFixup = ''
107     gappsWrapperArgs+=(
108       --add-flags "--no-version-check" \
109       --prefix LD_LIBRARY_PATH : ${runtimeLibs} \
110       --prefix PATH : ${runtimeBins}
111     )
112   '';
114   desktopItems = [(makeDesktopItem {
115     name = basename;
116     exec = basename;
117     icon = basename;
118     desktopName = "Streamlink Twitch GUI";
119     genericName = meta.description;
120     categories = [ "AudioVideo" "Network" ];
121   })];
123   meta = with lib; {
124     description = "Twitch.tv browser for Streamlink";
125     longDescription = "Browse Twitch.tv and watch streams in your videoplayer of choice";
126     homepage = "https://streamlink.github.io/streamlink-twitch-gui/";
127     downloadPage = "https://github.com/streamlink/streamlink-twitch-gui/releases";
128     sourceProvenance = with sourceTypes; [ binaryNativeCode ];
129     license = licenses.mit;
130     mainProgram = "streamlink-twitch-gui";
131     maintainers = with maintainers; [ rileyinman ];
132     platforms = [ "x86_64-linux" "i686-linux" ];
133   };