Merge pull request #268619 from tweag/lib-descriptions
[NixPkgs.git] / pkgs / applications / video / pipe-viewer / default.nix
blob18e38122f27c870e32a40fc3d3a4d325255ebe16
1 { lib
2 , fetchFromGitHub
3 , perl
4 , buildPerlModule
5 , makeWrapper
6 , wrapGAppsHook
7 , withGtk3 ? false
8 , ffmpeg
9 , wget
10 , xdg-utils
11 , youtube-dl
12 , yt-dlp
13 , TestPod
14 , Gtk3
16 let
17   perlEnv = perl.withPackages (ps: with ps; [
18     AnyURIEscape
19     DataDump
20     Encode
21     FilePath
22     GetoptLong
23     HTTPMessage
24     JSON
25     JSONXS
26     LWPProtocolHttps
27     LWPUserAgentCached
28     Memoize
29     PathTools
30     ScalarListUtils
31     TermReadLineGnu
32     TextParsewords
33     UnicodeLineBreak
34   ] ++ lib.optionals withGtk3 [
35     FileShareDir
36   ]);
38 buildPerlModule rec {
39   pname = "pipe-viewer";
40   version = "0.3.0";
42   src = fetchFromGitHub {
43     owner = "trizen";
44     repo = "pipe-viewer";
45     rev = version;
46     hash = "sha256-2Kzo7NYxARPFuOijwf2a3WQxnNumtKRiRhMhjrWA4GY=";
47   };
49   nativeBuildInputs = [ makeWrapper ]
50     ++ lib.optionals withGtk3 [ wrapGAppsHook ];
52   buildInputs = [ perlEnv ]
53     # Can't be in perlEnv for wrapGAppsHook to work correctly
54     ++ lib.optional withGtk3 Gtk3;
56   # Not supported by buildPerlModule
57   # and the Perl code fails anyway
58   # when Getopt::Long sets $gtk in Build.PL:
59   # Modification of a read-only value attempted at /nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-perl5.34.0-Getopt-Long-2.52/lib/perl5/site_perl/5.34.0/Getopt/Long.pm line 585.
60   #buildFlags = lib.optional withGtk3 "--gtk3";
61   postPatch = lib.optionalString withGtk3 ''
62     substituteInPlace Build.PL --replace 'my $gtk ' 'my $gtk = 1;#'
63   '';
65   nativeCheckInputs = [
66     TestPod
67   ];
69   dontWrapGApps = true;
70   postFixup = ''
71     wrapProgram "$out/bin/pipe-viewer" \
72       --prefix PATH : "${lib.makeBinPath [ ffmpeg wget youtube-dl yt-dlp ]}"
73   '' + lib.optionalString withGtk3 ''
74     # make xdg-open overrideable at runtime
75     wrapProgram "$out/bin/gtk-pipe-viewer" ''${gappsWrapperArgs[@]} \
76       --prefix PATH : "${lib.makeBinPath [ ffmpeg wget youtube-dl yt-dlp ]}" \
77       --suffix PATH : "${lib.makeBinPath [ xdg-utils ]}"
78   '';
80   meta = with lib; {
81     homepage = "https://github.com/trizen/pipe-viewer";
82     description = "CLI+GUI YouTube Client";
83     license = licenses.artistic2;
84     maintainers = with maintainers; [ julm ];
85     platforms = platforms.all;
86   };