diff --git a/pkgs/applications/video/pipe-viewer/default.nix b/pkgs/applications/video/pipe-viewer/default.nix new file mode 100644 index 00000000000..1ef08870c86 --- /dev/null +++ b/pkgs/applications/video/pipe-viewer/default.nix @@ -0,0 +1,86 @@ +{ lib +, fetchFromGitHub +, perl +, buildPerlModule +, makeWrapper +, wrapGAppsHook +, withGtk3 ? false +, ffmpeg +, gtk3 +, wget +, xdg-utils +, youtube-dl +, yt-dlp +, TestPod +, Gtk3 +}: +let + perlEnv = perl.withPackages (ps: with ps; [ + AnyURIEscape + DataDump + Encode + FilePath + GetoptLong + HTTPMessage + JSON + JSONXS + LWPProtocolHttps + LWPUserAgentCached + Memoize + PathTools + ScalarListUtils + TermReadLineGnu + TextParsewords + UnicodeLineBreak + ] ++ lib.optionals withGtk3 [ + FileShareDir + ]); +in +buildPerlModule rec { + pname = "pipe-viewer"; + version = "0.1.4"; + + src = fetchFromGitHub { + owner = "trizen"; + repo = "pipe-viewer"; + rev = version; + hash = "sha256-kDlZ3Cl8zvN/naGExh2yVW5yHwc1O04x4s22lNkbCzU="; + }; + + nativeBuildInputs = [ makeWrapper ] + ++ lib.optionals withGtk3 [ wrapGAppsHook ]; + + buildInputs = [ perlEnv ] + # Can't be in perlEnv for wrapGAppsHook to work correctly + ++ lib.optional withGtk3 Gtk3; + + # Not supported by buildPerlModule + # and the Perl code fails anyway + # when Getopt::Long sets $gtk in Build.PL: + # 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. + #buildFlags = lib.optional withGtk3 "--gtk3"; + postPatch = lib.optionalString withGtk3 '' + substituteInPlace Build.PL --replace 'my $gtk ' 'my $gtk = 1;#' + ''; + + checkInputs = [ + TestPod + ]; + + dontWrapGApps = true; + postFixup = '' + wrapProgram "$out/bin/pipe-viewer" \ + --prefix PATH : "${lib.makeBinPath [ ffmpeg wget youtube-dl yt-dlp ]}" + '' + lib.optionalString withGtk3 '' + wrapProgram "$out/bin/gtk-pipe-viewer" ''${gappsWrapperArgs[@]} \ + --prefix PATH : "${lib.makeBinPath [ ffmpeg wget xdg-utils youtube-dl yt-dlp ]}" + ''; + + meta = with lib; { + homepage = "https://github.com/trizen/pipe-viewer"; + description = "CLI+GUI YouTube Client"; + license = licenses.artistic2; + maintainers = with maintainers; [ julm ]; + platforms = platforms.all; + }; +} diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index e81649f864f..b6cdb538e2a 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -24722,6 +24722,8 @@ with pkgs; goffice = callPackage ../development/libraries/goffice { }; + gtk-pipe-viewer = perlPackages.callPackage ../applications/video/pipe-viewer { withGtk3 = true; }; + hydrus = python3Packages.callPackage ../applications/graphics/hydrus { inherit miniupnpc_2 swftools; inherit (qt5) wrapQtAppsHook; @@ -26284,6 +26286,8 @@ with pkgs; piper = callPackage ../os-specific/linux/piper { }; + pipe-viewer = perlPackages.callPackage ../applications/video/pipe-viewer {}; + plank = callPackage ../applications/misc/plank { }; playonlinux = callPackage ../applications/misc/playonlinux