nixpkgs-suyu/pkgs/tools/misc/youtube-dl/default.nix
Maximilian Bosch 9842c4b107
treewide: update which packages I'm currently maintaining
Idea shamelessly stolen from 4e60b0efae.

I realized that I don't really know anymore where I'm listed as maintainer and what
I'm actually (co)-maintaining which means that I can't proactively take
care of packages I officially maintain.

As I don't have the time, energy and motivation to take care of stuff I
was interested in 1 or 2 years ago (or packaged for someone else in the
past), I decided that I make this explicit by removing myself from several
packages and adding myself in some other stuff I'm now interested in.

I've seen it several times now that people remove themselves from a
package without removing the package if it's unmaintained after that
which is why I figured that it's fine in my case as the affected pkgs
are rather low-prio and were pretty easy to maintain.
2019-12-26 15:27:47 +01:00

70 lines
2.6 KiB
Nix

{ lib, fetchurl, buildPythonPackage
, zip, ffmpeg_4, rtmpdump, phantomjs2, atomicparsley, pycryptodome, pandoc
# Pandoc is required to build the package's man page. Release tarballs contain a
# formatted man page already, though, it will still be installed. We keep the
# manpage argument in place in case someone wants to use this derivation to
# build a Git version of the tool that doesn't have the formatted man page
# included.
, generateManPage ? false
, ffmpegSupport ? true
, rtmpSupport ? true
, phantomjsSupport ? false
, hlsEncryptedSupport ? true
, makeWrapper }:
buildPythonPackage rec {
pname = "youtube-dl";
# The websites youtube-dl deals with are a very moving target. That means that
# downloads break constantly. Because of that, updates should always be backported
# to the latest stable release.
version = "2019.12.25";
src = fetchurl {
url = "https://yt-dl.org/downloads/${version}/${pname}-${version}.tar.gz";
sha256 = "13f7wv9v77zilhif0ndgjv4wn9glhmm14yh7axdcx5wglrgz38hf";
};
nativeBuildInputs = [ makeWrapper ];
buildInputs = [ zip ] ++ lib.optional generateManPage pandoc;
propagatedBuildInputs = lib.optional hlsEncryptedSupport pycryptodome;
# Ensure these utilities are available in $PATH:
# - ffmpeg: post-processing & transcoding support
# - rtmpdump: download files over RTMP
# - atomicparsley: embedding thumbnails
makeWrapperArgs = let
packagesToBinPath =
[ atomicparsley ]
++ lib.optional ffmpegSupport ffmpeg_4
++ lib.optional rtmpSupport rtmpdump
++ lib.optional phantomjsSupport phantomjs2;
in [ ''--prefix PATH : "${lib.makeBinPath packagesToBinPath}"'' ];
setupPyBuildFlags = [
"build_lazy_extractors"
];
postInstall = ''
mkdir -p $out/share/zsh/site-functions
cp youtube-dl.zsh $out/share/zsh/site-functions/_youtube-dl
'';
# Requires network
doCheck = false;
meta = with lib; {
homepage = https://rg3.github.io/youtube-dl/;
repositories.git = https://github.com/rg3/youtube-dl.git;
description = "Command-line tool to download videos from YouTube.com and other sites";
longDescription = ''
youtube-dl is a small, Python-based command-line program
to download videos from YouTube.com and a few more sites.
youtube-dl is released to the public domain, which means
you can modify it, redistribute it or use it however you like.
'';
license = licenses.publicDomain;
platforms = with platforms; linux ++ darwin;
maintainers = with maintainers; [ bluescreen303 phreedom AndersonTorres fpletz enzime ma27 ];
};
}