diff options
author | Mx Kookie <kookie@spacekookie.de> | 2020-10-31 19:35:09 +0100 |
---|---|---|
committer | Mx Kookie <kookie@spacekookie.de> | 2020-10-31 19:35:09 +0100 |
commit | c4625b175f8200f643fd6e11010932ea44c78433 (patch) | |
tree | bce3f89888c8ac3991fa5569a878a9eab6801ccc /infra/libkookie/nixpkgs/pkgs/applications/video | |
parent | 49f735974dd103039ddc4cb576bb76555164a9e7 (diff) | |
parent | d661aa56a8843e991261510c1bb28fdc2f6975ae (diff) |
Add 'infra/libkookie/' from commit 'd661aa56a8843e991261510c1bb28fdc2f6975ae'
git-subtree-dir: infra/libkookie
git-subtree-mainline: 49f735974dd103039ddc4cb576bb76555164a9e7
git-subtree-split: d661aa56a8843e991261510c1bb28fdc2f6975ae
Diffstat (limited to 'infra/libkookie/nixpkgs/pkgs/applications/video')
154 files changed, 8655 insertions, 0 deletions
diff --git a/infra/libkookie/nixpkgs/pkgs/applications/video/aegisub/default.nix b/infra/libkookie/nixpkgs/pkgs/applications/video/aegisub/default.nix new file mode 100644 index 000000000000..54dac5c2aa1c --- /dev/null +++ b/infra/libkookie/nixpkgs/pkgs/applications/video/aegisub/default.nix @@ -0,0 +1,137 @@ +{ config +, stdenv +, fetchurl +, fetchpatch +, libX11 +, wxGTK +, libiconv +, fontconfig +, freetype +, libGLU +, libGL +, libass +, fftw +, ffms +, ffmpeg_3 +, pkg-config +, zlib +, icu +, boost +, intltool + +, spellcheckSupport ? true +, hunspell ? null + +, automationSupport ? true +, lua ? null + +, openalSupport ? false +, openal ? null + +, alsaSupport ? stdenv.isLinux +, alsaLib ? null + +, pulseaudioSupport ? config.pulseaudio or stdenv.isLinux +, libpulseaudio ? null + +, portaudioSupport ? false +, portaudio ? null +}: + +assert spellcheckSupport -> (hunspell != null); +assert automationSupport -> (lua != null); +assert openalSupport -> (openal != null); +assert alsaSupport -> (alsaLib != null); +assert pulseaudioSupport -> (libpulseaudio != null); +assert portaudioSupport -> (portaudio != null); + +with stdenv.lib; +stdenv.mkDerivation + rec { + pname = "aegisub"; + version = "3.2.2"; + + src = fetchurl { + url = "http://ftp.aegisub.org/pub/releases/${pname}-${version}.tar.xz"; + sha256 = "11b83qazc8h0iidyj1rprnnjdivj1lpphvpa08y53n42bfa36pn5"; + }; + + patches = [ + # Compatibility with ICU 59 + (fetchpatch { + url = "https://github.com/Aegisub/Aegisub/commit/dd67db47cb2203e7a14058e52549721f6ff16a49.patch"; + sha256 = "07qqlckiyy64lz8zk1as0vflk9kqnjb340420lp9f0xj93ncssj7"; + }) + + # Compatbility with Boost 1.69 + (fetchpatch { + url = "https://github.com/Aegisub/Aegisub/commit/c3c446a8d6abc5127c9432387f50c5ad50012561.patch"; + sha256 = "1n8wmjka480j43b1pr30i665z8hdy6n3wdiz1ls81wyv7ai5yygf"; + }) + + # Compatbility with make 4.3 + (fetchpatch { + url = "https://github.com/Aegisub/Aegisub/commit/6bd3f4c26b8fc1f76a8b797fcee11e7611d59a39.patch"; + sha256 = "1s9cc5rikrqb9ivjbag4b8yxcyjsmmmw744394d5xq8xi4k12vxc"; + }) + ]; + + nativeBuildInputs = [ + pkg-config + intltool + ]; + + buildInputs = with stdenv.lib; [ + libX11 + wxGTK + fontconfig + freetype + libGLU + libGL + libass + fftw + ffms + ffmpeg_3 + zlib + icu + boost + libiconv + ] + ++ optional spellcheckSupport hunspell + ++ optional automationSupport lua + ++ optional openalSupport openal + ++ optional alsaSupport alsaLib + ++ optional pulseaudioSupport libpulseaudio + ++ optional portaudioSupport portaudio + ; + + enableParallelBuilding = true; + + hardeningDisable = [ "bindnow" "relro" ]; + + # compat with icu61+ https://github.com/unicode-org/icu/blob/release-64-2/icu4c/readme.html#L554 + CXXFLAGS = [ "-DU_USING_ICU_NAMESPACE=1" ]; + + # this is fixed upstream though not yet in an officially released version, + # should be fine remove on next release (if one ever happens) + NIX_LDFLAGS = "-lpthread"; + + postInstall = "ln -s $out/bin/aegisub-* $out/bin/aegisub"; + + meta = { + description = "An advanced subtitle editor"; + longDescription = '' + Aegisub is a free, cross-platform open source tool for creating and + modifying subtitles. Aegisub makes it quick and easy to time subtitles to + audio, and features many powerful tools for styling them, including a + built-in real-time video preview. + ''; + homepage = "http://www.aegisub.org/"; + # The Aegisub sources are itself BSD/ISC, + # but they are linked against GPL'd softwares + # - so the resulting program will be GPL + license = licenses.bsd3; + maintainers = [ maintainers.AndersonTorres ]; + platforms = [ "i686-linux" "x86_64-linux" ]; + }; +} diff --git a/infra/libkookie/nixpkgs/pkgs/applications/video/avidemux/bootstrap_logging.patch b/infra/libkookie/nixpkgs/pkgs/applications/video/avidemux/bootstrap_logging.patch new file mode 100644 index 000000000000..8f45251d26c2 --- /dev/null +++ b/infra/libkookie/nixpkgs/pkgs/applications/video/avidemux/bootstrap_logging.patch @@ -0,0 +1,26 @@ +diff --git a/bootStrap.bash b/bootStrap.bash +index 646a5e048..6429199ba 100644 +--- a/bootStrap.bash ++++ b/bootStrap.bash +@@ -4,6 +4,7 @@ + # + # By default we use qt5 now + # ++set -e # hard fail if something fails + packages_ext="" + rebuild=0 + do_core=1 +@@ -66,10 +67,10 @@ Process() + fi + cd $BUILDDIR + cmake $COMPILER $PKG $FAKEROOT $QT_FLAVOR -DCMAKE_EDIT_COMMAND=vim $INSTALL_PREFIX $EXTRA $BUILD_QUIRKS $ASAN $DEBUG -G "$BUILDER" $SOURCEDIR || fail cmakeZ +- make $PARAL >& /tmp/log$BUILDDIR || fail "make, result in /tmp/log$BUILDDIR" +- if [ "x$PKG" != "x" ] ; then ++ make $PARAL ++ if [ "x$PKG" != "x" ] ; then + $FAKEROOT_COMMAND make package DESTDIR=$FAKEROOT_DIR/tmp || fail package +- fi ++ fi + # we need the make install so that other packcges can be built against this one + make install DESTDIR=$FAKEROOT_DIR + } diff --git a/infra/libkookie/nixpkgs/pkgs/applications/video/avidemux/default.nix b/infra/libkookie/nixpkgs/pkgs/applications/video/avidemux/default.nix new file mode 100644 index 000000000000..2dd6b12c14f8 --- /dev/null +++ b/infra/libkookie/nixpkgs/pkgs/applications/video/avidemux/default.nix @@ -0,0 +1,99 @@ +{ stdenv, lib, fetchurl, cmake, pkgconfig +, zlib, gettext, libvdpau, libva, libXv, sqlite +, yasm, freetype, fontconfig, fribidi +, makeWrapper, libXext, libGLU, qttools, qtbase, wrapQtAppsHook +, alsaLib +, withX265 ? true, x265 +, withX264 ? true, x264 +, withXvid ? true, xvidcore +, withLAME ? true, lame +, withFAAC ? false, faac +, withVorbis ? true, libvorbis +, withPulse ? true, libpulseaudio +, withFAAD ? true, faad2 +, withOpus ? true, libopus +, withVPX ? true, libvpx +, withQT ? true +, withCLI ? true +, default ? "qt5" +, withPlugins ? true +}: + +assert withQT -> qttools != null && qtbase != null; +assert default != "qt5" -> default == "cli"; +assert !withQT -> default != "qt5"; + +stdenv.mkDerivation rec { + pname = "avidemux"; + version = "2.7.6"; + + src = fetchurl { + url = "mirror://sourceforge/avidemux/avidemux/${version}/avidemux_${version}.tar.gz"; + sha256 = "1kwkn976ppahrcr74bnv6sqx75pzl9y21m1mvr5ksi1m6lgp924s"; + }; + + patches = [ + ./dynamic_install_dir.patch + ./bootstrap_logging.patch + ]; + + nativeBuildInputs = + [ yasm cmake pkgconfig ] + ++ lib.optional withQT wrapQtAppsHook; + buildInputs = [ + zlib gettext libvdpau libva libXv sqlite fribidi fontconfig + freetype alsaLib libXext libGLU makeWrapper + ] ++ lib.optional withX264 x264 + ++ lib.optional withX265 x265 + ++ lib.optional withXvid xvidcore + ++ lib.optional withLAME lame + ++ lib.optional withFAAC faac + ++ lib.optional withVorbis libvorbis + ++ lib.optional withPulse libpulseaudio + ++ lib.optional withFAAD faad2 + ++ lib.optional withOpus libopus + ++ lib.optionals withQT [ qttools qtbase ] + ++ lib.optional withVPX libvpx; + + buildCommand = let + qtVersion = "5.${stdenv.lib.versions.minor qtbase.version}"; + wrapWith = makeWrapper: filename: + "${makeWrapper} ${filename} --set ADM_ROOT_DIR $out --prefix LD_LIBRARY_PATH : ${libXext}/lib"; + wrapQtApp = wrapWith "wrapQtApp"; + wrapProgram = wrapWith "wrapProgram"; + in '' + unpackPhase + cd "$sourceRoot" + patchPhase + + export LD_LIBRARY_PATH="$LD_LIBRARY_PATH''${LD_LIBRARY_PATH:+:}${libXext}/lib" + ${stdenv.shell} bootStrap.bash \ + --with-core \ + ${if withQT then "--with-qt" else "--without-qt"} \ + ${if withCLI then "--with-cli" else "--without-cli"} \ + ${if withPlugins then "--with-plugins" else "--without-plugins"} + + mkdir $out + cp -R install/usr/* $out + + ${wrapProgram "$out/bin/avidemux3_cli"} + + ${stdenv.lib.optionalString withQT '' + ${wrapQtApp "$out/bin/avidemux3_qt5"} + ${wrapQtApp "$out/bin/avidemux3_jobs_qt5"} + ''} + + ln -s "$out/bin/avidemux3_${default}" "$out/bin/avidemux" + + fixupPhase + ''; + + meta = with stdenv.lib; { + homepage = "http://fixounet.free.fr/avidemux/"; + description = "Free video editor designed for simple video editing tasks"; + maintainers = with maintainers; [ abbradar ma27 ]; + # "CPU not supported" errors on AArch64 + platforms = [ "i686-linux" "x86_64-linux" ]; + license = licenses.gpl2; + }; +} diff --git a/infra/libkookie/nixpkgs/pkgs/applications/video/avidemux/dynamic_install_dir.patch b/infra/libkookie/nixpkgs/pkgs/applications/video/avidemux/dynamic_install_dir.patch new file mode 100644 index 000000000000..803cde02ec2e --- /dev/null +++ b/infra/libkookie/nixpkgs/pkgs/applications/video/avidemux/dynamic_install_dir.patch @@ -0,0 +1,12 @@ +diff -ru3 avidemux_2.6.15-old/avidemux_core/ADM_core/src/ADM_folder_linux.cpp avidemux_2.6.15/avidemux_core/ADM_core/src/ADM_folder_linux.cpp +--- avidemux_2.6.15-old/avidemux_core/ADM_core/src/ADM_folder_linux.cpp 2016-11-23 02:13:41.406566362 +0300 ++++ avidemux_2.6.15/avidemux_core/ADM_core/src/ADM_folder_linux.cpp 2016-11-23 02:14:33.433566147 +0300 +@@ -92,7 +92,7 @@ + + char *ADM_getInstallRelativePath(const char *base1, const char *base2, const char *base3) + { +- return ADM_getRelativePath(ADM_INSTALL_DIR, base1, base2, base3); ++ return ADM_getRelativePath(getenv("ADM_ROOT_DIR"), base1, base2, base3); + } + const std::string ADM_getI8NDir(const std::string &flavor) + { diff --git a/infra/libkookie/nixpkgs/pkgs/applications/video/avxsynth/default.nix b/infra/libkookie/nixpkgs/pkgs/applications/video/avxsynth/default.nix new file mode 100644 index 000000000000..e818ef585c17 --- /dev/null +++ b/infra/libkookie/nixpkgs/pkgs/applications/video/avxsynth/default.nix @@ -0,0 +1,43 @@ +{ stdenv, fetchFromGitHub, autoreconfHook, pkgconfig +, cairo, ffmpeg_3, ffms, libjpeg, log4cpp, pango +, avxeditSupport ? false, qt4 ? null +}: + +let + inherit (stdenv.lib) enableFeature optional; +in + +stdenv.mkDerivation { + pname = "avxsynth"; + version = "2015-04-07"; + + src = fetchFromGitHub { + owner = "avxsynth"; + repo = "avxsynth"; + rev = "80dcb7ec8d314bc158130c92803308aa8e5e9242"; + sha256 = "0kckggvgv68b0qjdi7ms8vi97b46dl63n60qr96d2w67lf2nk87z"; + }; + + configureFlags = [ + "--enable-autocrop" + "--enable-framecapture" + "--enable-subtitle" + "--enable-ffms2" + (enableFeature avxeditSupport "avxedit") + "--with-jpeg=${libjpeg.out}/lib" + ]; + + nativeBuildInputs = [ autoreconfHook pkgconfig ]; + + buildInputs = [ cairo ffmpeg_3 ffms libjpeg log4cpp pango ] + ++ optional avxeditSupport qt4; + + meta = with stdenv.lib; { + description = "A script system that allows advanced non-linear editing"; + homepage = "https://github.com/avxsynth/avxsynth"; + license = licenses.gpl2Plus; + maintainers = with maintainers; [ codyopel ]; + platforms = platforms.linux; + broken = true; # 2018-04-10 + }; +} diff --git a/infra/libkookie/nixpkgs/pkgs/applications/video/bino3d/default.nix b/infra/libkookie/nixpkgs/pkgs/applications/video/bino3d/default.nix new file mode 100644 index 000000000000..4554bea61571 --- /dev/null +++ b/infra/libkookie/nixpkgs/pkgs/applications/video/bino3d/default.nix @@ -0,0 +1,25 @@ +{ mkDerivation, lib, fetchurl, pkgconfig, ffmpeg, glew, libass, openal, qtbase }: + +mkDerivation rec { + pname = "bino"; + version = "1.6.7"; + + src = fetchurl { + url = "https://bino3d.org/releases/${pname}-${version}.tar.xz"; + sha256 = "04yl7ibnhajlli4a5x77az8jxbzw6b2wjay8aa6px551nmiszn9k"; + }; + + nativeBuildInputs = [ pkgconfig ]; + + buildInputs = [ ffmpeg glew libass openal qtbase ]; + + enableParallelBuilding = true; + + meta = with lib; { + description = "Stereoscopic 3D and multi-display video player"; + homepage = "https://bino3d.org/"; + license = licenses.gpl3Plus; + maintainers = with maintainers; [ orivej ]; + platforms = platforms.linux; + }; +} diff --git a/infra/libkookie/nixpkgs/pkgs/applications/video/bombono/default.nix b/infra/libkookie/nixpkgs/pkgs/applications/video/bombono/default.nix new file mode 100644 index 000000000000..2ae3722fff2e --- /dev/null +++ b/infra/libkookie/nixpkgs/pkgs/applications/video/bombono/default.nix @@ -0,0 +1,54 @@ +{ stdenv, fetchFromGitHub, wrapGAppsHook, gtk2, boost, gtkmm2, scons, +mjpegtools, libdvdread, dvdauthor, gettext, dvdplusrwtools, libxmlxx, ffmpeg_3, +enca, pkgconfig, fetchpatch }: + +let fetchPatchFromAur = {name, sha256}: +fetchpatch { + inherit name sha256; + url = "https://aur.archlinux.org/cgit/aur.git/plain/${name}?h=e6cc6bc80c672aaa1a2260abfe8823da299a192c"; +}; in +stdenv.mkDerivation rec { + pname = "bombono"; + version = "1.2.4"; + src = fetchFromGitHub { + owner = "muravjov"; + repo = "bombono-dvd"; + rev = version; + sha256 = "1lz1vik6abn1i1pvxhm55c9g47nxxv755wb2ijszwswwrwgvq5b9"; + }; + + patches = [ + (fetchpatch { + name = "bombono-dvd-1.2.4-scons3.patch"; + url = "https://svnweb.mageia.org/packages/cauldron/bombono-dvd/current/SOURCES/bombono-dvd-1.2.4-scons-python3.patch?revision=1447925&view=co&pathrev=1484457"; + sha256 = "081116d0if6s2r1rgqfr1n5gl3kpvzk01pf4v2k7gg2rnid83qp4"; + }) + ] ++ (map fetchPatchFromAur [ + {name="fix_ffmpeg_codecid.patch"; sha256="1asfc0lqzk4gjssrvjmsi1xr53ygnsx2sh7c8yzp5r3j2bagxhp7";} + {name="fix_ptr2bool_cast.patch"; sha256="0iqzrmbg38ikh4x9cmx0v0rnm7a9lcq0kd8sh1z9yfmnz71qqahg";} + {name="fix_c++11_literal_warnings.patch"; sha256="1zbf12i77p0j0090pz5lzg4a7kyahahzqssybv7vi0xikwvw57w9";} + {name="autoptr2uniqueptr.patch"; sha256="0a3wvwfplmqvi8fnj929y85z3h1iq7baaz2d4v08h1q2wbmakqdm";} + {name="fix_deprecated_boost_api.patch"; sha256="184gdz3w95ihhsd8xscpwvq77xd4il47kvmv6wslax77xyw50gm8";} + {name="fix_throw_specifications.patch"; sha256="1f5gi3qwm843hsxvijq7sjy0s62xm7rnr1vdp7f242fi0ldq6c1n";} + {name="fix_operator_ambiguity.patch"; sha256="0r4scsbsqfg6wgzsbfxxpckamvgyrida0n1ypg1klx24pk5dc7n7";} + {name="fix_ffmpeg30.patch"; sha256="1irva7a9bpbzs60ga8ypa3la9y84i5rz20jnd721qmfqp2yip8dw";} + ]); + + nativeBuildInputs = [ wrapGAppsHook scons pkgconfig gettext ]; + + buildInputs = [ + gtk2 gtkmm2 mjpegtools libdvdread dvdauthor boost dvdplusrwtools + libxmlxx ffmpeg_3 enca + ]; + + prefixKey = "PREFIX="; + + enableParallelBuilding = true; + + meta = { + description = "a DVD authoring program for personal computers"; + homepage = "http://www.bombono.org/"; + license = stdenv.lib.licenses.gpl2; + maintainers = with stdenv.lib.maintainers; [ symphorien ]; + }; +} diff --git a/infra/libkookie/nixpkgs/pkgs/applications/video/bomi/default.nix b/infra/libkookie/nixpkgs/pkgs/applications/video/bomi/default.nix new file mode 100644 index 000000000000..d812ac488742 --- /dev/null +++ b/infra/libkookie/nixpkgs/pkgs/applications/video/bomi/default.nix @@ -0,0 +1,118 @@ +{ mkDerivation, config, stdenv, fetchFromGitHub +, fetchpatch, pkgconfig, perl, python, which +, libX11, libxcb, libGLU, libGL +, qtbase, qtdeclarative, qtquickcontrols, qttools, qtx11extras, qmake +, libchardet +, ffmpeg + +, mpg123 +, libass +, libdvdread +, libdvdnav +, icu +, libquvi +, alsaLib +, libvdpau, libva +, libbluray +, jackSupport ? false, jack ? null +, portaudioSupport ? false, portaudio ? null +, pulseSupport ? config.pulseaudio or stdenv.isLinux, libpulseaudio ? null +, cddaSupport ? false, libcdda ? null +, youtubeSupport ? true, youtube-dl ? null +}: + +with stdenv.lib; + +assert jackSupport -> jack != null; +assert portaudioSupport -> portaudio != null; +assert pulseSupport -> libpulseaudio != null; +assert cddaSupport -> libcdda != null; +assert youtubeSupport -> youtube-dl != null; + +mkDerivation rec { + pname = "bomi"; + version = "0.9.11"; + + src = fetchFromGitHub { + owner = "xylosper"; + repo = "bomi"; + rev = "v${version}"; + sha256 = "0a7n46gn3n5098lxxvl3s29s8jlkzss6by9074jx94ncn9cayf2h"; + }; + + patches = [ + (fetchpatch rec { + name = "bomi-compilation-fix.patch"; + url = "https://svnweb.mageia.org/packages/cauldron/bomi/current/SOURCES/${name}?revision=995725&view=co&pathrev=995725"; + sha256 = "1dwryya5ljx35dbx6ag9d3rjjazni2mfn3vwirjdijdy6yz22jm6"; + }) + (fetchpatch rec { + name = "bomi-fix-expected-unqualified-id-before-numeric-constant-unix.patch"; + url = "https://svnweb.mageia.org/packages/cauldron/bomi/current/SOURCES/${name}?revision=995725&view=co&pathrev=995725"; + sha256 = "0n3xsrdrggimzw30gxlnrr088ndbdjqlqr46dzmfv8zan79lv5ri"; + }) + ]; + + buildInputs = with stdenv.lib; + [ libX11 + libxcb + libGLU libGL + qtbase + qtx11extras + qtdeclarative + qtquickcontrols + ffmpeg + libchardet + + mpg123 + libass + libdvdread + libdvdnav + icu + libquvi + alsaLib + libvdpau + libva + libbluray + ] + ++ optional jackSupport jack + ++ optional portaudioSupport portaudio + ++ optional pulseSupport libpulseaudio + ++ optional cddaSupport libcdda + ; + + preConfigure = '' + patchShebangs configure + ''; + + preBuild = '' + patchShebangs src/mpv/waf + patchShebangs build-mpv + ''; + + dontWrapQtApps = true; + postInstall = '' + wrapQtApp $out/bin/bomi \ + ${optionalString youtubeSupport "--prefix PATH ':' '${youtube-dl}/bin'"} + ''; + + dontUseQmakeConfigure = true; + + configureFlags = with stdenv.lib; + [ "--qmake=qmake" ] + ++ optional jackSupport "--enable-jack" + ++ optional portaudioSupport "--enable-portaudio" + ++ optional pulseSupport "--enable-pulseaudio" + ++ optional cddaSupport "--enable-cdda" + ; + + nativeBuildInputs = [ pkgconfig perl python which qttools qmake ]; + + meta = with stdenv.lib; { + description = "Powerful and easy-to-use multimedia player"; + homepage = "https://bomi-player.github.io/"; + license = licenses.gpl2Plus; + maintainers = [ maintainers.abbradar ]; + platforms = platforms.linux; + }; +} diff --git a/infra/libkookie/nixpkgs/pkgs/applications/video/byzanz/add-amflags.patch b/infra/libkookie/nixpkgs/pkgs/applications/video/byzanz/add-amflags.patch new file mode 100644 index 000000000000..aeaa195798a4 --- /dev/null +++ b/infra/libkookie/nixpkgs/pkgs/applications/video/byzanz/add-amflags.patch @@ -0,0 +1,12 @@ +diff --git a/Makefile.am b/Makefile.am +index 6eedb51..7b54313 100644 +--- a/Makefile.am ++++ b/Makefile.am +@@ -1,5 +1,7 @@ + SUBDIRS = macros data gifenc src po + ++ACLOCAL_AMFLAGS = -I macros ++ + EXTRA_DIST = \ + MAINTAINERS \ + depcomp \ diff --git a/infra/libkookie/nixpkgs/pkgs/applications/video/byzanz/default.nix b/infra/libkookie/nixpkgs/pkgs/applications/video/byzanz/default.nix new file mode 100644 index 000000000000..f5d40a5c34cc --- /dev/null +++ b/infra/libkookie/nixpkgs/pkgs/applications/video/byzanz/default.nix @@ -0,0 +1,32 @@ +{ stdenv, fetchgit, wrapGAppsHook, which, gnome3, glib, intltool, pkgconfig, libtool, cairo, gtk3, gst_all_1, xorg }: + +stdenv.mkDerivation { + version = "0.2.3.alpha"; + pname = "byzanz"; + + src = fetchgit { + url = "git://github.com/GNOME/byzanz"; + rev = "1875a7f6a3903b83f6b1d666965800f47db9286a"; + sha256 = "0a72fw2mxl8vdcdnzy0bwis4jk28pd7nc8qgr4vhyw5pd48dynvh"; + }; + + patches = [ ./add-amflags.patch ]; + + preBuild = '' + ./autogen.sh --prefix=$out + ''; + + NIX_CFLAGS_COMPILE = "-Wno-error=deprecated-declarations"; + + nativeBuildInputs = [ pkgconfig ]; + buildInputs = [ which gnome3.gnome-common glib intltool libtool cairo gtk3 xorg.xwininfo ] + ++ (with gst_all_1; [ gstreamer gst-plugins-base gst-plugins-bad gst-plugins-good gst-plugins-ugly gst-libav wrapGAppsHook ]); + + meta = with stdenv.lib; { + description = "Tool to record a running X desktop to an animation suitable for presentation in a web browser"; + homepage = "https://github.com/GNOME/byzanz"; + license = licenses.gpl3; + platforms = platforms.linux; + maintainers = [ ]; + }; +} diff --git a/infra/libkookie/nixpkgs/pkgs/applications/video/catt/default.nix b/infra/libkookie/nixpkgs/pkgs/applications/video/catt/default.nix new file mode 100644 index 000000000000..d22657d651cb --- /dev/null +++ b/infra/libkookie/nixpkgs/pkgs/applications/video/catt/default.nix @@ -0,0 +1,38 @@ +{ lib, python3 }: + +let + py = python3.override { + packageOverrides = self: super: { + PyChromecast = super.PyChromecast.overridePythonAttrs (oldAttrs: rec { + version = "6.0.0"; + src = oldAttrs.src.override { + inherit version; + sha256 = "05f8r3b2pdqbl76hwi5sv2xdi1r7g9lgm69x8ja5g22mn7ysmghm"; + }; + }); + }; + }; + +in with py.pkgs; buildPythonApplication rec { + pname = "catt"; + version = "0.11.0"; + + src = fetchPypi { + inherit pname version; + sha256 = "1vq1wg79b7855za6v6bsfgypm0v3b4wakap4rash45mhzbgjj0kq"; + }; + + propagatedBuildInputs = [ + youtube-dl PyChromecast click ifaddr requests + ]; + + doCheck = false; # attempts to access various URLs + + meta = with lib; { + description = "Cast All The Things allows you to send videos from many, many online sources to your Chromecast"; + homepage = "https://github.com/skorokithakis/catt"; + license = licenses.bsd2; + maintainers = with maintainers; [ dtzWill ]; + }; +} + diff --git a/infra/libkookie/nixpkgs/pkgs/applications/video/ccextractor/default.nix b/infra/libkookie/nixpkgs/pkgs/applications/video/ccextractor/default.nix new file mode 100644 index 000000000000..91c47516521e --- /dev/null +++ b/infra/libkookie/nixpkgs/pkgs/applications/video/ccextractor/default.nix @@ -0,0 +1,34 @@ +{ stdenv, fetchFromGitHub, pkgconfig, cmake +, glew, glfw3, leptonica, libiconv, tesseract3, zlib }: + +with stdenv.lib; +stdenv.mkDerivation rec { + pname = "ccextractor"; + version = "0.88"; + + src = fetchFromGitHub { + owner = "CCExtractor"; + repo = pname; + rev = "v${version}"; + sha256 = "1sya45hvv4d46bk7541yimmafgvgyhkpsvwfz9kv6pm4yi1lz6nb"; + }; + + sourceRoot = "source/src"; + + nativeBuildInputs = [ pkgconfig cmake ]; + + buildInputs = [ glew glfw3 leptonica tesseract3 zlib ] ++ stdenv.lib.optional (!stdenv.isLinux) libiconv; + + meta = { + homepage = "https://www.ccextractor.org"; + description = "Tool that produces subtitles from closed caption data in videos"; + longDescription = '' + A tool that analyzes video files and produces independent subtitle files from + closed captions data. CCExtractor is portable, small, and very fast. + It works on Linux, Windows, and OSX. + ''; + platforms = platforms.unix; + license = licenses.gpl2; + maintainers = with maintainers; [ titanous ]; + }; +} diff --git a/infra/libkookie/nixpkgs/pkgs/applications/video/celluloid/default.nix b/infra/libkookie/nixpkgs/pkgs/applications/video/celluloid/default.nix new file mode 100644 index 000000000000..ca9ecb48188c --- /dev/null +++ b/infra/libkookie/nixpkgs/pkgs/applications/video/celluloid/default.nix @@ -0,0 +1,71 @@ +{ stdenv +, fetchFromGitHub +, nix-update-script +, meson +, ninja +, python3 +, gettext +, pkgconfig +, desktop-file-utils +, wrapGAppsHook +, appstream-glib +, epoxy +, glib +, gtk3 +, mpv +}: + +stdenv.mkDerivation rec { + pname = "celluloid"; + version = "0.20"; + + src = fetchFromGitHub { + owner = "celluloid-player"; + repo = "celluloid"; + rev = "v${version}"; + hash = "sha256-fEZnH8EqU6CykgKINXnKChuBUlisroa97B1vjcx2cWA="; + }; + + nativeBuildInputs = [ + meson + ninja + python3 + appstream-glib + gettext + pkgconfig + desktop-file-utils + wrapGAppsHook + ]; + + buildInputs = [ + epoxy + glib + gtk3 + mpv + ]; + + postPatch = '' + patchShebangs meson-post-install.py src/generate-authors.py + ''; + + doCheck = true; + + passthru = { + updateScript = nix-update-script { + attrPath = pname; + }; + }; + + meta = with stdenv.lib; { + description = "Simple GTK frontend for the mpv video player"; + longDescription = '' + GNOME MPV interacts with mpv via the client API exported by libmpv, + allowing access to mpv's powerful playback capabilities through an + easy-to-use user interface. + ''; + homepage = "https://github.com/celluloid-player/celluloid"; + license = licenses.gpl3Plus; + maintainers = with maintainers; [ worldofpeace ]; + platforms = platforms.linux; + }; +} diff --git a/infra/libkookie/nixpkgs/pkgs/applications/video/cinelerra/default.nix b/infra/libkookie/nixpkgs/pkgs/applications/video/cinelerra/default.nix new file mode 100644 index 000000000000..22533b182a0f --- /dev/null +++ b/infra/libkookie/nixpkgs/pkgs/applications/video/cinelerra/default.nix @@ -0,0 +1,51 @@ +{ stdenv, fetchFromGitHub, autoconf, automake, libtool +, pkgconfig, faad2, faac, a52dec, alsaLib, fftw, lame, libavc1394 +, libiec61883, libraw1394, libsndfile, libvorbis, libogg, libjpeg +, libtiff, freetype, mjpegtools, x264, gettext, openexr +, libXext, libXxf86vm, libXv, libXi, libX11, libXft, xorgproto, libtheora, libpng +, libdv, libuuid, file, nasm, perl +, fontconfig, intltool }: + +stdenv.mkDerivation { + name = "cinelerra-cv-2018-05-16"; + + src = fetchFromGitHub { + owner = "ratopi"; + repo = "CinelerraCV"; + rev = "d9c0dbf4393717f0a42f4b91c3e1ed5b16f955dc"; + sha256 = "0a8kfm1v96sv6jh4568crg6nkr6n3579i9xksfj8w199s6yxzsbk"; + }; + + preConfigure = '' + find -type f -print0 | xargs --null sed -e "s@/usr/bin/perl@${perl}/bin/perl@" -i + ./autogen.sh + sed -i -e "s@/usr/bin/file@${file}/bin/file@" ./configure + ''; + + ## fix bug with parallel building + preBuild = '' + make -C cinelerra versioninfo.h + ''; + enableParallelBuilding = true; + + buildInputs = + [ automake + autoconf libtool pkgconfig file + faad2 faac + a52dec alsaLib fftw lame libavc1394 libiec61883 + libraw1394 libsndfile libvorbis libogg libjpeg libtiff freetype + mjpegtools x264 gettext openexr + libXext libXxf86vm libXv libXi libX11 libXft xorgproto + libtheora libpng libdv libuuid + nasm + perl + fontconfig intltool + ]; + + meta = { + description = "Video Editor"; + homepage = "http://www.cinelerra.org"; + maintainers = [ stdenv.lib.maintainers.marcweber ]; + license = stdenv.lib.licenses.gpl2; + }; +} diff --git a/infra/libkookie/nixpkgs/pkgs/applications/video/clickshare-csc1/default.nix b/infra/libkookie/nixpkgs/pkgs/applications/video/clickshare-csc1/default.nix new file mode 100644 index 000000000000..e4e72704fb0b --- /dev/null +++ b/infra/libkookie/nixpkgs/pkgs/applications/video/clickshare-csc1/default.nix @@ -0,0 +1,124 @@ +{ lib +, stdenv +, fetchurl +, alsaLib +, autoPatchelfHook +, binutils-unwrapped +, gnutar +, libav_0_8 +, libnotify +, libresample +, libusb1 +, qt4 +, rpmextract +, unzip +, xorg +, usersGroup ? "clickshare" # for udev access rules +}: + + +# This fetches the latest firmware version that +# contains a linux-compatible client binary. +# Barco no longer supports linux, so updates are unlikely: +# https://www.barco.com/de/support/clickshare-csc-1/knowledge-base/KB1191 + + +stdenv.mkDerivation rec { + pname = "clickshare-csc1"; + version = "01.07.00.033"; + src = fetchurl { + name = "clickshare-csc1-${version}.zip"; + url = "https://www.barco.com/services/website/de/TdeFiles/Download?FileNumber=R33050020&TdeType=3&MajorVersion=01&MinorVersion=07&PatchVersion=00&BuildVersion=033"; + sha256 = "0h4jqidqvk4xkaky5bizi7ilz4qzl2mh68401j21y3djnzx09br3"; + }; + + nativeBuildInputs = [ + autoPatchelfHook + binutils-unwrapped + gnutar + rpmextract + unzip + ]; + buildInputs = [ + alsaLib + libav_0_8 + libnotify + libresample + libusb1 + qt4 + xorg.libX11 + xorg.libXdamage + xorg.libXfixes + xorg.libXinerama + xorg.libXtst + ]; + sourceRoot = "."; + + # The source consists of nested archives. + # We extract them archive by archive. + # If the filename contains version numbers, + # we use a wildcard and check that there + # is actually only one file matching. + postUnpack = + let + rpmArch = + if stdenv.hostPlatform.isx86_32 then "i386" else + if stdenv.hostPlatform.isx86_64 then "x86_64" else + throw "unsupported system: ${stdenv.hostPlatform.system}"; + in + '' + ls clickshare_baseunit_*.*_all.signed_release.ipk | wc --lines | xargs test 1 = + tar --verbose --extract --one-top-level=dir1 < clickshare_baseunit_*.*_all.signed_release.ipk + mkdir dir2 + ( cd dir2 ; ar xv ../dir1/firmware.ipk ) + tar --verbose --gzip --extract --one-top-level=dir3 --exclude='dev/*' < dir2/data.tar.gz + ls dir3/clickshare/clickshare-*-*.${rpmArch}.rpm | wc --lines | xargs test 1 = + mkdir dir4 + cd dir4 + rpmextract ../dir3/clickshare/clickshare-*-*.${rpmArch}.rpm + ''; + + installPhase = '' + runHook preInstall + mkdir --verbose --parents $out + mv --verbose --target-directory=. usr/* + rmdir --verbose usr + cp --verbose --recursive --target-directory=$out * + runHook postInstall + ''; + + # Default udev rule restricts access to the + # clickshare USB dongle to the `wheel` group. + # We replace it with the group + # stated in the package arguments. + # Also, we patch executable and icon paths in .desktop files. + preFixup = '' + substituteInPlace \ + $out/lib/udev/rules.d/99-clickshare.rules \ + --replace wheel ${usersGroup} + substituteInPlace \ + $out/share/applications/clickshare.desktop \ + --replace Exec= Exec=$out/bin/ \ + --replace =/usr =$out + substituteInPlace \ + $out/etc/xdg/autostart/clickshare-launcher.desktop \ + --replace =/usr =$out + ''; + + meta = { + homepage = "https://www.barco.com/de/support/clickshare-csc-1/drivers"; + downloadPage = "https://www.barco.com/de/Support/software/R33050020"; + platforms = [ "i686-linux" "x86_64-linux" ]; + license = lib.licenses.unfree; + maintainers = [ lib.maintainers.yarny ]; + description = "Linux driver/client for Barco ClickShare CSC-1"; + longDescription = '' + Barco ClickShare is a wireless presentation system + where a USB dongle transmits to a base station + that is connected with a beamer. + The USB dongle requires proprietary software that + captures the screen and sends it to the dongle. + This package provides the necessary software for Linux. + ''; + }; +} diff --git a/infra/libkookie/nixpkgs/pkgs/applications/video/clipgrab/default.nix b/infra/libkookie/nixpkgs/pkgs/applications/video/clipgrab/default.nix new file mode 100644 index 000000000000..f8b74a175474 --- /dev/null +++ b/infra/libkookie/nixpkgs/pkgs/applications/video/clipgrab/default.nix @@ -0,0 +1,56 @@ +{ stdenv, fetchurl, makeDesktopItem, ffmpeg_3 +, qmake, qttools, mkDerivation +, qtbase, qtdeclarative, qtlocation, qtquickcontrols2, qtwebchannel, qtwebengine +}: + +mkDerivation rec { + pname = "clipgrab"; + version = "3.8.14"; + + src = fetchurl { + sha256 = "19337qjxwlkpdnnh6q0y4b8askk17a8zb88gifznllrk06a6pgyf"; + # The .tar.bz2 "Download" link is a binary blob, the source is the .tar.gz! + url = "https://download.clipgrab.org/${pname}-${version}.tar.gz"; + }; + + buildInputs = [ ffmpeg_3 qtbase qtdeclarative qtlocation qtquickcontrols2 qtwebchannel qtwebengine ]; + nativeBuildInputs = [ qmake qttools ]; + + postPatch = stdenv.lib.optionalString (ffmpeg_3 != null) '' + substituteInPlace converter_ffmpeg.cpp \ + --replace '"ffmpeg"' '"${ffmpeg_3.bin}/bin/ffmpeg"' \ + --replace '"ffmpeg ' '"${ffmpeg_3.bin}/bin/ffmpeg ' + ''; + + qmakeFlags = [ "clipgrab.pro" ]; + + enableParallelBuilding = true; + + desktopItem = makeDesktopItem rec { + name = "clipgrab"; + exec = name; + icon = name; + desktopName = "ClipGrab"; + comment = meta.description; + genericName = "Web video downloader"; + categories = "Qt;AudioVideo;Audio;Video"; + }; + + installPhase = '' + install -Dm755 clipgrab $out/bin/clipgrab + install -Dm644 icon.png $out/share/pixmaps/clipgrab.png + cp -r ${desktopItem}/share/applications $out/share + ''; + + meta = with stdenv.lib; { + description = "Video downloader for YouTube and other sites"; + longDescription = '' + ClipGrab is a free downloader and converter for YouTube, Vimeo, Metacafe, + Dailymotion and many other online video sites. It converts downloaded + videos to MPEG4, MP3 or other formats in just one easy step. + ''; + homepage = "https://clipgrab.org/"; + license = licenses.gpl3Plus; + platforms = platforms.linux; + }; +} diff --git a/infra/libkookie/nixpkgs/pkgs/applications/video/coriander/default.nix b/infra/libkookie/nixpkgs/pkgs/applications/video/coriander/default.nix new file mode 100644 index 000000000000..a094bfd904ab --- /dev/null +++ b/infra/libkookie/nixpkgs/pkgs/applications/video/coriander/default.nix @@ -0,0 +1,26 @@ +{stdenv, fetchurl, pkgconfig, glib, gtk2, libgnomeui, libXv, libraw1394, libdc1394 +, SDL, automake, GConf }: + +stdenv.mkDerivation { + name = "coriander-2.0.1"; + + src = fetchurl { + url = "http://damien.douxchamps.net/ieee1394/coriander/archives/coriander-2.0.1.tar.gz"; + sha256 = "0l6hpfgy5r4yardilmdrggsnn1fbfww516sk5a90g1740cd435x5"; + }; + + preConfigure = '' + cp ${automake}/share/automake-*/mkinstalldirs . + ''; + + nativeBuildInputs = [ pkgconfig ]; + buildInputs = [ glib gtk2 libgnomeui libXv libraw1394 libdc1394 SDL GConf ]; + + meta = { + homepage = "https://damien.douxchamps.net/ieee1394/coriander/"; + description = "GUI for controlling a Digital Camera through the IEEE1394 bus"; + license = stdenv.lib.licenses.gpl3Plus; + maintainers = with stdenv.lib.maintainers; [viric]; + platforms = with stdenv.lib.platforms; linux; + }; +} diff --git a/infra/libkookie/nixpkgs/pkgs/applications/video/devede/default.nix b/infra/libkookie/nixpkgs/pkgs/applications/video/devede/default.nix new file mode 100644 index 000000000000..9bb5518e80f7 --- /dev/null +++ b/infra/libkookie/nixpkgs/pkgs/applications/video/devede/default.nix @@ -0,0 +1,53 @@ +{ stdenv, fetchFromGitHub, python3Packages, ffmpeg_3, mplayer, vcdimager, cdrkit, dvdauthor +, gtk3, gettext, wrapGAppsHook, gdk-pixbuf, gobject-introspection }: + +let + inherit (python3Packages) dbus-python buildPythonApplication pygobject3 urllib3 setuptools; + +in buildPythonApplication { + name = "devede-4.8.8"; + namePrefix = ""; + + src = fetchFromGitHub { + owner = "rastersoft"; + repo = "devedeng"; + rev = "c518683fbcd793aa92249e4fecafc3c3fea7da68"; + sha256 = "0ncb8nykchrjlllbzfjpvirmfvfaps9qhilc56kvcw3nzqrnkx8q"; + }; + + # Temporary fix + # See https://github.com/NixOS/nixpkgs/issues/61578 + # and https://github.com/NixOS/nixpkgs/issues/56943 + strictDeps = false; + + nativeBuildInputs = [ + gettext wrapGAppsHook + + # Temporary fix + # See https://github.com/NixOS/nixpkgs/issues/61578 + # and https://github.com/NixOS/nixpkgs/issues/56943 + gobject-introspection + ]; + + buildInputs = [ + ffmpeg_3 + ]; + + propagatedBuildInputs = [ + gtk3 pygobject3 gdk-pixbuf dbus-python ffmpeg_3 mplayer dvdauthor vcdimager cdrkit urllib3 setuptools + ]; + + postPatch = '' + substituteInPlace setup.py --replace "'/usr'," "" + substituteInPlace src/devedeng/configuration_data.py \ + --replace "/usr/share" "$out/share" \ + --replace "/usr/local/share" "$out/share" + ''; + + meta = with stdenv.lib; { + description = "DVD Creator for Linux"; + homepage = "http://www.rastersoft.com/programas/devede.html"; + license = licenses.gpl3; + maintainers = [ maintainers.bdimcheff ]; + }; +} diff --git a/infra/libkookie/nixpkgs/pkgs/applications/video/dvb-apps/default.nix b/infra/libkookie/nixpkgs/pkgs/applications/video/dvb-apps/default.nix new file mode 100644 index 000000000000..8fa88e324494 --- /dev/null +++ b/infra/libkookie/nixpkgs/pkgs/applications/video/dvb-apps/default.nix @@ -0,0 +1,24 @@ +{ stdenv, fetchurl, perl }: + +stdenv.mkDerivation { + name = "dvb-apps-7f68f9c8d311"; + + src = fetchurl { + url = "https://linuxtv.org/hg/dvb-apps/archive/7f68f9c8d311.tar.gz"; + sha256 = "0a6c5jjq6ad98bj0r954l3n7zjb2syw9m19jksg06z4zg1z8yg82"; + }; + + buildInputs = [ perl ]; + + dontConfigure = true; # skip configure + + installPhase = "make prefix=$out install"; + + meta = { + description = "Linux DVB API applications and utilities"; + homepage = "https://linuxtv.org/"; + platforms = stdenv.lib.platforms.linux; + license = stdenv.lib.licenses.gpl2; + broken = true; # 2018-04-10 + }; +} diff --git a/infra/libkookie/nixpkgs/pkgs/applications/video/dvd-slideshow/default.nix b/infra/libkookie/nixpkgs/pkgs/applications/video/dvd-slideshow/default.nix new file mode 100644 index 000000000000..e35d95d54d6f --- /dev/null +++ b/infra/libkookie/nixpkgs/pkgs/applications/video/dvd-slideshow/default.nix @@ -0,0 +1,72 @@ +{ stdenv, lib, fetchurl, writeScript, cdrtools, dvdauthor, ffmpeg_3, imagemagick, lame, mjpegtools, sox, transcode, vorbis-tools, runtimeShell }: + +let + binPath = lib.makeBinPath [ cdrtools dvdauthor ffmpeg_3 imagemagick lame mjpegtools sox transcode vorbis-tools ]; + + wrapper = writeScript "dvd-slideshow.sh" '' + #!${runtimeShell} + # wrapper script for dvd-slideshow programs + export PATH=${binPath}:$PATH + + dir=`dirname "$0"` + exe=`basename "$0"` + case "$exe" in + dvd-slideshow) + # use mpeg2enc by default as ffmpeg is known to crash. + # run dvd-slideshow.ffmpeg to force ffmpeg. + "$dir/dvd-slideshow.real" -mpeg2enc $@ + ;; + + dvd-slideshow.ffmpeg) + "$dir/dvd-slideshow.real" $@ + ;; + + *) + "$dir/$exe.real" $@ + ;; + esac + ''; + +in stdenv.mkDerivation rec { + pname = "dvd-slideshow"; + version = "0.8.4-2"; + + src = fetchurl { + url = "mirror://sourceforge/dvd-slideshow/files/${pname}-${version}.tar.gz"; + sha256 = "17c09aqvippiji2sd0pcxjg3nb1mnh9k5nia4gn5lhcvngjcp1q5"; + }; + + patchPhase = '' + # fix upstream typos + substituteInPlace dvd-slideshow \ + --replace "version='0.8.4-1'" "version='0.8.4-2'" \ + --replace "mymyecho" "myecho" + ''; + + installPhase = '' + mkdir -p "$out/bin" + cp dvd-slideshow "$out/bin/dvd-slideshow.real" + cp dvd-menu "$out/bin/dvd-menu.real" + cp dir2slideshow "$out/bin/dir2slideshow.real" + cp gallery1-to-slideshow "$out/bin/gallery1-to-slideshow.real" + cp jigl2slideshow "$out/bin/jigl2slideshow.real" + + cp ${wrapper} "$out/bin/dvd-slideshow.sh" + ln -s dvd-slideshow.sh "$out/bin/dvd-slideshow" + ln -s dvd-slideshow.sh "$out/bin/dvd-slideshow.ffmpeg" + ln -s dvd-slideshow.sh "$out/bin/dvd-menu" + ln -s dvd-slideshow.sh "$out/bin/dir2slideshow" + ln -s dvd-slideshow.sh "$out/bin/gallery1-to-slideshow" + ln -s dvd-slideshow.sh "$out/bin/jigl2slideshow" + + cp -a man "$out/" + ''; + + meta = { + description = "Suite of command line programs that creates a slideshow-style video from groups of pictures"; + homepage = "http://dvd-slideshow.sourceforge.net/wiki/Main_Page"; + license = stdenv.lib.licenses.gpl2; + platforms = stdenv.lib.platforms.linux; + maintainers = [ stdenv.lib.maintainers.robbinch ]; + }; +} diff --git a/infra/libkookie/nixpkgs/pkgs/applications/video/dvdauthor/default.nix b/infra/libkookie/nixpkgs/pkgs/applications/video/dvdauthor/default.nix new file mode 100644 index 000000000000..af1fe24cbbf4 --- /dev/null +++ b/infra/libkookie/nixpkgs/pkgs/applications/video/dvdauthor/default.nix @@ -0,0 +1,27 @@ +{ stdenv, fetchurl, imagemagick, libdvdread, libxml2, freetype, fribidi, libpng, zlib, pkgconfig +, flex, bison }: + +stdenv.mkDerivation rec { + name = "dvdauthor-0.7.1"; + + src = fetchurl { + url = "mirror://sourceforge/dvdauthor/${name}.tar.gz"; + sha256 = "1s8zqlim0s3hk5sbdsilip3qqh0yv05l1jwx49d9rsy614dv27sh"; + }; + + buildInputs = [ libpng freetype libdvdread libxml2 zlib fribidi imagemagick flex bison]; + nativeBuildInputs = [ pkgconfig ]; + + patches = [ + ./dvdauthor-0.7.1-automake-1.13.patch + ./dvdauthor-0.7.1-mga-strndup.patch + ./dvdauthor-imagemagick-0.7.0.patch + ]; + + meta = with stdenv.lib; { + description = "Tools for generating DVD files to be played on standalone DVD players"; + homepage = "http://dvdauthor.sourceforge.net/"; + license = licenses.gpl2; + platforms = platforms.linux ++ platforms.darwin; + }; +} diff --git a/infra/libkookie/nixpkgs/pkgs/applications/video/dvdauthor/dvdauthor-0.7.1-automake-1.13.patch b/infra/libkookie/nixpkgs/pkgs/applications/video/dvdauthor/dvdauthor-0.7.1-automake-1.13.patch new file mode 100644 index 000000000000..786f0c968556 --- /dev/null +++ b/infra/libkookie/nixpkgs/pkgs/applications/video/dvdauthor/dvdauthor-0.7.1-automake-1.13.patch @@ -0,0 +1,10 @@ +--- dvdauthor/configure.ac~ 2013-01-04 08:27:40.713197029 +0800 ++++ dvdauthor/configure.ac 2013-01-04 08:27:53.273525273 +0800 +@@ -1,6 +1,6 @@ + AC_INIT(DVDAuthor,0.7.1,dvdauthor-users@lists.sourceforge.net) + +-AM_CONFIG_HEADER(src/config.h) ++AC_CONFIG_HEADERS(src/config.h) + AC_CONFIG_AUX_DIR(autotools) + + AM_INIT_AUTOMAKE diff --git a/infra/libkookie/nixpkgs/pkgs/applications/video/dvdauthor/dvdauthor-0.7.1-mga-strndup.patch b/infra/libkookie/nixpkgs/pkgs/applications/video/dvdauthor/dvdauthor-0.7.1-mga-strndup.patch new file mode 100644 index 000000000000..5f77a68081a4 --- /dev/null +++ b/infra/libkookie/nixpkgs/pkgs/applications/video/dvdauthor/dvdauthor-0.7.1-mga-strndup.patch @@ -0,0 +1,24 @@ +Index: dvdauthor/src/dvdvml.l +=================================================================== +--- dvdauthor/src/dvdvml.l ++++ dvdauthor/src/dvdvml.l 2014-09-14 19:36:05.098847465 +0000 +@@ -19,6 +19,7 @@ + * USA + */ + ++#include "config.h" + #include "compat.h" /* needed for bool */ + #include "dvdvm.h" + #include "dvdvmy.h" +Index: dvdauthor/src/dvdvmy.y +=================================================================== +--- dvdauthor/src/dvdvmy.y ++++ dvdauthor/src/dvdvmy.y 2014-09-14 19:36:28.251618378 +0000 +@@ -19,6 +19,7 @@ + * USA + */ + ++#include "config.h" + #include "compat.h" /* needed for bool */ + #include "dvdvm.h" + diff --git a/infra/libkookie/nixpkgs/pkgs/applications/video/dvdauthor/dvdauthor-imagemagick-0.7.0.patch b/infra/libkookie/nixpkgs/pkgs/applications/video/dvdauthor/dvdauthor-imagemagick-0.7.0.patch new file mode 100644 index 000000000000..52b6cc44cd59 --- /dev/null +++ b/infra/libkookie/nixpkgs/pkgs/applications/video/dvdauthor/dvdauthor-imagemagick-0.7.0.patch @@ -0,0 +1,11 @@ +--- dvdauthor/configure.ac.orig 2010-10-23 04:26:49.000000000 +0200 ++++ dvdauthor/configure.ac 2010-10-24 14:37:45.489064778 +0200 +@@ -31,7 +31,7 @@ + + usemagick=0 + +-AC_CHECK_PROGS(MAGICKCONFIG, [Magick-config]) ++AC_CHECK_PROGS(MAGICKCONFIG, [MagickCore-config]) + if test -n "$MAGICKCONFIG"; then + ac_save_CPPFLAGS="$CPPFLAGS" + ac_save_LIBS="$LIBS" diff --git a/infra/libkookie/nixpkgs/pkgs/applications/video/dvdbackup/default.nix b/infra/libkookie/nixpkgs/pkgs/applications/video/dvdbackup/default.nix new file mode 100644 index 000000000000..633eea3d282a --- /dev/null +++ b/infra/libkookie/nixpkgs/pkgs/applications/video/dvdbackup/default.nix @@ -0,0 +1,28 @@ +{ stdenv, fetchurl, fetchpatch, libdvdread, libdvdcss, dvdauthor }: + +stdenv.mkDerivation rec { + version = "0.4.2"; + pname = "dvdbackup"; + + src = fetchurl { + url = "mirror://sourceforge/dvdbackup/${pname}-${version}.tar.xz"; + sha256 = "1rl3h7waqja8blmbpmwy01q9fgr5r0c32b8dy3pbf59bp3xmd37g"; + }; + + buildInputs = [ libdvdread libdvdcss dvdauthor ]; + + # see https://bugs.launchpad.net/dvdbackup/+bug/1869226 + patchFlags = [ "-p0" ]; + patches = [ (fetchpatch { + url = "https://git.slackbuilds.org/slackbuilds/plain/multimedia/dvdbackup/patches/dvdbackup-dvdread-6.1.patch"; + sha256 = "1v3xl01bwq1592i5x5dyh95r0mmm1zvvwf92fgjc0smr0k3davfz"; + })]; + + meta = { + description = "A tool to rip video DVDs from the command line"; + homepage = "http://dvdbackup.sourceforge.net/"; + license = stdenv.lib.licenses.gpl3Plus; + maintainers = [ stdenv.lib.maintainers.bradediger ]; + platforms = stdenv.lib.platforms.linux; + }; +} diff --git a/infra/libkookie/nixpkgs/pkgs/applications/video/dvdstyler/default.nix b/infra/libkookie/nixpkgs/pkgs/applications/video/dvdstyler/default.nix new file mode 100644 index 000000000000..b78f9ed816b7 --- /dev/null +++ b/infra/libkookie/nixpkgs/pkgs/applications/video/dvdstyler/default.nix @@ -0,0 +1,85 @@ +{ stdenv, fetchurl, pkgconfig +, flex, bison, gettext +, xineUI, wxSVG +, fontconfig +, xmlto, docbook5, zip +, cdrtools, dvdauthor, dvdplusrwtools +, dvdisasterSupport ? true, dvdisaster ? null +, thumbnailSupport ? true, libgnomeui ? null +, udevSupport ? true, udev ? null +, dbusSupport ? true, dbus ? null +, makeWrapper }: + +with stdenv.lib; +stdenv.mkDerivation rec { + + pname = "dvdstyler"; + srcName = "DVDStyler-${version}"; + version = "3.1.2"; + + src = fetchurl { + url = "mirror://sourceforge/project/dvdstyler/dvdstyler/${version}/${srcName}.tar.bz2"; + sha256 = "03lsblqficcadlzkbyk8agh5rqcfz6y6dqvy9y866wqng3163zq4"; + }; + + nativeBuildInputs = + [ pkgconfig ]; + + packagesToBinPath = + [ cdrtools dvdauthor dvdplusrwtools ]; + + buildInputs = + [ flex bison gettext xineUI + wxSVG fontconfig xmlto + docbook5 zip makeWrapper ] + ++ packagesToBinPath + ++ optionals dvdisasterSupport [ dvdisaster ] + ++ optionals udevSupport [ udev ] + ++ optionals dbusSupport [ dbus ] + ++ optionals thumbnailSupport [ libgnomeui ]; + + binPath = makeBinPath packagesToBinPath; + + postInstall = '' + wrapProgram $out/bin/dvdstyler \ + --prefix PATH ":" "${binPath}" + ''; + + meta = with stdenv.lib; { + description = "A DVD authoring software"; + longDescription = '' + DVDStyler is a cross-platform free DVD authoring application for the + creation of professional-looking DVDs. It allows not only burning of video + files on DVD that can be played practically on any standalone DVD player, + but also creation of individually designed DVD menus. It is Open Source + Software and is completely free. + + Some of its features include: + - create and burn DVD video with interactive menus + - design your own DVD menu or select one from the list of ready to use menu + templates + - create photo slideshow + - add multiple subtitle and audio tracks + - support of AVI, MOV, MP4, MPEG, OGG, WMV and other file formats + - support of MPEG-2, MPEG-4, DivX, Xvid, MP2, MP3, AC-3 and other audio and + video formats + - support of multi-core processor + - use MPEG and VOB files without reencoding + - put files with different audio/video format on one DVD (support of + titleset) + - user-friendly interface with support of drag & drop + - flexible menu creation on the basis of scalable vector graphic + - import of image file for background + - place buttons, text, images and other graphic objects anywhere on the menu + screen + - change the font/color and other parameters of buttons and graphic objects + - scale any button or graphic object + - copy any menu object or whole menu + - customize navigation using DVD scripting + ''; + homepage = "http://www.dvdstyler.org/"; + license = with licenses; gpl2; + maintainers = with maintainers; [ AndersonTorres ]; + platforms = with platforms; linux; + }; +} diff --git a/infra/libkookie/nixpkgs/pkgs/applications/video/electronplayer/electronplayer.nix b/infra/libkookie/nixpkgs/pkgs/applications/video/electronplayer/electronplayer.nix new file mode 100644 index 000000000000..577c85c6b27c --- /dev/null +++ b/infra/libkookie/nixpkgs/pkgs/applications/video/electronplayer/electronplayer.nix @@ -0,0 +1,33 @@ +{ appimageTools, stdenv, fetchurl }: +let + pname = "electronplayer"; + version = "2.0.8"; + name = "${pname}-${version}"; + + #TODO: remove the -rc4 from the tag in the url when possible + src = fetchurl { + url = "https://github.com/oscartbeaumont/ElectronPlayer/releases/download/v${version}-rc4/${name}.AppImage"; + sha256 = "wAsmSFdbRPnYnDyWQSbtyj+GLJLN7ibksUE7cegfkhI="; + }; + + appimageContents = appimageTools.extractType2 { inherit name src; }; +in appimageTools.wrapType2 { + inherit name src; + + extraInstallCommands = '' + mv $out/bin/${name} $out/bin/${pname} + + install -m 444 -D ${appimageContents}/${pname}.desktop $out/share/applications/${pname}.desktop + substituteInPlace $out/share/applications/${pname}.desktop \ + --replace 'Exec=AppRun' 'Exec=ElectronPlayer' + cp -r ${appimageContents}/usr/share/icons $out/share + ''; + + meta = with stdenv.lib; { + description = "An electron based web video services player"; + homepage = "https://github.com/oscartbeaumont/ElectronPlayer"; + license = licenses.mit; + maintainers = with maintainers; [ extends ]; + platforms = [ "x86_64-linux" ]; + }; +} diff --git a/infra/libkookie/nixpkgs/pkgs/applications/video/epgstation/default.nix b/infra/libkookie/nixpkgs/pkgs/applications/video/epgstation/default.nix new file mode 100644 index 000000000000..e57f46c8c6ad --- /dev/null +++ b/infra/libkookie/nixpkgs/pkgs/applications/video/epgstation/default.nix @@ -0,0 +1,85 @@ +{ stdenv, fetchFromGitHub, makeWrapper, bash, nodejs, nodePackages, gzip }: + +let + workaround-opencollective-buildfailures = stdenv.mkDerivation { + # FIXME: This should be removed when a complete fix is available + # https://github.com/svanderburg/node2nix/issues/145 + name = "workaround-opencollective-buildfailures"; + phases = [ "installPhase" ]; + installPhase = '' + mkdir -p $out/bin + touch $out/bin/opencollective-postinstall + chmod +x $out/bin/opencollective-postinstall + ''; + }; +in +nodePackages.epgstation.override (drv: { + src = fetchFromGitHub { + owner = "l3tnun"; + repo = "EPGStation"; + rev = "v${drv.version}"; # version specified in ./generate.sh + sha256 = "15z1kdbamj97frp3dfnbm0h8krihmv2xdab4id0rxin29ibrw1k2"; + }; + + buildInputs = [ bash ]; + nativeBuildInputs = [ + workaround-opencollective-buildfailures + makeWrapper + nodePackages.node-pre-gyp + ]; + + preRebuild = '' + # Fix for not being able to connect to mysql using domain sockets. + patch -p1 ${./use-mysql-over-domain-socket.patch} + ''; + + postInstall = let + runtimeDeps = [ nodejs bash ]; + in + '' + mkdir -p $out/{bin,libexec,share/doc/epgstation,share/man/man1} + + pushd $out/lib/node_modules/EPGStation + + npm run build + npm prune --production + + mv config/{enc.sh,enc.js} $out/libexec + mv LICENSE Readme.md $out/share/doc/epgstation + mv doc/* $out/share/doc/epgstation + sed 's/@DESCRIPTION@/${drv.meta.description}/g' ${./epgstation.1} \ + | ${gzip}/bin/gzip > $out/share/man/man1/epgstation.1.gz + rm -rf doc + + # just log to stdout and let journald do its job + rm -rf logs + + # Replace the existing configuration and runtime state directories with + # symlinks. Without this, they would all be non-writable because they reside + # in the Nix store. Note that the source path won't be accessible at build + # time. + rm -r config data recorded thumbnail + ln -sfT /etc/epgstation config + ln -sfT /var/lib/epgstation data + ln -sfT /var/lib/epgstation/recorded recorded + ln -sfT /var/lib/epgstation/thumbnail thumbnail + + makeWrapper ${nodejs}/bin/npm $out/bin/epgstation \ + --run "cd $out/lib/node_modules/EPGStation" \ + --prefix PATH : ${stdenv.lib.makeBinPath runtimeDeps} + + popd + ''; + + meta = with stdenv.lib; drv.meta // { + maintainers = with maintainers; [ midchildan ]; + + # nodePackages.epgstation is a stub package to fetch npm dependencies and + # is marked as broken to prevent users from installing it directly. This + # technique ensures epgstation can share npm packages with the rest of + # nixpkgs while still allowing us to heavily customize the build. It also + # allows us to provide devDependencies for the epgstation build process + # without doing the same for all the other node packages. + broken = false; + }; +}) diff --git a/infra/libkookie/nixpkgs/pkgs/applications/video/epgstation/epgstation.1 b/infra/libkookie/nixpkgs/pkgs/applications/video/epgstation/epgstation.1 new file mode 100644 index 000000000000..bb5c02381378 --- /dev/null +++ b/infra/libkookie/nixpkgs/pkgs/applications/video/epgstation/epgstation.1 @@ -0,0 +1,52 @@ +.Dd $Mdocdate$ +.Dt EPGSTATION 1 +.Os +.Sh NAME +.Nm epgstation +.Nd @DESCRIPTION@ +.Sh SYNOPSIS +.Nm +.Bk -words +.Op Ar command Op Ar args +.Ek +.Sh DESCRIPTION +.Nm +is a wrapper command for EPGStation provided by Nix. It's actually a thin +wrapper around the +.Xr npm 1 +command line tool which you can use to invoke npm commands from the EPGStation +project directory. The command line arguments are simply passed as-is to +.Xr npm 1 . +.Pp +On NixOS, it is strongly recommended that you enable the epgstation module +instead of invoking this command directly to launch EPGStation. On other +platforms, run +.Pp +.Dl $ epgstation start +.Pp +to start EPGStation. +.Sh FILES +.Bl -tag -width Ds -compact +.It Pa /etc/epgstation/config.json +.Nm +configuration file. +.El +.Sh EXAMPLES +Start EPGStation. +.Pp +.Dl $ epgstation start +.Pp +Start EPGStation in development mode. +.Pp +.Dl $ epgstation run dev-start +.Pp +Backup the EPGstation database. +.Pp +.Dl $ epgstation run backup /path/to/dst +.Pp +Restore the EPGstation database. +.Pp +.Dl $ epgstation run restore /path/to/src +.Pp +.Sh SEE ALSO +.Xr npm 1 diff --git a/infra/libkookie/nixpkgs/pkgs/applications/video/epgstation/generate.sh b/infra/libkookie/nixpkgs/pkgs/applications/video/epgstation/generate.sh new file mode 100755 index 000000000000..d193a015064c --- /dev/null +++ b/infra/libkookie/nixpkgs/pkgs/applications/video/epgstation/generate.sh @@ -0,0 +1,34 @@ +#!/usr/bin/env bash + +# Script to generate the Nix package definition for EPGStation. Run this script +# when bumping the package version. + +VERSION="1.7.4" +URL="https://raw.githubusercontent.com/l3tnun/EPGStation/v$VERSION/package.json" +JQ_BIN="$(nix-build ../../../.. --no-out-link -A jq)/bin/jq" + +set -eu -o pipefail +cd "$(dirname "${BASH_SOURCE[0]}")" + +main() { + # update package.json + curl -sSfL "$URL" \ + | jq '. + {"dependencies": (.devDependencies + .dependencies)} | del(.devDependencies)' \ + > package.json + + # regenerate node packages to update the actual Nix package + pushd ../../../development/node-packages \ + && ./generate.sh + popd + + # generate default streaming settings for EPGStation + pushd ../../../../nixos/modules/services/video/epgstation \ + && cat "$(./generate)" > streaming.json + popd +} + +jq() { + "$JQ_BIN" "$@" +} + +main "@" diff --git a/infra/libkookie/nixpkgs/pkgs/applications/video/epgstation/package.json b/infra/libkookie/nixpkgs/pkgs/applications/video/epgstation/package.json new file mode 100644 index 000000000000..96525ec809ec --- /dev/null +++ b/infra/libkookie/nixpkgs/pkgs/applications/video/epgstation/package.json @@ -0,0 +1,101 @@ +{ + "name": "EPGStation", + "version": "1.7.4", + "description": "DTV Software in Japan.", + "main": "dist/server/index.js", + "scripts": { + "start": "node dist/server/index.js", + "dev-start": "node dist/server/index.js --env development", + "clean": "gulp clean", + "build": "gulp build --max_old_space_size=768 --env production", + "dev-build": "gulp build --max_old_space_size=512 --env development", + "test": "echo \"Error: no test specified\" && exit 1", + "task": "gulp --max_old_space_size=512", + "install-win-service": "winser -i -a", + "uninstall-win-service": "winser -r -x", + "backup": "node dist/server/DBTools.js -m backup -o", + "restore": "node dist/server/DBTools.js -m restore -o", + "move-log": "node dist/server/LogFileMoveTools.js", + "convert-str": "node dist/server/ConvertDBStrTools.js" + }, + "repository": { + "type": "git", + "url": "https://github.com/l3tnun/EPGStation.git" + }, + "author": "l3tnun", + "license": "MIT", + "bugs": { + "url": "https://github.com/l3tnun/EPGStation/issues" + }, + "homepage": "https://github.com/l3tnun/EPGStation#readme", + "engines": { + "node": "^10.x.x < 11 || ^12.14.0 < 13 || ^14.5.0 < 15" + }, + "dependencies": { + "@types/basic-auth": "1.1.3", + "@types/body-parser": "1.19.0", + "@types/chart.js": "2.9.23", + "@types/express": "4.17.7", + "@types/hls.js": "0.13.0", + "@types/js-yaml": "3.12.5", + "@types/lodash": "4.14.158", + "@types/material-design-lite": "1.1.16", + "@types/minimist": "1.2.0", + "@types/mithril": "2.0.3", + "@types/mkdirp": "1.0.1", + "@types/multer": "1.4.3", + "@types/mysql": "2.15.15", + "@types/node": "14.0.26", + "@types/pg": "7.14.4", + "@types/request": "2.48.5", + "@types/socket.io": "2.1.10", + "@types/socket.io-client": "1.4.33", + "@types/sqlite3": "3.1.6", + "@types/url-join": "4.0.0", + "del": "5.1.0", + "gulp": "4.0.2", + "gulp-clean-css": "4.3.0", + "gulp-concat": "2.6.1", + "gulp-dart-sass": "1.0.2", + "gulp-plumber": "1.2.1", + "gulp-sourcemaps": "2.6.5", + "gulp-tslint": "8.1.4", + "gulp-typescript": "5.0.1", + "terser-webpack-plugin": "3.0.7", + "ts-loader": "8.0.1", + "tslint": "6.1.2", + "typescript": "3.9.7", + "webpack": "4.44.0", + "webpack-stream": "5.2.1", + "aribts": "^2.1.12", + "b24.js": "1.0.3", + "basic-auth": "2.0.1", + "body-parser": "1.19.0", + "chart.js": "2.9.3", + "css-ripple-effect": "1.0.5", + "diskusage": "1.1.3", + "express": "4.17.1", + "express-openapi": "7.0.0", + "fs-extra": "9.0.1", + "hls-b24.js": "0.12.3", + "js-yaml": "3.14.0", + "lodash": "4.17.19", + "log4js": "6.3.0", + "material-design-icons": "3.0.1", + "material-design-lite": "1.3.0", + "minimist": "1.2.5", + "mirakurun": "3.2.0", + "mithril": "2.0.4", + "mkdirp": "1.0.4", + "multer": "1.4.2", + "mysql": "2.18.1", + "openapi-types": "7.0.0", + "pg": "8.3.0", + "request": "2.88.2", + "socket.io": "2.3.0", + "socket.io-client": "2.3.0", + "sqlite3": "5.0.0", + "swagger-ui-dist": "3.30.2", + "url-join": "4.0.1" + } +} diff --git a/infra/libkookie/nixpkgs/pkgs/applications/video/epgstation/use-mysql-over-domain-socket.patch b/infra/libkookie/nixpkgs/pkgs/applications/video/epgstation/use-mysql-over-domain-socket.patch new file mode 100644 index 000000000000..48640f2ba08d --- /dev/null +++ b/infra/libkookie/nixpkgs/pkgs/applications/video/epgstation/use-mysql-over-domain-socket.patch @@ -0,0 +1,17 @@ +diff --git a/src/server/ConfigInterface.ts b/src/server/ConfigInterface.ts +index d23badd..1dd2b98 100644 +--- a/src/server/ConfigInterface.ts ++++ b/src/server/ConfigInterface.ts +@@ -11,9 +11,10 @@ interface ConfigInterface { + dbPath: string; + dbInfoPath: string; + mysql: { +- host: string; ++ host?: string; ++ socketPath?: string; + user: string; +- password: string; ++ password?: string; + database: string; + connectTimeout: number; + connectionLimit: number; diff --git a/infra/libkookie/nixpkgs/pkgs/applications/video/ffmpeg-normalize/default.nix b/infra/libkookie/nixpkgs/pkgs/applications/video/ffmpeg-normalize/default.nix new file mode 100644 index 000000000000..411ab9e6bc28 --- /dev/null +++ b/infra/libkookie/nixpkgs/pkgs/applications/video/ffmpeg-normalize/default.nix @@ -0,0 +1,29 @@ +{ lib +, buildPythonApplication +, fetchPypi +, ffmpeg_3 +, tqdm +}: + +buildPythonApplication rec { + pname = "ffmpeg-normalize"; + version = "1.19.0"; + + src = fetchPypi { + inherit pname version; + sha256 = "18dpck9grnr3wgbjvdh4mjlx0zfwcxpy4rnpmc39in0yk3w7li2x"; + }; + + propagatedBuildInputs = [ ffmpeg_3 tqdm ]; + + checkPhase = '' + $out/bin/ffmpeg-normalize --help > /dev/null + ''; + + meta = with lib; { + description = "Normalize audio via ffmpeg"; + homepage = "https://github.com/slhck/ffmpeg-normalize"; + license = with licenses; [ mit ]; + maintainers = with maintainers; [ prusnak ]; + }; +} diff --git a/infra/libkookie/nixpkgs/pkgs/applications/video/filebot/default.nix b/infra/libkookie/nixpkgs/pkgs/applications/video/filebot/default.nix new file mode 100644 index 000000000000..cdd70b4c8948 --- /dev/null +++ b/infra/libkookie/nixpkgs/pkgs/applications/video/filebot/default.nix @@ -0,0 +1,54 @@ +{ stdenv, fetchurl, openjdk11, makeWrapper, autoPatchelfHook +, zlib, libzen, libmediainfo, curl, libmms, glib +}: + +let + # FileBot requires libcurl-gnutls.so to build + curlWithGnuTls = curl.override { gnutlsSupport = true; sslSupport = false; }; + +in + +stdenv.mkDerivation rec { + pname = "filebot"; + version = "4.9.1"; + + src = fetchurl { + url = "https://get.filebot.net/filebot/FileBot_${version}/FileBot_${version}-portable.tar.xz"; + sha256 = "0l496cz703mjymjhgmyrkqbfld1bz53pdsbkx00h9a267j22fkms"; + }; + + unpackPhase = "tar xvf $src"; + + nativeBuildInputs = [ makeWrapper autoPatchelfHook ]; + + buildInputs = [ zlib libzen libmediainfo curlWithGnuTls libmms glib ]; + + dontBuild = true; + installPhase = '' + mkdir -p $out/opt $out/bin + # Since FileBot has dependencies on relative paths between files, all required files are copied to the same location as is. + cp -r filebot.sh lib/ jar/ $out/opt/ + # Filebot writes to $APP_DATA, which fails due to read-only filesystem. Using current user .local directory instead. + substituteInPlace $out/opt/filebot.sh \ + --replace 'APP_DATA="$FILEBOT_HOME/data/$USER"' 'APP_DATA=''${XDG_DATA_HOME:-$HOME/.local/share}/filebot/data' \ + --replace '$FILEBOT_HOME/data/.license' '$APP_DATA/.license' + wrapProgram $out/opt/filebot.sh \ + --prefix PATH : ${stdenv.lib.makeBinPath [ openjdk11 ]} + # Expose the binary in bin to make runnable. + ln -s $out/opt/filebot.sh $out/bin/filebot + ''; + + meta = with stdenv.lib; { + description = "The ultimate TV and Movie Renamer"; + longDescription = '' + FileBot is the ultimate tool for organizing and renaming your Movies, TV + Shows and Anime as well as fetching subtitles and artwork. It's smart and + just works. + ''; + homepage = "https://filebot.net"; + changelog = "https://www.filebot.net/forums/viewforum.php?f=7"; + license = licenses.unfreeRedistributable; + maintainers = with maintainers; [ gleber felschr ]; + platforms = platforms.linux; + }; +} diff --git a/infra/libkookie/nixpkgs/pkgs/applications/video/gnome-mplayer/default.nix b/infra/libkookie/nixpkgs/pkgs/applications/video/gnome-mplayer/default.nix new file mode 100644 index 000000000000..3bd7785f201c --- /dev/null +++ b/infra/libkookie/nixpkgs/pkgs/applications/video/gnome-mplayer/default.nix @@ -0,0 +1,33 @@ +{stdenv, substituteAll, fetchFromGitHub, pkgconfig, gettext, glib, gtk3, gmtk, dbus, dbus-glib +, libnotify, libpulseaudio, mplayer, wrapGAppsHook }: + +stdenv.mkDerivation rec { + pname = "gnome-mplayer"; + version = "1.0.9"; + + src = fetchFromGitHub { + owner = "kdekorte"; + repo = "gnome-mplayer"; + rev = "v${version}"; + sha256 = "0qvy9fllvg1mad6y1j79iaqa6khs0q2cb0z62yfg4srbr07fi8xr"; + }; + + nativeBuildInputs = [ pkgconfig gettext wrapGAppsHook ]; + buildInputs = [ glib gtk3 gmtk dbus dbus-glib libnotify libpulseaudio ]; + + patches = [ + (substituteAll { + src = ./fix-paths.patch; + mencoder = "${mplayer}/bin/mencoder"; + mplayer = "${mplayer}/bin/mplayer"; + }) + ]; + + meta = with stdenv.lib; { + description = "Gnome MPlayer, a simple GUI for MPlayer"; + homepage = "https://sites.google.com/site/kdekorte2/gnomemplayer"; + license = licenses.gpl2; + maintainers = with maintainers; []; + platforms = platforms.linux; + }; +} diff --git a/infra/libkookie/nixpkgs/pkgs/applications/video/gnome-mplayer/fix-paths.patch b/infra/libkookie/nixpkgs/pkgs/applications/video/gnome-mplayer/fix-paths.patch new file mode 100644 index 000000000000..ede4991c4662 --- /dev/null +++ b/infra/libkookie/nixpkgs/pkgs/applications/video/gnome-mplayer/fix-paths.patch @@ -0,0 +1,87 @@ +--- a/src/gui.c ++++ b/src/gui.c +@@ -7470,7 +7470,7 @@ + filename = g_strdup_printf("%s/00000001.jpg", dirname); + g_free(basepath); + // run mplayer and try to get the first frame and convert it to a jpeg +- av[ac++] = g_strdup_printf("mplayer"); ++ av[ac++] = g_strdup_printf("@mplayer@"); + av[ac++] = g_strdup_printf("-vo"); + av[ac++] = g_strdup_printf("jpeg:outdir=%s", dirname); + av[ac++] = g_strdup_printf("-ao"); +--- a/src/property_page_common.c ++++ b/src/property_page_common.c +@@ -80,7 +80,7 @@ + MetaData *ret; + ret = g_new0(MetaData, 1); + +- av[ac++] = g_strdup_printf("mplayer"); ++ av[ac++] = g_strdup_printf("@mplayer@"); + av[ac++] = g_strdup_printf("-vo"); + av[ac++] = g_strdup_printf("null"); + av[ac++] = g_strdup_printf("-ao"); +--- a/src/support.c ++++ b/src/support.c +@@ -566,7 +566,7 @@ + } else { + playlist = FALSE; + if (mplayer_bin == NULL || !g_file_test(mplayer_bin, G_FILE_TEST_EXISTS)) { +- av[ac++] = g_strdup_printf("mplayer"); ++ av[ac++] = g_strdup_printf("@mplayer@"); + } else { + av[ac++] = g_strdup_printf("%s", mplayer_bin); + } +@@ -728,7 +728,7 @@ + playlist = FALSE; + // run mplayer and try to get the first frame and convert it to a jpeg + if (mplayer_bin == NULL || !g_file_test(mplayer_bin, G_FILE_TEST_EXISTS)) { +- av[ac++] = g_strdup_printf("mplayer"); ++ av[ac++] = g_strdup_printf("@mplayer@"); + } else { + av[ac++] = g_strdup_printf("%s", mplayer_bin); + } +@@ -825,7 +825,7 @@ + playlist = FALSE; + + if (mplayer_bin == NULL || !g_file_test(mplayer_bin, G_FILE_TEST_EXISTS)) { +- av[ac++] = g_strdup_printf("mplayer"); ++ av[ac++] = g_strdup_printf("@mplayer@"); + } else { + av[ac++] = g_strdup_printf("%s", mplayer_bin); + } +@@ -1251,7 +1251,7 @@ + gm_log(verbose, G_LOG_LEVEL_INFO, "getting file metadata for %s", name); + + if (mplayer_bin == NULL || !g_file_test(mplayer_bin, G_FILE_TEST_EXISTS)) { +- av[ac++] = g_strdup_printf("mplayer"); ++ av[ac++] = g_strdup_printf("@mplayer@"); + } else { + av[ac++] = g_strdup_printf("%s", mplayer_bin); + } +@@ -1532,7 +1532,7 @@ + return 0; + + if (mplayer_bin == NULL || !g_file_test(mplayer_bin, G_FILE_TEST_EXISTS)) { +- av[ac++] = g_strdup_printf("mplayer"); ++ av[ac++] = g_strdup_printf("@mplayer@"); + } else { + av[ac++] = g_strdup_printf("%s", mplayer_bin); + } +@@ -1597,7 +1597,7 @@ + + if (control_id == 0) { + ac = 0; +- av[ac++] = g_strdup_printf("mencoder"); ++ av[ac++] = g_strdup_printf("@mencoder@"); + av[ac++] = g_strdup_printf("-ovc"); + av[ac++] = g_strdup_printf("copy"); + av[ac++] = g_strdup_printf("-oac"); +@@ -2830,7 +2830,7 @@ + gboolean ret = TRUE; + + if (mplayer_bin == NULL || !g_file_test(mplayer_bin, G_FILE_TEST_EXISTS)) { +- av[ac++] = g_strdup_printf("mplayer"); ++ av[ac++] = g_strdup_printf("@mplayer@"); + } else { + av[ac++] = g_strdup_printf("%s", mplayer_bin); + } diff --git a/infra/libkookie/nixpkgs/pkgs/applications/video/gnomecast/default.nix b/infra/libkookie/nixpkgs/pkgs/applications/video/gnomecast/default.nix new file mode 100644 index 000000000000..3a3ca044bb88 --- /dev/null +++ b/infra/libkookie/nixpkgs/pkgs/applications/video/gnomecast/default.nix @@ -0,0 +1,28 @@ +{ lib, python3Packages, gtk3, gobject-introspection, ffmpeg_3, wrapGAppsHook }: + +with python3Packages; +buildPythonApplication rec { + pname = "gnomecast"; + version = "1.4.1"; + + src = fetchPypi { + inherit pname version; + sha256 = "0mn03gqbwmhch0055bzgdwkzsl304qdyqwrgyiq0k5c5d2gyala5"; + }; + + nativeBuildInputs = [ wrapGAppsHook ]; + propagatedBuildInputs = [ + PyChromecast bottle pycaption paste html5lib pygobject3 dbus-python + gtk3 gobject-introspection + ]; + + preFixup = '' + gappsWrapperArgs+=(--prefix PATH : ${lib.makeBinPath [ ffmpeg_3 ]}) + ''; + + meta = with lib; { + description = "A native Linux GUI for Chromecasting local files"; + homepage = "https://github.com/keredson/gnomecast"; + license = with licenses; [ gpl3 ]; + }; +} diff --git a/infra/libkookie/nixpkgs/pkgs/applications/video/gpac/default.nix b/infra/libkookie/nixpkgs/pkgs/applications/video/gpac/default.nix new file mode 100644 index 000000000000..4fcff75f0956 --- /dev/null +++ b/infra/libkookie/nixpkgs/pkgs/applications/video/gpac/default.nix @@ -0,0 +1,45 @@ +{ stdenv, fetchFromGitHub, pkgconfig, zlib }: + +stdenv.mkDerivation rec { + version = "1.0.0"; + pname = "gpac"; + + src = fetchFromGitHub { + owner = "gpac"; + repo = "gpac"; + rev = "v${version}"; + sha256 = "11jrklaahhdfqhci7f3lzv8wchh9bc91rg6w8ibh6varrk692vsb"; + }; + + postPatch = '' + substituteInPlace Makefile --replace 'dh_link' 'ln -s' + ''; + + # this is the bare minimum configuration, as I'm only interested in MP4Box + # For most other functionality, this should probably be extended + nativeBuildInputs = [ pkgconfig ]; + + buildInputs = [ zlib ]; + + enableParallelBuilding = true; + + meta = with stdenv.lib; { + description = "Open Source multimedia framework for research and academic purposes"; + longDescription = '' + GPAC is an Open Source multimedia framework for research and academic purposes. + The project covers different aspects of multimedia, with a focus on presentation + technologies (graphics, animation and interactivity) and on multimedia packaging + formats such as MP4. + + GPAC provides three sets of tools based on a core library called libgpac: + + A multimedia player, called Osmo4 / MP4Client, + A multimedia packager, called MP4Box, + And some server tools included in MP4Box and MP42TS applications. + ''; + homepage = "https://gpac.wp.imt.fr"; + license = licenses.lgpl21; + maintainers = with maintainers; [ bluescreen303 mgdelacroix ]; + platforms = platforms.linux; + }; +} diff --git a/infra/libkookie/nixpkgs/pkgs/applications/video/handbrake/default.nix b/infra/libkookie/nixpkgs/pkgs/applications/video/handbrake/default.nix new file mode 100644 index 000000000000..1e4b83da8144 --- /dev/null +++ b/infra/libkookie/nixpkgs/pkgs/applications/video/handbrake/default.nix @@ -0,0 +1,149 @@ +# Upstream distributes HandBrake with bundle of according versions of libraries +# and patches to them. This derivation patches HandBrake to use Nix closure +# dependencies. +# +# NOTE: 2019-07-19: This derivation does not currently support the native macOS +# GUI--it produces the "HandbrakeCLI" CLI version only. In the future it would +# be nice to add the native GUI (and/or the GTK GUI) as an option too, but that +# requires invoking the Xcode build system, which is non-trivial for now. + +{ stdenv, lib, fetchFromGitHub, + # Main build tools + pkgconfig, autoconf, automake, libtool, m4, lzma, python3, + numactl, + # Processing, video codecs, containers + ffmpeg-full, nv-codec-headers, libogg, x264, x265, libvpx, libtheora, dav1d, + # Codecs, audio + libopus, lame, libvorbis, a52dec, speex, libsamplerate, + # Text processing + libiconv, fribidi, fontconfig, freetype, libass, jansson, libxml2, harfbuzz, + # Optical media + libdvdread, libdvdnav, libdvdcss, libbluray, + # Darwin-specific + AudioToolbox ? null, + Foundation ? null, + libobjc ? null, + VideoToolbox ? null, + # GTK + # NOTE: 2019-07-19: The gtk3 package has a transitive dependency on dbus, + # which in turn depends on systemd. systemd is not supported on Darwin, so + # for now we disable GTK GUI support on Darwin. (It may be possible to remove + # this restriction later.) + useGtk ? !stdenv.isDarwin, wrapGAppsHook ? null, + intltool ? null, + glib ? null, + gtk3 ? null, + libappindicator-gtk3 ? null, + libnotify ? null, + gst_all_1 ? null, + dbus-glib ? null, + udev ? null, + libgudev ? null, + hicolor-icon-theme ? null, + # FDK + useFdk ? false, fdk_aac ? null +}: + +stdenv.mkDerivation rec { + pname = "handbrake"; + version = "1.3.3"; + + src = fetchFromGitHub { + owner = "HandBrake"; + repo = "HandBrake"; + rev = version; + sha256 = "0bsmk37543zv3p32a7wxnh2w483am23ha2amj339q3nnb4142krn"; + extraPostFetch = '' + echo "DATE=$(date +"%F %T %z" -r $out/NEWS.markdown)" > $out/version.txt + ''; + }; + + # we put as little as possible in src.extraPostFetch as it's much easier to + # add to it here without having to fiddle with src.sha256 + # only DATE and HASH are absolutely necessary + postPatch = '' + cat >> version.txt <<_EOF +HASH=${src.rev} +SHORTHASH=${src.rev} +TAG=${version} +URL=${src.meta.homepage} +_EOF + + patchShebangs scripts + + # Force using nixpkgs dependencies + sed -i '/MODULES += contrib/d' make/include/main.defs + sed -e 's/^[[:space:]]*\(meson\|ninja\|nasm\)[[:space:]]*= ToolProbe.*$//g' \ + -e '/ ## Additional library and tool checks/,/ ## MinGW specific library and tool checks/d' \ + -i make/configure.py + '' + (lib.optionalString stdenv.isDarwin '' + # Use the Nix-provided libxml2 instead of the patched version available on + # the Handbrake website. + substituteInPlace libhb/module.defs \ + --replace '$(CONTRIB.build/)include/libxml2' ${libxml2.dev}/include/libxml2 + + # Prevent the configure script from failing if xcodebuild isn't available, + # which it isn't in the Nix context. (The actual build goes fine without + # xcodebuild.) + sed -e '/xcodebuild = ToolProbe/s/abort=.\+)/abort=False)/' -i make/configure.py + '') + (lib.optionalString stdenv.isLinux '' + # Use the Nix-provided libxml2 instead of the system-provided one. + substituteInPlace libhb/module.defs \ + --replace /usr/include/libxml2 ${libxml2.dev}/include/libxml2 + ''); + + nativeBuildInputs = [ + pkgconfig autoconf automake libtool m4 python3 + ] ++ lib.optionals useGtk [ intltool wrapGAppsHook ]; + + buildInputs = [ + ffmpeg-full libogg libtheora x264 x265 libvpx dav1d + libopus lame libvorbis a52dec speex libsamplerate + libiconv fribidi fontconfig freetype libass jansson libxml2 harfbuzz + libdvdread libdvdnav libdvdcss libbluray lzma + ] ++ lib.optional (!stdenv.isDarwin) numactl + ++ lib.optionals useGtk [ + glib gtk3 libappindicator-gtk3 libnotify + gst_all_1.gstreamer gst_all_1.gst-plugins-base dbus-glib udev + libgudev hicolor-icon-theme + ] ++ lib.optional useFdk fdk_aac + ++ lib.optionals stdenv.isDarwin [ AudioToolbox Foundation libobjc VideoToolbox ] + # NOTE: 2018-12-27: Handbrake supports nv-codec-headers for Linux only, + # look at ./make/configure.py search "enable_nvenc" + ++ lib.optional stdenv.isLinux nv-codec-headers; + + enableParallelBuilding = true; + + configureFlags = [ + "--disable-df-fetch" + "--disable-df-verify" + (if useGtk then "--disable-gtk-update-checks" else "--disable-gtk") + (if useFdk then "--enable-fdk-aac" else "") + (if stdenv.isDarwin then "--disable-xcode" else "") + ] ++ lib.optional (stdenv.isx86_32 || stdenv.isx86_64) "--harden"; + + # NOTE: 2018-12-27: Check NixOS HandBrake test if changing + NIX_LDFLAGS = [ + "-lx265" + ]; + + preBuild = '' + cd build + ''; + + meta = with stdenv.lib; { + homepage = "http://handbrake.fr/"; + description = "A tool for converting video files and ripping DVDs"; + longDescription = '' + Tool for converting and remuxing video files + into selection of modern and widely supported codecs + and containers. Very versatile and customizable. + Package provides: + CLI - `HandbrakeCLI` + GTK GUI - `ghb` + ''; + license = licenses.gpl2; + maintainers = with maintainers; [ Anton-Latukha wmertens ]; + platforms = with platforms; unix; + }; +} diff --git a/infra/libkookie/nixpkgs/pkgs/applications/video/hdhomerun-config-gui/default.nix b/infra/libkookie/nixpkgs/pkgs/applications/video/hdhomerun-config-gui/default.nix new file mode 100644 index 000000000000..91feb178ca05 --- /dev/null +++ b/infra/libkookie/nixpkgs/pkgs/applications/video/hdhomerun-config-gui/default.nix @@ -0,0 +1,29 @@ +{ stdenv, fetchurl, libhdhomerun, gcc, gnumake, pkg-config, gtk2 }: + +stdenv.mkDerivation rec { + pname = "hdhomerun-config-gui"; + version = "20200521"; + + src = fetchurl { + url = "https://download.silicondust.com/hdhomerun/hdhomerun_config_gui_${version}.tgz"; + sha256 = "1r1rwfgi714nwblyg8nqjzkpm4n2lg7kqqqas47hvbn5waimz1ja"; + }; + + nativeBuildInputs = [ pkg-config ]; + buildInputs = [ gtk2 libhdhomerun ]; + + configureFlags = [ "CPPFLAGS=-I${libhdhomerun}/include/hdhomerun" ]; + makeFlags = [ "SUBDIRS=src" ]; + + installPhase = '' + install -vDm 755 src/hdhomerun_config_gui $out/usr/bin/hdhomerun_config_gui + ''; + + meta = with stdenv.lib; { + description = "GUI for configuring Silicondust HDHomeRun TV tuners"; + homepage = "https://www.silicondust.com/support/linux"; + license = licenses.gpl3Only; + platforms = platforms.linux; + maintainers = [ maintainers.louisdk1 ]; + }; +} diff --git a/infra/libkookie/nixpkgs/pkgs/applications/video/jellyfin-mpv-shim/default.nix b/infra/libkookie/nixpkgs/pkgs/applications/video/jellyfin-mpv-shim/default.nix new file mode 100644 index 000000000000..825aac4dad29 --- /dev/null +++ b/infra/libkookie/nixpkgs/pkgs/applications/video/jellyfin-mpv-shim/default.nix @@ -0,0 +1,62 @@ +{ stdenv, buildPythonApplication, fetchFromGitHub, callPackage +, mpv, python-mpv-jsonipc, jellyfin-apiclient-python +, pillow, tkinter, pystray, jinja2, pywebview }: + +let + shaderPack = callPackage ./shader-pack.nix {}; +in +buildPythonApplication rec { + pname = "jellyfin-mpv-shim"; + version = "1.7.1"; + + src = fetchFromGitHub { + owner = "iwalton3"; + repo = pname; + rev = "v${version}"; + sha256 = "0alrh5h3f8pq9mrq09jmpqa0yslxsjqwij6kwn24ggbwc10zkq75"; + fetchSubmodules = true; # needed for display_mirror css file + }; + + patches = [ + ./disable-desktop-client.patch + ./disable-update-check.patch + ]; + + # override $HOME directory: + # error: [Errno 13] Permission denied: '/homeless-shelter' + # + # remove jellyfin_mpv_shim/win_utils.py: + # ModuleNotFoundError: No module named 'win32gui' + preCheck = '' + export HOME=$TMPDIR + + rm jellyfin_mpv_shim/win_utils.py + ''; + + postPatch = '' + # link the default shader pack + ln -s ${shaderPack} jellyfin_mpv_shim/default_shader_pack + ''; + + propagatedBuildInputs = [ + jellyfin-apiclient-python + mpv + pillow + python-mpv-jsonipc + + # gui dependencies + pystray + tkinter + + # display_mirror dependencies + jinja2 + pywebview + ]; + + meta = with stdenv.lib; { + homepage = "https://github.com/iwalton3/jellyfin-mpv-shim"; + description = "Allows casting of videos to MPV via the jellyfin mobile and web app"; + license = licenses.gpl3; + maintainers = with maintainers; [ jojosch ]; + }; +} diff --git a/infra/libkookie/nixpkgs/pkgs/applications/video/jellyfin-mpv-shim/disable-desktop-client.patch b/infra/libkookie/nixpkgs/pkgs/applications/video/jellyfin-mpv-shim/disable-desktop-client.patch new file mode 100644 index 000000000000..996225efb3a5 --- /dev/null +++ b/infra/libkookie/nixpkgs/pkgs/applications/video/jellyfin-mpv-shim/disable-desktop-client.patch @@ -0,0 +1,12 @@ +diff --git a/setup.py b/setup.py +index a831959..2206e6e 100644 +--- a/setup.py ++++ b/setup.py +@@ -25,7 +25,6 @@ setup( + entry_points={ + 'console_scripts': [ + 'jellyfin-mpv-shim=jellyfin_mpv_shim.mpv_shim:main', +- 'jellyfin-mpv-desktop=jellyfin_mpv_shim.mpv_shim:main_desktop', + ] + }, + classifiers=[ diff --git a/infra/libkookie/nixpkgs/pkgs/applications/video/jellyfin-mpv-shim/disable-update-check.patch b/infra/libkookie/nixpkgs/pkgs/applications/video/jellyfin-mpv-shim/disable-update-check.patch new file mode 100644 index 000000000000..6941b956e854 --- /dev/null +++ b/infra/libkookie/nixpkgs/pkgs/applications/video/jellyfin-mpv-shim/disable-update-check.patch @@ -0,0 +1,15 @@ +diff --git a/jellyfin_mpv_shim/conf.py b/jellyfin_mpv_shim/conf.py +index 0ab9326..ccedc17 100644 +--- a/jellyfin_mpv_shim/conf.py ++++ b/jellyfin_mpv_shim/conf.py +@@ -88,8 +88,8 @@ class Settings(object): + "sync_revert_seek": True, + "sync_osd_message": True, + "screenshot_menu": True, +- "check_updates": True, +- "notify_updates": True, ++ "check_updates": False, ++ "notify_updates": False, + "lang": None, + "desktop_scale": 1.0, + } diff --git a/infra/libkookie/nixpkgs/pkgs/applications/video/jellyfin-mpv-shim/shader-pack.nix b/infra/libkookie/nixpkgs/pkgs/applications/video/jellyfin-mpv-shim/shader-pack.nix new file mode 100644 index 000000000000..fd33e8c90b52 --- /dev/null +++ b/infra/libkookie/nixpkgs/pkgs/applications/video/jellyfin-mpv-shim/shader-pack.nix @@ -0,0 +1,25 @@ +{ stdenv, fetchFromGitHub }: + +stdenv.mkDerivation rec { + pname = "jellyfin-mpv-shim-shader-pack"; + version = "1.0.0"; + + src = fetchFromGitHub { + owner = "iwalton3"; + repo = "default-shader-pack"; + rev = "v${version}"; + sha256 = "04y8gvjy4v3773b1kyan4dxqcf86b56x7v33m2k246jbn0rl2pgr"; + }; + + installPhase = '' + mkdir -p $out + cp -a . $out + ''; + + meta = with stdenv.lib; { + homepage = "https://github.com/iwalton3/default-shader-pack"; + description = "Preconfigured set of MPV shaders and configurations for MPV Shim media clients"; + license = with licenses; [ mit lgpl3Plus unlicense ]; + maintainers = with maintainers; [ jojosch ]; + }; +} diff --git a/infra/libkookie/nixpkgs/pkgs/applications/video/jftui/default.nix b/infra/libkookie/nixpkgs/pkgs/applications/video/jftui/default.nix new file mode 100644 index 000000000000..04ed4c16e2bf --- /dev/null +++ b/infra/libkookie/nixpkgs/pkgs/applications/video/jftui/default.nix @@ -0,0 +1,41 @@ +{ stdenv +, fetchFromGitHub +, pkg-config +, curl +, mpv +, yajl +}: + +stdenv.mkDerivation rec { + pname = "jftui"; + version = "0.4.0"; + + src = fetchFromGitHub { + owner = "Aanok"; + repo = pname; + rev = "v${version}"; + sha256 = "0riwqfh5lyjg7as75kyx7jw6zq4gikbglhv8s05y7pzgsc9xy75j"; + }; + + nativeBuildInputs = [ + pkg-config + ]; + + buildInputs = [ + curl + mpv + yajl + ]; + + installPhase = '' + install -Dm555 build/jftui $out/bin/jftui + ''; + + meta = with stdenv.lib; { + description = "Jellyfin Terminal User Interface "; + homepage = "https://github.com/Aanok/jftui"; + license = licenses.unlicense; + maintainers = [ maintainers.nyanloutre ]; + platforms = platforms.linux; + }; +} diff --git a/infra/libkookie/nixpkgs/pkgs/applications/video/k9copy/default.nix b/infra/libkookie/nixpkgs/pkgs/applications/video/k9copy/default.nix new file mode 100644 index 000000000000..317505185d0d --- /dev/null +++ b/infra/libkookie/nixpkgs/pkgs/applications/video/k9copy/default.nix @@ -0,0 +1,63 @@ +{ stdenv, fetchurl +, cmake +, dvdauthor, xineLib, libmpeg2, libav, libdvdread, libdvdnav, dvdplusrwtools +, phonon, qtx11extras +, extra-cmake-modules, kio, kiconthemes, ki18n, kdesu, kdoctools, solid +}: + +stdenv.mkDerivation rec { + version = "3.0.3"; + pname = "k9copy"; + + src = fetchurl { + url = "mirror://sourceforge/k9copy-reloaded/${pname}-${version}.tar.gz"; + sha256 = "0dp06rwihks50c57bbv04d6bj2qc88isl91971r4lii2xp0qn7sg"; + }; + + patches = [ + ./gcc6.patch + ]; + + cmakeFlags = [ + "-DQT5_BUILD=ON" + "-DCMAKE_MINIMUM_REQUIRED_VERSION=3.0" + ]; + + # Hack to disable documentation + preConfigure = '' + substituteInPlace ./CMakeLists.txt \ + --replace "add_subdirectory(doc)" "" + ''; + + buildInputs = [ + cmake + dvdauthor + xineLib + libmpeg2 + libav + libdvdread + libdvdnav + dvdplusrwtools + #automoc4 + phonon + extra-cmake-modules + kio + solid + qtx11extras + kiconthemes + ki18n + kdesu + ]; + nativeBuildInputs = [ kdoctools ]; + + meta = { + description = "DVD backup and DVD authoring program"; + homepage = "http://k9copy-reloaded.sourceforge.net/"; + license = stdenv.lib.licenses.gpl2; + maintainers = with stdenv.lib.maintainers; [ flosse ]; + platforms = stdenv.lib.platforms.unix; + # TODO: The software is deprecated and the build is broken, see: + # https://github.com/NixOS/nixpkgs/pull/63260#issuecomment-503506487 + broken = true; + }; +} diff --git a/infra/libkookie/nixpkgs/pkgs/applications/video/k9copy/gcc6.patch b/infra/libkookie/nixpkgs/pkgs/applications/video/k9copy/gcc6.patch new file mode 100644 index 000000000000..d0c9c2a8035e --- /dev/null +++ b/infra/libkookie/nixpkgs/pkgs/applications/video/k9copy/gcc6.patch @@ -0,0 +1,26 @@ +diff --git c/src/backup/k9dvdbackup.cpp i/src/backup/k9dvdbackup.cpp +index f5e4859..82fa392 100755 +--- c/src/backup/k9dvdbackup.cpp ++++ i/src/backup/k9dvdbackup.cpp +@@ -907,7 +907,7 @@ k9Vobu * k9DVDBackup::remapOffset(uint32_t _sector,uint32_t *_offset,int _dir) { + + + if ((vobu1 !=NULL) && (vobu2!=NULL)) { +- *_offset = abs(vobu1->newSector - vobu2->newSector) | maskOffset1 ; ++ *_offset = (vobu1->newSector - vobu2->newSector) | maskOffset1 ; + *_offset |= maskOffset2; + return vobu2; + } +diff --git c/src/backup/k9execcopy.cpp i/src/backup/k9execcopy.cpp +index d59222c..35de923 100644 +--- c/src/backup/k9execcopy.cpp ++++ i/src/backup/k9execcopy.cpp +@@ -306,7 +306,7 @@ void k9ExecCopy::createMkv(k9DVDTitle *_title,const QString &_filename,QMultiMap + + #if QT_VERSION >= 0x050000 + m_progressDialog=new QProgressDialog(k9Dialogs::getMainWidget() ); +- m_progressDialog->setCancelButton(false); ++ m_progressDialog->setCancelButton(0); + + #else + m_progressDialog=new KProgressDialog(k9Dialogs::getMainWidget() ); diff --git a/infra/libkookie/nixpkgs/pkgs/applications/video/kazam/default.nix b/infra/libkookie/nixpkgs/pkgs/applications/video/kazam/default.nix new file mode 100644 index 000000000000..0cdd3db85257 --- /dev/null +++ b/infra/libkookie/nixpkgs/pkgs/applications/video/kazam/default.nix @@ -0,0 +1,50 @@ +{ stdenv, fetchurl, substituteAll, python3, gst_all_1, wrapGAppsHook, gobject-introspection +, gtk3, libwnck3, keybinder3, intltool, libcanberra-gtk3, libappindicator-gtk3, libpulseaudio +, fetchpatch }: + +python3.pkgs.buildPythonApplication rec { + name = "kazam-${version}"; + version = "1.4.5"; + namePrefix = ""; + + src = fetchurl { + url = "https://launchpad.net/kazam/stable/${version}/+download/kazam-${version}.tar.gz"; + sha256 = "1qygnrvm6aqixbyivhssp70hs0llxwk7lh3j7idxa2jbkk06hj4f"; + }; + + nativeBuildInputs = [ gobject-introspection python3.pkgs.distutils_extra intltool wrapGAppsHook ]; + buildInputs = [ + gst_all_1.gstreamer gst_all_1.gst-plugins-base gst_all_1.gst-plugins-good gtk3 libwnck3 + keybinder3 libappindicator-gtk3 + ]; + + propagatedBuildInputs = with python3.pkgs; [ pygobject3 pyxdg pycairo dbus-python ]; + + # workaround https://github.com/NixOS/nixpkgs/issues/56943 + strictDeps = false; + + patches = [ + # Fix paths + (substituteAll { + src = ./fix-paths.patch; + libcanberra = libcanberra-gtk3; + inherit libpulseaudio; + }) + # https://github.com/hzbd/kazam/pull/21 + (fetchpatch { + url = "https://github.com/hzbd/kazam/commit/37e53a5aa61f4223a9ea03ceeda26eeba2b9d37b.patch"; + sha256 = "1q5dpmdm6cvgzw8xa7bwclnqa05xc73ja1lszwmwv5glyik0fk4z"; + }) + ]; + + # no tests + doCheck = false; + + meta = with stdenv.lib; { + description = "A screencasting program created with design in mind"; + homepage = "https://code.launchpad.net/kazam"; + license = licenses.lgpl3; + platforms = platforms.linux; + maintainers = [ maintainers.domenkozar ]; + }; +} diff --git a/infra/libkookie/nixpkgs/pkgs/applications/video/kazam/fix-paths.patch b/infra/libkookie/nixpkgs/pkgs/applications/video/kazam/fix-paths.patch new file mode 100644 index 000000000000..43e360830ab5 --- /dev/null +++ b/infra/libkookie/nixpkgs/pkgs/applications/video/kazam/fix-paths.patch @@ -0,0 +1,22 @@ +--- a/kazam/backend/grabber.py ++++ b/kazam/backend/grabber.py +@@ -72,7 +72,7 @@ + # + if prefs.shutter_sound and (not self.god): + soundfile = os.path.join(prefs.datadir, 'sounds', prefs.sound_files[prefs.shutter_type]) +- subprocess.call(['/usr/bin/canberra-gtk-play', '-f', soundfile]) ++ subprocess.call(['@libcanberra@/bin/canberra-gtk-play', '-f', soundfile]) + + if self.xid: + if prefs.capture_borders_pic: +--- a/kazam/pulseaudio/ctypes_pulseaudio.py ++++ b/kazam/pulseaudio/ctypes_pulseaudio.py +@@ -20,7 +20,7 @@ + # MA 02110-1301, USA. + + from ctypes import * +-PA = CDLL('libpulse.so.0') ++PA = CDLL('@libpulseaudio@/lib/libpulse.so.0') + + # + # Pulse Audio constants and defines diff --git a/infra/libkookie/nixpkgs/pkgs/applications/video/kino/default.nix b/infra/libkookie/nixpkgs/pkgs/applications/video/kino/default.nix new file mode 100644 index 000000000000..3f41e73dfa75 --- /dev/null +++ b/infra/libkookie/nixpkgs/pkgs/applications/video/kino/default.nix @@ -0,0 +1,95 @@ +# is this configure option of interest? +#--enable-udev-rules-dir=PATH +# Where to install udev rules (/etc/udev/rules.d) + +#TODO shared version? + + +# This is my config output.. Much TODO ? +#source path /tmp/nix-31998-1/kino-1.2.0/ffmpeg +#C compiler gcc +#make make +#.align is power-of-two no +#ARCH x86_64 (generic) +#build suffix -kino +#big-endian no +#MMX enabled yes +#CMOV enabled no +#CMOV is fast no +#gprof enabled no +#debug symbols yes +#strip symbols yes +#optimize yes +#static yes +#shared no +#postprocessing support no +#software scaler enabled yes +#video hooking no +#network support no +#threading support no +#SDL support no +#Sun medialib support no +#AVISynth enabled no +#liba52 support no +#liba52 dlopened no +#libdts support no +#libfaac enabled no +#libfaad enabled no +#faadbin enabled no +#libgsm enabled no +#libmp3lame enabled no +#libnut enabled no +#libogg enabled no +#libtheora enabled no +#libvorbis enabled no +#x264 enabled no +#XviD enabled no +#zlib enabled no +#AMR-NB float support no +#AMR-NB fixed support no +#AMR-WB float support no +#AMR-WB IF2 support no + +{ stdenv, fetchurl, gtk2, libglade, libxml2, libraw1394, libsamplerate, libdv +, pkgconfig, perlPackages, libavc1394, libiec61883, libXv, gettext +, libX11, glib, cairo, intltool, ffmpeg, libv4l +}: + +stdenv.mkDerivation { + name = "kino-1.3.4"; + + src = fetchurl { + url = "mirror://sourceforge/kino/kino-1.3.4.tar.gz"; + sha256 = "020s05k0ma83rq2kfs8x474pqicaqp9spar81qc816ddfrnh8k8i"; + }; + + buildInputs = [ gtk2 libglade libxml2 libraw1394 libsamplerate libdv + pkgconfig libavc1394 libiec61883 intltool libXv gettext libX11 glib cairo ffmpeg libv4l ] # TODOoptional packages + ++ (with perlPackages; [ perl XMLParser ]); + + configureFlags = [ "--enable-local-ffmpeg=no" ]; + + hardeningDisable = [ "format" ]; + + NIX_LDFLAGS = "-lavcodec -lavutil"; + + patches = [ ./kino-1.3.4-v4l1.patch ./kino-1.3.4-libav-0.7.patch ./kino-1.3.4-libav-0.8.patch ]; #./kino-1.3.4-libavcodec-pkg-config.patch ]; + + postInstall = " + rpath=`patchelf --print-rpath \$out/bin/kino`; + for i in $buildInputs; do + echo adding \$i/lib + rpath=\$rpath\${rpath:+:}\$i/lib + done + for i in \$out/bin/*; do + patchelf --set-rpath \"\$rpath\" \"\$i\" + done + "; + + meta = { + description = "Non-linear DV editor for GNU/Linux"; + homepage = "http://www.kinodv.org/"; + license = stdenv.lib.licenses.gpl2; + platforms = stdenv.lib.platforms.linux; + }; +} diff --git a/infra/libkookie/nixpkgs/pkgs/applications/video/kino/kino-1.3.4-libav-0.7.patch b/infra/libkookie/nixpkgs/pkgs/applications/video/kino/kino-1.3.4-libav-0.7.patch new file mode 100644 index 000000000000..65c5bc38276d --- /dev/null +++ b/infra/libkookie/nixpkgs/pkgs/applications/video/kino/kino-1.3.4-libav-0.7.patch @@ -0,0 +1,60 @@ +--- kino-1.3.4.orig/src/frame.cc 2011-07-17 14:54:59.089481638 +0200 ++++ kino-1.3.4/src/frame.cc 2011-07-17 15:09:23.199481714 +0200 +@@ -1063,7 +1063,12 @@ + AVPicture dest; + int got_picture; + +- avcodec_decode_video( libavcodec, frame, &got_picture, data, GetFrameSize() ); ++ AVPacket pkt; ++ av_init_packet(&pkt); ++ pkt.data = data; ++ pkt.size = GetFrameSize(); ++ ++ avcodec_decode_video2( libavcodec, frame, &got_picture, &pkt ); + if ( got_picture ) + { + avpicture_fill( &dest, static_cast<uint8_t*>( rgb ), PIX_FMT_RGB24, GetWidth(), GetHeight() ); +@@ -1123,7 +1128,12 @@ + AVPicture output; + int got_picture; + +- avcodec_decode_video( libavcodec, frame, &got_picture, data, GetFrameSize() ); ++ AVPacket pkt; ++ av_init_packet(&pkt); ++ pkt.data = data; ++ pkt.size = GetFrameSize(); ++ ++ avcodec_decode_video2( libavcodec, frame, &got_picture, &pkt ); + if ( got_picture ) + { + avpicture_fill( &output, static_cast<uint8_t*>( yuv ), PIX_FMT_YUV422, GetWidth(), GetHeight() ); +@@ -1156,7 +1166,12 @@ + AVFrame *frame = avcodec_alloc_frame(); + int got_picture; + +- avcodec_decode_video( libavcodec, frame, &got_picture, data, GetFrameSize() ); ++ AVPacket pkt; ++ av_init_packet(&pkt); ++ pkt.data = data; ++ pkt.size = GetFrameSize(); ++ ++ avcodec_decode_video2( libavcodec, frame, &got_picture, &pkt ); + + int width = GetWidth(), height = GetHeight(); + +@@ -1319,12 +1334,12 @@ + #if defined(HAVE_LIBAVCODEC) + if ( avformatEncoder == NULL ) + { +- avformatEncoder = av_alloc_format_context(); ++ avformatEncoder = avformat_alloc_context(); + if ( avformatEncoder ) + { +- avformatEncoder->oformat = guess_format( "dv", NULL, NULL ); ++ avformatEncoder->oformat = av_guess_format( "dv", NULL, NULL ); + AVStream* vst = av_new_stream( avformatEncoder, 0 ); +- vst->codec->codec_type = CODEC_TYPE_VIDEO; ++ vst->codec->codec_type = AVMEDIA_TYPE_VIDEO; + vst->codec->codec_id = CODEC_ID_DVVIDEO; + vst->codec->bit_rate = 25000000; + vst->start_time = 0; diff --git a/infra/libkookie/nixpkgs/pkgs/applications/video/kino/kino-1.3.4-libav-0.8.patch b/infra/libkookie/nixpkgs/pkgs/applications/video/kino/kino-1.3.4-libav-0.8.patch new file mode 100644 index 000000000000..f98cbda0bc49 --- /dev/null +++ b/infra/libkookie/nixpkgs/pkgs/applications/video/kino/kino-1.3.4-libav-0.8.patch @@ -0,0 +1,57 @@ +--- kino-1.3.4.orig/src/frame.cc 2012-05-14 19:55:42.153772418 -0700 ++++ kino-1.3.4/src/frame.cc 2012-05-14 20:28:34.448838653 -0700 +@@ -101,8 +101,9 @@ + #if defined(HAVE_LIBAVCODEC) + pthread_mutex_lock( &avcodec_mutex ); + av_register_all(); +- libavcodec = avcodec_alloc_context(); +- avcodec_open( libavcodec, avcodec_find_decoder( CODEC_ID_DVVIDEO ) ); ++ libavcodec = avcodec_alloc_context3(NULL); ++ avcodec_open2( libavcodec, ++ avcodec_find_decoder( CODEC_ID_DVVIDEO ), NULL ); + pthread_mutex_unlock( &avcodec_mutex ); + data = ( unsigned char* ) av_mallocz( 144000 ); + #if defined(HAVE_SWSCALE) +@@ -1338,7 +1339,7 @@ + if ( avformatEncoder ) + { + avformatEncoder->oformat = av_guess_format( "dv", NULL, NULL ); +- AVStream* vst = av_new_stream( avformatEncoder, 0 ); ++ AVStream* vst = avformat_new_stream( avformatEncoder, NULL ); + vst->codec->codec_type = AVMEDIA_TYPE_VIDEO; + vst->codec->codec_id = CODEC_ID_DVVIDEO; + vst->codec->bit_rate = 25000000; +@@ -1364,12 +1365,10 @@ + vst->sample_aspect_ratio = avcodecEncoder->sample_aspect_ratio; + #endif + avcodecEncoder->thread_count = 2; +- avcodec_thread_init( avcodecEncoder, avcodecEncoder->thread_count ); + avcodecEncoder->time_base= isPAL ? ( AVRational ){ 1, 25 } : ( AVRational ){ 1001, 30000 }; + avcodecEncoder->pix_fmt = isPAL ? PIX_FMT_YUV420P : PIX_FMT_YUV411P; + avcodecEncoder->flags |= CODEC_FLAG_INTERLACED_DCT; +- av_set_parameters( avformatEncoder, NULL ); +- avcodec_open( avcodecEncoder, avcodec_find_encoder( CODEC_ID_DVVIDEO ) ); ++ avcodec_open2( avcodecEncoder, avcodec_find_encoder( CODEC_ID_DVVIDEO ), NULL ); + av_new_packet( &avpacketEncoder, 144000 ); + tempImage = ( uint8_t* ) av_malloc( + avpicture_get_size( avcodecEncoder->pix_fmt, avcodecEncoder->width, avcodecEncoder->height ) ); +@@ -1475,16 +1474,16 @@ + + // Encode + bytesInFrame = avcodec_encode_video( avcodecEncoder, avpacketEncoder.data, size, output ); +- url_open_buf( &avformatEncoder->pb, data, bytesInFrame, URL_WRONLY ); ++ avformatEncoder->pb = avio_alloc_context(data, bytesInFrame, 0, NULL, NULL, NULL, NULL); + avpacketEncoder.size = bytesInFrame; + if ( !isEncoderHeaderWritten ) + { +- av_write_header( avformatEncoder ); ++ avformat_write_header( avformatEncoder, NULL ); + isEncoderHeaderWritten = true; + } + av_write_frame( avformatEncoder, &avpacketEncoder ); + #if LIBAVFORMAT_VERSION_INT >= ((52<<16)+(0<<8)+0) +- url_close_buf( avformatEncoder->pb ); ++ avio_close( avformatEncoder->pb ); + #else + url_close_buf( &avformatEncoder->pb ); + #endif diff --git a/infra/libkookie/nixpkgs/pkgs/applications/video/kino/kino-1.3.4-libavcodec-pkg-config.patch b/infra/libkookie/nixpkgs/pkgs/applications/video/kino/kino-1.3.4-libavcodec-pkg-config.patch new file mode 100644 index 000000000000..d6a8953cf00a --- /dev/null +++ b/infra/libkookie/nixpkgs/pkgs/applications/video/kino/kino-1.3.4-libavcodec-pkg-config.patch @@ -0,0 +1,11 @@ +--- a/kino-1.3.4/configure.in 2009-09-08 02:35:23.000000000 -0400 ++++ b/kino-1.3.4/configure.in 2014-01-27 14:53:01.366063037 -0500 +@@ -221,7 +221,7 @@ + if (test "x$avcodec_include" != x) || (test "x$avcodec_lib" != x) ; then + local_legacy_ffmpeg_test + else +- PKG_CHECK_MODULES(AVCODEC, libavformat, ++ PKG_CHECK_MODULES(AVCODEC, [libavcodec libavformat libavutil], + [ + AC_DEFINE(HAVE_LIBAVCODEC, 1, [Enable FFMPEG libavcodec]) + AC_SUBST(AVCODEC_LIBS) diff --git a/infra/libkookie/nixpkgs/pkgs/applications/video/kino/kino-1.3.4-v4l1.patch b/infra/libkookie/nixpkgs/pkgs/applications/video/kino/kino-1.3.4-v4l1.patch new file mode 100644 index 000000000000..05ec7386709e --- /dev/null +++ b/infra/libkookie/nixpkgs/pkgs/applications/video/kino/kino-1.3.4-v4l1.patch @@ -0,0 +1,21 @@ +no-1.3.3.orig/ffmpeg/libavdevice/v4l.c 2011-05-17 02:20:37.161004916 +0400 ++++ kino-1.3.3.orig/ffmpeg/libavdevice/v4l.c 2011-05-17 02:21:57.302377529 +0400 +@@ -26,7 +26,7 @@ + #include <sys/mman.h> + #include <sys/time.h> + #define _LINUX_TIME_H 1 +-#include <linux/videodev.h> ++#include <libv4l1-videodev.h> + #include <time.h> + + typedef struct { +--- kino-1.3.3.orig/src/v4l.h 2011-05-17 02:20:38.896969666 +0400 ++++ kino-1.3.3.orig/src/v4l.h 2011-05-17 02:21:39.922730395 +0400 +@@ -40,7 +40,7 @@ + + #define _DEVICE_H_ + #define _LINUX_TIME_H +-#include <linux/videodev.h> ++#include <libv4l1-videodev.h> + + #include "displayer.h" diff --git a/infra/libkookie/nixpkgs/pkgs/applications/video/kmplayer/default.nix b/infra/libkookie/nixpkgs/pkgs/applications/video/kmplayer/default.nix new file mode 100644 index 000000000000..274ff7cdeab7 --- /dev/null +++ b/infra/libkookie/nixpkgs/pkgs/applications/video/kmplayer/default.nix @@ -0,0 +1,48 @@ +{ + mkDerivation, lib, fetchurl, + extra-cmake-modules, makeWrapper, + libpthreadstubs, libXdmcp, + qtsvg, qtx11extras, ki18n, kdelibs4support, kio, kmediaplayer, kwidgetsaddons, + phonon, cairo, mplayer +}: + +mkDerivation rec { + majorMinorVersion = "0.12"; + patchVersion = "0b"; + version = "${majorMinorVersion}.${patchVersion}"; + pname = "kmplayer"; + + src = fetchurl { + url = "mirror://kde/stable/kmplayer/${majorMinorVersion}/kmplayer-${version}.tar.bz2"; + sha256 = "0wzdxym4fc83wvqyhcwid65yv59a2wvp1lq303cn124mpnlwx62y"; + }; + + patches = [ + ./kmplayer_part-plugin_metadata.patch # Qt 5.9 doesn't like an empty string for the optional "FILE" argument of "Q_PLUGIN_METADATA" + ./no-docs.patch # Don't build docs due to errors (kdelibs4support propagates kdoctools) + ]; + + postPatch = '' + sed -i src/kmplayer.desktop \ + -e "s,^Exec.*,Exec=$out/bin/kmplayer -qwindowtitle %c %i %U," + ''; + + nativeBuildInputs = [ extra-cmake-modules makeWrapper ]; + + buildInputs = [ + libpthreadstubs libXdmcp + qtsvg qtx11extras ki18n kdelibs4support kio kmediaplayer kwidgetsaddons + phonon cairo + ]; + + postInstall = '' + wrapProgram $out/bin/kmplayer --suffix PATH : ${mplayer}/bin + ''; + + meta = with lib; { + description = "MPlayer front-end for KDE"; + license = with licenses; [ gpl2 lgpl2 fdl12 ]; + homepage = "https://kmplayer.kde.org/"; + maintainers = with maintainers; [ sander zraexy ]; + }; +} diff --git a/infra/libkookie/nixpkgs/pkgs/applications/video/kmplayer/kmplayer_part-plugin_metadata.patch b/infra/libkookie/nixpkgs/pkgs/applications/video/kmplayer/kmplayer_part-plugin_metadata.patch new file mode 100644 index 000000000000..9b6652b0be58 --- /dev/null +++ b/infra/libkookie/nixpkgs/pkgs/applications/video/kmplayer/kmplayer_part-plugin_metadata.patch @@ -0,0 +1,11 @@ +--- a/src/kmplayer_part.h ++++ b/src/kmplayer_part.h +@@ -36,7 +36,7 @@ + + class KMPlayerFactory : public KPluginFactory { + Q_OBJECT +- Q_PLUGIN_METADATA(IID "org.kde.KPluginFactory" FILE "") ++ Q_PLUGIN_METADATA(IID "org.kde.KPluginFactory") + Q_INTERFACES(KPluginFactory) + public: + KMPlayerFactory(); diff --git a/infra/libkookie/nixpkgs/pkgs/applications/video/kmplayer/no-docs.patch b/infra/libkookie/nixpkgs/pkgs/applications/video/kmplayer/no-docs.patch new file mode 100644 index 000000000000..c93453f908c9 --- /dev/null +++ b/infra/libkookie/nixpkgs/pkgs/applications/video/kmplayer/no-docs.patch @@ -0,0 +1,12 @@ +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -79,9 +79,6 @@ + + add_subdirectory(src) + add_subdirectory(icons) +-if (IS_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/doc" AND KF5DocTools_VERSION) +- add_subdirectory(doc) +-endif(KF5DocTools_VERSION) + add_subdirectory(data) + + if (IS_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/po") diff --git a/infra/libkookie/nixpkgs/pkgs/applications/video/kodi/default.nix b/infra/libkookie/nixpkgs/pkgs/applications/video/kodi/default.nix new file mode 100644 index 000000000000..56788ae4f10e --- /dev/null +++ b/infra/libkookie/nixpkgs/pkgs/applications/video/kodi/default.nix @@ -0,0 +1,295 @@ +{ stdenv, lib, fetchpatch, fetchurl, fetchFromGitHub, autoconf, automake, libtool, makeWrapper, linuxHeaders +, pkgconfig, cmake, gnumake, yasm, python2Packages +, libgcrypt, libgpgerror, libunistring +, boost, avahi, lame, autoreconfHook +, gettext, pcre-cpp, yajl, fribidi, which +, openssl, gperf, tinyxml2, taglib, libssh, swig, jre +, libxml2, systemd +, alsaLib, libGLU, libGL, glew, fontconfig, freetype, ftgl +, libjpeg, libpng, libtiff +, libmpeg2, libsamplerate, libmad +, libogg, libvorbis, flac, libxslt +, lzo, libcdio, libmodplug, libass, libbluray +, sqlite, libmysqlclient, nasm, gnutls, libva, libdrm +, curl, bzip2, zip, unzip, glxinfo +, libcec, libcec_platform, dcadec, libuuid +, libcrossguid, libmicrohttpd +, bluez, doxygen, giflib, glib, harfbuzz, lcms2, libidn, libpthreadstubs, libtasn1 +, libplist, p11-kit, zlib, flatbuffers, fmt, fstrcmp, rapidjson +, lirc +, x11Support ? true, libX11, xorgproto, libXt, libXmu, libXext, libXinerama, libXrandr, libXtst, libXfixes, xdpyinfo, libXdmcp +, dbusSupport ? true, dbus ? null +, joystickSupport ? true, cwiid ? null +, nfsSupport ? true, libnfs ? null +, pulseSupport ? true, libpulseaudio ? null +, rtmpSupport ? true, rtmpdump ? null +, sambaSupport ? true, samba ? null +, udevSupport ? true, udev ? null +, usbSupport ? false, libusb-compat-0_1 ? null +, vdpauSupport ? true, libvdpau ? null +, useWayland ? false, wayland ? null, wayland-protocols ? null +, waylandpp ? null, libxkbcommon ? null +, useGbm ? false, mesa ? null, libinput ? null +, buildPackages +}: + +assert dbusSupport -> dbus != null; +assert nfsSupport -> libnfs != null; +assert pulseSupport -> libpulseaudio != null; +assert rtmpSupport -> rtmpdump != null; +assert sambaSupport -> samba != null; +assert udevSupport -> udev != null; +assert usbSupport -> libusb-compat-0_1 != null && ! udevSupport; # libusb-compat-0_1 won't be used if udev is avaliable +assert vdpauSupport -> libvdpau != null; +assert useWayland -> wayland != null && wayland-protocols != null && waylandpp != null && libxkbcommon != null; + +let + kodiReleaseDate = "20200728"; + kodiVersion = "18.8"; + rel = "Leia"; + + kodi_src = fetchFromGitHub { + owner = "xbmc"; + repo = "xbmc"; + rev = "${kodiVersion}-${rel}"; + sha256 = "0qpkpz43s207msvv3qkiy6vzqwcgmydxv3py7vc29mv6h30chrva"; + }; + + cmakeProto = fetchurl { + url = "https://raw.githubusercontent.com/pramsey/libght/ca9b1121c352ea10170636e170040e1af015bad1/cmake/modules/CheckPrototypeExists.cmake"; + sha256 = "1zai82gm5x55n3xvdv7mns3ja6a2k81x9zz0nk42j6s2yb0fkjxh"; + }; + + cmakeProtoPatch = '' + # get rid of windows headers as they will otherwise be found first + rm -rf msvc + + cp ${cmakeProto} cmake/${cmakeProto.name} + # we need to enable support for C++ for check_prototype_exists to do its thing + substituteInPlace CMakeLists.txt --replace 'LANGUAGES C' 'LANGUAGES C CXX' + if [ -f cmake/CheckHeadersSTDC.cmake ]; then + sed -i cmake/CheckHeadersSTDC.cmake \ + -e '7iinclude(CheckPrototypeExists)' + fi + ''; + + kodiDependency = { name, version, rev, sha256, ... } @attrs: + let + attrs' = builtins.removeAttrs attrs ["name" "version" "rev" "sha256"]; + in stdenv.mkDerivation ({ + name = "kodi-${lib.toLower name}-${version}"; + src = fetchFromGitHub { + owner = "xbmc"; + repo = name; + inherit rev sha256; + }; + enableParallelBuilding = true; + } // attrs'); + + ffmpeg = kodiDependency rec { + name = "FFmpeg"; + version = "4.0.3"; + rev = "${version}-${rel}-18.2"; + sha256 = "1krsjlr949iy5l6ljxancza1yi6w1annxc5s6k283i9mb15qy8cy"; + preConfigure = '' + cp ${kodi_src}/tools/depends/target/ffmpeg/{CMakeLists.txt,*.cmake} . + sed -i 's/ --cpu=''${CPU}//' CMakeLists.txt + sed -i 's/--strip=''${CMAKE_STRIP}/--strip=''${CMAKE_STRIP} --ranlib=''${CMAKE_RANLIB}/' CMakeLists.txt + ''; + cmakeFlags = lib.optionals (stdenv.hostPlatform != stdenv.buildPlatform) [ + "-DCROSSCOMPILING=ON" + "-DCPU=${stdenv.hostPlatform.parsed.cpu.name}" + "-DOS=${stdenv.hostPlatform.parsed.kernel.name}" + "-DPKG_CONFIG_EXECUTABLE=pkgconfig" + ]; + buildInputs = [ libidn libtasn1 p11-kit zlib libva ] + ++ lib.optional vdpauSupport libvdpau; + nativeBuildInputs = [ cmake nasm pkgconfig gnutls ]; + }; + + # We can build these externally but FindLibDvd.cmake forces us to build it + # them, so we currently just use them for the src. + libdvdcss = kodiDependency rec { + name = "libdvdcss"; + version = "1.4.2"; + rev = "${version}-${rel}-Beta-5"; + sha256 = "0j41ydzx0imaix069s3z07xqw9q95k7llh06fc27dcn6f7b8ydyl"; + buildInputs = [ linuxHeaders ]; + nativeBuildInputs = [ cmake pkgconfig ]; + postPatch = '' + rm -rf msvc + + substituteInPlace config.h.cm \ + --replace '#cmakedefine O_BINARY "''${O_BINARY}"' '#define O_BINARY 0' + ''; + cmakeFlags = [ + "-DBUILD_SHARED_LIBS=1" + "-DHAVE_LINUX_DVD_STRUCT=1" + ]; + }; + + libdvdnav = kodiDependency rec { + name = "libdvdnav"; + version = "6.0.0"; + rev = "${version}-${rel}-Alpha-3"; + sha256 = "0qwlf4lgahxqxk1r2pzl866mi03pbp7l1fc0rk522sc0ak2s9jhb"; + buildInputs = [ libdvdcss libdvdread ]; + nativeBuildInputs = [ cmake pkgconfig ]; + postPatch = cmakeProtoPatch; + postInstall = '' + mv $out/lib/liblibdvdnav.so $out/lib/libdvdnav.so + ''; + }; + + libdvdread = kodiDependency rec { + name = "libdvdread"; + version = "6.0.0"; + rev = "${version}-${rel}-Alpha-3"; + sha256 = "1xxn01mhkdnp10cqdr357wx77vyzfb5glqpqyg8m0skyi75aii59"; + buildInputs = [ libdvdcss ]; + nativeBuildInputs = [ cmake pkgconfig ]; + configureFlags = [ "--with-libdvdcss" ]; + postPatch = cmakeProtoPatch; + }; + +in stdenv.mkDerivation { + name = "kodi-${lib.optionalString useWayland "wayland-"}${kodiVersion}"; + + src = kodi_src; + + buildInputs = [ + gnutls libidn libtasn1 nasm p11-kit + libxml2 python2Packages.python + boost libmicrohttpd + gettext pcre-cpp yajl fribidi libva libdrm + openssl gperf tinyxml2 taglib libssh + alsaLib libGL libGLU fontconfig freetype ftgl + libjpeg libpng libtiff + libmpeg2 libsamplerate libmad + libogg libvorbis flac libxslt systemd + lzo libcdio libmodplug libass libbluray + sqlite libmysqlclient avahi lame + curl bzip2 zip unzip glxinfo + libcec libcec_platform dcadec libuuid + libgcrypt libgpgerror libunistring + libcrossguid libplist + bluez giflib glib harfbuzz lcms2 libpthreadstubs + ffmpeg flatbuffers fmt fstrcmp rapidjson + lirc + # libdvdcss libdvdnav libdvdread + ] + ++ lib.optional x11Support [ + libX11 xorgproto libXt libXmu libXext.dev libXdmcp + libXinerama libXrandr.dev libXtst libXfixes + ] + ++ lib.optional dbusSupport dbus + ++ lib.optional joystickSupport cwiid + ++ lib.optional nfsSupport libnfs + ++ lib.optional pulseSupport libpulseaudio + ++ lib.optional rtmpSupport rtmpdump + ++ lib.optional sambaSupport samba + ++ lib.optional udevSupport udev + ++ lib.optional usbSupport libusb-compat-0_1 + ++ lib.optional vdpauSupport libvdpau + ++ lib.optionals useWayland [ + wayland + waylandpp.dev + wayland-protocols + # Not sure why ".dev" is needed here, but CMake doesn't find libxkbcommon otherwise + libxkbcommon.dev + ] + ++ lib.optional useGbm [ + libxkbcommon.dev + mesa.dev + libinput.dev + ]; + + nativeBuildInputs = [ + cmake + doxygen + makeWrapper + which + pkgconfig gnumake + autoconf automake libtool # still needed for some components. Check if that is the case with 19.0 + jre yasm gettext python2Packages.python flatbuffers + + # for TexturePacker + giflib zlib libpng libjpeg lzo + ] ++ lib.optionals useWayland [ wayland-protocols waylandpp.bin ]; + + depsBuildBuild = [ + buildPackages.stdenv.cc + ]; + + cmakeFlags = [ + "-Dlibdvdcss_URL=${libdvdcss.src}" + "-Dlibdvdnav_URL=${libdvdnav.src}" + "-Dlibdvdread_URL=${libdvdread.src}" + "-DGIT_VERSION=${kodiReleaseDate}" + "-DENABLE_EVENTCLIENTS=ON" + "-DENABLE_INTERNAL_CROSSGUID=OFF" + "-DENABLE_OPTICAL=ON" + "-DLIRC_DEVICE=/run/lirc/lircd" + "-DSWIG_EXECUTABLE=${buildPackages.swig}/bin/swig" + "-DFLATBUFFERS_FLATC_EXECUTABLE=${buildPackages.flatbuffers}/bin/flatc" + "-DPYTHON_EXECUTABLE=${buildPackages.python2Packages.python}/bin/python" + ] ++ lib.optional useWayland [ + "-DCORE_PLATFORM_NAME=wayland" + "-DWAYLAND_RENDER_SYSTEM=gl" + "-DWAYLANDPP_SCANNER=${buildPackages.waylandpp}/bin/wayland-scanner++" + ] ++ lib.optional useGbm [ + "-DCORE_PLATFORM_NAME=gbm" + "-DGBM_RENDER_SYSTEM=gles" + ]; + + enableParallelBuilding = true; + + # 14 tests fail but the biggest issue is that every test takes 30 seconds - + # I'm guessing there is a thing waiting to time out + doCheck = false; + + # Need these tools on the build system when cross compiling, + # hacky, but have found no other way. + preConfigure = lib.optionalString (stdenv.hostPlatform != stdenv.buildPlatform) '' + CXX=c++ LD=ld make -C tools/depends/native/JsonSchemaBuilder + cmakeFlags+=" -DWITH_JSONSCHEMABUILDER=$PWD/tools/depends/native/JsonSchemaBuilder/bin" + + CXX=c++ LD=ld make EXTRA_CONFIGURE= -C tools/depends/native/TexturePacker + cmakeFlags+=" -DWITH_TEXTUREPACKER=$PWD/tools/depends/native/TexturePacker/bin" + ''; + + postPatch = '' + substituteInPlace xbmc/platform/linux/LinuxTimezone.cpp \ + --replace 'usr/share/zoneinfo' 'etc/zoneinfo' + ''; + + postInstall = '' + for p in $(ls $out/bin/) ; do + wrapProgram $out/bin/$p \ + --prefix PATH ":" "${lib.makeBinPath ([ python2Packages.python glxinfo ] ++ lib.optional x11Support xdpyinfo)}" \ + --prefix LD_LIBRARY_PATH ":" "${lib.makeLibraryPath + ([ curl systemd libmad libvdpau libcec libcec_platform libass ] + ++ lib.optional nfsSupport libnfs + ++ lib.optional rtmpSupport rtmpdump)}" + done + + substituteInPlace $out/share/xsessions/kodi.desktop \ + --replace kodi-standalone $out/bin/kodi-standalone + ''; + + doInstallCheck = true; + + installCheckPhase = "$out/bin/kodi --version"; + + passthru = { + pythonPackages = python2Packages; + }; + + meta = with stdenv.lib; { + description = "Media center"; + homepage = "https://kodi.tv/"; + license = licenses.gpl2; + platforms = platforms.linux; + maintainers = with maintainers; [ domenkozar titanous edwtjo peterhoeg sephalon ]; + }; +} diff --git a/infra/libkookie/nixpkgs/pkgs/applications/video/kodi/plugins.nix b/infra/libkookie/nixpkgs/pkgs/applications/video/kodi/plugins.nix new file mode 100644 index 000000000000..0e23eac9a866 --- /dev/null +++ b/infra/libkookie/nixpkgs/pkgs/applications/video/kodi/plugins.nix @@ -0,0 +1,552 @@ +{ stdenv, callPackage, fetchFromGitHub +, cmake, kodiPlain, libcec_platform, tinyxml, rapidxml +, steam, udev, libusb1, jsoncpp, libhdhomerun, zlib +, python2Packages, expat, glib, nspr, nss, openssl +, libssh, libarchive, lzma, bzip2, lz4, lzo }: + +with stdenv.lib; + +let self = rec { + + pluginDir = "/share/kodi/addons"; + rel = "Leia"; + + kodi = kodiPlain; + + # Convert derivation to a kodi module. Stolen from ../../../top-level/python-packages.nix + toKodiPlugin = drv: drv.overrideAttrs(oldAttrs: { + # Use passthru in order to prevent rebuilds when possible. + passthru = (oldAttrs.passthru or {})// { + kodiPluginFor = kodi; + requiredKodiPlugins = requiredKodiPlugins drv.propagatedBuildInputs; + }; + }); + + # Check whether a derivation provides a Kodi plugin. + hasKodiPlugin = drv: drv ? kodiPluginFor && drv.kodiPluginFor == kodi; + + # Get list of required Kodi plugins given a list of derivations. + requiredKodiPlugins = drvs: let + modules = filter hasKodiPlugin drvs; + in unique (modules ++ concatLists (catAttrs "requiredKodiPlugins" modules)); + + kodiWithPlugins = func: callPackage ./wrapper.nix { + inherit kodi; + plugins = requiredKodiPlugins (func self); + }; + + kodi-platform = stdenv.mkDerivation rec { + project = "kodi-platform"; + version = "17.1"; + name = "${project}-${version}"; + + src = fetchFromGitHub { + owner = "xbmc"; + repo = project; + rev = "c8188d82678fec6b784597db69a68e74ff4986b5"; + sha256 = "1r3gs3c6zczmm66qcxh9mr306clwb3p7ykzb70r3jv5jqggiz199"; + }; + + buildInputs = [ cmake kodiPlain libcec_platform tinyxml ]; + }; + + mkKodiPlugin = { plugin, namespace, version, sourceDir ? null, ... }@args: + toKodiPlugin (stdenv.mkDerivation ({ + name = "kodi-plugin-${plugin}-${version}"; + + dontStrip = true; + + extraRuntimeDependencies = [ ]; + + installPhase = '' + ${if sourceDir == null then "" else "cd $src/$sourceDir"} + d=$out${pluginDir}/${namespace} + mkdir -p $d + sauce="." + [ -d ${namespace} ] && sauce=${namespace} + cp -R "$sauce/"* $d + ''; + } // args)); + + mkKodiABIPlugin = { plugin, namespace, version, extraBuildInputs ? [], + extraRuntimeDependencies ? [], extraInstallPhase ? "", ... }@args: + toKodiPlugin (stdenv.mkDerivation ({ + name = "kodi-plugin-${plugin}-${version}"; + + dontStrip = true; + + buildInputs = [ cmake kodiPlain kodi-platform libcec_platform ] + ++ extraBuildInputs; + + inherit extraRuntimeDependencies; + + # disables check ensuring install prefix is that of kodi + cmakeFlags = [ + "-DOVERRIDE_PATHS=1" + ]; + + # kodi checks for plugin .so libs existance in the addon folder (share/...) + # and the non-wrapped kodi lib/... folder before even trying to dlopen + # them. Symlinking .so, as setting LD_LIBRARY_PATH is of no use + installPhase = let n = namespace; in '' + make install + ln -s $out/lib/addons/${n}/${n}.so.${version} $out${pluginDir}/${n}/${n}.so.${version} + ${extraInstallPhase} + ''; + } // args)); + + advanced-launcher = mkKodiPlugin rec { + + plugin = "advanced-launcher"; + namespace = "plugin.program.advanced.launcher"; + version = "2.5.8"; + + src = fetchFromGitHub { + owner = "edwtjo"; + repo = plugin; + rev = version; + sha256 = "142vvgs37asq5m54xqhjzqvgmb0xlirvm0kz6lxaqynp0vvgrkx2"; + }; + + meta = { + homepage = "https://forum.kodi.tv/showthread.php?tid=85724"; + description = "A program launcher for Kodi"; + longDescription = '' + Advanced Launcher allows you to start any Linux, Windows and + macOS external applications (with command line support or not) + directly from the Kodi GUI. Advanced Launcher also give you + the possibility to edit, download (from Internet resources) + and manage all the meta-data (informations and images) related + to these applications. + ''; + platforms = platforms.all; + maintainers = with maintainers; [ edwtjo ]; + }; + + }; + + advanced-emulator-launcher = mkKodiPlugin rec { + + plugin = "advanced-emulator-launcher"; + namespace = "plugin.program.advanced.emulator.launcher"; + version = "0.9.6"; + + src = fetchFromGitHub { + owner = "Wintermute0110"; + repo = namespace; + rev = version; + sha256 = "1sv9z77jj6bam6llcnd9b3dgkbvhwad2m1v541rv3acrackms2z2"; + }; + + meta = { + homepage = "https://forum.kodi.tv/showthread.php?tid=287826"; + description = "A program launcher for Kodi"; + longDescription = '' + Advanced Emulator Launcher is a multi-emulator front-end for Kodi + scalable to collections of thousands of ROMs. Includes offline scrapers + for MAME and No-Intro ROM sets and also supports scrapping ROM metadata + and artwork online. ROM auditing for No-Intro ROMs using No-Intro XML + DATs. Launching of games and standalone applications is also available. + ''; + platforms = platforms.all; + maintainers = with maintainers; [ edwtjo ]; + }; + + }; + + controllers = let + pname = "game-controller"; + version = "1.0.3"; + + src = fetchFromGitHub { + owner = "kodi-game"; + repo = "kodi-game-controllers"; + rev = "01acb5b6e8b85392b3cb298b034aadb1b24ccf18"; + sha256 = "0sbc0w0fwbp7rbmbgb6a1kglhnn5g85hijcbbvf5x6jdq9v3f1qb"; + }; + + meta = { + description = "Add support for different gaming controllers."; + platforms = platforms.all; + maintainers = with maintainers; [ edwtjo ]; + }; + + mkController = controller: { + ${controller} = mkKodiPlugin rec { + plugin = pname + "-" + controller; + namespace = "game.controller." + controller; + sourceDir = "addons/" + namespace; + inherit version src meta; + }; + }; + in (mkController "default") + // (mkController "dreamcast") + // (mkController "gba") + // (mkController "genesis") + // (mkController "mouse") + // (mkController "n64") + // (mkController "nes") + // (mkController "ps") + // (mkController "snes"); + + hyper-launcher = let + pname = "hyper-launcher"; + version = "1.5.2"; + src = fetchFromGitHub rec { + name = pname + "-" + version + ".tar.gz"; + owner = "teeedubb"; + repo = owner + "-xbmc-repo"; + rev = "f958ba93fe85b9c9025b1745d89c2db2e7dd9bf6"; + sha256 = "1dvff24fbas25k5kvca4ssks9l1g5rfa3hl8lqxczkaqi3pp41j5"; + }; + meta = { + homepage = "https://forum.kodi.tv/showthread.php?tid=258159"; + description = "A ROM launcher for Kodi that uses HyperSpin assets."; + maintainers = with maintainers; [ edwtjo ]; + }; + in { + service = mkKodiPlugin { + plugin = pname + "-service"; + version = "1.2.1"; + namespace = "service.hyper.launcher"; + inherit src meta; + }; + plugin = mkKodiPlugin { + plugin = pname; + namespace = "plugin.hyper.launcher"; + inherit version src meta; + }; + }; + + joystick = mkKodiABIPlugin rec { + namespace = "peripheral.joystick"; + version = "1.4.7"; + plugin = namespace; + + src = fetchFromGitHub { + owner = "xbmc"; + repo = namespace; + rev = "v${version}"; + sha256 = "03gsp4kg41s3n4ib4wsv7m3krfipgwc2z07i4mnd5zvg0c4xrmap"; + }; + + meta = { + description = "Binary addon for raw joystick input."; + platforms = platforms.all; + maintainers = with maintainers; [ edwtjo ]; + }; + + extraBuildInputs = [ udev ]; + }; + + simpleplugin = mkKodiPlugin rec { + plugin = "simpleplugin"; + namespace = "script.module.simpleplugin"; + version = "2.3.2"; + + src = fetchFromGitHub { + owner = "romanvm"; + repo = namespace; + rev = "v.${version}"; + sha256 = "0myar8dqjigb75pcc8zx3i5z79p1ifgphgb82s5syqywk0zaxm3j"; + }; + + meta = { + homepage = src.meta.homepage; + description = "Simpleplugin API"; + license = licenses.gpl3; + }; + }; + + svtplay = mkKodiPlugin rec { + + plugin = "svtplay"; + namespace = "plugin.video.svtplay"; + version = "4.0.48"; + + src = fetchFromGitHub { + name = plugin + "-" + version + ".tar.gz"; + owner = "nilzen"; + repo = "xbmc-" + plugin; + rev = "dc18ad002cd69257611d0032fba91f57bb199165"; + sha256 = "0klk1jpjc243ak306k94mag4b4s17w68v69yb8lzzydszqkaqa7x"; + }; + + meta = { + homepage = "https://forum.kodi.tv/showthread.php?tid=67110"; + description = "Watch content from SVT Play"; + longDescription = '' + With this addon you can stream content from SVT Play + (svtplay.se). The plugin fetches the video URL from the SVT + Play website and feeds it to the Kodi video player. HLS (m3u8) + is the preferred video format by the plugin. + ''; + platforms = platforms.all; + maintainers = with maintainers; [ edwtjo ]; + }; + + }; + + steam-controller = mkKodiABIPlugin rec { + namespace = "peripheral.steamcontroller"; + version = "0.10.0"; + plugin = namespace; + + src = fetchFromGitHub { + owner = "kodi-game"; + repo = namespace; + rev = "ea345392ab5aa4485f3a48d2037fa8a8e8ab82de"; + sha256 = "1hbd8fdvn7xkr9csz1g9wah78nhnq1rkazl4zwa31y70830k3279"; + }; + + extraBuildInputs = [ libusb1 ]; + + meta = { + description = "Binary addon for steam controller."; + platforms = platforms.all; + maintainers = with maintainers; [ edwtjo ]; + }; + + }; + + steam-launcher = mkKodiPlugin { + + plugin = "steam-launcher"; + namespace = "script.steam.launcher"; + version = "3.1.4"; + + src = fetchFromGitHub rec { + owner = "teeedubb"; + repo = owner + "-xbmc-repo"; + rev = "db67704c3e16bdcdd3bdfe2926c609f1f6bdc4fb"; + sha256 = "001a7zs3a4jfzj8ylxv2klc33mipmqsd5aqax7q81fbgwdlndvbm"; + }; + + propagatedBuildInputs = [ steam ]; + + meta = { + homepage = "https://forum.kodi.tv/showthread.php?tid=157499"; + description = "Launch Steam in Big Picture Mode from Kodi"; + longDescription = '' + This add-on will close/minimise Kodi, launch Steam in Big + Picture Mode and when Steam BPM is exited (either by quitting + Steam or returning to the desktop) Kodi will + restart/maximise. Running pre/post Steam scripts can be + configured via the addon. + ''; + maintainers = with maintainers; [ edwtjo ]; + }; + }; + + pdfreader = mkKodiPlugin rec { + plugin = "pdfreader"; + namespace = "plugin.image.pdf"; + version = "1.0.2"; + + src = fetchFromGitHub rec { + name = plugin + "-" + version + ".tar.gz"; + owner = "teeedubb"; + repo = owner + "-xbmc-repo"; + rev = "0a405b95208ced8a1365ad3193eade8d1c2117ce"; + sha256 = "1iv7d030z3xvlflvp4p5v3riqnwg9g0yvzxszy63v1a6x5kpjkqa"; + }; + + meta = { + homepage = "https://forum.kodi.tv/showthread.php?tid=187421"; + description = "A comic book reader"; + maintainers = with maintainers; [ edwtjo ]; + }; + }; + + pvr-hts = mkKodiABIPlugin rec { + + plugin = "pvr-hts"; + namespace = "pvr.hts"; + version = "4.4.14"; + + src = fetchFromGitHub { + owner = "kodi-pvr"; + repo = "pvr.hts"; + rev = "${version}-${rel}"; + sha256 = "1bcwcwd2yjhw85yk6lyhf0iqiclrsz7r7vpbxgc650fwqbb146gr"; + }; + + meta = { + homepage = "https://github.com/kodi-pvr/pvr.hts"; + description = "Kodi's Tvheadend HTSP client addon"; + platforms = platforms.all; + maintainers = with maintainers; [ cpages ]; + }; + + }; + + pvr-hdhomerun = mkKodiABIPlugin rec { + + plugin = "pvr-hdhomerun"; + namespace = "pvr.hdhomerun"; + version = "3.5.0"; + + src = fetchFromGitHub { + owner = "kodi-pvr"; + repo = "pvr.hdhomerun"; + rev = "${version}-${rel}"; + sha256 = "1zrkvfn0im2qmvqm93pa3cg8xkxv61sxlj8nsz4r5z9v9nhqadf6"; + }; + + meta = { + homepage = "https://github.com/kodi-pvr/pvr.hdhomerun"; + description = "Kodi's HDHomeRun PVR client addon"; + platforms = platforms.all; + maintainers = with maintainers; [ titanous ]; + }; + + extraBuildInputs = [ jsoncpp libhdhomerun ]; + + }; + + pvr-iptvsimple = mkKodiABIPlugin rec { + + plugin = "pvr-iptvsimple"; + namespace = "pvr.iptvsimple"; + version = "3.5.7"; + + src = fetchFromGitHub { + owner = "kodi-pvr"; + repo = "pvr.iptvsimple"; + rev = "${version}-${rel}"; + sha256 = "17znib7c491h2ii4gagxradh0jyvgga0d548gbk4yjj2nc9qqc6d"; + }; + + meta = { + homepage = "https://github.com/kodi-pvr/pvr.iptvsimple"; + description = "Kodi's IPTV Simple client addon"; + platforms = platforms.all; + maintainers = with maintainers; [ ]; + license = licenses.gpl2Plus; + }; + + extraBuildInputs = [ zlib rapidxml ]; + }; + + osmc-skin = mkKodiPlugin rec { + + plugin = "osmc-skin"; + namespace = "skin.osmc"; + version = "18.0.0"; + + src = fetchFromGitHub { + owner = "osmc"; + repo = namespace; + rev = "40a6c318641e2cbeac58fb0e7dde9c2beac737a0"; + sha256 = "1l7hyfj5zvjxjdm94y325bmy1naak455b9l8952sb0gllzrcwj6s"; + }; + + meta = { + homepage = "https://github.com/osmc/skin.osmc"; + description = "The default skin for OSMC"; + platforms = platforms.all; + maintainers = with maintainers; [ worldofpeace ]; + license = licenses.cc-by-nc-sa-30; + }; + }; + + yatp = python2Packages.toPythonModule (mkKodiPlugin rec { + plugin = "yatp"; + namespace = "plugin.video.yatp"; + version = "3.3.2"; + + src = fetchFromGitHub { + owner = "romanvm"; + repo = "kodi.yatp"; + rev = "v.${version}"; + sha256 = "12g1f57sx7dy6wy7ljl7siz2qs1kxcmijcg7xx2xpvmq61x9qa2d"; + }; + + patches = [ ./yatp/dont-monkey.patch ]; + + propagatedBuildInputs = [ + simpleplugin + python2Packages.requests + python2Packages.libtorrentRasterbar + ]; + + meta = { + homepage = src.meta.homepage; + description = "Yet Another Torrent Player: libtorrent-based torrent streaming for Kodi"; + license = licenses.gpl3; + }; + }); + + inputstream-adaptive = mkKodiABIPlugin rec { + + plugin = "inputstream-adaptive"; + namespace = "inputstream.adaptive"; + version = "2.3.12"; + + src = fetchFromGitHub { + owner = "peak3d"; + repo = "inputstream.adaptive"; + rev = version; + sha256 = "09d9b35mpaf3g5m51viyan9hv7d2i8ndvb9wm0j7rs5gwsf0k71z"; + }; + + extraBuildInputs = [ expat ]; + + extraRuntimeDependencies = [ glib nspr nss stdenv.cc.cc.lib ]; + + extraInstallPhase = let n = namespace; in '' + ln -s $out/lib/addons/${n}/libssd_wv.so $out/${pluginDir}/${n}/libssd_wv.so + ''; + + meta = { + homepage = "https://github.com/peak3d/inputstream.adaptive"; + description = "Kodi inputstream addon for several manifest types"; + platforms = platforms.all; + maintainers = with maintainers; [ sephalon ]; + }; + }; + + vfs-sftp = mkKodiABIPlugin rec { + namespace = "vfs.sftp"; + version = "1.0.6"; + plugin = namespace; + + src = fetchFromGitHub { + owner = "xbmc"; + repo = namespace; + rev = "${version}-${rel}"; + sha256 = "044kkzcpzvbyih4vys33r4hqw38xa82snmvl4qj1r80wnszc8af1"; + }; + + meta = with stdenv.lib; { + description = "SFTP Virtual Filesystem add-on for Kodi"; + license = licenses.gpl2Plus; + platforms = platforms.all; + maintainers = with maintainers; [ minijackson ]; + }; + + extraBuildInputs = [ openssl libssh zlib ]; + }; + + vfs-libarchive = mkKodiABIPlugin rec { + namespace = "vfs.libarchive"; + version = "1.0.7"; + plugin = namespace; + + src = fetchFromGitHub { + owner = "xbmc"; + repo = namespace; + rev = "${version}-${rel}"; + sha256 = "01qhv095h5j67ispm4iw18pd3kl7a0mnjkgm92al9qqiyif8lzgh"; + }; + + meta = with stdenv.lib; { + description = "LibArchive Virtual Filesystem add-on for Kodi"; + license = licenses.gpl2Plus; + platforms = platforms.all; + maintainers = with maintainers; [ minijackson ]; + }; + + extraBuildInputs = [ libarchive lzma bzip2 zlib lz4 lzo openssl ]; + }; +}; in self diff --git a/infra/libkookie/nixpkgs/pkgs/applications/video/kodi/wrapper.nix b/infra/libkookie/nixpkgs/pkgs/applications/video/kodi/wrapper.nix new file mode 100644 index 000000000000..6a0b1cbdf739 --- /dev/null +++ b/infra/libkookie/nixpkgs/pkgs/applications/video/kodi/wrapper.nix @@ -0,0 +1,30 @@ +{ stdenv, lib, makeWrapper, buildEnv, kodi, plugins }: + +let + drvName = builtins.parseDrvName kodi.name; +in buildEnv { + name = "${drvName.name}-with-plugins-${drvName.version}"; + + paths = [ kodi ] ++ plugins; + pathsToLink = [ "/share" ]; + + buildInputs = [ makeWrapper ]; + + postBuild = '' + mkdir $out/bin + for exe in kodi{,-standalone} + do + makeWrapper ${kodi}/bin/$exe $out/bin/$exe \ + --prefix PYTHONPATH : ${kodi.pythonPackages.makePythonPath plugins} \ + --prefix KODI_HOME : $out/share/kodi \ + --prefix LD_LIBRARY_PATH ":" "${lib.makeLibraryPath + (stdenv.lib.concatMap + (plugin: plugin.extraRuntimeDependencies) plugins)}" + done + ''; + + meta = kodi.meta // { + description = kodi.meta.description + + " (with plugins: ${lib.concatMapStringsSep ", " (x: x.name) plugins})"; + }; +} diff --git a/infra/libkookie/nixpkgs/pkgs/applications/video/kodi/yatp/dont-monkey.patch b/infra/libkookie/nixpkgs/pkgs/applications/video/kodi/yatp/dont-monkey.patch new file mode 100644 index 000000000000..62d5d0c0d4c0 --- /dev/null +++ b/infra/libkookie/nixpkgs/pkgs/applications/video/kodi/yatp/dont-monkey.patch @@ -0,0 +1,29 @@ +diff --git a/plugin.video.yatp/server.py b/plugin.video.yatp/server.py +index 1adcbb5..488b72c 100644 +--- a/plugin.video.yatp/server.py ++++ b/plugin.video.yatp/server.py +@@ -20,24 +20,8 @@ addon = Addon() + _ = addon.initialize_gettext() + addon.log_notice('Starting Torrent Server...') + +-# A monkey-patch to set the necessary librorrent version +-librorrent_addon = Addon('script.module.libtorrent') +-orig_custom_version = librorrent_addon.get_setting('custom_version', False) +-orig_set_version = librorrent_addon.get_setting('set_version', False) +-librorrent_addon.set_setting('custom_version', 'true') +-if addon.libtorrent_version == '1.0.9': +- librorrent_addon.set_setting('set_version', '4') +-elif addon.libtorrent_version == '1.1.0': +- librorrent_addon.set_setting('set_version', '5') +-elif addon.libtorrent_version == '1.1.1': +- librorrent_addon.set_setting('set_version', '6') +-else: +- librorrent_addon.set_setting('set_version', '0') +- + from libs.server import wsgi_app + +-librorrent_addon.set_setting('custom_version', orig_custom_version) +-librorrent_addon.set_setting('set_version', orig_set_version) + # ====== + + if addon.enable_limits: diff --git a/infra/libkookie/nixpkgs/pkgs/applications/video/lightworks/default.nix b/infra/libkookie/nixpkgs/pkgs/applications/video/lightworks/default.nix new file mode 100644 index 000000000000..da413915e37e --- /dev/null +++ b/infra/libkookie/nixpkgs/pkgs/applications/video/lightworks/default.nix @@ -0,0 +1,87 @@ +{ stdenv, fetchurl, dpkg, makeWrapper, buildFHSUserEnv +, gtk3, gdk-pixbuf, cairo, libjpeg_original, glib, gnome2, libGLU +, nvidia_cg_toolkit, zlib, openssl, portaudio +}: +let + fullPath = stdenv.lib.makeLibraryPath [ + stdenv.cc.cc + gtk3 + gdk-pixbuf + cairo + libjpeg_original + glib + gnome2.pango + libGLU + nvidia_cg_toolkit + zlib + openssl + portaudio + ]; + + lightworks = stdenv.mkDerivation rec { + version = "14.0.0"; + pname = "lightworks"; + + src = + if stdenv.hostPlatform.system == "x86_64-linux" then + fetchurl { + url = "http://downloads.lwks.com/v14/lwks-14.0.0-amd64.deb"; + sha256 = "66eb9f9678d979db76199f1c99a71df0ddc017bb47dfda976b508849ab305033"; + } + else throw "${pname}-${version} is not supported on ${stdenv.hostPlatform.system}"; + + buildInputs = [ dpkg makeWrapper ]; + + phases = [ "unpackPhase" "installPhase" ]; + unpackPhase = "dpkg-deb -x ${src} ./"; + + installPhase = '' + mkdir -p $out/bin + substitute usr/bin/lightworks $out/bin/lightworks \ + --replace "/usr/lib/lightworks" "$out/lib/lightworks" + chmod +x $out/bin/lightworks + + cp -r usr/lib $out + + # /usr/share/fonts is not normally searched + # This adds it to lightworks' search path while keeping the default + # using the FONTCONFIG_FILE env variable + echo "<?xml version='1.0'?> + <!DOCTYPE fontconfig SYSTEM 'urn:fontconfig:fonts.dtd'> + <fontconfig> + <dir>/usr/share/fonts/truetype</dir> + <include>/etc/fonts/fonts.conf</include> + </fontconfig>" > $out/lib/lightworks/fonts.conf + + patchelf \ + --interpreter "$(cat $NIX_CC/nix-support/dynamic-linker)" \ + $out/lib/lightworks/ntcardvt + + wrapProgram $out/lib/lightworks/ntcardvt \ + --prefix LD_LIBRARY_PATH : ${fullPath}:$out/lib/lightworks \ + --set FONTCONFIG_FILE $out/lib/lightworks/fonts.conf + + cp -r usr/share $out/share + ''; + + dontPatchELF = true; + }; + +# Lightworks expects some files in /usr/share/lightworks +in buildFHSUserEnv { + name = lightworks.name; + + targetPkgs = pkgs: [ + lightworks + ]; + + runScript = "lightworks"; + + meta = { + description = "Professional Non-Linear Video Editor"; + homepage = "https://www.lwks.com/"; + license = stdenv.lib.licenses.unfree; + maintainers = [ stdenv.lib.maintainers.antonxy ]; + platforms = [ "x86_64-linux" ]; + }; +} diff --git a/infra/libkookie/nixpkgs/pkgs/applications/video/linuxstopmotion/default.nix b/infra/libkookie/nixpkgs/pkgs/applications/video/linuxstopmotion/default.nix new file mode 100644 index 000000000000..3a2d1b79e9e0 --- /dev/null +++ b/infra/libkookie/nixpkgs/pkgs/applications/video/linuxstopmotion/default.nix @@ -0,0 +1,33 @@ +{ stdenv, fetchgit, pkgconfig, qt4, SDL, SDL_image, libvorbis, libtar, libxml2 +, gamin, qmake4Hook +}: + +stdenv.mkDerivation rec { + version = "0.8"; + pname = "linuxstopmotion"; + + src = fetchgit { + url = "git://git.code.sf.net/p/linuxstopmotion/code"; + rev = "refs/tags/${version}"; + sha256 = "19v9d0v3laiwi0f1n92lvj2s5s1mxsrfygna0xyw9pkcnk3b26q6"; + }; + + nativeBuildInputs = [ pkgconfig ]; + buildInputs = [ qt4 SDL SDL_image libvorbis libtar libxml2 gamin qmake4Hook ]; + + patches = [ ./linuxstopmotion-fix-wrong-isProcess-logic.patch ]; + + # Installation breaks without this + preInstall = '' + mkdir -p "$out/share/stopmotion/translations/" + cp -v build/*.qm "$out/share/stopmotion/translations/" + ''; + + meta = with stdenv.lib; { + description = "Create stop-motion animation movies"; + homepage = "http://linuxstopmotion.org/"; + license = licenses.gpl2; + platforms = platforms.linux; + maintainers = [ maintainers.bjornfor ]; + }; +} diff --git a/infra/libkookie/nixpkgs/pkgs/applications/video/linuxstopmotion/linuxstopmotion-fix-wrong-isProcess-logic.patch b/infra/libkookie/nixpkgs/pkgs/applications/video/linuxstopmotion/linuxstopmotion-fix-wrong-isProcess-logic.patch new file mode 100644 index 000000000000..caab48d0e2d9 --- /dev/null +++ b/infra/libkookie/nixpkgs/pkgs/applications/video/linuxstopmotion/linuxstopmotion-fix-wrong-isProcess-logic.patch @@ -0,0 +1,33 @@ +From b23b7dab1d540b0710fcb9ded1c6256a49844906 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Bj=C3=B8rn=20Forsman?= <bjorn.forsman@gmail.com> +Date: Wed, 20 Aug 2014 22:22:00 +0200 +Subject: [PATCH] Fix wrong "isProcess" logic + +Stopmotion wrongly thinks that uvccapture should be run as a daemon, +even though configuration for uvccapture has no "daemon-like" command +line to be run (according to "preferences"). The result is an error +popup instead of video/image grabbing. + +This brings back the "isProcess" logic that was in stopmotion v0.7.2, +because it seems to work, while the current logic (v0.8.0) seems to +fail. +--- + src/presentation/frontends/qtfrontend/frameview.cpp | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/src/presentation/frontends/qtfrontend/frameview.cpp b/src/presentation/frontends/qtfrontend/frameview.cpp +index e44dca7..d2c41fd 100644 +--- a/src/presentation/frontends/qtfrontend/frameview.cpp ++++ b/src/presentation/frontends/qtfrontend/frameview.cpp +@@ -270,7 +270,7 @@ bool FrameView::on() { + Preference device(QString("device%1") + .arg(activeDev).toLatin1().constData(), ""); + QString pre = QString(prepoll.get()).replace("$VIDEODEVICE", device.get()); +- bool isProcess = startDaemon.get(); ++ bool isProcess = (strcmp(startDaemon.get(), "") == 0) ? false : true; + + bool isCameraReady = true; + this->grabber = new CommandLineGrabber(capturedFile.path(), isProcess); +-- +2.0.2 + diff --git a/infra/libkookie/nixpkgs/pkgs/applications/video/lxdvdrip/default.nix b/infra/libkookie/nixpkgs/pkgs/applications/video/lxdvdrip/default.nix new file mode 100644 index 000000000000..16ade40f0b5a --- /dev/null +++ b/infra/libkookie/nixpkgs/pkgs/applications/video/lxdvdrip/default.nix @@ -0,0 +1,29 @@ +{ stdenv, fetchurl, libdvdread }: + +stdenv.mkDerivation rec { + name = "lxdvdrip-1.76"; + + src = fetchurl { + url = "mirror://sourceforge/lxdvdrip/${name}.tgz"; + sha256 = "0vgslc7dapfrbgslnaicc8bggdccyrvcgjv1dwi19qswhh7jkzj6"; + }; + + prePatch = '' + sed -i -e s,/usr/local,$out, -e s,/etc,$out/etc,g Makefile + sed -i -e s,/usr/local,$out, buffer/Makefile + makeFlags="$makeFlags PREFIX=$out" + ''; + + preInstall = '' + mkdir -p $out/man/man1 $out/bin $out/share $out/etc + ''; + + buildInputs = [ libdvdread ]; + + meta = { + description = "Command line tool to make a copy from a video DVD for private use"; + homepage = "https://sourceforge.net/projects/lxdvdrip"; + license = stdenv.lib.licenses.gpl2; + platforms = stdenv.lib.platforms.linux; + }; +} diff --git a/infra/libkookie/nixpkgs/pkgs/applications/video/makemkv/default.nix b/infra/libkookie/nixpkgs/pkgs/applications/video/makemkv/default.nix new file mode 100644 index 000000000000..d3cb12924c26 --- /dev/null +++ b/infra/libkookie/nixpkgs/pkgs/applications/video/makemkv/default.nix @@ -0,0 +1,60 @@ +{ stdenv, mkDerivation, fetchurl, autoPatchelfHook +, ffmpeg_3, openssl, qtbase, zlib, pkgconfig +}: + +let + version = "1.15.2"; + # Using two URLs as the first one will break as soon as a new version is released + src_bin = fetchurl { + urls = [ + "http://www.makemkv.com/download/makemkv-bin-${version}.tar.gz" + "http://www.makemkv.com/download/old/makemkv-bin-${version}.tar.gz" + ]; + sha256 = "1dbips0qllbwhak44c50nlwn8n3kx8i6773cal5zl3dv4v2nf6ql"; + }; + src_oss = fetchurl { + urls = [ + "http://www.makemkv.com/download/makemkv-oss-${version}.tar.gz" + "http://www.makemkv.com/download/old/makemkv-oss-${version}.tar.gz" + ]; + sha256 = "1wnhzlz5fw6qwh82hjcpimg60xb3a9a54zb6gcjhqr9zdly2zphy"; + }; +in mkDerivation { + pname = "makemkv"; + inherit version; + + srcs = [ src_bin src_oss ]; + + sourceRoot = "makemkv-oss-${version}"; + + nativeBuildInputs = [ autoPatchelfHook pkgconfig ]; + + buildInputs = [ ffmpeg_3 openssl qtbase zlib ]; + + installPhase = '' + runHook preInstall + + install -Dm555 -t $out/bin out/makemkv ../makemkv-bin-${version}/bin/amd64/makemkvcon + install -D -t $out/lib out/lib{driveio,makemkv,mmbd}.so.* + install -D -t $out/share/MakeMKV ../makemkv-bin-${version}/src/share/* + + runHook postInstall + ''; + + meta = with stdenv.lib; { + description = "Convert blu-ray and dvd to mkv"; + longDescription = '' + makemkv is a one-click QT application that transcodes an encrypted + blu-ray or DVD disc into a more portable set of mkv files, preserving + subtitles, chapter marks, all video and audio tracks. + + Program is time-limited -- it will stop functioning after 60 days. You + can always download the latest version from makemkv.com that will reset the + expiration date. + ''; + license = licenses.unfree; + homepage = "http://makemkv.com"; + platforms = [ "x86_64-linux" ]; + maintainers = with maintainers; [ danieldk titanous ]; + }; +} diff --git a/infra/libkookie/nixpkgs/pkgs/applications/video/manim/default.nix b/infra/libkookie/nixpkgs/pkgs/applications/video/manim/default.nix new file mode 100644 index 000000000000..667b2bb2b885 --- /dev/null +++ b/infra/libkookie/nixpkgs/pkgs/applications/video/manim/default.nix @@ -0,0 +1,64 @@ +{ lib, buildPythonApplication, fetchFromGitHub, pythonOlder, file, fetchpatch +, cairo, ffmpeg_3, sox, xdg_utils, texlive +, colour, numpy, pillow, progressbar, scipy, tqdm, opencv , pycairo, pydub +, pbr, fetchPypi +}: +buildPythonApplication rec { + pname = "manim"; + version = "0.1.10"; + + src = fetchPypi { + pname = "manimlib"; + inherit version; + sha256 = "0vg9b3rwypq5zir74pi0pmj47yqlcg7hrvscwrpjzjbqq2yihn49"; + }; + + patches = [ ./remove-dependency-constraints.patch ]; + + nativeBuildInputs = [ pbr ]; + + propagatedBuildInputs = [ + colour + numpy + pillow + progressbar + scipy + tqdm + opencv + pycairo + pydub + + cairo sox ffmpeg_3 xdg_utils + ]; + + # Test with texlive to see whether it works but don't propagate + # because it's huge and optional + # TODO: Use smaller TexLive distribution + # Doesn't need everything but it's hard to figure out what it needs + checkInputs = [ cairo sox ffmpeg_3 xdg_utils texlive.combined.scheme-full ]; + + # Simple test and complex test with LaTeX + checkPhase = '' + for scene in SquareToCircle OpeningManimExample + do + python3 manim.py example_scenes.py $scene -l + tail -n 20 files/Tex/*.log # Print potential LaTeX erorrs + ${file}/bin/file videos/example_scenes/480p15/$scene.mp4 \ + | tee | grep -F "ISO Media, MP4 Base Media v1 [IS0 14496-12:2003]" + done + ''; + + disabled = pythonOlder "3.7"; + + meta = { + description = "Animation engine for explanatory math videos"; + longDescription = '' + Manim is an animation engine for explanatory math videos. It's used to + create precise animations programmatically, as seen in the videos of + 3Blue1Brown on YouTube. + ''; + homepage = "https://github.com/3b1b/manim"; + license = lib.licenses.mit; + maintainers = with lib.maintainers; [ johnazoidberg ]; + }; +} diff --git a/infra/libkookie/nixpkgs/pkgs/applications/video/manim/remove-dependency-constraints.patch b/infra/libkookie/nixpkgs/pkgs/applications/video/manim/remove-dependency-constraints.patch new file mode 100644 index 000000000000..4a7da45d0f57 --- /dev/null +++ b/infra/libkookie/nixpkgs/pkgs/applications/video/manim/remove-dependency-constraints.patch @@ -0,0 +1,26 @@ +diff --git i/requirements.txt w/requirements.txt +index 556122ad..11fd49d5 100644 +--- i/requirements.txt ++++ w/requirements.txt +@@ -1,11 +1,10 @@ +-argparse==1.4.0 +-colour==0.1.5 +-numpy==1.15.0 +-Pillow==5.2.0 +-progressbar==2.5 +-scipy==1.1.0 +-tqdm==4.24.0 +-opencv-python==3.4.2.17 +-pycairo==1.17.1; sys_platform == 'linux' +-pycairo>=1.18.0; sys_platform == 'win32' +-pydub==0.23.0 ++colour ++numpy ++Pillow ++progressbar ++scipy ++tqdm ++pycairo ++pycairo>=1.18.1; sys_platform == 'win32' ++pydub ++pyreadline==2.1; sys_platform == 'win32' diff --git a/infra/libkookie/nixpkgs/pkgs/applications/video/mapmap/default.nix b/infra/libkookie/nixpkgs/pkgs/applications/video/mapmap/default.nix new file mode 100644 index 000000000000..9d6ffbd439c4 --- /dev/null +++ b/infra/libkookie/nixpkgs/pkgs/applications/video/mapmap/default.nix @@ -0,0 +1,64 @@ +{ stdenv +, fetchFromGitHub +, qttools +, qtmultimedia +, liblo +, gst_all_1 +, qmake +, pkgconfig +}: + +with stdenv; + +mkDerivation rec { + + version = "0.6.2"; + pname = "mapmap"; + + src = fetchFromGitHub { + owner = "mapmapteam"; + repo = "mapmap"; + rev = version; + sha256 = "1pyb3vz19lbfz2hrfqm9a29vnajw1bigdrblbmcy32imkf4isfvm"; + }; + + nativeBuildInputs = [ + qmake + pkgconfig + ]; + + buildInputs = [ + qttools + qtmultimedia + liblo + gst_all_1.gstreamer + gst_all_1.gstreamermm + gst_all_1.gst-libav + gst_all_1.gst-vaapi + ]; + + installPhase = '' + mkdir -p $out/bin + cp mapmap $out/bin/mapmap + mkdir -p $out/share/applications/ + sed 's|Icon=/usr/share/icons/hicolor/scalable/apps/mapmap.svg|Icon=mapmap|g' resources/texts/mapmap.desktop > $out/share/applications/mapmap.desktop + mkdir -p $out/share/icons/hicolor/scalable/apps/ + cp resources/images/logo/mapmap.* $out/share/icons/hicolor/scalable/apps/ + ''; + + # RPATH in /tmp hack + # preFixup = '' + # rm -r $NIX_BUILD_TOP/__nix_qt5__ + # ''; + + meta = with stdenv.lib; { + description = "Open source video mapping software"; + homepage = "https://github.com/mapmapteam/mapmap"; + license = licenses.gpl3; + maintainers = [ maintainers.erictapen ]; + platforms = platforms.linux; + # binary segfaults at the moment + broken = true; + }; + +} diff --git a/infra/libkookie/nixpkgs/pkgs/applications/video/mediathekview/default.nix b/infra/libkookie/nixpkgs/pkgs/applications/video/mediathekview/default.nix new file mode 100644 index 000000000000..7c7ceb914ae7 --- /dev/null +++ b/infra/libkookie/nixpkgs/pkgs/applications/video/mediathekview/default.nix @@ -0,0 +1,35 @@ +{ stdenv, fetchurl, makeWrapper, jre }: + +stdenv.mkDerivation rec { + version = "13.5.1"; + pname = "mediathekview"; + src = fetchurl { + url = "https://download.mediathekview.de/stabil/MediathekView-${version}-linux.tar.gz"; + sha256 = "0fixr6drim0wmh4q44zikcla4mrnm44nm95d5naqsgx6idalddrc"; + }; + + nativeBuildInputs = [ makeWrapper ]; + + installPhase = '' + mkdir -p $out/{bin,lib} + + install -m644 MediathekView.jar $out/lib + + makeWrapper ${jre}/bin/java $out/bin/mediathek \ + --add-flags "-Xmx1G -jar $out/lib/MediathekView.jar" + + makeWrapper ${jre}/bin/java $out/bin/MediathekView \ + --add-flags "-Xmx1G -jar $out/lib/MediathekView.jar" + + makeWrapper ${jre}/bin/java $out/bin/MediathekView_ipv4 \ + --add-flags "-Xmx1G -Djava.net.preferIPv4Stack=true -jar $out/lib/MediathekView.jar" + ''; + + meta = with stdenv.lib; { + description = "Offers access to the Mediathek of different tv stations (ARD, ZDF, Arte, etc.)"; + homepage = "https://mediathekview.de/"; + license = licenses.gpl3; + maintainers = with maintainers; [ moredread ]; + platforms = platforms.all; + }; +} diff --git a/infra/libkookie/nixpkgs/pkgs/applications/video/minitube/default.nix b/infra/libkookie/nixpkgs/pkgs/applications/video/minitube/default.nix new file mode 100644 index 000000000000..690b8355340c --- /dev/null +++ b/infra/libkookie/nixpkgs/pkgs/applications/video/minitube/default.nix @@ -0,0 +1,39 @@ +{ stdenv, fetchFromGitHub, wrapQtAppsHook, phonon, phonon-backend-vlc, qtbase, qmake +, qtdeclarative, qttools, qtx11extras, mpv + +# "Free" key generated by nckx <github@tobias.gr>. I no longer have a Google +# account. You'll need to generate (and please share :-) a new one if it breaks. +, withAPIKey ? "AIzaSyBtFgbln3bu1swQC-naMxMtKh384D3xJZE" }: + +stdenv.mkDerivation rec { + pname = "minitube"; + version = "3.2"; + + src = fetchFromGitHub { + sha256 = "0175sgqmszakqd631bni4aqjpx68h6n49zjvg23fb1yyancnkn4c"; + rev = version; + repo = "minitube"; + owner = "flaviotordini"; + fetchSubmodules = true; + }; + + buildInputs = [ phonon phonon-backend-vlc qtbase qtdeclarative qttools qtx11extras mpv ]; + nativeBuildInputs = [ wrapQtAppsHook qmake ]; + + qmakeFlags = [ "DEFINES+=APP_GOOGLE_API_KEY=${withAPIKey}" ]; + + enableParallelBuilding = true; + + meta = with stdenv.lib; { + description = "Stand-alone YouTube video player"; + longDescription = '' + Watch YouTube videos in a new way: you type a keyword, Minitube gives + you an endless video stream. Minitube is not about cloning the YouTube + website, it aims to create a new TV-like experience. + ''; + homepage = "https://flavio.tordini.org/minitube"; + license = licenses.gpl3Plus; + platforms = platforms.linux; + maintainers = with maintainers; [ ]; + }; +} diff --git a/infra/libkookie/nixpkgs/pkgs/applications/video/mjpg-streamer/default.nix b/infra/libkookie/nixpkgs/pkgs/applications/video/mjpg-streamer/default.nix new file mode 100644 index 000000000000..d1efae4a9244 --- /dev/null +++ b/infra/libkookie/nixpkgs/pkgs/applications/video/mjpg-streamer/default.nix @@ -0,0 +1,32 @@ +{ stdenv, fetchFromGitHub, cmake, libjpeg }: + +stdenv.mkDerivation { + pname = "mjpg-streamer"; + version = "unstable-2019-05-24"; + + src = fetchFromGitHub { + owner = "jacksonliam"; + repo = "mjpg-streamer"; + rev = "501f6362c5afddcfb41055f97ae484252c85c912"; + sha256 = "1cl159svfs1zzzrd3zgn4x7qy6751bvlnxfwf5hn5fmg4iszajw7"; + }; + + prePatch = '' + cd mjpg-streamer-experimental + ''; + + nativeBuildInputs = [ cmake ]; + buildInputs = [ libjpeg ]; + + postFixup = '' + patchelf --set-rpath "$(patchelf --print-rpath $out/bin/mjpg_streamer):$out/lib/mjpg-streamer" $out/bin/mjpg_streamer + ''; + + meta = with stdenv.lib; { + homepage = "https://github.com/jacksonliam/mjpg-streamer"; + description = "MJPG-streamer takes JPGs from Linux-UVC compatible webcams, filesystem or other input plugins and streams them as M-JPEG via HTTP to webbrowsers, VLC and other software"; + platforms = platforms.linux; + license = licenses.gpl2; + maintainers = with maintainers; [ gebner ]; + }; +} diff --git a/infra/libkookie/nixpkgs/pkgs/applications/video/mkclean/default.nix b/infra/libkookie/nixpkgs/pkgs/applications/video/mkclean/default.nix new file mode 100644 index 000000000000..6bb1bcc5d8a6 --- /dev/null +++ b/infra/libkookie/nixpkgs/pkgs/applications/video/mkclean/default.nix @@ -0,0 +1,37 @@ +{ dos2unix, fetchurl, stdenv }: + +stdenv.mkDerivation rec { + pname = "mkclean"; + version = "0.8.10"; + + hardeningDisable = [ "format" ]; + nativeBuildInputs = [ dos2unix ]; + + src = fetchurl { + url = "mirror://sourceforge/matroska/${pname}-${version}.tar.bz2"; + sha256 = "0zbpi4sm68zb20d53kbss93fv4aafhcmz7dsd0zdf01vj1r3wxwn"; + }; + + configurePhase = '' + dos2unix ./mkclean/configure.compiled + ./mkclean/configure.compiled + ''; + + buildPhase = '' + make -C mkclean + ''; + + installPhase = '' + mkdir -p $out/{bin,lib} + mv release/gcc_linux_*/*.* $out/lib + mv release/gcc_linux_*/* $out/bin + ''; + + meta = with stdenv.lib; { + description = "mkclean is a command line tool to clean and optimize Matroska (.mkv / .mka / .mks / .mk3d) and WebM (.webm / .weba) files that have already been muxed"; + homepage = "https://www.matroska.org"; + license = licenses.bsdOriginal; + maintainers = with maintainers; [ chrisaw ]; + platforms = [ "i686-linux" "x86_64-linux" ]; + }; +} diff --git a/infra/libkookie/nixpkgs/pkgs/applications/video/mkvtoolnix/default.nix b/infra/libkookie/nixpkgs/pkgs/applications/video/mkvtoolnix/default.nix new file mode 100644 index 000000000000..fa68c58f5af1 --- /dev/null +++ b/infra/libkookie/nixpkgs/pkgs/applications/video/mkvtoolnix/default.nix @@ -0,0 +1,68 @@ +{ stdenv, fetchFromGitLab, pkgconfig, autoconf, automake, libiconv, drake +, ruby, docbook_xsl, file, xdg_utils, gettext, expat, boost, libebml, zlib +, fmt, libmatroska, libogg, libvorbis, flac, libxslt, cmark, pcre2 +, withGUI ? true + , qtbase ? null + , qtmultimedia ? null + , wrapQtAppsHook ? null +}: + +assert withGUI -> qtbase != null && qtmultimedia != null && wrapQtAppsHook != null; + +with stdenv.lib; + +stdenv.mkDerivation rec { + pname = "mkvtoolnix"; + version = "50.0.0"; + + src = fetchFromGitLab { + owner = "mbunkus"; + repo = "mkvtoolnix"; + rev = "release-${version}"; + sha256 = "001i206lwxjyrp406svv4zpb1pliac3f4k5zhzgkjbk2dzj85pyd"; + }; + + nativeBuildInputs = [ + pkgconfig autoconf automake gettext + drake ruby docbook_xsl libxslt + ]; + + buildInputs = [ + expat file xdg_utils boost libebml zlib fmt + libmatroska libogg libvorbis flac cmark pcre2 + ] ++ optional stdenv.isDarwin libiconv + ++ optionals withGUI [ qtbase qtmultimedia wrapQtAppsHook ]; + + preConfigure = "./autogen.sh; patchShebangs ."; + buildPhase = "drake -j $NIX_BUILD_CORES"; + installPhase = "drake install -j $NIX_BUILD_CORES"; + + configureFlags = [ + "--enable-magic" + "--enable-optimization" + "--with-boost-libdir=${boost.out}/lib" + "--disable-debug" + "--disable-profiling" + "--disable-precompiled-headers" + "--disable-static-qt" + "--with-gettext" + "--with-docbook-xsl-root=${docbook_xsl}/share/xml/docbook-xsl" + (enableFeature withGUI "qt") + ]; + + CXXFLAGS = optional stdenv.cc.isClang "-std=c++17"; + + dontWrapQtApps = true; + postFixup = optionalString withGUI '' + wrapQtApp $out/bin/mkvtoolnix-gui + ''; + + meta = with stdenv.lib; { + description = "Cross-platform tools for Matroska"; + homepage = "http://www.bunkus.org/videotools/mkvtoolnix/"; + license = licenses.gpl2; + maintainers = with maintainers; [ codyopel rnhmjoj ]; + platforms = platforms.linux + ++ optionals (!withGUI) platforms.darwin; + }; +} diff --git a/infra/libkookie/nixpkgs/pkgs/applications/video/mlv-app/aarch64-flags.patch b/infra/libkookie/nixpkgs/pkgs/applications/video/mlv-app/aarch64-flags.patch new file mode 100644 index 000000000000..b8c025b3b3fc --- /dev/null +++ b/infra/libkookie/nixpkgs/pkgs/applications/video/mlv-app/aarch64-flags.patch @@ -0,0 +1,13 @@ +diff --git a/platform/qt/MLVApp.pro b/platform/qt/MLVApp.pro +index ebdc552..3e37573 100644 +--- a/platform/qt/MLVApp.pro ++++ b/platform/qt/MLVApp.pro +@@ -84,7 +84,7 @@ win32{ + + # Linux + linux-g++*{ +- QMAKE_CFLAGS += -O3 -fopenmp -msse4.1 -mssse3 -msse3 -msse2 -msse -std=c99 ++ QMAKE_CFLAGS += -O3 -fopenmp -march=native -std=c99 + QMAKE_CXXFLAGS += -fopenmp + LIBS += -lgomp + } diff --git a/infra/libkookie/nixpkgs/pkgs/applications/video/mlv-app/default.nix b/infra/libkookie/nixpkgs/pkgs/applications/video/mlv-app/default.nix new file mode 100644 index 000000000000..757759b1146f --- /dev/null +++ b/infra/libkookie/nixpkgs/pkgs/applications/video/mlv-app/default.nix @@ -0,0 +1,62 @@ +{ fetchFromGitHub +, lib +, mkDerivation +, qmake +, qtbase +, qtmultimedia +, stdenv +}: + +mkDerivation rec { + pname = "mlv-app"; + version = "1.11"; + + src = fetchFromGitHub { + owner = "ilia3101"; + repo = "MLV-App"; + rev = "QTv${version}"; + sha256 = "0s5sjdxi8a17ddvih4ara7mlb2xrc9xqx52jmhfaca6ng341gi4x"; + }; + + patches = if stdenv.isAarch64 then ./aarch64-flags.patch else null; + + installPhase = '' + runHook preInstall + install -Dm555 -t $out/bin mlvapp + install -Dm444 -t $out/share/applications mlvapp.desktop + install -Dm444 -t $out/share/icons/hicolor/512x512/apps RetinaIMG/MLVAPP.png + runHook postInstall + ''; + + qmakeFlags = [ "MLVApp.pro" ]; + + preConfigure = '' + export HOME=$TMPDIR + cd platform/qt/ + ''; + + buildInputs = [ + qtmultimedia + qtbase + ]; + + dontWrapQtApps = true; + + preFixup = '' + wrapQtApp "$out/bin/mlvapp" + ''; + + nativeBuildInputs = [ + qmake + ]; + + meta = with lib; { + description = "All in one MLV processing app that is pretty great"; + homepage = "https://mlv.app"; + license = licenses.gpl3; + maintainers = with maintainers; [ + kiwi + ]; + platforms = platforms.linux; + }; +} diff --git a/infra/libkookie/nixpkgs/pkgs/applications/video/molotov/default.nix b/infra/libkookie/nixpkgs/pkgs/applications/video/molotov/default.nix new file mode 100644 index 000000000000..c4ee96cc2469 --- /dev/null +++ b/infra/libkookie/nixpkgs/pkgs/applications/video/molotov/default.nix @@ -0,0 +1,31 @@ +{ appimageTools, lib, fetchurl }: + +let + pname = "molotov"; + version = "4.2.2"; + name = "${pname}-${version}"; + src = fetchurl { + url = "http://desktop-auto-upgrade.molotov.tv/linux/${version}/molotov.AppImage"; + sha256 = "00p8srf4yswbihlsi3s7kfkav02h902yvrq99wys11is63n01x8z"; + }; + appimageContents = appimageTools.extractType2 { inherit name src; }; +in +appimageTools.wrapType2 { + inherit name src; + extraInstallCommands = '' + mv $out/bin/${name} $out/bin/${pname} + install -m 444 -D \ + ${appimageContents}/${pname}.desktop \ + $out/share/applications/${pname}.desktop + substituteInPlace $out/share/applications/${pname}.desktop \ + --replace 'Exec=AppRun' 'Exec=${pname}' + cp -r ${appimageContents}/usr/share/icons $out/share + ''; + meta = with lib; { + description = "French TV service"; + homepage = "https://www.molotov.tv/"; + license = with licenses; [ unfree ]; + maintainers = with maintainers; [ apeyroux freezeboy ]; + platforms = [ "x86_64-linux" ]; + }; +} diff --git a/infra/libkookie/nixpkgs/pkgs/applications/video/motion/default.nix b/infra/libkookie/nixpkgs/pkgs/applications/video/motion/default.nix new file mode 100644 index 000000000000..7f101c41edbd --- /dev/null +++ b/infra/libkookie/nixpkgs/pkgs/applications/video/motion/default.nix @@ -0,0 +1,26 @@ +{ stdenv, fetchFromGitHub, autoreconfHook, pkgconfig +, ffmpeg, libjpeg, libmicrohttpd }: + +stdenv.mkDerivation rec { + pname = "motion"; + version = "4.3.1"; + + src = fetchFromGitHub { + owner = "Motion-Project"; + repo = "motion"; + rev = "release-${version}"; + sha256 = "01yy4pdgd4wa97bpw27zn5zik9iz719m1jiwkk9lb7m2a2951dhc"; + }; + + nativeBuildInputs = [ autoreconfHook pkgconfig ]; + + buildInputs = [ ffmpeg libjpeg libmicrohttpd ]; + + meta = with stdenv.lib; { + description = "Monitors the video signal from cameras"; + homepage = "https://motion-project.github.io/"; + license = licenses.gpl2Plus; + maintainers = with maintainers; [ puffnfresh veprbl ]; + platforms = platforms.unix; + }; +} diff --git a/infra/libkookie/nixpkgs/pkgs/applications/video/mpc-qt/default.nix b/infra/libkookie/nixpkgs/pkgs/applications/video/mpc-qt/default.nix new file mode 100644 index 000000000000..07b4c79a5b3d --- /dev/null +++ b/infra/libkookie/nixpkgs/pkgs/applications/video/mpc-qt/default.nix @@ -0,0 +1,27 @@ +{ stdenv, mkDerivation, fetchFromGitLab, pkgconfig, qmake, qtx11extras, qttools, mpv }: + +mkDerivation rec { + pname = "mpc-qt"; + version = "2019-06-09"; + + src = fetchFromGitLab { + owner = "mpc-qt"; + repo = "mpc-qt"; + rev = "2abe6e7fc643068d50522468fe75d614861555ad"; + sha256 = "1cis8dl9pm91mpnp696zvwsfp96gkwr8jgs45anbwd7ldw78w4x5"; + }; + + nativeBuildInputs = [ pkgconfig qmake qttools ]; + + buildInputs = [ mpv qtx11extras ]; + + qmakeFlags = [ "QMAKE_LUPDATE=${qttools.dev}/bin/lupdate" ]; + + meta = with stdenv.lib; { + description = "Media Player Classic Qute Theater"; + homepage = "https://gitlab.com/mpc-qt/mpc-qt"; + license = licenses.gpl2; + platforms = platforms.unix; + maintainers = with maintainers; [ romildo ]; + }; +} diff --git a/infra/libkookie/nixpkgs/pkgs/applications/video/mplayer/default.nix b/infra/libkookie/nixpkgs/pkgs/applications/video/mplayer/default.nix new file mode 100644 index 000000000000..f00b5aabf977 --- /dev/null +++ b/infra/libkookie/nixpkgs/pkgs/applications/video/mplayer/default.nix @@ -0,0 +1,226 @@ +{ config, stdenv, fetchurl, pkgconfig, freetype, yasm, ffmpeg_3 +, aalibSupport ? true, aalib ? null +, fontconfigSupport ? true, fontconfig ? null, freefont_ttf ? null +, fribidiSupport ? true, fribidi ? null +, x11Support ? true, libX11 ? null, libXext ? null, libGLU, libGL ? null +, xineramaSupport ? true, libXinerama ? null +, xvSupport ? true, libXv ? null +, alsaSupport ? stdenv.isLinux, alsaLib ? null +, screenSaverSupport ? true, libXScrnSaver ? null +, vdpauSupport ? false, libvdpau ? null +, cddaSupport ? !stdenv.isDarwin, cdparanoia ? null +, dvdnavSupport ? !stdenv.isDarwin, libdvdnav ? null +, dvdreadSupport ? true, libdvdread ? null +, bluraySupport ? true, libbluray ? null +, amrSupport ? false, amrnb ? null, amrwb ? null +, cacaSupport ? true, libcaca ? null +, lameSupport ? true, lame ? null +, speexSupport ? true, speex ? null +, theoraSupport ? true, libtheora ? null +, x264Support ? false, x264 ? null +, jackaudioSupport ? false, libjack2 ? null +, pulseSupport ? config.pulseaudio or false, libpulseaudio ? null +, bs2bSupport ? false, libbs2b ? null +# For screenshots +, libpngSupport ? true, libpng ? null +, libjpegSupport ? true, libjpeg ? null +, useUnfreeCodecs ? false +, darwin ? null +, buildPackages +}: + +assert fontconfigSupport -> (fontconfig != null); +assert (!fontconfigSupport) -> (freefont_ttf != null); +assert fribidiSupport -> (fribidi != null); +assert x11Support -> (libX11 != null && libXext != null && libGLU != null && libGL != null); +assert xineramaSupport -> (libXinerama != null && x11Support); +assert xvSupport -> (libXv != null && x11Support); +assert alsaSupport -> alsaLib != null; +assert screenSaverSupport -> libXScrnSaver != null; +assert vdpauSupport -> libvdpau != null; +assert cddaSupport -> cdparanoia != null; +assert dvdnavSupport -> libdvdnav != null; +assert dvdreadSupport -> libdvdread != null; +assert bluraySupport -> libbluray != null; +assert amrSupport -> (amrnb != null && amrwb != null); +assert cacaSupport -> libcaca != null; +assert lameSupport -> lame != null; +assert speexSupport -> speex != null; +assert theoraSupport -> libtheora != null; +assert x264Support -> x264 != null; +assert jackaudioSupport -> libjack2 != null; +assert pulseSupport -> libpulseaudio != null; +assert bs2bSupport -> libbs2b != null; +assert libpngSupport -> libpng != null; +assert libjpegSupport -> libjpeg != null; + +let + + codecs_src = + let + dir = "http://www.mplayerhq.hu/MPlayer/releases/codecs/"; + version = "20071007"; + in + if stdenv.hostPlatform.system == "i686-linux" then fetchurl { + url = "${dir}/essential-${version}.tar.bz2"; + sha256 = "18vls12n12rjw0mzw4pkp9vpcfmd1c21rzha19d7zil4hn7fs2ic"; + } else if stdenv.hostPlatform.system == "x86_64-linux" then fetchurl { + url = "${dir}/essential-amd64-${version}.tar.bz2"; + sha256 = "13xf5b92w1ra5hw00ck151lypbmnylrnznq9hhb0sj36z5wz290x"; + } else if stdenv.hostPlatform.system == "powerpc-linux" then fetchurl { + url = "${dir}/essential-ppc-${version}.tar.bz2"; + sha256 = "18mlj8dp4wnz42xbhdk1jlz2ygra6fbln9wyrcyvynxh96g1871z"; + } else null; + + codecs = if codecs_src != null then stdenv.mkDerivation { + pname = "MPlayer-codecs-essential"; + + src = codecs_src; + + installPhase = '' + mkdir $out + cp -prv * $out + ''; + + meta.license = stdenv.lib.licenses.unfree; + } else null; + + crossBuild = stdenv.hostPlatform != stdenv.buildPlatform; + +in + +stdenv.mkDerivation rec { + pname = "mplayer"; + version = "1.4"; + + src = fetchurl { + url = "http://www.mplayerhq.hu/MPlayer/releases/MPlayer-${version}.tar.xz"; + sha256 = "0j5mflr0wnklxsvnpmxvk704hscyn2785hvvihj2i3a7b3anwnc2"; + }; + + prePatch = '' + sed -i /^_install_strip/d configure + + rm -rf ffmpeg + ''; + + depsBuildBuild = [ buildPackages.stdenv.cc ]; + nativeBuildInputs = [ pkgconfig yasm ]; + buildInputs = with stdenv.lib; + [ freetype ffmpeg_3 ] + ++ optional aalibSupport aalib + ++ optional fontconfigSupport fontconfig + ++ optional fribidiSupport fribidi + ++ optionals x11Support [ libX11 libXext libGLU libGL ] + ++ optional alsaSupport alsaLib + ++ optional xvSupport libXv + ++ optional theoraSupport libtheora + ++ optional cacaSupport libcaca + ++ optional xineramaSupport libXinerama + ++ optional dvdnavSupport libdvdnav + ++ optional dvdreadSupport libdvdread + ++ optional bluraySupport libbluray + ++ optional cddaSupport cdparanoia + ++ optional jackaudioSupport libjack2 + ++ optionals amrSupport [ amrnb amrwb ] + ++ optional x264Support x264 + ++ optional pulseSupport libpulseaudio + ++ optional screenSaverSupport libXScrnSaver + ++ optional lameSupport lame + ++ optional vdpauSupport libvdpau + ++ optional speexSupport speex + ++ optional libpngSupport libpng + ++ optional libjpegSupport libjpeg + ++ optional bs2bSupport libbs2b + ++ (with darwin.apple_sdk.frameworks; optionals stdenv.isDarwin [ Cocoa OpenGL ]) + ; + + configurePlatforms = [ ]; + configureFlags = with stdenv.lib; [ + "--enable-freetype" + (if fontconfigSupport then "--enable-fontconfig" else "--disable-fontconfig") + (if x11Support then "--enable-x11 --enable-gl" else "--disable-x11 --disable-gl") + (if xineramaSupport then "--enable-xinerama" else "--disable-xinerama") + (if xvSupport then "--enable-xv" else "--disable-xv") + (if alsaSupport then "--enable-alsa" else "--disable-alsa") + (if screenSaverSupport then "--enable-xss" else "--disable-xss") + (if vdpauSupport then "--enable-vdpau" else "--disable-vdpau") + (if cddaSupport then "--enable-cdparanoia" else "--disable-cdparanoia") + (if dvdnavSupport then "--enable-dvdnav" else "--disable-dvdnav") + (if bluraySupport then "--enable-bluray" else "--disable-bluray") + (if amrSupport then "--enable-libopencore_amrnb" else "--disable-libopencore_amrnb") + (if cacaSupport then "--enable-caca" else "--disable-caca") + (if lameSupport then "--enable-mp3lame --disable-mp3lame-lavc" else "--disable-mp3lame --enable-mp3lame-lavc") + (if speexSupport then "--enable-speex" else "--disable-speex") + (if theoraSupport then "--enable-theora" else "--disable-theora") + (if x264Support then "--enable-x264 --disable-x264-lavc" else "--disable-x264 --enable-x264-lavc") + (if jackaudioSupport then "" else "--disable-jack") + (if pulseSupport then "--enable-pulse" else "--disable-pulse") + "--disable-xanim" + "--disable-ivtv" + "--disable-xvid --disable-xvid-lavc" + "--disable-ossaudio" + "--disable-ffmpeg_a" + "--yasm=${buildPackages.yasm}/bin/yasm" + # Note, the `target` vs `host` confusion is intensional. + "--target=${stdenv.hostPlatform.config}" + ] ++ optional + (useUnfreeCodecs && codecs != null && !crossBuild) + "--codecsdir=${codecs}" + ++ optional + ((stdenv.hostPlatform.isi686 || stdenv.hostPlatform.isx86_64) && !crossBuild) + "--enable-runtime-cpudetection" + ++ optional fribidiSupport "--enable-fribidi" + ++ optional stdenv.isLinux "--enable-vidix" + ++ optional stdenv.isLinux "--enable-fbdev" + ++ optionals (crossBuild) [ + "--enable-cross-compile" + "--disable-vidix-pcidb" + "--with-vidix-drivers=no" + ]; + + preConfigure = '' + configureFlagsArray+=( + "--cc=$CC" + "--host-cc=$CC_FOR_BUILD" + "--as=$AS" + "--nm=$NM" + "--ar=$AR" + "--ranlib=$RANLIB" + "--windres=$WINDRES" + ) + ''; + + postConfigure = '' + echo CONFIG_MPEGAUDIODSP=yes >> config.mak + ''; + + NIX_LDFLAGS = with stdenv.lib; toString ( + optional fontconfigSupport "-lfontconfig" + ++ optional fribidiSupport "-lfribidi" + ++ optionals x11Support [ "-lX11" "-lXext" ] + ++ [ "-lfreetype" ] + ); + + installTargets = [ "install" ] ++ stdenv.lib.optional x11Support "install-gui"; + + enableParallelBuilding = true; + + # Provide a reasonable standard font when not using fontconfig. Maybe we should symlink here. + postInstall = stdenv.lib.optionalString (!fontconfigSupport) + '' + mkdir -p $out/share/mplayer + cp ${freefont_ttf}/share/fonts/truetype/FreeSans.ttf $out/share/mplayer/subfont.ttf + if test -f $out/share/applications/mplayer.desktop ; then + echo "NoDisplay=True" >> $out/share/applications/mplayer.desktop + fi + ''; + + meta = { + description = "A movie player that supports many video formats"; + homepage = "http://mplayerhq.hu"; + license = "GPL"; + maintainers = [ stdenv.lib.maintainers.eelco ]; + platforms = [ "i686-linux" "x86_64-linux" "x86_64-darwin" ]; + }; +} diff --git a/infra/libkookie/nixpkgs/pkgs/applications/video/mpv/default.nix b/infra/libkookie/nixpkgs/pkgs/applications/video/mpv/default.nix new file mode 100644 index 000000000000..4b7d78303b2f --- /dev/null +++ b/infra/libkookie/nixpkgs/pkgs/applications/video/mpv/default.nix @@ -0,0 +1,238 @@ +{ config, stdenv, fetchurl, fetchFromGitHub, fetchpatch +, addOpenGLRunpath, docutils, perl, pkgconfig, python3, wafHook, which +, ffmpeg, freefont_ttf, freetype, libass, libpthreadstubs, mujs +, nv-codec-headers, lua, libuchardet, libiconv ? null +, CoreFoundation, Cocoa, CoreAudio, MediaPlayer + +, waylandSupport ? stdenv.isLinux + , wayland ? null + , wayland-protocols ? null + , libxkbcommon ? null + +, x11Support ? stdenv.isLinux + , libGLU, libGL ? null + , libX11 ? null + , libXext ? null + , libXxf86vm ? null + , libXrandr ? null + +, cddaSupport ? false + , libcdio ? null + , libcdio-paranoia ? null + +, vulkanSupport ? stdenv.isLinux + , libplacebo ? null + , shaderc ? null + , vulkan-headers ? null + , vulkan-loader ? null + +, drmSupport ? stdenv.isLinux + , libdrm ? null + , mesa ? null + +, alsaSupport ? stdenv.isLinux, alsaLib ? null +, bluraySupport ? true, libbluray ? null +, bs2bSupport ? true, libbs2b ? null +, cacaSupport ? true, libcaca ? null +, cmsSupport ? true, lcms2 ? null +, dvdnavSupport ? stdenv.isLinux, libdvdnav ? null +, libpngSupport ? true, libpng ? null +, pulseSupport ? config.pulseaudio or stdenv.isLinux, libpulseaudio ? null +, rubberbandSupport ? stdenv.isLinux, rubberband ? null +# NOTE: samba support should be removed on the next mpv release, see also: +# https://github.com/NixOS/nixpkgs/pull/89145#issuecomment-636424362 +# Please remove this line on the next mpv release. +, sambaSupport ? false, samba ? null +, screenSaverSupport ? true, libXScrnSaver ? null +, sdl2Support ? true, SDL2 ? null +, sndioSupport ? true, sndio ? null +, speexSupport ? true, speex ? null +, swiftSupport ? false, swift ? null +, theoraSupport ? true, libtheora ? null +, vaapiSupport ? stdenv.isLinux, libva ? null +, vdpauSupport ? true, libvdpau ? null +, xineramaSupport ? stdenv.isLinux, libXinerama ? null +, xvSupport ? stdenv.isLinux, libXv ? null +, zimgSupport ? true, zimg ? null +, archiveSupport ? true, libarchive ? null +, jackaudioSupport ? false, libjack2 ? null +, openalSupport ? true, openalSoft ? null +, vapoursynthSupport ? false, vapoursynth ? null +}: + +with stdenv.lib; + +let + available = x: x != null; +in +assert alsaSupport -> available alsaLib; +assert archiveSupport -> available libarchive; +assert bluraySupport -> available libbluray; +assert bs2bSupport -> available libbs2b; +assert cacaSupport -> available libcaca; +assert cddaSupport -> all available [ libcdio libcdio-paranoia ]; +assert cmsSupport -> available lcms2; +assert drmSupport -> all available [ libdrm mesa ]; +assert dvdnavSupport -> available libdvdnav; +assert jackaudioSupport -> available libjack2; +assert libpngSupport -> available libpng; +assert openalSupport -> available openalSoft; +assert pulseSupport -> available libpulseaudio; +assert rubberbandSupport -> available rubberband; +assert screenSaverSupport -> available libXScrnSaver; +assert sambaSupport -> available samba; +assert sdl2Support -> available SDL2; +assert sndioSupport -> available sndio; +assert speexSupport -> available speex; +assert theoraSupport -> available libtheora; +assert vaapiSupport -> available libva; +assert vapoursynthSupport -> available vapoursynth; +assert vdpauSupport -> available libvdpau; +assert vulkanSupport -> all available [ libplacebo shaderc vulkan-headers vulkan-loader ]; +assert waylandSupport -> all available [ wayland wayland-protocols libxkbcommon ]; +assert x11Support -> all available [ libGLU libGL libX11 libXext libXxf86vm libXrandr ]; +assert xineramaSupport -> x11Support && available libXinerama; +assert xvSupport -> x11Support && available libXv; +assert zimgSupport -> available zimg; + +let + luaEnv = lua.withPackages (ps: with ps; [ luasocket ]); + +in stdenv.mkDerivation rec { + pname = "mpv"; + version = "0.32.0"; + + src = fetchFromGitHub { + owner = "mpv-player"; + repo = "mpv"; + rev = "v${version}"; + sha256 = "0kmy1q0hp87vq4rpv7py04x8bpg1wmlzaibavmkf713jqp6qy596"; + }; + + postPatch = '' + patchShebangs ./TOOLS/ + ''; + + passthru = { + inherit + # The wrapper consults luaEnv and lua.version + luaEnv + lua + # In the wrapper, we want to reference vapoursynth which has the + # `python3` passthru attribute (which has the `sitePrefix` + # attribute). This way we'll be sure that in the wrapper we'll + # use the same python3.sitePrefix used to build vapoursynth. + vapoursynthSupport + vapoursynth + ; + }; + + NIX_LDFLAGS = optionalString x11Support "-lX11 -lXext " + + optionalString stdenv.isDarwin "-framework CoreFoundation"; + + wafConfigureFlags = [ + "--enable-libmpv-shared" + "--enable-manpage-build" + "--disable-libmpv-static" + "--disable-static-build" + "--disable-build-date" # Purity + (enableFeature archiveSupport "libarchive") + (enableFeature cddaSupport "cdda") + (enableFeature dvdnavSupport "dvdnav") + (enableFeature openalSupport "openal") + (enableFeature sambaSupport "libsmbclient") + (enableFeature sdl2Support "sdl2") + (enableFeature sndioSupport "sndio") + (enableFeature vaapiSupport "vaapi") + (enableFeature waylandSupport "wayland") + (enableFeature stdenv.isLinux "dvbin") + ] # Disable whilst Swift isn't supported + ++ stdenv.lib.optional (!swiftSupport) "--disable-macos-cocoa-cb"; + + nativeBuildInputs = [ + addOpenGLRunpath docutils perl pkgconfig python3 wafHook which + ] + ++ optional swiftSupport swift; + + buildInputs = [ + ffmpeg freetype libass libpthreadstubs + luaEnv libuchardet mujs + ] ++ optional alsaSupport alsaLib + ++ optional archiveSupport libarchive + ++ optional bluraySupport libbluray + ++ optional bs2bSupport libbs2b + ++ optional cacaSupport libcaca + ++ optional cmsSupport lcms2 + ++ optional jackaudioSupport libjack2 + ++ optional libpngSupport libpng + ++ optional openalSupport openalSoft + ++ optional pulseSupport libpulseaudio + ++ optional rubberbandSupport rubberband + ++ optional sambaSupport samba + ++ optional screenSaverSupport libXScrnSaver + ++ optional sdl2Support SDL2 + ++ optional sndioSupport sndio + ++ optional speexSupport speex + ++ optional theoraSupport libtheora + ++ optional vaapiSupport libva + ++ optional vapoursynthSupport vapoursynth + ++ optional vdpauSupport libvdpau + ++ optional xineramaSupport libXinerama + ++ optional xvSupport libXv + ++ optional zimgSupport zimg + ++ optional stdenv.isDarwin libiconv + ++ optional stdenv.isLinux nv-codec-headers + ++ optionals cddaSupport [ libcdio libcdio-paranoia ] + ++ optionals drmSupport [ libdrm mesa ] + ++ optionals dvdnavSupport [ libdvdnav libdvdnav.libdvdread ] + ++ optionals waylandSupport [ wayland wayland-protocols libxkbcommon ] + ++ optionals x11Support [ libX11 libXext libGLU libGL libXxf86vm libXrandr ] + ++ optionals vulkanSupport [ libplacebo shaderc vulkan-headers vulkan-loader ] + ++ optionals stdenv.isDarwin [ CoreFoundation Cocoa CoreAudio MediaPlayer ]; + + enableParallelBuilding = true; + + postBuild = optionalString stdenv.isDarwin '' + python3 TOOLS/osxbundle.py -s build/mpv + ''; + + patches = stdenv.lib.optionals stdenv.isDarwin [ + # Fix cocoa backend. Remove with the next release + (fetchpatch { + url = "https://github.com/mpv-player/mpv/commit/188169854313b99d01da8f69fe129f0a487eb7c4.patch"; + sha256 = "062sz4666prb2wg1rn5q8brqkzlq6lxn8sxic78a8lb0125c01f7"; + }) + ]; + + postInstall = '' + # Use a standard font + mkdir -p $out/share/mpv + ln -s ${freefont_ttf}/share/fonts/truetype/FreeSans.ttf $out/share/mpv/subfont.ttf + + cp TOOLS/mpv_identify.sh $out/bin + cp TOOLS/umpv $out/bin + '' + optionalString stdenv.isDarwin '' + mkdir -p $out/Applications + cp -r build/mpv.app $out/Applications + ''; + + # Set RUNPATH so that libcuda in /run/opengl-driver(-32)/lib can be found. + # See the explanation in addOpenGLRunpath. + postFixup = optionalString stdenv.isLinux '' + addOpenGLRunpath $out/bin/mpv + ''; + + meta = with stdenv.lib; { + description = "A media player that supports many video formats (MPlayer and mplayer2 fork)"; + homepage = "https://mpv.io"; + license = licenses.gpl2Plus; + maintainers = with maintainers; [ AndersonTorres fpletz globin ma27 tadeokondrak ]; + platforms = platforms.darwin ++ platforms.linux; + + longDescription = '' + mpv is a free and open-source general-purpose video player, + based on the MPlayer and mplayer2 projects, with great + improvements above both. + ''; + }; +} diff --git a/infra/libkookie/nixpkgs/pkgs/applications/video/mpv/scripts/autoload.nix b/infra/libkookie/nixpkgs/pkgs/applications/video/mpv/scripts/autoload.nix new file mode 100644 index 000000000000..f64e702f21cf --- /dev/null +++ b/infra/libkookie/nixpkgs/pkgs/applications/video/mpv/scripts/autoload.nix @@ -0,0 +1,20 @@ +{ stdenv, fetchurl, mpv-unwrapped, lib }: + +stdenv.mkDerivation rec { + pname = "mpv-autoload"; + version = mpv-unwrapped.version; + src = "${mpv-unwrapped.src.outPath}/TOOLS/lua/autoload.lua"; + dontBuild = true; + dontUnpack = true; + installPhase = '' + install -Dm644 ${src} $out/share/mpv/scripts/autoload.lua + ''; + passthru.scriptName = "autoload.lua"; + + meta = { + description = "This script automatically loads playlist entries before and after the the currently played file"; + homepage = "https://github.com/mpv-player/mpv/blob/master/TOOLS/lua/autoload.lua"; + maintainers = [ lib.maintainers.dawidsowa ]; + license = lib.licenses.gpl2Plus; + }; +} diff --git a/infra/libkookie/nixpkgs/pkgs/applications/video/mpv/scripts/convert.nix b/infra/libkookie/nixpkgs/pkgs/applications/video/mpv/scripts/convert.nix new file mode 100644 index 000000000000..ce0695203328 --- /dev/null +++ b/infra/libkookie/nixpkgs/pkgs/applications/video/mpv/scripts/convert.nix @@ -0,0 +1,43 @@ +{ stdenv, fetchgit, lib +, yad, mkvtoolnix-cli, libnotify }: + +stdenv.mkDerivation { + pname = "mpv-convert-script"; + version = "2016-03-18"; + src = fetchgit { + url = "https://gist.github.com/Zehkul/25ea7ae77b30af959be0"; + rev = "f95cee43e390e843a47e8ec9d1711a12a8cd343d"; + sha256 = "13m7l4sy2r8jv2sfrb3vvqvnim4a9ilnv28q5drlg09v298z3mck"; + }; + + patches = [ ./convert.patch ]; + + postPatch = + let + t = k: v: '' 'local ${k} = "${v}"' ''; + subs = var: orig: repl: "--replace " + t var orig + t var repl; + in '' + substituteInPlace convert_script.lua \ + ${subs "NOTIFY_CMD" "notify-send" "${libnotify}/bin/notify-send"} \ + ${subs "YAD_CMD" "yad" "${yad}/bin/yad"} \ + ${subs "MKVMERGE_CMD" "mkvmerge" "${mkvtoolnix-cli}/bin/mkvmerge"} + ''; + + dontBuild = true; + installPhase = '' + mkdir -p $out/share/mpv/scripts + cp convert_script.lua $out/share/mpv/scripts + ''; + passthru.scriptName = "convert_script.lua"; + + meta = { + description = "Convert parts of a video while you are watching it in mpv"; + homepage = "https://gist.github.com/Zehkul/25ea7ae77b30af959be0"; + maintainers = [ lib.maintainers.Profpatsch ]; + longDescription = '' + When this script is loaded into mpv, you can hit Alt+W to mark the beginning + and Alt+W again to mark the end of the clip. Then a settings window opens. + ''; + }; +} + diff --git a/infra/libkookie/nixpkgs/pkgs/applications/video/mpv/scripts/convert.patch b/infra/libkookie/nixpkgs/pkgs/applications/video/mpv/scripts/convert.patch new file mode 100644 index 000000000000..82171210b415 --- /dev/null +++ b/infra/libkookie/nixpkgs/pkgs/applications/video/mpv/scripts/convert.patch @@ -0,0 +1,67 @@ +--- convert/convert_script.lua 2016-03-18 19:30:49.675401969 +0100 ++++ convert_script.lua 2016-03-19 01:18:00.801897043 +0100 +@@ -3,6 +3,10 @@ + local opt = require 'mp.options' + local utils = require 'mp.utils' + ++local NOTIFY_CMD = "notify-send" ++local YAD_CMD = "yad" ++local MKVMERGE_CMD = "mkvmerge" ++ + -- default options, convert_script.conf is read + local options = { + bitrate_multiplier = 0.975, -- to make sure the file won’t go over the target file size, set it to 1 if you don’t care +@@ -247,12 +247,12 @@ + if string.len(vf) > 0 then + vf = vf .. "," + end +- local sub_file_table = mp.get_property_native("options/sub-file") ++ local sub_file_table = mp.get_property_native("options/sub-files") + local sub_file = "" + for index, param in pairs(sub_file_table) do + sub_file = sub_file .. " --sub-file='" .. string.gsub(tostring(param), "'", "'\\''") .. "'" + end +- local audio_file_table = mp.get_property_native("options/audio-file") ++ local audio_file_table = mp.get_property_native("options/audio-files") + local audio_file = "" + for index, param in pairs(audio_file_table) do + audio_file = audio_file .. " --audio-file='" .. string.gsub(tostring(param), "'", "'\\''") .. "'" +@@ -354,9 +358,9 @@ + if ovc == "gif" then + full_command = full_command .. ' --vf-add=lavfi=graph=\\"framestep=' .. framestep .. '\\" && convert ' + .. tmpfolder .. '/*.png -set delay ' .. delay .. ' -loop 0 -fuzz ' .. fuzz .. '% ' .. dither .. ' -layers optimize ' +- .. full_output_path .. ' && rm -rf ' .. tmpfolder .. ' && notify-send "Gif done") & disown' ++ .. full_output_path .. ' && rm -rf ' .. tmpfolder .. ' && ' .. NOTIFY_CMD .. ' "Gif done") & disown' + else +- full_command = full_command .. ' && notify-send "Encoding done"; mkvpropedit ' ++ full_command = full_command .. ' && ' .. NOTIFY_CMD .. ' "Encoding done"; mkvpropedit ' + .. full_output_path .. ' -s title="' .. metadata_title .. '") & disown' + end + +@@ -409,7 +413,7 @@ + sep = ",+" + + if enc then +- local command = "mkvmerge '" .. video .. "' " .. mkvmerge_parts .. " -o " .. full_output_path ++ local command = MKVMERGE_CMD .. " '" .. video .. "' " .. mkvmerge_parts .. " -o " .. full_output_path + msg.info(command) + os.execute(command) + clear() +@@ -508,7 +512,7 @@ + end + + +- local yad_command = [[LC_NUMERIC=C yad --title="Convert Script" --center --form --fixed --always-print-result \ ++ local yad_command = [[LC_NUMERIC=C ]] .. YAD_CMD .. [[ --title="Convert Script" --center --form --fixed --always-print-result \ + --name "convert script" --class "Convert Script" --field="Resize to height:NUM" "]] .. scale_sav --yad_table 1 + .. [[" --field="Resize to width instead:CHK" ]] .. resize_to_width_instead .. " " --yad_table 2 + if options.legacy_yad then +@@ -543,7 +547,7 @@ + yad_command = yad_command .. [[ --button="Crop:1" --button="gtk-cancel:2" --button="gtk-ok:0"; ret=$? && echo $ret]] + + if gif_dialog then +- yad_command = [[echo $(LC_NUMERIC=C yad --title="Gif settings" --name "convert script" --class "Convert Script" \ ++ yad_command = [[echo $(LC_NUMERIC=C ]] .. YAD_CMD .. [[ --title="Gif settings" --name "convert script" --class "Convert Script" \ + --center --form --always-print-result --separator="…" \ + --field="Fuzz Factor:NUM" '1!0..100!0.5!1' \ + --field="Framestep:NUM" '3!1..3!1' \ diff --git a/infra/libkookie/nixpkgs/pkgs/applications/video/mpv/scripts/mpris.nix b/infra/libkookie/nixpkgs/pkgs/applications/video/mpv/scripts/mpris.nix new file mode 100644 index 000000000000..f19db554d045 --- /dev/null +++ b/infra/libkookie/nixpkgs/pkgs/applications/video/mpv/scripts/mpris.nix @@ -0,0 +1,39 @@ +{ stdenv, fetchpatch, fetchFromGitHub, pkgconfig, glib, mpv }: + +stdenv.mkDerivation rec { + pname = "mpv-mpris"; + version = "0.5"; + + src = fetchFromGitHub { + owner = "hoyon"; + repo = "mpv-mpris"; + rev = version; + sha256 = "07p6li5z38pkfd40029ag2jqx917vyl3ng5p2i4v5a0af14slcnk"; + }; + patches = [ + # Enables to "make SCRIPTS_DIR=... install" https://github.com/hoyon/mpv-mpris/pull/38 + (fetchpatch { + url = "https://github.com/hoyon/mpv-mpris/commit/f1482350868bf20e4575f923943ec998469b255e.patch"; + sha256 = "1lqy867wpmj6hv3zgi6g679a7x3dv5skpw24hwd05b28galnyd4l"; + }) + ]; + + nativeBuildInputs = [ pkgconfig ]; + + buildInputs = [ glib mpv ]; + + installFlags = [ "SCRIPTS_DIR=$(out)/share/mpv/scripts" ]; + + # Otherwise, the shared object isn't `strip`ped. See: + # https://discourse.nixos.org/t/debug-why-a-derivation-has-a-reference-to-gcc/7009 + stripDebugList = [ "share/mpv/scripts" ]; + passthru.scriptName = "mpris.so"; + + meta = with stdenv.lib; { + description = "MPRIS plugin for mpv"; + homepage = "https://github.com/hoyon/mpv-mpris"; + license = licenses.mit; + platforms = platforms.linux; + maintainers = with maintainers; [ jfrankenau ]; + }; +} diff --git a/infra/libkookie/nixpkgs/pkgs/applications/video/mpv/scripts/simple-mpv-webui.nix b/infra/libkookie/nixpkgs/pkgs/applications/video/mpv/scripts/simple-mpv-webui.nix new file mode 100644 index 000000000000..d51434e241c9 --- /dev/null +++ b/infra/libkookie/nixpkgs/pkgs/applications/video/mpv/scripts/simple-mpv-webui.nix @@ -0,0 +1,33 @@ +{ stdenv +, fetchFromGitHub }: +stdenv.mkDerivation rec { + pname = "simple-mpv-ui"; + version = "1.0.0"; + + src = fetchFromGitHub { + owner = "open-dynaMIX"; + repo = "simple-mpv-webui"; + rev = "v${version}"; + sha256 = "1glrnnl1slcl0ri0zs4j64lc9aa52p9ffh6av0d81fk95nm98917"; + }; + + dontBuild = true; + installPhase = '' + mkdir -p $out/share/mpv/scripts + cp -r webui.lua webui-page $out/share/mpv/scripts/ + ''; + passthru.scriptName = "webui.lua"; + + meta = with stdenv.lib; { + description = "A web based user interface with controls for the mpv mediaplayer"; + homepage = "https://github.com/open-dynaMIX/simple-mpv-webui"; + maintainers = [ maintainers.cript0nauta ]; + longDescription = '' + You can access the webui when accessing http://127.0.0.1:8080 or + http://[::1]:8080 in your webbrowser. By default it listens on + 0.0.0.0:8080 and [::0]:8080 + ''; + license = licenses.mit; + }; +} + diff --git a/infra/libkookie/nixpkgs/pkgs/applications/video/mpv/scripts/sponsorblock.nix b/infra/libkookie/nixpkgs/pkgs/applications/video/mpv/scripts/sponsorblock.nix new file mode 100644 index 000000000000..8213e514d2ba --- /dev/null +++ b/infra/libkookie/nixpkgs/pkgs/applications/video/mpv/scripts/sponsorblock.nix @@ -0,0 +1,51 @@ +{ stdenv, fetchFromGitHub, fetchpatch, python3 }: + +# Usage: `pkgs.mpv.override { scripts = [ pkgs.mpvScripts.sponsorblock ]; }` +stdenv.mkDerivation { + pname = "mpv_sponsorblock"; + version = "unstable-2020-07-05"; + + src = fetchFromGitHub { + owner = "po5"; + repo = "mpv_sponsorblock"; + rev = "f71e49e0531350339134502e095721fdc66eac20"; + sha256 = "1fr4cagzs26ygxyk8dxqvjw4n85fzv6is6cb1jhr2qnsjg6pa0p8"; + }; + + dontBuild = true; + + patches = [ + # Use XDG_DATA_HOME and XDG_CACHE_HOME if defined for UID and DB + # Necessary to avoid sponsorblock to write in the nix store at runtime. + # https://github.com/po5/mpv_sponsorblock/pull/17 + (fetchpatch { + url = "https://github.com/po5/mpv_sponsorblock/pull/17/commits/e65b360a7d03a3430b4829e457a6670b2f617b09.patch"; + sha256 = "00wv0pvbz0dz2ibka66zhl2jk0pil4pyv6ipjfz37i81q6szyhs5"; + }) + (fetchpatch { + url = "https://github.com/po5/mpv_sponsorblock/pull/17/commits/3832304d959205e99120a14c0560ed3c37104b08.patch"; + sha256 = "149ffvn714n2m3mqs8mgrbs24bcr74kqfkx7wyql36ndhm88xd2z"; + }) + ]; + + postPatch = '' + substituteInPlace sponsorblock.lua \ + --replace "python3" "${python3}/bin/python3" \ + --replace 'mp.find_config_file("scripts")' "\"$out/share/mpv/scripts\"" + ''; + + installPhase = '' + mkdir -p $out/share/mpv/scripts + cp -r sponsorblock.lua sponsorblock_shared $out/share/mpv/scripts/ + ''; + + passthru.scriptName = "sponsorblock.lua"; + + meta = with stdenv.lib; { + description = "mpv script to skip sponsored segments of YouTube videos"; + homepage = "https://github.com/po5/mpv_sponsorblock"; + license = licenses.gpl3; + platforms = platforms.all; + maintainers = with maintainers; [ pacien ]; + }; +} diff --git a/infra/libkookie/nixpkgs/pkgs/applications/video/mpv/wrapper.nix b/infra/libkookie/nixpkgs/pkgs/applications/video/mpv/wrapper.nix new file mode 100644 index 000000000000..5b3ad7a98311 --- /dev/null +++ b/infra/libkookie/nixpkgs/pkgs/applications/video/mpv/wrapper.nix @@ -0,0 +1,83 @@ +# Arguments that this derivation gets when it is created with `callPackage` +{ stdenv +, lib +, symlinkJoin +, makeWrapper +, youtube-dl +}: + +# the unwrapped mpv derivation - 1st argument to `wrapMpv` +mpv: + +let + # arguments to the function (called `wrapMpv` in all-packages.nix) + wrapper = { + extraMakeWrapperArgs ? [], + youtubeSupport ? true, + # a set of derivations (probably from `mpvScripts`) where each is + # expected to have a `scriptName` passthru attribute that points to the + # name of the script that would reside in the script's derivation's + # `$out/share/mpv/scripts/`. + scripts ? [], + extraUmpvWrapperArgs ? [] + }: + let + binPath = lib.makeBinPath ([ + mpv.luaEnv + ] ++ lib.optionals youtubeSupport [ + youtube-dl + ] ++ lib.optionals mpv.vapoursynthSupport [ + mpv.vapoursynth.python3 + ]); + # All arguments besides the input and output binaries (${mpv}/bin/mpv and + # $out/bin/mpv). These are used by the darwin specific makeWrapper call + # used to wrap $out/Applications/mpv.app/Contents/MacOS/mpv as well. + mostMakeWrapperArgs = lib.strings.escapeShellArgs ([ "--argv0" "'$0'" + # These are always needed (TODO: Explain why) + "--prefix" "LUA_CPATH" ";" "${mpv.luaEnv}/lib/lua/${mpv.lua.luaversion}/?.so" + "--prefix" "LUA_PATH" ";" "${mpv.luaEnv}/share/lua/${mpv.lua.luaversion}/?.lua" + ] ++ lib.optionals mpv.vapoursynthSupport [ + "--prefix" "PYTHONPATH" ":" "${mpv.vapoursynth}/lib/${mpv.vapoursynth.python3.sitePackages}" + ] ++ lib.optionals (binPath != "") [ + "--prefix" "PATH" ":" binPath + ] ++ (lib.lists.flatten (map + # For every script in the `scripts` argument, add the necessary flags to the wrapper + (script: + [ + "--add-flags" + # Here we rely on the existence of the `scriptName` passthru + # attribute of the script derivation from the `scripts` + "--script=${script}/share/mpv/scripts/${script.scriptName}" + ] + ) scripts + )) ++ extraMakeWrapperArgs) + ; + umpvWrapperArgs = lib.strings.escapeShellArgs ([ + "--argv0" "'$0'" + "--set" "MPV" "${placeholder "out"}/bin/mpv" + ] ++ extraUmpvWrapperArgs) + ; + in + symlinkJoin { + name = "mpv-with-scripts-${mpv.version}"; + + paths = [ mpv ]; + + buildInputs = [ makeWrapper ]; + + passthru.unwrapped = mpv; + + postBuild = '' + # wrapProgram can't operate on symlinks + rm "$out/bin/mpv" + makeWrapper "${mpv}/bin/mpv" "$out/bin/mpv" ${mostMakeWrapperArgs} + rm "$out/bin/umpv" + makeWrapper "${mpv}/bin/umpv" "$out/bin/umpv" ${umpvWrapperArgs} + '' + lib.optionalString stdenv.isDarwin '' + # wrapProgram can't operate on symlinks + rm "$out/Applications/mpv.app/Contents/MacOS/mpv" + makeWrapper "${mpv}/Applications/mpv.app/Contents/MacOS/mpv" "$out/Applications/mpv.app/Contents/MacOS/mpv" ${mostMakeWrapperArgs} + ''; + }; +in + lib.makeOverridable wrapper diff --git a/infra/libkookie/nixpkgs/pkgs/applications/video/mythtv/default.nix b/infra/libkookie/nixpkgs/pkgs/applications/video/mythtv/default.nix new file mode 100644 index 000000000000..db8d192b7587 --- /dev/null +++ b/infra/libkookie/nixpkgs/pkgs/applications/video/mythtv/default.nix @@ -0,0 +1,42 @@ +{ stdenv, mkDerivation, fetchFromGitHub, which, qtbase, qtwebkit, qtscript, xlibsWrapper +, libpulseaudio, fftwSinglePrec , lame, zlib, libGLU, libGL, alsaLib, freetype +, perl, pkgconfig , libsamplerate, libbluray, lzo, libX11, libXv, libXrandr, libXvMC, libXinerama, libXxf86vm +, libXmu , yasm, libuuid, taglib, libtool, autoconf, automake, file, exiv2, linuxHeaders +}: + +mkDerivation rec { + pname = "mythtv"; + version = "31.0"; + + src = fetchFromGitHub { + owner = "MythTV"; + repo = "mythtv"; + rev = "v${version}"; + sha256 = "092w5kvc1gjz6jd2lk2jhcazasz2h3xh0i5iq80k8x3znyp4i6v5"; + }; + + patches = [ + # Disables OS detection used while checking if enforce_wshadow should be disabled. + ./disable-os-detection.patch + ]; + + setSourceRoot = ''sourceRoot=$(echo */mythtv)''; + + buildInputs = [ + freetype qtbase qtwebkit qtscript lame zlib xlibsWrapper libGLU libGL + perl libsamplerate libbluray lzo alsaLib libpulseaudio fftwSinglePrec libX11 libXv libXrandr libXvMC + libXmu libXinerama libXxf86vm libXmu libuuid taglib exiv2 + ]; + nativeBuildInputs = [ pkgconfig which yasm libtool autoconf automake file ]; + + configureFlags = + [ "--dvb-path=${linuxHeaders}/include" ]; + + meta = with stdenv.lib; { + homepage = "https://www.mythtv.org/"; + description = "Open Source DVR"; + license = licenses.gpl2Plus; + platforms = platforms.linux; + maintainers = [ maintainers.titanous ]; + }; +} diff --git a/infra/libkookie/nixpkgs/pkgs/applications/video/mythtv/disable-os-detection.patch b/infra/libkookie/nixpkgs/pkgs/applications/video/mythtv/disable-os-detection.patch new file mode 100644 index 000000000000..09ce6f6ca4f8 --- /dev/null +++ b/infra/libkookie/nixpkgs/pkgs/applications/video/mythtv/disable-os-detection.patch @@ -0,0 +1,31 @@ +--- a/configure 2020-07-21 20:50:58.653989766 +0200 ++++ b/configure 2020-07-21 20:52:21.236610586 +0200 +@@ -6537,17 +6537,17 @@ + } + + enable enforce_wshadow +-case $target_os in +- android) +- disable enforce_wshadow +- ;; +- linux) +- . /etc/os-release +- if test $ID = "centos"; then +- disable enforce_wshadow +- fi +- ;; +-esac ++#case $target_os in ++# android) ++# disable enforce_wshadow ++# ;; ++# linux) ++# . /etc/os-release ++# if test $ID = "centos"; then ++# disable enforce_wshadow ++# fi ++# ;; ++#esac + + if $(pkg-config --exists Qt5WebKit) || $(pkg-config --exists QtWebKit) ; then + enable qtwebkit diff --git a/infra/libkookie/nixpkgs/pkgs/applications/video/natron/config.pri b/infra/libkookie/nixpkgs/pkgs/applications/video/natron/config.pri new file mode 100644 index 000000000000..c0d236c6b975 --- /dev/null +++ b/infra/libkookie/nixpkgs/pkgs/applications/video/natron/config.pri @@ -0,0 +1,20 @@ +boost: LIBS += -lboost_serialization +expat: LIBS += -lexpat +expat: PKGCONFIG -= expat +cairo { + PKGCONFIG += cairo + LIBS -= $$system(pkg-config --variable=libdir cairo)/libcairo.a +} +pyside { + PKGCONFIG -= pyside + INCLUDEPATH += $$system(pkg-config --variable=includedir pyside) + INCLUDEPATH += $$system(pkg-config --variable=includedir pyside)/QtCore + INCLUDEPATH += $$system(pkg-config --variable=includedir pyside)/QtGui + INCLUDEPATH += $$system(pkg-config --variable=includedir QtGui) + LIBS += -lpyside-python2.7 +} +shiboken { + PKGCONFIG -= shiboken + INCLUDEPATH += $$system(pkg-config --variable=includedir shiboken) + LIBS += -lshiboken-python2.7 +} diff --git a/infra/libkookie/nixpkgs/pkgs/applications/video/natron/default.nix b/infra/libkookie/nixpkgs/pkgs/applications/video/natron/default.nix new file mode 100644 index 000000000000..dede7d6b29e0 --- /dev/null +++ b/infra/libkookie/nixpkgs/pkgs/applications/video/natron/default.nix @@ -0,0 +1,129 @@ +{ lib, stdenv, fetchurl, qt4, pkgconfig, boost, expat, cairo, python2Packages, + cmake, flex, bison, pango, librsvg, librevenge, libxml2, libcdr, libzip, + poppler, imagemagick, openexr, ffmpeg_3, opencolorio, openimageio, + qmake4Hook, libpng, libGL, lndir }: + +let + minorVersion = "2.1"; + version = "${minorVersion}.9"; + OpenColorIO-Configs = fetchurl { + url = "https://github.com/MrKepzie/OpenColorIO-Configs/archive/Natron-v${minorVersion}.tar.gz"; + sha256 = "9eec5a02ca80c9cd8e751013cb347ea982fdddd592a4a9215cce462e332dac51"; + }; + seexpr = stdenv.mkDerivation rec { + version = "1.0.1"; + pname = "seexpr"; + src = fetchurl { + url = "https://github.com/wdas/SeExpr/archive/rel-${version}.tar.gz"; + sha256 = "1ackh0xs4ip7mk34bam8zd4qdymkdk0dgv8x0f2mf6gbyzzyh7lp"; + }; + nativeBuildInputs = [ cmake ]; + buildInputs = [ libpng flex bison ]; + }; + buildPlugin = { pluginName, sha256, nativeBuildInputs ? [], buildInputs ? [], preConfigure ? "" }: + stdenv.mkDerivation { + name = "openfx-${pluginName}-${version}"; + src = fetchurl { + url = "https://github.com/MrKepzie/Natron/releases/download/${version}/openfx-${pluginName}-${version}.tar.xz"; + inherit sha256; + }; + inherit nativeBuildInputs buildInputs; + preConfigure = '' + makeFlagsArray+=("CONFIG=release") + makeFlagsArray+=("PLUGINPATH=$out/Plugins/OFX/Natron") + ${preConfigure} + ''; + }; + lodepngcpp = fetchurl { + url = "https://raw.githubusercontent.com/lvandeve/lodepng/a70c086077c0eaecbae3845e4da4424de5f43361/lodepng.cpp"; + sha256 = "1dxkkr4jbmvlwfr7m16i1mgcj1pqxg9s1a7y3aavs9rrk0ki8ys2"; + }; + lodepngh = fetchurl { + url = "https://raw.githubusercontent.com/lvandeve/lodepng/a70c086077c0eaecbae3845e4da4424de5f43361/lodepng.h"; + sha256 = "14drdikd0vws3wwpyqq7zzm5z3kg98svv4q4w0hr45q6zh6hs0bq"; + }; + CImgh = fetchurl { + url = "https://raw.githubusercontent.com/dtschump/CImg/572c12d82b2f59ece21be8f52645c38f1dd407e6/CImg.h"; + sha256 = "0n4qfxj8j6rmj4svf68gg2pzg8d1pb74bnphidnf8i2paj6lwniz"; + }; + plugins = map buildPlugin [ + ({ + pluginName = "arena"; + sha256 = "0qba13vn9qdfax7nqlz1ps27zspr5kh795jp1xvbmwjzjzjpkqkf"; + nativeBuildInputs = [ pkgconfig ]; + buildInputs = [ + pango librsvg librevenge libcdr opencolorio libxml2 libzip + poppler imagemagick + ]; + preConfigure = '' + sed -i 's|pkg-config poppler-glib|pkg-config poppler poppler-glib|g' Makefile.master + for i in Extra Bundle; do + cp ${lodepngcpp} $i/lodepng.cpp + cp ${lodepngh} $i/lodepng.h + done + ''; + }) + ({ + pluginName = "io"; + sha256 = "0s196i9fkgr9iw92c94mxgs1lkxbhynkf83vmsgrldflmf0xjky7"; + nativeBuildInputs = [ pkgconfig ]; + buildInputs = [ + libpng ffmpeg_3 openexr opencolorio openimageio boost libGL + seexpr + ]; + }) + ({ + pluginName = "misc"; + sha256 = "02h79jrll0c17azxj16as1mks3lmypm4m3da4mms9sg31l3n82qi"; + buildInputs = [ + libGL + ]; + preConfigure = '' + cp ${CImgh} CImg/CImg.h + ''; + }) + ]; +in +stdenv.mkDerivation { + inherit version; + name = "natron-${version}"; + + src = fetchurl { + url = "https://github.com/MrKepzie/Natron/releases/download/${version}/Natron-${version}.tar.xz"; + sha256 = "1wdc0zqriw2jhlrhzs6af3kagrv22cm086ffnbr1x43mgc9hfhjp"; + }; + + nativeBuildInputs = [ qmake4Hook pkgconfig python2Packages.wrapPython ]; + + buildInputs = [ + qt4 boost expat cairo python2Packages.pyside python2Packages.pysideShiboken + ]; + + preConfigure = '' + export MAKEFLAGS=-j$NIX_BUILD_CORES + cp ${./config.pri} config.pri + mkdir OpenColorIO-Configs + tar -xf ${OpenColorIO-Configs} --strip-components=1 -C OpenColorIO-Configs + ''; + + postFixup = '' + for i in ${lib.escapeShellArgs plugins}; do + ${lndir}/bin/lndir $i $out + done + wrapProgram $out/bin/Natron \ + --set PYTHONPATH "$PYTHONPATH" + ''; + + meta = with stdenv.lib; { + description = "Node-graph based, open-source compositing software"; + longDescription = '' + Node-graph based, open-source compositing software. Similar in + functionalities to Adobe After Effects and Nuke by The Foundry. + ''; + homepage = "https://natron.fr/"; + license = stdenv.lib.licenses.gpl2; + maintainers = [ maintainers.puffnfresh ]; + platforms = platforms.linux; + broken = true; + }; +} diff --git a/infra/libkookie/nixpkgs/pkgs/applications/video/obs-studio/default.nix b/infra/libkookie/nixpkgs/pkgs/applications/video/obs-studio/default.nix new file mode 100644 index 000000000000..c8d70c72fbac --- /dev/null +++ b/infra/libkookie/nixpkgs/pkgs/applications/video/obs-studio/default.nix @@ -0,0 +1,107 @@ +{ config, stdenv +, mkDerivation +, fetchFromGitHub +, addOpenGLRunpath +, cmake +, fdk_aac +, ffmpeg +, jansson +, libjack2 +, libxkbcommon +, libpthreadstubs +, libXdmcp +, qtbase +, qtx11extras +, qtsvg +, speex +, libv4l +, x264 +, curl +, xorg +, makeWrapper +, pkgconfig +, libvlc +, mbedtls + +, scriptingSupport ? true +, luajit +, swig +, python3 + +, alsaSupport ? stdenv.isLinux +, alsaLib +, pulseaudioSupport ? config.pulseaudio or stdenv.isLinux +, libpulseaudio +}: + +let + inherit (stdenv.lib) optional optionals; + +in mkDerivation rec { + pname = "obs-studio"; + version = "26.0.0"; + + src = fetchFromGitHub { + owner = "obsproject"; + repo = "obs-studio"; + rev = version; + sha256 = "09y57b3c88szl3wyx3cxq8jrm3pfnyg2n25hxl1ynkq3rgaavdq2"; + }; + + nativeBuildInputs = [ addOpenGLRunpath cmake pkgconfig ]; + + buildInputs = [ + curl + fdk_aac + ffmpeg + jansson + libjack2 + libv4l + libxkbcommon + libpthreadstubs + libXdmcp + qtbase + qtx11extras + qtsvg + speex + x264 + libvlc + makeWrapper + mbedtls + ] + ++ optionals scriptingSupport [ luajit swig python3 ] + ++ optional alsaSupport alsaLib + ++ optional pulseaudioSupport libpulseaudio; + + # obs attempts to dlopen libobs-opengl, it fails unless we make sure + # DL_OPENGL is an explicit path. Not sure if there's a better way + # to handle this. + cmakeFlags = [ + "-DCMAKE_CXX_FLAGS=-DDL_OPENGL=\\\"$(out)/lib/libobs-opengl.so\\\"" + "-DOBS_VERSION_OVERRIDE=${version}" + "-Wno-dev" # kill dev warnings that are useless for packaging + ]; + + postInstall = '' + wrapProgram $out/bin/obs \ + --prefix "LD_LIBRARY_PATH" : "${xorg.libX11.out}/lib:${libvlc}/lib" + ''; + + postFixup = stdenv.lib.optionalString stdenv.isLinux '' + addOpenGLRunpath $out/lib/lib*.so + addOpenGLRunpath $out/lib/obs-plugins/*.so + ''; + + meta = with stdenv.lib; { + description = "Free and open source software for video recording and live streaming"; + longDescription = '' + This project is a rewrite of what was formerly known as "Open Broadcaster + Software", software originally designed for recording and streaming live + video content, efficiently + ''; + homepage = "https://obsproject.com"; + maintainers = with maintainers; [ jb55 MP2E ]; + license = licenses.gpl2; + platforms = [ "x86_64-linux" "i686-linux" ]; + }; +} diff --git a/infra/libkookie/nixpkgs/pkgs/applications/video/obs-studio/fix-search-path.patch b/infra/libkookie/nixpkgs/pkgs/applications/video/obs-studio/fix-search-path.patch new file mode 100644 index 000000000000..4503447ff5dc --- /dev/null +++ b/infra/libkookie/nixpkgs/pkgs/applications/video/obs-studio/fix-search-path.patch @@ -0,0 +1,13 @@ +diff --git a/external/FindLibObs.cmake b/external/FindLibObs.cmake +index ab0a3de..19c63ee 100644 +--- a/external/FindLibObs.cmake ++++ b/external/FindLibObs.cmake +@@ -95,7 +95,7 @@ if(LIBOBS_FOUND) + + set(LIBOBS_INCLUDE_DIRS ${LIBOBS_INCLUDE_DIR} ${W32_PTHREADS_INCLUDE_DIR}) + set(LIBOBS_LIBRARIES ${LIBOBS_LIB} ${W32_PTHREADS_LIB}) +- include(${LIBOBS_INCLUDE_DIR}/../cmake/external/ObsPluginHelpers.cmake) ++ include(external/ObsPluginHelpers.cmake) + + # allows external plugins to easily use/share common dependencies that are often included with libobs (such as FFmpeg) + if(NOT DEFINED INCLUDED_LIBOBS_CMAKE_MODULES) diff --git a/infra/libkookie/nixpkgs/pkgs/applications/video/obs-studio/hardcode-ndi-path.patch b/infra/libkookie/nixpkgs/pkgs/applications/video/obs-studio/hardcode-ndi-path.patch new file mode 100644 index 000000000000..caef96c381f2 --- /dev/null +++ b/infra/libkookie/nixpkgs/pkgs/applications/video/obs-studio/hardcode-ndi-path.patch @@ -0,0 +1,17 @@ +diff --git a/src/obs-ndi.cpp b/src/obs-ndi.cpp +index 493831c..7b0f8db 100644 +--- a/src/obs-ndi.cpp ++++ b/src/obs-ndi.cpp +@@ -197,11 +197,7 @@ const char* obs_module_description() + const NDIlib_v4* load_ndilib() + { + QStringList locations; +- locations << QString(qgetenv(NDILIB_REDIST_FOLDER)); +-#if defined(__linux__) || defined(__APPLE__) +- locations << "/usr/lib"; +- locations << "/usr/local/lib"; +-#endif ++ locations << "@NDI@/lib"; + + for (QString path : locations) { + blog(LOG_INFO, "Trying '%s'", path.toUtf8().constData()); diff --git a/infra/libkookie/nixpkgs/pkgs/applications/video/obs-studio/linuxbrowser.nix b/infra/libkookie/nixpkgs/pkgs/applications/video/obs-studio/linuxbrowser.nix new file mode 100644 index 000000000000..a33383937fb8 --- /dev/null +++ b/infra/libkookie/nixpkgs/pkgs/applications/video/obs-studio/linuxbrowser.nix @@ -0,0 +1,49 @@ +# We don't have a wrapper which can supply obs-studio plugins so you have to +# somewhat manually install this: + +# nix-env -f . -iA obs-linuxbrowser +# mkdir -p ~/.config/obs-studio/plugins +# ln -s ~/.nix-profile/share/obs/obs-plugins/obs-linuxbrowser ~/.config/obs-studio/plugins/ + +{ stdenv, fetchFromGitHub, obs-studio, cmake, libcef }: + +stdenv.mkDerivation rec { + pname = "obs-linuxbrowser"; + version = "0.6.1-6-gf86dba6"; + + src = fetchFromGitHub { + owner = "bazukas"; + repo = "obs-linuxbrowser"; + rev = version; + sha256 = "08d7qz0721va88bcyia8p0ycw50f6x3yk97s3vzhsc9xpq691kpi"; + }; + + nativeBuildInputs = [ cmake ]; + buildInputs = [ obs-studio ]; + postUnpack = '' + mkdir -p cef/Release cef/Resources cef/libcef_dll_wrapper/ + for i in ${libcef}/share/cef/*; do + ln -s $i cef/Release/ + ln -s $i cef/Resources/ + done + ln -s ${libcef}/lib/libcef.so cef/Release/ + ln -s ${libcef}/lib/libcef_dll_wrapper.a cef/libcef_dll_wrapper/ + ln -s ${libcef}/include cef/ + ''; + cmakeFlags = [ + "-DCEF_ROOT_DIR=../../cef" + "-DOBS_INCLUDE_SEARCH_DIR=${obs-studio}/include/obs" + ]; + installPhase = '' + mkdir -p $out/share/obs/obs-plugins + cp -r build/obs-linuxbrowser $out/share/obs/obs-plugins/ + ''; + + meta = with stdenv.lib; { + description = "Browser source plugin for obs-studio based on Chromium Embedded Framework"; + homepage = "https://github.com/bazukas/obs-linuxbrowser"; + maintainers = with maintainers; [ puffnfresh ]; + license = licenses.gpl2; + platforms = with platforms; linux; + }; +} diff --git a/infra/libkookie/nixpkgs/pkgs/applications/video/obs-studio/obs-ndi.nix b/infra/libkookie/nixpkgs/pkgs/applications/video/obs-studio/obs-ndi.nix new file mode 100644 index 000000000000..f22ddd39ee4b --- /dev/null +++ b/infra/libkookie/nixpkgs/pkgs/applications/video/obs-studio/obs-ndi.nix @@ -0,0 +1,41 @@ +# We don't have a wrapper which can supply obs-studio plugins so you have to +# somewhat manually install this: + +# nix-env -f "<nixpkgs>" -iA obs-ndi +# mkdir -p ~/.config/obs-studio/plugins/bin +# ln -s ~/.nix-profile/lib/obs-plugins/obs-ndi.so ~/.config/obs-studio/plugins/bin/ + +{ stdenv, fetchFromGitHub, obs-studio, cmake, qtbase, ndi }: + +stdenv.mkDerivation rec { + pname = "obs-ndi"; + version = "4.7.1"; + + nativeBuildInputs = [ cmake ]; + buildInputs = [ obs-studio qtbase ndi ]; + + src = fetchFromGitHub { + owner = "Palakis"; + repo = "obs-ndi"; + rev = version; + sha256 = "040fkbf3f3qgqcrd3072y3zrjb4fwga8zr10jym744xd7bgyylqh"; + }; + + patches = [ ./fix-search-path.patch ./hardcode-ndi-path.patch ]; + + postPatch = "sed -i -e s,@NDI@,${ndi},g src/obs-ndi.cpp"; + + cmakeFlags = [ + "-DLIBOBS_INCLUDE_DIR=${obs-studio}/include/obs" + "-DLIBOBS_LIB=${obs-studio}/lib" + "-DCMAKE_CXX_FLAGS=-I${obs-studio.src}/UI/obs-frontend-api" + ]; + + meta = with stdenv.lib; { + description = "Network A/V plugin for OBS Studio"; + homepage = "https://github.com/Palakis/obs-ndi"; + maintainers = with maintainers; [ peti ]; + license = licenses.gpl2; + platforms = with platforms; linux; + }; +} diff --git a/infra/libkookie/nixpkgs/pkgs/applications/video/obs-studio/v4l2sink.nix b/infra/libkookie/nixpkgs/pkgs/applications/video/obs-studio/v4l2sink.nix new file mode 100644 index 000000000000..eb8e41868822 --- /dev/null +++ b/infra/libkookie/nixpkgs/pkgs/applications/video/obs-studio/v4l2sink.nix @@ -0,0 +1,55 @@ +{ lib +, stdenv +, fetchFromGitHub +, fetchpatch +, cmake +, qtbase +, obs-studio +}: + +stdenv.mkDerivation rec { + pname = "obs-v4l2sink"; + version = "0.1.0-12-g1ec3c8a"; + + src = fetchFromGitHub { + owner = "CatxFish"; + repo = "obs-v4l2sink"; + rev = version; + sha256 = "03ah91cm1qz26k90mfx51l0d598i9bcmw39lkikjs1msm4c9dfxx"; + }; + + nativeBuildInputs = [ cmake ]; + buildInputs = [ qtbase obs-studio ]; + + patches = [ + # Fixes the segfault when stopping the plugin + (fetchpatch { + url = "https://github.com/CatxFish/obs-v4l2sink/commit/6604f01796d1b84a95714730ea51a6b8ac0e450b.diff"; + sha256 = "0crcvw02dj0aqy7hnhizjdsnhiw03zmg6cbdkasxz2mrrbyc3s88"; + }) + ]; + + cmakeFlags = with lib; [ + "-DLIBOBS_INCLUDE_DIR=${obs-studio.src}/libobs" + ]; + + # obs-studio expects the shared object to be located in bin/32bit or bin/64bit + # https://github.com/obsproject/obs-studio/blob/d60c736cb0ec0491013293c8a483d3a6573165cb/libobs/obs-nix.c#L48 + postInstall = let + pluginPath = { + i686-linux = "bin/32bit"; + x86_64-linux = "bin/64bit"; + }.${stdenv.targetPlatform.system} or (throw "Unsupported system: ${stdenv.targetPlatform.system}"); + in '' + mkdir -p $out/share/obs/obs-plugins/v4l2sink/${pluginPath} + ln -s $out/lib/obs-plugins/v4l2sink.so $out/share/obs/obs-plugins/v4l2sink/${pluginPath} + ''; + + meta = with lib; { + description = "obs studio output plugin for Video4Linux2 device"; + homepage = "https://github.com/CatxFish/obs-v4l2sink"; + maintainers = with maintainers; [ colemickens peelz ]; + license = licenses.gpl2; + platforms = [ "x86_64-linux" "i686-linux" ]; + }; +} diff --git a/infra/libkookie/nixpkgs/pkgs/applications/video/obs-studio/wlrobs.nix b/infra/libkookie/nixpkgs/pkgs/applications/video/obs-studio/wlrobs.nix new file mode 100644 index 000000000000..99486a9ccc0c --- /dev/null +++ b/infra/libkookie/nixpkgs/pkgs/applications/video/obs-studio/wlrobs.nix @@ -0,0 +1,42 @@ +# (the following is somewhat lifted from ./linuxbrowser.nix) +# We don't have a wrapper which can supply obs-studio plugins so you have to +# somewhat manually install this: + +# nix-env -f . -iA obs-wlrobs +# mkdir -p ~/.config/obs-studio/plugins/wlrobs/bin/64bit +# ln -s ~/.nix-profile/share/obs/obs-plugins/wlrobs/bin/64bit/libwlrobs.so ~/.config/obs-studio/plugins/wlrobs/bin/64bit +{ stdenv, fetchhg, wayland, obs-studio +, meson, ninja, pkgconfig, libX11 +, dmabufSupport ? false, libdrm ? null, libGL ? null}: + +assert dmabufSupport -> libdrm != null && libGL != null; + +stdenv.mkDerivation { + pname = "obs-wlrobs"; + version = "20200622"; + + src = fetchhg { + url = "https://hg.sr.ht/~scoopta/wlrobs"; + rev = "1d3acaaf64049da3da9721aa8b9b47582fe0081b"; + sha256 = "0qrcf8024r4ynfjw0zx8vn59ygx9q5rb196s6nyxmy3gkv2lfxlq"; + }; + + buildInputs = [ libX11 libGL libdrm meson ninja pkgconfig wayland obs-studio ]; + + installPhase = '' + mkdir -p $out/share/obs/obs-plugins/wlrobs/bin/64bit + cp ./libwlrobs.so $out/share/obs/obs-plugins/wlrobs/bin/64bit/ + ''; + + mesonFlags = [ + "-Duse_dmabuf=${if dmabufSupport then "true" else "false"}" + ]; + + meta = with stdenv.lib; { + description = "An obs-studio plugin that allows you to screen capture on wlroots based wayland compositors"; + homepage = "https://hg.sr.ht/~scoopta/wlrobs"; + maintainers = with maintainers; [ grahamc ]; + license = licenses.gpl3; + platforms = [ "x86_64-linux" ]; + }; +} diff --git a/infra/libkookie/nixpkgs/pkgs/applications/video/ogmtools/default.nix b/infra/libkookie/nixpkgs/pkgs/applications/video/ogmtools/default.nix new file mode 100644 index 000000000000..c9c5190dc539 --- /dev/null +++ b/infra/libkookie/nixpkgs/pkgs/applications/video/ogmtools/default.nix @@ -0,0 +1,24 @@ +{ stdenv, fetchurl, libogg, libvorbis, libdvdread }: + +stdenv.mkDerivation rec { + name = "ogmtools-1.5"; + + src = fetchurl { + url = "https://www.bunkus.org/videotools/ogmtools/${name}.tar.bz2"; + sha256 = "1spx81p5wf59ksl3r3gvf78d77sh7gj8a6lw773iv67bphfivmn8"; + }; + + buildInputs = [libogg libvorbis libdvdread]; + + meta = { + description = "Tools for modifying and inspecting OGG media streams"; + longDescription = '' + These tools allow information about (ogminfo) or extraction from + (ogmdemux) or creation of (ogmmerge) OGG media streams. Includes dvdxchap + tool for extracting chapter information from DVD. + ''; + homepage = "https://www.bunkus.org/videotools/ogmtools/"; + license = stdenv.lib.licenses.gpl2; + platforms = stdenv.lib.platforms.linux; + }; +} diff --git a/infra/libkookie/nixpkgs/pkgs/applications/video/olive-editor/default.nix b/infra/libkookie/nixpkgs/pkgs/applications/video/olive-editor/default.nix new file mode 100644 index 000000000000..b1e70cd037c7 --- /dev/null +++ b/infra/libkookie/nixpkgs/pkgs/applications/video/olive-editor/default.nix @@ -0,0 +1,38 @@ +{ stdenv, fetchFromGitHub, pkgconfig, which, qmake, mkDerivation, + qtmultimedia, wrapQtAppsHook, frei0r, opencolorio, ffmpeg-full, + CoreFoundation }: + +mkDerivation rec { + pname = "olive-editor"; + version = "0.1.2"; + + src = fetchFromGitHub { + owner = "olive-editor"; + repo = "olive"; + rev = version; + sha256 = "151g6jwhipgbq4llwib92sq23p1s9hm6avr7j4qq3bvykzrm8z1a"; + }; + + nativeBuildInputs = [ + pkgconfig + which + qmake + wrapQtAppsHook + ]; + + buildInputs = [ + ffmpeg-full + frei0r + opencolorio + qtmultimedia + ] ++ stdenv.lib.optional stdenv.isDarwin CoreFoundation; + + meta = with stdenv.lib; { + description = "Professional open-source NLE video editor"; + homepage = "https://www.olivevideoeditor.org/"; + downloadPage = "https://www.olivevideoeditor.org/download.php"; + license = licenses.gpl3; + maintainers = [ maintainers.balsoft ]; + platforms = platforms.unix; + }; +} diff --git a/infra/libkookie/nixpkgs/pkgs/applications/video/omxplayer/default.nix b/infra/libkookie/nixpkgs/pkgs/applications/video/omxplayer/default.nix new file mode 100644 index 000000000000..28df8ead0c80 --- /dev/null +++ b/infra/libkookie/nixpkgs/pkgs/applications/video/omxplayer/default.nix @@ -0,0 +1,86 @@ +{ stdenv, fetchurl +, raspberrypifw, pcre, boost, freetype, zlib +}: + +let + ffmpeg = stdenv.mkDerivation rec { + name = "ffmpeg-1.1.3"; + + src = fetchurl { + url = "http://www.ffmpeg.org/releases/${name}.tar.bz2"; + sha256 = "03s1zsprz5p6gjgwwqcf7b6cvzwwid6l8k7bamx9i0f1iwkgdm0j"; + }; + + configurePlatforms = []; + configureFlags = [ + "--arch=${stdenv.hostPlatform.parsed.cpu.name}" + ] ++ stdenv.lib.optionals stdenv.hostPlatform.isAarch32 [ + # TODO be better with condition + "--cpu=arm1176jzf-s" + ] ++ [ + "--disable-muxers" + "--enable-muxer=spdif" + "--enable-muxer=adts" + "--disable-encoders" + "--enable-encoder=ac3" + "--enable-encoder=aac" + "--disable-decoder=mpeg_xvmc" + "--disable-devices" + "--disable-ffprobe" + "--disable-ffplay" + "--disable-ffserver" + "--disable-ffmpeg" + "--enable-shared" + "--disable-doc" + "--enable-postproc" + "--enable-gpl" + "--enable-protocol=http" + "--enable-pthreads" + "--disable-runtime-cpudetect" + "--enable-pic" + "--disable-armv5te" + "--disable-neon" + "--enable-armv6t2" + "--enable-armv6" + "--enable-hardcoded-tables" + "--disable-runtime-cpudetect" + "--disable-debug" + "--arch=${stdenv.hostPlatform.parsed.cpu.name}" + "--target_os=${stdenv.hostPlatform.parsed.kernel.name}" + ] ++ stdenv.lib.optionals (stdenv.hostPlatform != stdenv.buildPlatform) [ + "--cross-prefix=${stdenv.cc.targetPrefix}" + "--enable-cross-compile" + ]; + + enableParallelBuilding = true; + + meta = { + homepage = "http://www.ffmpeg.org/"; + description = "A complete, cross-platform solution to record, convert and stream audio and video"; + }; + }; +in +stdenv.mkDerivation rec { + name = "omxplayer-20130328-fbee325dc2"; + src = fetchurl { + url = "https://github.com/huceke/omxplayer/tarball/fbee325dc2"; + name = "${name}.tar.gz"; + sha256 = "0fkvv8il7ffqxki2gp8cxa5shh6sz9jsy5vv3f4025g4gss6afkg"; + }; + patchPhase = '' + sed -i 1d Makefile + export INCLUDES="-I${raspberrypifw}/include/interface/vcos/pthreads -I${raspberrypifw}/include/interface/vmcs_host/linux/" + ''; + installPhase = '' + mkdir -p $out/bin + cp omxplayer.bin $out/bin + ''; + buildInputs = [ raspberrypifw ffmpeg pcre boost freetype zlib ]; + + meta = { + homepage = "https://github.com/huceke/omxplayer"; + description = "Commandline OMX player for the Raspberry Pi"; + license = stdenv.lib.licenses.gpl2Plus; + platforms = stdenv.lib.platforms.arm; + }; +} diff --git a/infra/libkookie/nixpkgs/pkgs/applications/video/openshot-qt/default.nix b/infra/libkookie/nixpkgs/pkgs/applications/video/openshot-qt/default.nix new file mode 100644 index 000000000000..cd3176249f8a --- /dev/null +++ b/infra/libkookie/nixpkgs/pkgs/applications/video/openshot-qt/default.nix @@ -0,0 +1,52 @@ +{ stdenv, mkDerivationWith, fetchFromGitHub, fetchpatch +, doxygen, python3Packages, libopenshot +, wrapGAppsHook, gtk3 }: + +mkDerivationWith python3Packages.buildPythonApplication rec { + pname = "openshot-qt"; + version = "2.5.1"; + + src = fetchFromGitHub { + owner = "OpenShot"; + repo = "openshot-qt"; + rev = "v${version}"; + sha256 = "0qc5i0ay6j2wab1whl41sjb71cj02pg6y79drf7asrprq8b2rmfq"; + }; + + nativeBuildInputs = [ doxygen wrapGAppsHook ]; + + buildInputs = [ gtk3 ]; + + propagatedBuildInputs = with python3Packages; [ libopenshot pyqt5_with_qtwebkit requests sip httplib2 pyzmq ]; + + dontWrapGApps = true; + dontWrapQtApps = true; + + preConfigure = '' + # tries to create caching directories during install + export HOME=$(mktemp -d) + ''; + + postFixup = '' + wrapProgram $out/bin/openshot-qt \ + "''${gappsWrapperArgs[@]}" \ + "''${qtWrapperArgs[@]}" + ''; + + doCheck = false; + + meta = with stdenv.lib; { + homepage = "http://openshot.org/"; + description = "Free, open-source video editor"; + longDescription = '' + OpenShot Video Editor is a free, open-source video editor for Linux. + OpenShot can take your videos, photos, and music files and help you + create the film you have always dreamed of. Easily add sub-titles, + transitions, and effects, and then export your film to DVD, YouTube, + Vimeo, Xbox 360, and many other common formats. + ''; + license = with licenses; gpl3Plus; + maintainers = with maintainers; [ AndersonTorres ]; + platforms = with platforms; linux; + }; +} diff --git a/infra/libkookie/nixpkgs/pkgs/applications/video/openshot-qt/libopenshot-audio.nix b/infra/libkookie/nixpkgs/pkgs/applications/video/openshot-qt/libopenshot-audio.nix new file mode 100644 index 000000000000..d1a368b43ba2 --- /dev/null +++ b/infra/libkookie/nixpkgs/pkgs/applications/video/openshot-qt/libopenshot-audio.nix @@ -0,0 +1,35 @@ +{ stdenv, fetchFromGitHub, pkgconfig, cmake, doxygen, alsaLib , libX11, libXft, libXrandr, libXinerama, libXext, libXcursor }: + +with stdenv.lib; +stdenv.mkDerivation rec { + pname = "libopenshot-audio"; + version = "0.2.0"; + + src = fetchFromGitHub { + owner = "OpenShot"; + repo = "libopenshot-audio"; + rev = "v${version}"; + sha256 = "13if0m5mvlqly8gmbhschzb9papkgp3yqivklhb949dhy16m8zgf"; + }; + + nativeBuildInputs = + [ pkgconfig cmake doxygen ]; + + buildInputs = + [ alsaLib libX11 libXft libXrandr libXinerama libXext libXcursor ]; + + doCheck = false; + + meta = { + homepage = "http://openshot.org/"; + description = "High-quality sound editing library"; + longDescription = '' + OpenShot Audio Library (libopenshot-audio) is a program that allows the + high-quality editing and playback of audio, and is based on the amazing + JUCE library. + ''; + license = with licenses; gpl3Plus; + maintainers = with maintainers; [ AndersonTorres ]; + platforms = with platforms; linux; + }; +} diff --git a/infra/libkookie/nixpkgs/pkgs/applications/video/openshot-qt/libopenshot.nix b/infra/libkookie/nixpkgs/pkgs/applications/video/openshot-qt/libopenshot.nix new file mode 100644 index 000000000000..e24b6ee41f85 --- /dev/null +++ b/infra/libkookie/nixpkgs/pkgs/applications/video/openshot-qt/libopenshot.nix @@ -0,0 +1,51 @@ +{ stdenv, fetchFromGitHub +, pkgconfig, cmake, doxygen +, libopenshot-audio, imagemagick, ffmpeg_3 +, swig, python3 +, unittest-cpp, cppzmq, zeromq +, qtbase, qtmultimedia }: + +with stdenv.lib; +stdenv.mkDerivation rec { + pname = "libopenshot"; + version = "0.2.5"; + + src = fetchFromGitHub { + owner = "OpenShot"; + repo = "libopenshot"; + rev = "v${version}"; + sha256 = "1mxjkgjmjzgf628y3rscc6rqf55hxgjpmvwxlncfk1216i5xskwp"; + }; + + patchPhase = '' + sed -i 's/{UNITTEST++_INCLUDE_DIR}/ENV{UNITTEST++_INCLUDE_DIR}/g' tests/CMakeLists.txt + sed -i 's/{_REL_PYTHON_MODULE_PATH}/ENV{_REL_PYTHON_MODULE_PATH}/g' src/bindings/python/CMakeLists.txt + export _REL_PYTHON_MODULE_PATH=$(toPythonPath $out) + ''; + + nativeBuildInputs = [ pkgconfig cmake doxygen ]; + + buildInputs = + [ imagemagick ffmpeg_3 swig python3 unittest-cpp + cppzmq zeromq qtbase qtmultimedia ]; + + LIBOPENSHOT_AUDIO_DIR = libopenshot-audio; + "UNITTEST++_INCLUDE_DIR" = "${unittest-cpp}/include/UnitTest++"; + + doCheck = false; + + cmakeFlags = [ "-DENABLE_RUBY=OFF" ]; + + meta = { + homepage = "http://openshot.org/"; + description = "Free, open-source video editor library"; + longDescription = '' + OpenShot Library (libopenshot) is an open-source project dedicated to + delivering high quality video editing, animation, and playback solutions + to the world. API currently supports C++, Python, and Ruby. + ''; + license = with licenses; gpl3Plus; + maintainers = with maintainers; [ AndersonTorres ]; + platforms = with platforms; linux; + }; +} diff --git a/infra/libkookie/nixpkgs/pkgs/applications/video/p2pvc/default.nix b/infra/libkookie/nixpkgs/pkgs/applications/video/p2pvc/default.nix new file mode 100644 index 000000000000..91468ea1ee60 --- /dev/null +++ b/infra/libkookie/nixpkgs/pkgs/applications/video/p2pvc/default.nix @@ -0,0 +1,27 @@ +{ stdenv, pkgconfig, fetchFromGitHub, opencv2, ncurses, portaudio }: + +stdenv.mkDerivation { + name = "p2pvc"; + + nativeBuildInputs = [ pkgconfig ]; + buildInputs = [ opencv2 ncurses portaudio ]; + + enableParallelBuilding = true; + + installPhase = "mkdir -p $out/bin; cp p2pvc $out/bin/"; + + src = fetchFromGitHub { + owner = "mofarrell"; + repo = "p2pvc"; + rev = "d7b1c70288a7750fc8f9a22dbddbe51d34b5b9e5"; + sha256 = "0d4vvrsjad5gk4rrjwgydn9ffj12jfb4aksw2px6jw75hp9pzmka"; + }; + + meta = { + description = "A point to point color terminal video chat"; + homepage = "https://github.com/mofarrell/p2pvc"; + license = stdenv.lib.licenses.mit; + maintainers = with stdenv.lib.maintainers; [ trino ]; + platforms = with stdenv.lib.platforms; linux; + }; +} diff --git a/infra/libkookie/nixpkgs/pkgs/applications/video/peek/default.nix b/infra/libkookie/nixpkgs/pkgs/applications/video/peek/default.nix new file mode 100644 index 000000000000..6ca5c5bed212 --- /dev/null +++ b/infra/libkookie/nixpkgs/pkgs/applications/video/peek/default.nix @@ -0,0 +1,86 @@ +{ stdenv +, fetchFromGitHub +, nix-update-script +, meson +, ninja +, gettext +, desktop-file-utils +, appstream-glib +, pkgconfig +, txt2man +, gzip +, vala +, wrapGAppsHook +, gsettings-desktop-schemas +, gtk3 +, glib +, cairo +, keybinder3 +, ffmpeg_3 +, python3 +, libxml2 +, gst_all_1 +, which +, gifski +}: + +stdenv.mkDerivation rec { + pname = "peek"; + version = "1.5.1"; + + src = fetchFromGitHub { + owner = "phw"; + repo = "peek"; + rev = version; + sha256 = "1xwlfizga6hvjqq127py8vabaphsny928ar7mwqj9cyqfl6fx41x"; + }; + + nativeBuildInputs = [ + appstream-glib + desktop-file-utils + gettext + gzip + meson + ninja + libxml2 + pkgconfig + txt2man + python3 + vala + wrapGAppsHook + ]; + + buildInputs = [ + cairo + glib + gsettings-desktop-schemas + gtk3 + gst_all_1.gstreamer + gst_all_1.gst-plugins-good + gst_all_1.gst-plugins-ugly + keybinder3 + ]; + + postPatch = '' + patchShebangs build-aux/meson/postinstall.py data/man/build_man.sh + ''; + + preFixup = '' + gappsWrapperArgs+=(--prefix PATH : ${stdenv.lib.makeBinPath [ which ffmpeg_3 gifski ]}) + ''; + + passthru = { + updateScript = nix-update-script { + attrPath = pname; + }; + }; + + + meta = with stdenv.lib; { + homepage = "https://github.com/phw/peek"; + description = "Simple animated GIF screen recorder with an easy to use interface"; + license = licenses.gpl3; + maintainers = with maintainers; [ puffnfresh worldofpeace ]; + platforms = platforms.linux; + }; +} diff --git a/infra/libkookie/nixpkgs/pkgs/applications/video/pitivi/default.nix b/infra/libkookie/nixpkgs/pkgs/applications/video/pitivi/default.nix new file mode 100644 index 000000000000..b1c1dd285e20 --- /dev/null +++ b/infra/libkookie/nixpkgs/pkgs/applications/video/pitivi/default.nix @@ -0,0 +1,169 @@ +{ stdenv +, fetchFromGitHub +, fetchurl +, fetchpatch +, pkg-config +, gettext +, itstool +, python3 +, wrapGAppsHook +, python3Packages +, gst_all_1 +, gtk3 +, gobject-introspection +, librsvg +, gnome3 +, libnotify +, gsound +, meson +, ninja +, gsettings-desktop-schemas +}: + +let + # gst-transcoder was merged with gst-plugins-bad 1.18. + # TODO: switch to that once available. + gst-transcoder = stdenv.mkDerivation rec { + version = "1.14.1"; + pname = "gst-transcoder"; + src = fetchFromGitHub { + owner = "pitivi"; + repo = "gst-transcoder"; + rev = version; + sha256 = "16skiz9akavssii529v9nr8zd54w43livc14khdyzv164djg9q8f"; + }; + nativeBuildInputs = [ + pkg-config + meson + ninja + gobject-introspection + python3 + ]; + buildInputs = with gst_all_1; [ + gstreamer + gst-plugins-base + ]; + }; + +in python3Packages.buildPythonApplication rec { + pname = "pitivi"; + version = "0.999"; + + format = "other"; + + src = fetchurl { + url = "mirror://gnome/sources/pitivi/${stdenv.lib.versions.majorMinor version}/${pname}-${version}.tar.xz"; + sha256 = "0mxp2p4gg976fp1vj3rb5rmpl5mqfzncm9vw2719irl32f1qlvyb"; + }; + + patches = [ + # By default, the build picks up environment variables like PYTHONPATH + # and saves them to the generated binary. This would make the build-time + # dependencies part of the closure so we remove it. + ./prevent-closure-contamination.patch + + # Port from intltool to gettext. + # Needed for the following patches to apply. + (fetchpatch { + url = "https://gitlab.gnome.org/GNOME/pitivi/commit/89b1053f2516c594f414c5c67c835471bce44b67.patch"; + sha256 = "8yhArzAtZC+WjHftcSDrstBlT8j6WlGHffU9Nj+ny+c="; + excludes = [ "po/POTFILES.in" ]; + }) + + # Complete switching to gst-transcoder in gst-plugins-bad. + # Otherwise there will likely be conflics. + # TODO: Apply this patch once we are using gst-transcoder from gst-plugins-bad. + # (fetchpatch { + # url = "https://gitlab.gnome.org/GNOME/pitivi/commit/51ae6533ee26ffd47e453eb5f5ad8cd46f57d15e.patch"; + # sha256 = "zxJm+E5o+oZ3lW6wYNY/ERo2g4NmCjoY8oV+uScq8j8="; + # }) + + # Generate renderer.so on macOS instead of dylib. + # Needed for the following patch to apply. + (fetchpatch { + url = "https://gitlab.gnome.org/GNOME/pitivi/commit/bcacadcafabf8911efb0fddc8d57329237d08cd1.patch"; + sha256 = "2BM5acIwOgdr1L9vhtMMN4trrLuqCg/K6v6ZYtD1Fjw="; + postFetch = '' + sed -i -e "s/1.90.0.1/0.999/g" "$out" + ''; + }) + (fetchpatch { + url = "https://gitlab.gnome.org/GNOME/pitivi/commit/0a3cc054a2c20b59f5aaaaa307de3c9af3c0d270.patch"; + sha256 = "6DhqRlxFWFFdLwGoFem+vPt8x7v732KMVjMF9fypMK4="; + postFetch = '' + sed "$out" -i \ + -e "s/1.90.0.1/0.999/g" \ + -e "s/\(-python_dep.*\)/\1\n /" \ + -e "s/-1,9 +1,16/-1,10 +1,17/" + ''; + }) + ]; + + nativeBuildInputs = [ + meson + ninja + pkg-config + gettext + itstool + python3 + wrapGAppsHook + ]; + + buildInputs = [ + gobject-introspection + gtk3 + librsvg + gnome3.gnome-desktop + gsound + gnome3.adwaita-icon-theme + gsettings-desktop-schemas + libnotify + gst-transcoder + ] ++ (with gst_all_1; [ + gstreamer + gst-editing-services + gst-plugins-base + (gst-plugins-good.override { gtkSupport = true; }) + gst-plugins-bad + gst-plugins-ugly + gst-libav + gst-validate + ]); + + pythonPath = with python3Packages; [ + pygobject3 + gst-python + pyxdg + numpy + pycairo + matplotlib + dbus-python + ]; + + postPatch = '' + patchShebangs ./getenvvar.py + + # fetchpatch does not support renamings + mv data/org.pitivi.Pitivi-mime.xml data/org.pitivi.Pitivi-mime.xml.in + ''; + + passthru = { + updateScript = gnome3.updateScript { + packageName = "pitivi"; + versionPolicy = "none"; # we are using dev version, since the stable one is too old + }; + }; + + meta = with stdenv.lib; { + description = "Non-Linear video editor utilizing the power of GStreamer"; + homepage = "http://pitivi.org/"; + longDescription = '' + Pitivi is a video editor built upon the GStreamer Editing Services. + It aims to be an intuitive and flexible application + that can appeal to newbies and professionals alike. + ''; + license = licenses.lgpl21Plus; + maintainers = with maintainers; []; + platforms = platforms.linux; + }; +} diff --git a/infra/libkookie/nixpkgs/pkgs/applications/video/pitivi/prevent-closure-contamination.patch b/infra/libkookie/nixpkgs/pkgs/applications/video/pitivi/prevent-closure-contamination.patch new file mode 100644 index 000000000000..0025ecd0a4cf --- /dev/null +++ b/infra/libkookie/nixpkgs/pkgs/applications/video/pitivi/prevent-closure-contamination.patch @@ -0,0 +1,23 @@ +--- a/meson.build ++++ b/meson.build +@@ -26,15 +26,15 @@ + geteenvvar = find_program('getenvvar.py') + cdata = configuration_data() + cdata.set('CONFIGURED_PYTHONPATH', +- run_command(geteenvvar, 'PYTHONPATH').stdout().strip()) ++ '') + cdata.set('CONFIGURED_GI_TYPELIB_PATH', +- run_command(geteenvvar, 'GI_TYPELIB_PATH').stdout().strip()) ++ '') + cdata.set('CONFIGURED_LD_LIBRARY_PATH', +- run_command(geteenvvar, 'LD_LIBRARY_PATH').stdout().strip()) ++ '') + cdata.set('CONFIGURED_GST_PLUGIN_PATH', +- run_command(geteenvvar, 'GST_PLUGIN_PATH').stdout().strip()) ++ '') + cdata.set('CONFIGURED_GST_PLUGIN_SYSTEM_PATH', +- run_command(geteenvvar, 'GST_PLUGIN_SYSTEM_PATH').stdout().strip()) ++ '') + cdata.set('LIBDIR', join_paths(get_option('prefix'), get_option('libdir'))) + cdata.set('DATADIR', join_paths(get_option('prefix'), get_option('datadir'))) + cdata.set('PACKAGE_NAME', 'Pitivi') diff --git a/infra/libkookie/nixpkgs/pkgs/applications/video/plex-media-player/default.nix b/infra/libkookie/nixpkgs/pkgs/applications/video/plex-media-player/default.nix new file mode 100644 index 000000000000..d08a4a852428 --- /dev/null +++ b/infra/libkookie/nixpkgs/pkgs/applications/video/plex-media-player/default.nix @@ -0,0 +1,47 @@ +{ stdenv, fetchFromGitHub, fetchurl, pkgconfig, cmake, python3, mkDerivation +, libX11, libXrandr, qtbase, qtwebchannel, qtwebengine, qtx11extras +, libvdpau, SDL2, mpv, libGL }: +let + # During compilation, a CMake bundle is downloaded from `artifacts.plex.tv`, + # which then downloads a handful of web client-related files. To enable + # sandboxed builds, we manually download them and save them so these files + # are fetched ahead-of-time instead of during the CMake build. To update + # plex-media-player use the update.sh script, so the versions and hashes + # for these files are are also updated! + depSrcs = import ./deps.nix { inherit fetchurl; }; +in mkDerivation rec { + pname = "plex-media-player"; + version = "2.55.0.1069"; + vsnHash = "2369bed9"; + + src = fetchFromGitHub { + owner = "plexinc"; + repo = "plex-media-player"; + rev = "v${version}-${vsnHash}"; + sha256 = "1jq4592sgaia0xy2h7n3vh5i7c84sdh4l64fdc774r4i0bmg66qi"; + }; + + nativeBuildInputs = [ pkgconfig cmake python3 ]; + buildInputs = [ libX11 libXrandr qtbase qtwebchannel qtwebengine qtx11extras + libvdpau SDL2 mpv libGL ]; + + preConfigure = with depSrcs; '' + mkdir -p build/dependencies + ln -s ${webClient} build/dependencies/buildid-${webClientBuildId}.cmake + ln -s ${webClientDesktopHash} build/dependencies/web-client-desktop-${webClientDesktopBuildId}.tar.xz.sha1 + ln -s ${webClientDesktop} build/dependencies/web-client-desktop-${webClientDesktopBuildId}.tar.xz + ln -s ${webClientTvHash} build/dependencies/web-client-tv-${webClientTvBuildId}.tar.xz.sha1 + ln -s ${webClientTv} build/dependencies/web-client-tv-${webClientTvBuildId}.tar.xz + ''; + + cmakeFlags = [ "-DCMAKE_BUILD_TYPE=RelWithDebInfo" "-DQTROOT=${qtbase}" ]; + + passthru.updateScript = ./update.sh; + + meta = with stdenv.lib; { + description = "Streaming media player for Plex"; + license = licenses.gpl2; + maintainers = with maintainers; [ kylewlacy ]; + homepage = "https://plex.tv"; + }; +} diff --git a/infra/libkookie/nixpkgs/pkgs/applications/video/plex-media-player/deps.nix b/infra/libkookie/nixpkgs/pkgs/applications/video/plex-media-player/deps.nix new file mode 100644 index 000000000000..26b57532615a --- /dev/null +++ b/infra/libkookie/nixpkgs/pkgs/applications/video/plex-media-player/deps.nix @@ -0,0 +1,28 @@ +{ fetchurl }: + +rec { + webClientBuildId = "180-afec74de50e175"; + webClientDesktopBuildId = "4.29.2-e50e175"; + webClientTvBuildId = "4.29.3-afec74d"; + + webClient = fetchurl { + url = "https://artifacts.plex.tv/web-client-pmp/${webClientBuildId}/buildid.cmake"; + sha256 = "0rabrg3lk9vgpswk8npa54hzqf2v8ghqqnysxpwn12wrp1pc2rr9"; + }; + webClientDesktopHash = fetchurl { + url = "https://artifacts.plex.tv/web-client-pmp/${webClientBuildId}/web-client-desktop-${webClientDesktopBuildId}.tar.xz.sha1"; + sha256 = "02b5yq4yc411qlg2dkw5j9lrr3cn2y4d27sin0skf6qza180473g"; + }; + webClientDesktop = fetchurl { + url = "https://artifacts.plex.tv/web-client-pmp/${webClientBuildId}/web-client-desktop-${webClientDesktopBuildId}.tar.xz"; + sha256 = "0l3xv48kr2rx878a40zrgwif2ga2ikv6fdcbq9pylycnmm41pxmh"; + }; + webClientTvHash = fetchurl { + url = "https://artifacts.plex.tv/web-client-pmp/${webClientBuildId}/web-client-tv-${webClientTvBuildId}.tar.xz.sha1"; + sha256 = "0wq115y2xrgwqrzr43nhkq8ba237z20yfp426ki2kdypsq8fjqka"; + }; + webClientTv = fetchurl { + url = "https://artifacts.plex.tv/web-client-pmp/${webClientBuildId}/web-client-tv-${webClientTvBuildId}.tar.xz"; + sha256 = "1wax1qslm226l2w53m2fnl849jw349qhg3rjghx7vip5pmb43vw9"; + }; +} diff --git a/infra/libkookie/nixpkgs/pkgs/applications/video/plex-media-player/update.sh b/infra/libkookie/nixpkgs/pkgs/applications/video/plex-media-player/update.sh new file mode 100755 index 000000000000..a8493a16c989 --- /dev/null +++ b/infra/libkookie/nixpkgs/pkgs/applications/video/plex-media-player/update.sh @@ -0,0 +1,71 @@ +#!/usr/bin/env nix-shell +#!nix-shell -i bash -p curl common-updater-scripts nix-prefetch-scripts jq + +set -xeuo pipefail + +nixpkgs="$(git rev-parse --show-toplevel)" + +oldVersion="$(nix-instantiate --eval -E "with import $nixpkgs {}; plex-media-player.version or (builtins.parseDrvName plex-media-player.name).version" | tr -d '"')" +latestTag="$(curl -s https://api.github.com/repos/plexinc/plex-media-player/tags | jq -r '.[] | .name' | sort --version-sort | tail -1)" +latestVersion="$(expr $latestTag : 'v\(.*\)-.*')" +latestHash="$(expr $latestTag : 'v.*-\(.*\)')" + +if [ ! "$oldVersion" = "$latestVersion" ]; then + # update default.nix with the new version and hash + expectedHash=$(nix-prefetch-git --url https://github.com/plexinc/plex-media-player.git --rev $latestTag --quiet | jq -r '.sha256') + update-source-version plex-media-player --version-key=vsnHash "${latestHash}" 0000 + update-source-version plex-media-player "${latestVersion}" $expectedHash + + # extract the webClientBuildId from the source folder + src="$(nix-build --no-out-link $nixpkgs -A plex-media-player.src)" + webClientBuildId="$(grep 'set(WEB_CLIENT_BUILD_ID' $src/CMakeModules/WebClient.cmake | cut -d' ' -f2 | tr -d ')')" + + # retreive the included cmake file and hash + { read -r webClientBuildIdHash; read -r webClientBuildIdPath; } < \ + <(nix-prefetch-url --print-path "https://artifacts.plex.tv/web-client-pmp/${webClientBuildId}/buildid.cmake") + webClientDesktopBuildId="$(grep 'set(DESKTOP_VERSION' $webClientBuildIdPath | cut -d' ' -f2 | tr -d ')')" + webClientTvBuildId="$(grep 'set(TV_VERSION' $webClientBuildIdPath | cut -d' ' -f2 | tr -d ')')" + + # get the hashes for the other files + webClientDesktopHash="$(nix-prefetch-url "https://artifacts.plex.tv/web-client-pmp/${webClientBuildId}/web-client-desktop-${webClientDesktopBuildId}.tar.xz.sha1")" + webClientDesktop="$(nix-prefetch-url "https://artifacts.plex.tv/web-client-pmp/${webClientBuildId}/web-client-desktop-${webClientDesktopBuildId}.tar.xz")" + webClientTvHash="$(nix-prefetch-url "https://artifacts.plex.tv/web-client-pmp/${webClientBuildId}/web-client-tv-${webClientTvBuildId}.tar.xz.sha1")" + webClientTv="$(nix-prefetch-url "https://artifacts.plex.tv/web-client-pmp/${webClientBuildId}/web-client-tv-${webClientTvBuildId}.tar.xz")" + + # update deps.nix + cat > $nixpkgs/pkgs/applications/video/plex-media-player/deps.nix <<EOF +{ fetchurl }: + +rec { + webClientBuildId = "${webClientBuildId}"; + webClientDesktopBuildId = "${webClientDesktopBuildId}"; + webClientTvBuildId = "${webClientTvBuildId}"; + + webClient = fetchurl { + url = "https://artifacts.plex.tv/web-client-pmp/\${webClientBuildId}/buildid.cmake"; + sha256 = "${webClientBuildIdHash}"; + }; + webClientDesktopHash = fetchurl { + url = "https://artifacts.plex.tv/web-client-pmp/\${webClientBuildId}/web-client-desktop-\${webClientDesktopBuildId}.tar.xz.sha1"; + sha256 = "${webClientDesktopHash}"; + }; + webClientDesktop = fetchurl { + url = "https://artifacts.plex.tv/web-client-pmp/\${webClientBuildId}/web-client-desktop-\${webClientDesktopBuildId}.tar.xz"; + sha256 = "${webClientDesktop}"; + }; + webClientTvHash = fetchurl { + url = "https://artifacts.plex.tv/web-client-pmp/\${webClientBuildId}/web-client-tv-\${webClientTvBuildId}.tar.xz.sha1"; + sha256 = "${webClientTvHash}"; + }; + webClientTv = fetchurl { + url = "https://artifacts.plex.tv/web-client-pmp/\${webClientBuildId}/web-client-tv-\${webClientTvBuildId}.tar.xz"; + sha256 = "${webClientTv}"; + }; +} +EOF + + git add "$nixpkgs"/pkgs/applications/video/plex-media-player/{default,deps}.nix + git commit -m "plex-media-player: ${oldVersion} -> ${latestVersion}" +else + echo "plex-media-player is already up-to-date" +fi diff --git a/infra/libkookie/nixpkgs/pkgs/applications/video/plex-mpv-shim/default.nix b/infra/libkookie/nixpkgs/pkgs/applications/video/plex-mpv-shim/default.nix new file mode 100644 index 000000000000..16e6cd826ec8 --- /dev/null +++ b/infra/libkookie/nixpkgs/pkgs/applications/video/plex-mpv-shim/default.nix @@ -0,0 +1,21 @@ +{ stdenv, buildPythonApplication, fetchFromGitHub, mpv, requests, python-mpv-jsonipc }: + +buildPythonApplication rec { + pname = "plex-mpv-shim"; + version = "1.8.0"; + + src = fetchFromGitHub { + owner = "iwalton3"; + repo = pname; + rev = "v${version}"; + sha256 = "0fi0glnl7nr6754r9jk7d7dsnjbdm7civvhcj2l009yxiv2rxzj3"; + }; + + propagatedBuildInputs = [ mpv requests python-mpv-jsonipc ]; + + meta = with stdenv.lib; { + homepage = "https://github.com/iwalton3/plex-mpv-shim"; + description = "Allows casting of videos to MPV via the Plex mobile and web app"; + license = licenses.mit; + }; +} diff --git a/infra/libkookie/nixpkgs/pkgs/applications/video/pyca/default.nix b/infra/libkookie/nixpkgs/pkgs/applications/video/pyca/default.nix new file mode 100644 index 000000000000..0fed17bb9999 --- /dev/null +++ b/infra/libkookie/nixpkgs/pkgs/applications/video/pyca/default.nix @@ -0,0 +1,30 @@ +{ stdenv, buildPythonApplication, fetchFromGitHub, pycurl, dateutil, configobj, sqlalchemy, sdnotify, flask }: + +buildPythonApplication rec { + pname = "pyca"; + version = "2.1"; + + src = fetchFromGitHub { + owner = "opencast"; + repo = "pyCA"; + rev = "v${version}"; + sha256 = "0cvkmdlcax9da9iw4ls73vw0pxvm8wvchab5gwdy9w9ibqdpcmwh"; + }; + + propagatedBuildInputs = [ + pycurl + dateutil + configobj + sqlalchemy + sdnotify + flask + ]; + + meta = with stdenv.lib; { + description = "A fully functional Opencast capture agent written in Python"; + homepage = "https://github.com/opencast/pyCA"; + license = licenses.lgpl3; + maintainers = with maintainers; [ pmiddend ]; + }; +} + diff --git a/infra/libkookie/nixpkgs/pkgs/applications/video/qarte/default.nix b/infra/libkookie/nixpkgs/pkgs/applications/video/qarte/default.nix new file mode 100644 index 000000000000..26b3153019fb --- /dev/null +++ b/infra/libkookie/nixpkgs/pkgs/applications/video/qarte/default.nix @@ -0,0 +1,42 @@ +{ mkDerivation, lib, fetchbzr, python3, rtmpdump }: + +let + pythonEnv = python3.withPackages (ps: with ps; [ pyqt5_with_qtmultimedia ]); +in mkDerivation { + name = "qarte-4.6.0"; + src = fetchbzr { + url = "http://bazaar.launchpad.net/~vincent-vandevyvre/qarte/qarte-4"; + rev = "22"; + sha256 = "0v4zpj8w67ydvnmanxbl8pwvn0cfv70c0mlw36a1r4n0rvgxffcn"; + }; + + buildInputs = [ pythonEnv ]; + + installPhase = '' + runHook preInstall + mkdir -p $out/bin + mv qarte $out/bin/ + substituteInPlace $out/bin/qarte \ + --replace '/usr/share' "$out/share" + + mkdir -p $out/share/man/man1/ + mv qarte.1 $out/share/man/man1/ + + mkdir -p $out/share/qarte + mv * $out/share/qarte/ + runHook postInstall + ''; + + postFixup = '' + wrapQtApp $out/bin/qarte \ + --prefix PATH : ${rtmpdump}/bin + ''; + + meta = { + homepage = "https://launchpad.net/qarte"; + description = "A recorder for Arte TV Guide and Arte Concert"; + license = lib.licenses.gpl3; + maintainers = with lib.maintainers; [ vbgl ]; + platforms = lib.platforms.linux; + }; +} diff --git a/infra/libkookie/nixpkgs/pkgs/applications/video/qmediathekview/default.nix b/infra/libkookie/nixpkgs/pkgs/applications/video/qmediathekview/default.nix new file mode 100644 index 000000000000..7556727a80d3 --- /dev/null +++ b/infra/libkookie/nixpkgs/pkgs/applications/video/qmediathekview/default.nix @@ -0,0 +1,32 @@ +{ mkDerivation, stdenv, fetchFromGitHub, qtbase, qttools, xz, boost, qmake, pkgconfig }: + +mkDerivation rec { + pname = "QMediathekView"; + version = "2019-01-06"; + + src = fetchFromGitHub { + owner = "adamreichold"; + repo = pname; + rev = "e098aaec552ec4e367078bf19953a08067316b4b"; + sha256 = "0i9hac9alaajbra3lx23m0iiq6ww4is00lpbzg5x70agjrwj0nd6"; + }; + + postPatch = '' + substituteInPlace ${pname}.pro \ + --replace /usr "" + ''; + + buildInputs = [ qtbase qttools xz boost ]; + + nativeBuildInputs = [ qmake pkgconfig ]; + + installFlags = [ "INSTALL_ROOT=$(out)" ]; + + meta = with stdenv.lib; { + description = "An alternative Qt-based front-end for the database maintained by the MediathekView project"; + inherit (src.meta) homepage; + license = licenses.gpl3Plus; + platforms = platforms.linux; + maintainers = with maintainers; [ dotlambda ]; + }; +} diff --git a/infra/libkookie/nixpkgs/pkgs/applications/video/qstopmotion/default.nix b/infra/libkookie/nixpkgs/pkgs/applications/video/qstopmotion/default.nix new file mode 100644 index 000000000000..dbb2128b50bf --- /dev/null +++ b/infra/libkookie/nixpkgs/pkgs/applications/video/qstopmotion/default.nix @@ -0,0 +1,82 @@ +{ stdenv +, mkDerivation +, fetchurl +, qtbase +, qtmultimedia +, qtquickcontrols +, qtimageformats +, qtxmlpatterns +, ffmpeg_3 +, guvcview +, cmake +, ninja +, libxml2 +, gettext +, pkgconfig +, libgphoto2 +, gphoto2 +, v4l-utils +, libv4l +, pcre +, qwt +, extra-cmake-modules +}: + +mkDerivation rec { + pname = "qstopmotion"; + version = "2.4.1"; + + src = fetchurl { + url = "mirror://sourceforge/project/${pname}/Version_${builtins.replaceStrings ["."] ["_"] version}/${pname}-${version}-Source.tar.gz"; + sha256 = "03r6jxyq0bak2vsy2b78nk27m7fm96hnl8cx11l3l17704j4iglh"; + }; + + buildInputs = [ + qtbase + qtmultimedia + qtquickcontrols + qtimageformats + qtxmlpatterns + v4l-utils + libv4l + pcre + ffmpeg_3 + guvcview + qwt + ]; + + nativeBuildInputs = [ + pkgconfig + cmake + extra-cmake-modules + ninja + gettext + libgphoto2 + gphoto2 + libxml2 + libv4l + ]; + + patchPhase = '' + substituteInPlace CMakeLists.txt \ + --replace "find_package(Qt5 REQUIRED COMPONENTS Core Widgets Xml" \ + "find_package(Qt5 REQUIRED COMPONENTS Core Widgets Xml Multimedia" + grep -rl 'qwt' . | xargs sed -i 's@<qwt/qwt_slider.h>@<qwt_slider.h>@g' + ''; + + meta = with stdenv.lib; { + homepage = "http://www.qstopmotion.org"; + description = "Create stopmotion animation with a (web)camera"; + longDescription = '' + Qstopmotion is a tool to create stopmotion + animation. Its users are able to create stop-motions from pictures + imported from a camera or from the harddrive and export the + animation to different video formats such as mpeg or avi. + ''; + + license = stdenv.lib.licenses.gpl2Plus; + maintainers = [ maintainers.leenaars ]; + broken = stdenv.isAarch64; + platforms = stdenv.lib.platforms.gnu ++ stdenv.lib.platforms.linux; + }; +} diff --git a/infra/libkookie/nixpkgs/pkgs/applications/video/quvi/library.nix b/infra/libkookie/nixpkgs/pkgs/applications/video/quvi/library.nix new file mode 100644 index 000000000000..c4926bedd727 --- /dev/null +++ b/infra/libkookie/nixpkgs/pkgs/applications/video/quvi/library.nix @@ -0,0 +1,22 @@ +{ stdenv, fetchurl, pkgconfig, lua5, curl, quvi_scripts, libproxy, libgcrypt, glib }: + +stdenv.mkDerivation rec { + pname = "libquvi"; + version="0.9.4"; + + src = fetchurl { + url = "mirror://sourceforge/quvi/libquvi-${version}.tar.xz"; + sha256 = "1cl1kbgxl1jnx2nwx4z90l0lap09lnnj1fg7hxsxk3m6aj4y4grd"; + }; + + nativeBuildInputs = [ pkgconfig ]; + buildInputs = [ lua5 curl quvi_scripts libproxy libgcrypt glib ]; + + meta = { + description = "Web video downloader"; + homepage = "http://quvi.sf.net"; + license = stdenv.lib.licenses.lgpl21Plus; + platforms = stdenv.lib.platforms.linux; + maintainers = [ ]; + }; +} diff --git a/infra/libkookie/nixpkgs/pkgs/applications/video/quvi/scripts.nix b/infra/libkookie/nixpkgs/pkgs/applications/video/quvi/scripts.nix new file mode 100644 index 000000000000..462c2df9962c --- /dev/null +++ b/infra/libkookie/nixpkgs/pkgs/applications/video/quvi/scripts.nix @@ -0,0 +1,21 @@ +{stdenv, fetchurl, pkgconfig}: + +stdenv.mkDerivation rec { + pname = "quvi-scripts"; + version="0.9.20131130"; + + src = fetchurl { + url = "mirror://sourceforge/quvi/libquvi-scripts-${version}.tar.xz"; + sha256 = "1qvp6z5k1qgcys7vf7jd6fm0g07xixmciwj14ypn1kqhmjgizwhp"; + }; + + nativeBuildInputs = [ pkgconfig ]; + + meta = { + description = "Web video downloader"; + homepage = "http://quvi.sf.net"; + license = stdenv.lib.licenses.lgpl21Plus; + platforms = stdenv.lib.platforms.linux; + maintainers = [ ]; + }; +} diff --git a/infra/libkookie/nixpkgs/pkgs/applications/video/quvi/tool.nix b/infra/libkookie/nixpkgs/pkgs/applications/video/quvi/tool.nix new file mode 100644 index 000000000000..b2746ef82333 --- /dev/null +++ b/infra/libkookie/nixpkgs/pkgs/applications/video/quvi/tool.nix @@ -0,0 +1,25 @@ +{stdenv, fetchurl, pkgconfig, lua5, curl, quvi_scripts, libquvi, lua5_sockets, glib, makeWrapper}: + +stdenv.mkDerivation rec { + pname = "quvi"; + version="0.9.5"; + + src = fetchurl { + url = "mirror://sourceforge/quvi/quvi-${version}.tar.xz"; + sha256 = "1h52s265rp3af16dvq1xlscp2926jqap2l4ah94vrfchv6m1hffb"; + }; + + nativeBuildInputs = [ pkgconfig ]; + buildInputs = [ lua5 curl quvi_scripts libquvi glib makeWrapper ]; + postInstall = '' + wrapProgram $out/bin/quvi --set LUA_PATH "${lua5_sockets}/share/lua/${lua5.luaversion}/?.lua" + ''; + + meta = { + description = "Web video downloader"; + homepage = "http://quvi.sf.net"; + license = stdenv.lib.licenses.lgpl21Plus; + platforms = stdenv.lib.platforms.linux; + maintainers = [ ]; + }; +} diff --git a/infra/libkookie/nixpkgs/pkgs/applications/video/screenkey/default.nix b/infra/libkookie/nixpkgs/pkgs/applications/video/screenkey/default.nix new file mode 100644 index 000000000000..00ead0f89a39 --- /dev/null +++ b/infra/libkookie/nixpkgs/pkgs/applications/video/screenkey/default.nix @@ -0,0 +1,71 @@ +{ lib +, fetchFromGitLab +# native +, intltool +, wrapGAppsHook +, file +# not native +, xorg +, gobject-introspection +, gtk3 +, python3 +}: + +python3.pkgs.buildPythonApplication rec { + pname = "screenkey"; + version = "1.2"; + + src = fetchFromGitLab { + owner = "screenkey"; + repo = "screenkey"; + rev = "v${version}"; + sha256 = "1x13n57iy2pg3h3r994q3g5nbmh2gwk3qidmmcv0g7qa89n2gwbj"; + }; + + nativeBuildInputs = [ + python3.pkgs.distutils_extra + # Shouldn't be needed once https://gitlab.com/screenkey/screenkey/-/issues/122 is fixed. + intltool + # We are not sure why is this needed, but without it we get "file: command + # not found" errors during build. + file + wrapGAppsHook + # for setup hook + gobject-introspection + ]; + + buildInputs = [ + gtk3 + ]; + + propagatedBuildInputs = with python3.pkgs; [ + pycairo + pygobject3 + ]; + + # Prevent double wrapping because of wrapGAppsHook + dontWrapGApps = true; + # https://github.com/NixOS/nixpkgs/issues/56943 + strictDeps = false; + preFixup = '' + makeWrapperArgs+=("''${gappsWrapperArgs[@]}") + ''; + + # screenkey does not have any tests + doCheck = false; + + # Fix CDLL python calls for non absolute paths of xorg libraries + postPatch = '' + substituteInPlace Screenkey/xlib.py \ + --replace libX11.so.6 ${lib.getLib xorg.libX11}/lib/libX11.so.6 \ + --replace libXtst.so.6 ${lib.getLib xorg.libXtst}/lib/libXtst.so.6 + ''; + + meta = with lib; { + homepage = "https://www.thregr.org/~wavexx/software/screenkey/"; + description = "A screencast tool to display your keys inspired by Screenflick"; + license = licenses.gpl3Plus; + platforms = platforms.linux; + maintainers = [ maintainers.rasendubi ]; + }; +} diff --git a/infra/libkookie/nixpkgs/pkgs/applications/video/shotcut/default.nix b/infra/libkookie/nixpkgs/pkgs/applications/video/shotcut/default.nix new file mode 100644 index 000000000000..f1d77fb7d147 --- /dev/null +++ b/infra/libkookie/nixpkgs/pkgs/applications/video/shotcut/default.nix @@ -0,0 +1,73 @@ +{ stdenv, fetchFromGitHub, fetchpatch, mkDerivation, SDL2, frei0r, gettext, mlt +, jack1, pkgconfig, qtbase, qtmultimedia, qtwebkit, qtx11extras, qtwebsockets +, qtquickcontrols, qtgraphicaleffects, libmlt, qmake, qttools, genericUpdater +, common-updater-scripts +}: + +assert stdenv.lib.versionAtLeast libmlt.version "6.22.1"; +assert stdenv.lib.versionAtLeast mlt.version "6.22.1"; + +mkDerivation rec { + pname = "shotcut"; + version = "20.09.13"; + + src = fetchFromGitHub { + owner = "mltframework"; + repo = "shotcut"; + rev = "v${version}"; + sha256 = "1q7ba6j3b2yzn3y5z9s5ldh15wrvhi6vymhwm910nqa5379dcc21"; + }; + + enableParallelBuilding = true; + nativeBuildInputs = [ pkgconfig qmake ]; + buildInputs = [ + SDL2 frei0r gettext mlt libmlt + qtbase qtmultimedia qtwebkit qtx11extras qtwebsockets qtquickcontrols + qtgraphicaleffects + ]; + + NIX_CFLAGS_COMPILE = "-I${libmlt}/include/mlt++ -I${libmlt}/include/mlt"; + qmakeFlags = [ "QMAKE_LRELEASE=${stdenv.lib.getDev qttools}/bin/lrelease" "SHOTCUT_VERSION=${version}" ]; + + prePatch = '' + sed 's_shotcutPath, "qmelt"_"${mlt}/bin/melt"_' -i src/jobs/meltjob.cpp + sed 's_shotcutPath, "ffmpeg"_"${mlt.ffmpeg}/bin/ffmpeg"_' -i src/jobs/ffmpegjob.cpp + sed 's_qApp->applicationDirPath(), "ffmpeg"_"${mlt.ffmpeg}/bin/ffmpeg"_' -i src/docks/encodedock.cpp + NICE=$(type -P nice) + sed "s_/usr/bin/nice_''${NICE}_" -i src/jobs/meltjob.cpp src/jobs/ffmpegjob.cpp + ''; + + qtWrapperArgs = [ + "--prefix FREI0R_PATH : ${frei0r}/lib/frei0r-1" + "--prefix LD_LIBRARY_PATH : ${stdenv.lib.makeLibraryPath [jack1 SDL2]}" + "--prefix PATH : ${mlt}/bin" + ]; + + postInstall = '' + mkdir -p $out/share/shotcut + cp -r src/qml $out/share/shotcut/ + ''; + + passthru.updateScript = genericUpdater { + inherit pname version; + versionLister = "${common-updater-scripts}/bin/list-git-tags ${src.meta.homepage}"; + rev-prefix = "v"; + }; + + meta = with stdenv.lib; { + description = "A free, open source, cross-platform video editor"; + longDescription = '' + An official binary for Shotcut, which includes all the + dependencies pinned to specific versions, is provided on + http://shotcut.org. + + If you encounter problems with this version, please contact the + nixpkgs maintainer(s). If you wish to report any bugs upstream, + please use the official build from shotcut.org instead. + ''; + homepage = "https://shotcut.org"; + license = licenses.gpl3; + maintainers = with maintainers; [ goibhniu woffs peti ]; + platforms = platforms.linux; + }; +} diff --git a/infra/libkookie/nixpkgs/pkgs/applications/video/simplescreenrecorder/default.nix b/infra/libkookie/nixpkgs/pkgs/applications/video/simplescreenrecorder/default.nix new file mode 100644 index 000000000000..7176f5e2f09c --- /dev/null +++ b/infra/libkookie/nixpkgs/pkgs/applications/video/simplescreenrecorder/default.nix @@ -0,0 +1,39 @@ +{ stdenv, mkDerivation, fetchurl, alsaLib, ffmpeg_3, libjack2, libX11, libXext, qtx11extras +, libXfixes, libGLU, libGL, pkgconfig, libpulseaudio, qtbase, cmake, ninja +}: + +mkDerivation rec { + pname = "simplescreenrecorder"; + version = "0.3.11"; + + src = fetchurl { + url = "https://github.com/MaartenBaert/ssr/archive/${version}.tar.gz"; + sha256 = "0l6irdadqpajvv0dj3ngs1231n559l0y1pykhs2h7526qm4w7xal"; + }; + + cmakeFlags = [ "-DWITH_QT5=TRUE" ]; + + patches = [ ./fix-paths.patch ]; + + postPatch = '' + for i in scripts/ssr-glinject src/AV/Input/GLInjectInput.cpp; do + substituteInPlace $i \ + --subst-var out \ + --subst-var-by sh ${stdenv.shell} + done + ''; + + nativeBuildInputs = [ pkgconfig cmake ninja ]; + buildInputs = [ + alsaLib ffmpeg_3 libjack2 libX11 libXext libXfixes libGLU libGL + libpulseaudio qtbase qtx11extras + ]; + + meta = with stdenv.lib; { + description = "A screen recorder for Linux"; + homepage = "https://www.maartenbaert.be/simplescreenrecorder"; + license = licenses.gpl3; + platforms = [ "x86_64-linux" ]; + maintainers = [ maintainers.goibhniu ]; + }; +} diff --git a/infra/libkookie/nixpkgs/pkgs/applications/video/simplescreenrecorder/fix-paths.patch b/infra/libkookie/nixpkgs/pkgs/applications/video/simplescreenrecorder/fix-paths.patch new file mode 100644 index 000000000000..ba02240ce1f2 --- /dev/null +++ b/infra/libkookie/nixpkgs/pkgs/applications/video/simplescreenrecorder/fix-paths.patch @@ -0,0 +1,35 @@ +diff --git a/scripts/ssr-glinject b/scripts/ssr-glinject +index 48be48d..5038d4c 100755 +--- a/scripts/ssr-glinject ++++ b/scripts/ssr-glinject +@@ -59,6 +59,6 @@ do + fi + done + +-echo "ssr-glinject: LD_PRELOAD = $LD_PRELOAD:libssr-glinject.so" ++echo "ssr-glinject: LD_PRELOAD = $LD_PRELOAD:@out@/lib/libssr-glinject.so" + echo "ssr-glinject: command = $@" +-LD_PRELOAD="$LD_PRELOAD:libssr-glinject.so" "$@" ++LD_PRELOAD="$LD_PRELOAD:@out@/lib/libssr-glinject.so" "$@" +diff --git a/src/AV/Input/GLInjectInput.cpp b/src/AV/Input/GLInjectInput.cpp +index 6b378f8..cbcf82b 100644 +--- a/src/AV/Input/GLInjectInput.cpp ++++ b/src/AV/Input/GLInjectInput.cpp +@@ -96,7 +96,7 @@ void GLInjectInput::SetCapturing(bool capturing) { + bool GLInjectInput::LaunchApplication(const QString& channel, bool relax_permissions, const QString& command, const QString& working_directory) { + + // prepare command +- QString full_command = "LD_PRELOAD=\"libssr-glinject.so\" "; ++ QString full_command = "LD_PRELOAD=\"@out@/lib/libssr-glinject.so\" "; + full_command += "SSR_CHANNEL=\"" + ShellEscape(channel) + "\" "; + if(relax_permissions) + full_command += "SSR_STREAM_RELAX_PERMISSIONS=1 "; +@@ -106,7 +106,7 @@ bool GLInjectInput::LaunchApplication(const QString& channel, bool relax_permiss + QStringList args; + args.push_back("-c"); + args.push_back(full_command); +- return QProcess::startDetached("/bin/sh", args, working_directory); ++ return QProcess::startDetached("@sh@", args, working_directory); + + } + diff --git a/infra/libkookie/nixpkgs/pkgs/applications/video/smplayer/default.nix b/infra/libkookie/nixpkgs/pkgs/applications/video/smplayer/default.nix new file mode 100644 index 000000000000..a8d2aaaff0ee --- /dev/null +++ b/infra/libkookie/nixpkgs/pkgs/applications/video/smplayer/default.nix @@ -0,0 +1,26 @@ +{ lib, mkDerivation, fetchurl, qmake, qtscript }: + +mkDerivation rec { + pname = "smplayer"; + version = "20.6.0"; + + src = fetchurl { + url = "mirror://sourceforge/${pname}/${pname}-${version}.tar.bz2"; + sha256 = "0c59gfgm2ya8yb2nx7gy1zc0nrr4206213xy86y7jw0bk9mmjxmy"; + }; + + buildInputs = [ qtscript ]; + nativeBuildInputs = [ qmake ]; + + dontUseQmakeConfigure = true; + + makeFlags = [ "PREFIX=${placeholder "out"}" ]; + + meta = { + description = "A complete front-end for MPlayer"; + longDescription = "Either mplayer or mpv should also be installed for smplayer to play medias"; + homepage = "https://www.smplayer.info"; + license = lib.licenses.gpl3Plus; + platforms = lib.platforms.linux; + }; +} diff --git a/infra/libkookie/nixpkgs/pkgs/applications/video/smtube/default.nix b/infra/libkookie/nixpkgs/pkgs/applications/video/smtube/default.nix new file mode 100644 index 000000000000..26b14ab739c6 --- /dev/null +++ b/infra/libkookie/nixpkgs/pkgs/applications/video/smtube/default.nix @@ -0,0 +1,28 @@ +{ lib, mkDerivation, fetchurl, qmake, qtscript, qtwebkit }: + +mkDerivation rec { + version = "20.6.0"; + pname = "smtube"; + + src = fetchurl { + url = "mirror://sourceforge/smtube/SMTube/${version}/${pname}-${version}.tar.bz2"; + sha256 = "0hnza5gszwqnkc1py5g34hi4p976vpkc4h3ab0247ynqs83fpwc2"; + }; + + makeFlags = [ + "PREFIX=$(out)" + ]; + + dontUseQmakeConfigure = true; + + nativeBuildInputs = [ qmake ]; + buildInputs = [ qtscript qtwebkit ]; + + meta = with lib; { + description = "Play and download Youtube videos"; + homepage = "http://smplayer.sourceforge.net/smtube.php"; + license = licenses.gpl2Plus; + maintainers = with maintainers; [ vbgl ]; + platforms = platforms.linux; + }; +} diff --git a/infra/libkookie/nixpkgs/pkgs/applications/video/streamlink-twitch-gui/bin.nix b/infra/libkookie/nixpkgs/pkgs/applications/video/streamlink-twitch-gui/bin.nix new file mode 100644 index 000000000000..251f495b7e15 --- /dev/null +++ b/infra/libkookie/nixpkgs/pkgs/applications/video/streamlink-twitch-gui/bin.nix @@ -0,0 +1,100 @@ +{ autoPatchelfHook, fetchurl, lib, makeDesktopItem, makeWrapper, stdenv, wrapGAppsHook +, at-spi2-core, atk, alsaLib, cairo, cups, dbus, expat, gcc-unwrapped +, gdk-pixbuf, glib, gnome2, gtk3-x11, libudev0-shim, libuuid, nss, nspr, xorg +, streamlink }: + +let + basename = "streamlink-twitch-gui"; + runtimeLibs = lib.makeLibraryPath [ libudev0-shim ]; + arch = + if stdenv.hostPlatform.system == "x86_64-linux" + then + "linux64" + else + "linux32"; + +in +stdenv.mkDerivation rec { + pname = "${basename}-bin"; + version = "1.10.0"; + + src = fetchurl { + url = "https://github.com/streamlink/${basename}/releases/download/v${version}/${basename}-v${version}-${arch}.tar.gz"; + sha256 = + if arch == "linux64" + then + "17s9zbzj4pgz9mxxwjbp3788afkddc9s3p7xp28y5084z9wwzph2" + else + "1pww05hr48m6v0g1sz48g1c7p615lig3s12l21xgyz4gkjzmjy22"; + }; + + nativeBuildInputs = with xorg; [ + at-spi2-core + atk + alsaLib + autoPatchelfHook + cairo + cups.lib + dbus.daemon.lib + expat + gcc-unwrapped + gdk-pixbuf + glib + gnome2.pango + gtk3-x11 + nss + nspr + libuuid + libX11 + libxcb + libXcomposite + libXcursor + libXdamage + libXext + libXfixes + libXi + libXrandr + libXrender + libXScrnSaver + libXtst + makeWrapper + wrapGAppsHook + ]; + + buildInputs = [ streamlink ]; + + dontBuild = true; + dontConfigure = true; + + installPhase = '' + mkdir -p $out/{bin,opt/${basename},share} + + # Install all files, remove unnecessary ones + cp -a . $out/opt/${basename}/ + rm -r $out/opt/${basename}/{{add,remove}-menuitem.sh,credits.html,icons/} + + wrapProgram $out/opt/${basename}/${basename} --add-flags "--no-version-check" --prefix LD_LIBRARY_PATH : ${runtimeLibs} + + ln -s "$out/opt/${basename}/${basename}" $out/bin/ + ln -s "${desktopItem}/share/applications" $out/share/ + ''; + + desktopItem = makeDesktopItem { + name = basename; + exec = basename; + icon = basename; + desktopName = "Streamlink Twitch GUI"; + genericName = meta.description; + categories = "AudioVideo;Network;"; + }; + + meta = with stdenv.lib; { + description = "Twitch.tv browser for Streamlink"; + longDescription = "Browse Twitch.tv and watch streams in your videoplayer of choice"; + homepage = "https://streamlink.github.io/streamlink-twitch-gui/"; + downloadPage = https://github.com/streamlink/streamlink-twitch-gui/releases; + license = licenses.mit; + maintainers = with maintainers; [ rileyinman ]; + platforms = [ "x86_64-linux" "i686-linux" ]; + }; +} diff --git a/infra/libkookie/nixpkgs/pkgs/applications/video/streamlink/default.nix b/infra/libkookie/nixpkgs/pkgs/applications/video/streamlink/default.nix new file mode 100644 index 000000000000..4c8800c918e2 --- /dev/null +++ b/infra/libkookie/nixpkgs/pkgs/applications/video/streamlink/default.nix @@ -0,0 +1,32 @@ +{ stdenv, pythonPackages, fetchFromGitHub, rtmpdump, ffmpeg_3 }: + +pythonPackages.buildPythonApplication rec { + version = "1.5.0"; + pname = "streamlink"; + + src = fetchFromGitHub { + owner = "streamlink"; + repo = "streamlink"; + rev = version; + sha256 = "00pishpyim3mcvr9njcbfhj79j85b5xhkslk3mspc2csqknw4k61"; + }; + + checkInputs = with pythonPackages; [ pytest mock requests-mock freezegun ]; + + propagatedBuildInputs = (with pythonPackages; [ pycryptodome requests iso-639 iso3166 websocket_client isodate ]) ++ [ rtmpdump ffmpeg_3 ]; + + meta = with stdenv.lib; { + homepage = "https://github.com/streamlink/streamlink"; + description = "CLI for extracting streams from various websites to video player of your choosing"; + longDescription = '' + Streamlink is a CLI utility that pipes flash videos from online + streaming services to a variety of video players such as VLC, or + alternatively, a browser. + + Streamlink is a fork of the livestreamer project. + ''; + license = licenses.bsd2; + platforms = platforms.linux ++ platforms.darwin; + maintainers = with maintainers; [ dezgeg zraexy enzime ]; + }; +} diff --git a/infra/libkookie/nixpkgs/pkgs/applications/video/subdl/default.nix b/infra/libkookie/nixpkgs/pkgs/applications/video/subdl/default.nix new file mode 100644 index 000000000000..b2b020a20d23 --- /dev/null +++ b/infra/libkookie/nixpkgs/pkgs/applications/video/subdl/default.nix @@ -0,0 +1,26 @@ +{ stdenv, fetchFromGitHub, python3 }: + +stdenv.mkDerivation { + name = "subdl-0.0pre.2017.11.06"; + + src = fetchFromGitHub { + owner = "alexanderwink"; + repo = "subdl"; + rev = "4cf5789b11f0ff3f863b704b336190bf968cd471"; + sha256 = "0kmk5ck1j49q4ww0lvas2767kwnzhkq0vdwkmjypdx5zkxz73fn8"; + }; + + meta = { + homepage = "https://github.com/alexanderwink/subdl"; + description = "A command-line tool to download subtitles from opensubtitles.org"; + platforms = stdenv.lib.platforms.all; + license = stdenv.lib.licenses.gpl3; + maintainers = [ stdenv.lib.maintainers.exfalso ]; + }; + + buildInputs = [ python3 ]; + + installPhase = '' + install -vD subdl $out/bin/subdl + ''; +} diff --git a/infra/libkookie/nixpkgs/pkgs/applications/video/subtitleeditor/default.nix b/infra/libkookie/nixpkgs/pkgs/applications/video/subtitleeditor/default.nix new file mode 100644 index 000000000000..29e2de6b6c0a --- /dev/null +++ b/infra/libkookie/nixpkgs/pkgs/applications/video/subtitleeditor/default.nix @@ -0,0 +1,64 @@ +{ stdenv, fetchFromGitHub, autoreconfHook, pkgconfig, intltool, file, + desktop-file-utils, enchant, gtk3, gtkmm3, gst_all_1, hicolor-icon-theme, + libsigcxx, libxmlxx, xdg_utils, isocodes, wrapGAppsHook +}: + +let + version = "0.54.0"; +in + +stdenv.mkDerivation { + pname = "subtitleeditor"; + inherit version; + + src = fetchFromGitHub { + owner = "kitone"; + repo = "subtitleeditor"; + rev = version; + sha256 = "0vxcscc9m6gymgj173ahk2g9hlk9588z5fdaavmkpyriqdlhwm11"; + }; + + nativeBuildInputs = [ + autoreconfHook + pkgconfig + intltool + file + wrapGAppsHook + ]; + + buildInputs = [ + desktop-file-utils + enchant + gtk3 + gtkmm3 + gst_all_1.gstreamer + gst_all_1.gstreamermm + gst_all_1.gst-plugins-base + gst_all_1.gst-plugins-good + hicolor-icon-theme + libsigcxx + libxmlxx + xdg_utils + isocodes + ]; + + enableParallelBuilding = true; + + preConfigure = "substituteInPlace ./configure --replace /usr/bin/file ${file}/bin/file"; + + configureFlags = [ "--disable-debug" ]; + + meta = { + description = "GTK 3 application to edit video subtitles"; + longDescription = '' + Subtitle Editor is a GTK 3 tool to edit subtitles for GNU/Linux/*BSD. It + can be used for new subtitles or as a tool to transform, edit, correct + and refine existing subtitle. This program also shows sound waves, which + makes it easier to synchronise subtitles to voices. + ''; + homepage = "http://kitone.github.io/subtitleeditor/"; + license = stdenv.lib.licenses.gpl3Plus; + platforms = stdenv.lib.platforms.linux; + maintainers = [ stdenv.lib.maintainers.plcplc ]; + }; +} diff --git a/infra/libkookie/nixpkgs/pkgs/applications/video/tartube/default.nix b/infra/libkookie/nixpkgs/pkgs/applications/video/tartube/default.nix new file mode 100644 index 000000000000..23ee76eb4693 --- /dev/null +++ b/infra/libkookie/nixpkgs/pkgs/applications/video/tartube/default.nix @@ -0,0 +1,74 @@ +{ stdenv +, lib +, fetchFromGitHub +, gdk-pixbuf +, gobject-introspection +, gtk3 +, libnotify +, pango +, python3Packages +, wrapGAppsHook +, youtube-dl +, glib +}: + +python3Packages.buildPythonApplication rec { + pname = "tartube"; + version = "2.1.0"; + + src = fetchFromGitHub { + owner = "axcore"; + repo = "tartube"; + rev = "v${version}"; + sha256 = "1klqjwqm29y2f6nc8gn222ykfvb5d64z1w2kifw9bq5bv0np9bda"; + }; + + nativeBuildInputs = [ + gobject-introspection + wrapGAppsHook + ]; + + strictDeps = false; + + propagatedBuildInputs = with python3Packages; [ + moviepy + pygobject3 + pyxdg + requests + feedparser + playsound + ]; + + buildInputs = [ + gdk-pixbuf + gtk3 + glib + libnotify + pango + ]; + + postPatch = '' + sed -i "/^\s*install_requires/s/, 'gi'\|'gi', \|'gi'//" setup.py + ''; + + postInstall = '' + mkdir -p $out/share/{man/man1,applications,pixmaps} + cp pack/tartube.1 $out/share/man/man1 + cp pack/tartube.desktop $out/share/applications + cp pack/tartube.{png,xpm} $out/share/pixmaps + ''; + + doCheck = false; + + makeWrapperArgs = [ + "--prefix PATH : ${stdenv.lib.makeBinPath [ youtube-dl ]}" + ]; + + meta = with lib; { + description = "A GUI front-end for youtube-dl"; + license = licenses.gpl3; + platforms = platforms.linux; + maintainers = with maintainers; [ mkg20001 luc65r ]; + homepage = "https://tartube.sourceforge.io/"; + }; +} diff --git a/infra/libkookie/nixpkgs/pkgs/applications/video/tivodecode/default.nix b/infra/libkookie/nixpkgs/pkgs/applications/video/tivodecode/default.nix new file mode 100644 index 000000000000..33e04b77c4b4 --- /dev/null +++ b/infra/libkookie/nixpkgs/pkgs/applications/video/tivodecode/default.nix @@ -0,0 +1,23 @@ +{ stdenv, fetchurl }: + +let + version = "0.2pre4"; + +in + +stdenv.mkDerivation { + pname = "tivodecode"; + inherit version; + + src = fetchurl { + url = "mirror://sourceforge/tivodecode/tivodecode/${version}/tivodecode-${version}.tar.gz"; + sha256 = "1pww5r2iygscqn20a1cz9xbfh18p84a6a5ifg4h5nvyn9b63k23q"; + }; + + meta = with stdenv.lib; { + description = "Converts a .TiVo file (produced by TiVoToGo) to a normal MPEG file"; + homepage = "http://tivodecode.sourceforge.net"; + platforms = platforms.unix; + license = licenses.bsd3; + }; +} diff --git a/infra/libkookie/nixpkgs/pkgs/applications/video/uvccapture/default.nix b/infra/libkookie/nixpkgs/pkgs/applications/video/uvccapture/default.nix new file mode 100644 index 000000000000..f52ffa923d28 --- /dev/null +++ b/infra/libkookie/nixpkgs/pkgs/applications/video/uvccapture/default.nix @@ -0,0 +1,50 @@ +{ stdenv, fetchurl, libjpeg }: + +let + debianPatches = fetchurl { + url = "mirror://debian/pool/main/u/uvccapture/uvccapture_0.5-3.debian.tar.gz"; + sha256 = "0m29by13nw1r8sch366qzdxg5rsd1k766kqg1nj2pdb8f7pwjh9r"; + }; + +in + +stdenv.mkDerivation { + name = "uvccapture-0.5"; + + src = fetchurl { + url = "mirror://debian/pool/main/u/uvccapture/uvccapture_0.5.orig.tar.gz"; + sha256 = "1b3akkcmr3brbf93akr8xi20w8zqf2g0qfq928500wy04qi6jqpi"; + }; + + buildInputs = [ libjpeg ]; + + patchPhase = '' + tar xvf "${debianPatches}" + for fname in debian/patches/fix_videodev_include_FTBFS.patch \ + debian/patches/warnings.patch \ + debian/patches/numbuffers.patch + do + echo "Applying patch $fname" + patch < "$fname" + done + ''; + + makeFlagsArray = [ "PREFIX=$(out)/bin/" ]; + + preInstall = '' + mkdir -p "$out/bin" + ''; + + # Upstream has no man page, install one from Debian + postInstall = '' + mkdir -p "$out/share/man/man1" + cp -v debian/uvccapture.1 "$out/share/man/man1/" + ''; + + meta = with stdenv.lib; { + description = "Capture image from USB webcam at a specified interval"; + license = licenses.gpl2Plus; + platforms = platforms.linux; + maintainers = [ maintainers.bjornfor ]; + }; +} diff --git a/infra/libkookie/nixpkgs/pkgs/applications/video/vcs/default.nix b/infra/libkookie/nixpkgs/pkgs/applications/video/vcs/default.nix new file mode 100644 index 000000000000..0cbdeaaf6ff8 --- /dev/null +++ b/infra/libkookie/nixpkgs/pkgs/applications/video/vcs/default.nix @@ -0,0 +1,39 @@ +{ stdenv, fetchurl, makeWrapper +, coreutils, ffmpeg, gawk, gnugrep, gnused, imagemagick, mplayer, utillinux +, dejavu_fonts +}: +with stdenv.lib; +let + version = "1.13.4"; + runtimeDeps = [ coreutils ffmpeg gawk gnugrep gnused imagemagick mplayer utillinux ]; +in +stdenv.mkDerivation { + pname = "vcs"; + inherit version; + src = fetchurl { + url = "http://p.outlyer.net/files/vcs/vcs-${version}.bash"; + sha256 = "0nhwcpffp3skz24kdfg4445i6j37ks6a0qsbpfd3dbi4vnpa60a0"; + }; + + unpackCmd = "mkdir src; cp $curSrc src/vcs"; + patches = [ ./fonts.patch ]; + nativeBuildInputs = [ makeWrapper ]; + doBuild = false; + + inherit dejavu_fonts; + installPhase = '' + mkdir -p $out/bin + mv vcs $out/bin/vcs + substituteAllInPlace $out/bin/vcs + chmod +x $out/bin/vcs + wrapProgram $out/bin/vcs --argv0 vcs --set PATH "${makeBinPath runtimeDeps}" + ''; + + meta = { + description = "Generates contact sheets from video files"; + homepage = "http://p.outlyer.net/vcs"; + license = licenses.cc-by-nc-sa-30; + maintainers = with maintainers; [ elitak ]; + platforms = with platforms; unix; + }; +} diff --git a/infra/libkookie/nixpkgs/pkgs/applications/video/vcs/fonts.patch b/infra/libkookie/nixpkgs/pkgs/applications/video/vcs/fonts.patch new file mode 100644 index 000000000000..3df0359f8b26 --- /dev/null +++ b/infra/libkookie/nixpkgs/pkgs/applications/video/vcs/fonts.patch @@ -0,0 +1,23 @@ +--- a/vcs 2020-04-04 14:37:53.531095977 -0700 ++++ b/vcs 2020-04-04 14:40:46.459407878 -0700 +@@ -3669,18 +3669,8 @@ + [[ ( -z $USR_FONT_TITLE ) && ( $FONT_TITLE != 'DejaVu-Sans-Book' ) ]] && return + [[ ( -z $USR_FONT_TSTAMPS ) && ( $FONT_TSTAMPS != 'DejaVu-Sans-Book' ) ]] && return + [[ ( -z $USR_FONT_SIGN ) && ( $FONT_SIGN != 'DejaVu-Sans-Book' ) ]] && return +- # Try to locate DejaVu Sans +- local dvs='' +- if [[ -d /usr/local/share/fonts ]]; then +- dvs=$(find /usr/local/share/fonts/ -type f -iname 'dejavusans.ttf') +- fi +- if [[ ( -z $dvs ) && ( -d /usr/share/fonts ) ]]; then +- dvs=$(find /usr/share/fonts/ -type f -iname 'dejavusans.ttf') +- fi +- if [[ -z $dvs ]]; then +- warn "Unable to locate DejaVu Sans font. Falling back to helvetica." +- dvs=helvetica +- fi ++ # Use DejaVu Sans, by default ++ local dvs='@dejavu_fonts@/share/fonts/truetype/DejaVuSans.ttf' + [[ -z $USR_FONT_HEADING ]] && FONT_HEADING="$dvs" + [[ -z $USR_FONT_TITLE ]] && FONT_TITLE="$dvs" + [[ -z $USR_FONT_TSTAMPS ]] && FONT_TSTAMPS="$dvs" diff --git a/infra/libkookie/nixpkgs/pkgs/applications/video/vdr/default.nix b/infra/libkookie/nixpkgs/pkgs/applications/video/vdr/default.nix new file mode 100644 index 000000000000..bc3d54f3b5b8 --- /dev/null +++ b/infra/libkookie/nixpkgs/pkgs/applications/video/vdr/default.nix @@ -0,0 +1,56 @@ +{ stdenv, fetchgit, fontconfig, libjpeg, libcap, freetype, fribidi, pkgconfig +, gettext, systemd, perl, lib +, enableSystemd ? true +, enableBidi ? true +}: stdenv.mkDerivation rec { + + pname = "vdr"; + version = "2.4.4"; + + src = fetchgit { + url = "git://git.tvdr.de/vdr.git"; + rev = "V20404"; + sha256 = "1fzghnp5mpcwn3a3fyk3w8h15z4f2cnc75247kvxj1c9069mgnwa"; + }; + + enableParallelBuilding = true; + + postPatch = "substituteInPlace Makefile --replace libsystemd-daemon libsystemd"; + + buildInputs = [ fontconfig libjpeg libcap freetype perl ] + ++ lib.optional enableSystemd systemd + ++ lib.optional enableBidi fribidi; + + buildFlags = [ "vdr" "i18n" ] + ++ lib.optional enableSystemd "SDNOTIFY=1" + ++ lib.optional enableBidi "BIDI=1"; + + nativeBuildInputs = [ perl ]; + + # plugins uses the same build environment as vdr + propagatedNativeBuildInputs = [ pkgconfig gettext ]; + + installFlags = [ + "DESTDIR=$(out)" + "PREFIX=" # needs to be empty, otherwise plugins try to install at same prefix + ]; + + installTargets = [ "install-pc" "install-bin" "install-doc" "install-i18n" + "install-includes" ]; + + postInstall = '' + mkdir -p $out/lib/vdr # only needed if vdr is started without any plugin + mkdir -p $out/share/vdr/conf + cp *.conf $out/share/vdr/conf + ''; + + outputs = [ "out" "dev" "man" ]; + + meta = with lib; { + homepage = "http://www.tvdr.de/"; + description = "Video Disc Recorder"; + maintainers = [ maintainers.ck3d ]; + platforms = [ "i686-linux" "x86_64-linux" ]; + license = licenses.gpl2; + }; +} diff --git a/infra/libkookie/nixpkgs/pkgs/applications/video/vdr/plugins.nix b/infra/libkookie/nixpkgs/pkgs/applications/video/vdr/plugins.nix new file mode 100644 index 000000000000..30cd93178c25 --- /dev/null +++ b/infra/libkookie/nixpkgs/pkgs/applications/video/vdr/plugins.nix @@ -0,0 +1,340 @@ +{ stdenv, fetchurl, fetchgit, vdr, alsaLib, fetchFromGitHub +, libvdpau, libxcb, xcbutilwm, graphicsmagick, libav, pcre, xorgserver, ffmpeg_3 +, libiconv, boost, libgcrypt, perl, utillinux, groff, libva, xorg, ncurses +, callPackage +}: let + mkPlugin = name: stdenv.mkDerivation { + name = "vdr-${vdr.version}-${name}"; + inherit (vdr) src; + buildInputs = [ vdr ]; + preConfigure = "cd PLUGINS/src/${name}"; + installFlags = [ "DESTDIR=$(out)" ]; + }; +in { + + xineliboutput = callPackage ./xineliboutput {}; + + skincurses = (mkPlugin "skincurses").overrideAttrs(oldAttr: { + buildInputs = oldAttr.buildInputs ++ [ ncurses ]; + }); + + inherit (stdenv.lib.genAttrs [ + "epgtableid0" "hello" "osddemo" "pictures" "servicedemo" "status" "svdrpdemo" + ] mkPlugin); + + femon = stdenv.mkDerivation rec { + + name = "vdr-femon-2.4.0"; + + buildInputs = [ vdr ]; + + src = fetchurl { + url = "http://www.saunalahti.fi/~rahrenbe/vdr/femon/files/${name}.tgz"; + sha256 = "1hra1xslj8s68zbyr8zdqp8yap0aj1p6rxyc6cwy1j122kwcnapp"; + }; + + postPatch = "substituteInPlace Makefile --replace /bin/true true"; + + makeFlags = [ "DESTDIR=$(out)" ]; + + meta = with stdenv.lib; { + homepage = "http://www.saunalahti.fi/~rahrenbe/vdr/femon/"; + description = "DVB Frontend Status Monitor plugin for VDR"; + maintainers = [ maintainers.ck3d ]; + license = licenses.gpl2; + platforms = [ "i686-linux" "x86_64-linux" ]; + }; + + }; + + vaapidevice = stdenv.mkDerivation { + + pname = "vdr-vaapidevice"; + version = "20190525"; + + buildInputs = [ + vdr libxcb xcbutilwm ffmpeg_3 + alsaLib + libvdpau # vdpau + libva # va-api + ] ++ (with xorg; [ libxcb libX11 ]); + + makeFlags = [ "DESTDIR=$(out)" ]; + + postPatch = '' + substituteInPlace vaapidev.c --replace /usr/bin/X ${xorgserver}/bin/X + ''; + + src = fetchFromGitHub { + owner = "pesintta"; + repo = "vdr-plugin-vaapidevice"; + sha256 = "1gwjp15kjki9x5742fhaqk3yc2bbma74yp2vpn6wk6kj46nbnwp6"; + rev = "d19657bae399e79df107e316ca40922d21393f80"; + }; + + meta = with stdenv.lib; { + homepage = "https://github.com/pesintta/vdr-plugin-vaapidevice"; + description = "VDR SoftHDDevice Plug-in (with VA-API VPP additions)"; + maintainers = [ maintainers.ck3d ]; + license = licenses.gpl2; + platforms = [ "i686-linux" "x86_64-linux" ]; + }; + + }; + + + markad = stdenv.mkDerivation rec { + name = "vdr-markad-2017-03-13"; + + src = fetchgit { + url = "git://projects.vdr-developer.org/vdr-plugin-markad.git"; + sha256 = "0jvy70r8bcmbs7zdqilfz019z5xkz5c6rs57h1dsgv8v6x86c2i4"; + rev = "ea2e182ec798375f3830f8b794e7408576f139ad"; + }; + + buildInputs = [ vdr libav ]; + + postPatch = '' + substituteInPlace command/Makefile --replace '$(DESTDIR)/usr' '$(DESTDIR)' + + substituteInPlace plugin/markad.cpp \ + --replace "/usr/bin" "$out/bin" \ + --replace "/var/lib/markad" "$out/var/lib/markad" + + substituteInPlace command/markad-standalone.cpp \ + --replace "/var/lib/markad" "$out/var/lib/markad" + ''; + + preBuild = '' + mkdir -p $out/lib/vdr + ''; + + buildFlags = [ + "DESTDIR=$(out)" + "LIBDIR=$(out)/lib/vdr" + "VDRDIR=${vdr.dev}/include/vdr" + "LOCALEDIR=$(DESTDIR)/share/locale" + ]; + + installFlags = buildFlags; + + meta = with stdenv.lib; { + homepage = "https://projects.vdr-developer.org/projects/plg-markad"; + description = "Ein Programm zum automatischen Setzen von Schnittmarken bei Werbeeinblendungen während einer Sendung."; + maintainers = [ maintainers.ck3d ]; + license = licenses.gpl2; + platforms = [ "i686-linux" "x86_64-linux" ]; + }; + + }; + + epgsearch = stdenv.mkDerivation rec { + pname = "vdr-epgsearch"; + version = "20191202"; + + src = fetchgit { + url = "git://projects.vdr-developer.org/vdr-plugin-epgsearch.git"; + sha256 = "18kskwnnscr4rb4yzfikw1la318zjgraf340cl7n9z77chi2gi8m"; + rev = "602d66c55964998ce25c6c57b302949a9517f149"; + }; + + postPatch = '' + for f in *.sh; do + patchShebangs "$f" + done + ''; + + nativeBuildInputs = [ + perl # for pod2man and pos2html + utillinux + groff + ]; + + buildInputs = [ + vdr + pcre + ]; + + buildFlags = [ + "SENDMAIL=" + "REGEXLIB=pcre" + ]; + + installFlags = [ + "DESTDIR=$(out)" + ]; + + outputs = [ "out" "man" ]; + + meta = with stdenv.lib; { + homepage = "http://winni.vdr-developer.org/epgsearch"; + description = "Searchtimer and replacement of the VDR program menu"; + maintainers = [ maintainers.ck3d ]; + license = licenses.gpl2; + platforms = [ "i686-linux" "x86_64-linux" ]; + }; + + }; + + vnsiserver = let + name = "vnsiserver"; + version = "1.8.0"; + in stdenv.mkDerivation { + name = "vdr-${name}-${version}"; + + buildInputs = [ vdr ]; + + installFlags = [ "DESTDIR=$(out)" ]; + + src = fetchFromGitHub { + repo = "vdr-plugin-${name}"; + owner = "FernetMenta"; + rev = "v${version}"; + sha256 = "0n7idpxqx7ayd63scl6xwdx828ik4kb2mwz0c30cfjnmnxxd45lw"; + }; + + meta = with stdenv.lib; { + homepage = "https://github.com/FernetMenta/vdr-plugin-vnsiserver"; + description = "VDR plugin to handle KODI clients."; + maintainers = [ maintainers.ck3d ]; + license = licenses.gpl2; + platforms = [ "i686-linux" "x86_64-linux" ]; + }; + + }; + + text2skin = stdenv.mkDerivation { + name = "vdr-text2skin-1.3.4-20170702"; + + src = fetchgit { + url = "git://projects.vdr-developer.org/vdr-plugin-text2skin.git"; + sha256 = "19hkwmaw6nwak38bv6cm2vcjjkf4w5yjyxb98qq6zfjjh5wq54aa"; + rev = "8f7954da2488ced734c30e7c2704b92a44e6e1ad"; + }; + + buildInputs = [ vdr graphicsmagick ]; + + buildFlags = [ + "DESTDIR=$(out)" + "IMAGELIB=graphicsmagic" + "VDRDIR=${vdr.dev}/include/vdr" + "LOCALEDIR=$(DESTDIR)/share/locale" + "LIBDIR=$(DESTDIR)/lib/vdr" + ]; + + preBuild = '' + mkdir -p $out/lib/vdr + ''; + + installPhase = ":"; + + meta = with stdenv.lib; { + homepage = "https://projects.vdr-developer.org/projects/plg-text2skin"; + description = "VDR Text2Skin Plugin"; + maintainers = [ maintainers.ck3d ]; + license = licenses.gpl2; + platforms = [ "i686-linux" "x86_64-linux" ]; + }; + }; + + fritzbox = let + libconvpp = stdenv.mkDerivation { + name = "jowi24-libconv++-20130216"; + propagatedBuildInputs = [ libiconv ]; + CXXFLAGS = "-std=gnu++11 -Os"; + src = fetchFromGitHub { + owner = "jowi24"; + repo = "libconvpp"; + rev = "90769b2216bc66c5ea5e41a929236c20d367c63b"; + sha256 = "0bf0dwxrzd42l84p8nxcsjdk1gvzlhad93nsbn97z6kr61n4cr33"; + }; + installPhase = '' + mkdir -p $out/lib $out/include/libconv++ + cp source.a $out/lib/libconv++.a + cp *.h $out/include/libconv++ + ''; + }; + + liblogpp = stdenv.mkDerivation { + name = "jowi24-liblogpp-20130216"; + CXXFLAGS = "-std=gnu++11 -Os"; + src = fetchFromGitHub { + owner = "jowi24"; + repo = "liblogpp"; + rev = "eee4046d2ae440974bcc8ceec00b069f0a2c62b9"; + sha256 = "01aqvwmwh5kk3mncqpim8llwha9gj5qq0c4cvqfn4h8wqi3d9l3p"; + }; + installPhase = '' + mkdir -p $out/lib $out/include/liblog++ + cp source.a $out/lib/liblog++.a + cp *.h $out/include/liblog++ + ''; + }; + + libnetpp = stdenv.mkDerivation { + name = "jowi24-libnet++-20180628"; + CXXFLAGS = "-std=gnu++11 -Os"; + src = fetchFromGitHub { + owner = "jowi24"; + repo = "libnetpp"; + rev = "212847f0efaeffee8422059b8e202d844174aaf3"; + sha256 = "0vjl6ld6aj25rzxm26yjv3h2gy7gp7qnbinpw6sf1shg2xim9x0b"; + }; + installPhase = '' + mkdir -p $out/lib $out/include/libnet++ + cp source.a $out/lib/libnet++.a + cp *.h $out/include/libnet++ + ''; + buildInputs = [ boost liblogpp libconvpp ]; + }; + + libfritzpp = stdenv.mkDerivation { + name = "jowi24-libfritzpp-20131201"; + CXXFLAGS = "-std=gnu++11 -Os"; + src = fetchFromGitHub { + owner = "jowi24"; + repo = "libfritzpp"; + rev = "ca19013c9451cbac7a90155b486ea9959ced0f67"; + sha256 = "0jk93zm3qzl9z96gfs6xl1c8ip8lckgbzibf7jay7dbgkg9kyjfg"; + }; + installPhase = '' + mkdir -p $out/lib $out/include/libfritz++ + cp source.a $out/lib/libfritz++.a + cp *.h $out/include/libfritz++ + ''; + propagatedBuildInputs = [ libgcrypt ]; + buildInputs = [ boost liblogpp libconvpp libnetpp ]; + }; + + in stdenv.mkDerivation rec { + pname = "vdr-fritzbox"; + + version = "1.5.3"; + + src = fetchFromGitHub { + owner = "jowi24"; + repo = "vdr-fritz"; + rev = version; + sha256 = "0wab1kyma9jzhm6j33cv9hd2a5d1334ghgdi2051nmr1bdcfcsw8"; + }; + + postUnpack = '' + cp ${libfritzpp}/lib/* $sourceRoot/libfritz++ + cp ${liblogpp}/lib/* $sourceRoot/liblog++ + cp ${libnetpp}/lib/* $sourceRoot/libnet++ + cp ${libconvpp}/lib/* $sourceRoot/libconv++ + ''; + + buildInputs = [ vdr boost libconvpp libfritzpp libnetpp liblogpp ]; + + installFlags = [ "DESTDIR=$(out)" ]; + + meta = with stdenv.lib; { + homepage = "https://github.com/jowi24/vdr-fritz"; + description = "A plugin for VDR to access AVMs Fritz Box routers"; + maintainers = [ maintainers.ck3d ]; + license = licenses.gpl2; + platforms = [ "i686-linux" "x86_64-linux" ]; + }; + }; +} diff --git a/infra/libkookie/nixpkgs/pkgs/applications/video/vdr/wrapper.nix b/infra/libkookie/nixpkgs/pkgs/applications/video/vdr/wrapper.nix new file mode 100644 index 000000000000..50d3b9d65a8d --- /dev/null +++ b/infra/libkookie/nixpkgs/pkgs/applications/video/vdr/wrapper.nix @@ -0,0 +1,30 @@ +{ symlinkJoin, lib, makeWrapper, vdr +, plugins ? [] +}: let + + makeXinePluginPath = l: lib.concatStringsSep ":" (map (p: "${p}/lib/xine/plugins") l); + + requiredXinePlugins = lib.flatten (map (p: p.passthru.requiredXinePlugins or []) plugins); + +in symlinkJoin { + + name = "vdr-with-plugins-${lib.getVersion vdr}"; + + paths = [ vdr ] ++ plugins; + + nativeBuildInputs = [ makeWrapper ]; + + postBuild = '' + wrapProgram $out/bin/vdr \ + --add-flags "-L $out/lib/vdr --localedir=$out/share/locale" \ + --prefix XINE_PLUGIN_PATH ":" ${makeXinePluginPath requiredXinePlugins} + ''; + + meta = with vdr.meta; { + inherit license homepage; + description = description + + " (with plugins: " + + lib.concatStrings (lib.intersperse ", " (map (x: ""+x.name) plugins)) + + ")"; + }; +} diff --git a/infra/libkookie/nixpkgs/pkgs/applications/video/vdr/xineliboutput/default.nix b/infra/libkookie/nixpkgs/pkgs/applications/video/vdr/xineliboutput/default.nix new file mode 100644 index 000000000000..950cb253c129 --- /dev/null +++ b/infra/libkookie/nixpkgs/pkgs/applications/video/vdr/xineliboutput/default.nix @@ -0,0 +1,69 @@ +{ stdenv, fetchurl, lib, vdr +, libav, libcap, libvdpau +, xineLib, libjpeg, libextractor, libglvnd, libGLU +, libX11, libXext, libXrender, libXrandr +, makeWrapper +}: let + makeXinePluginPath = l: lib.concatStringsSep ":" (map (p: "${p}/lib/xine/plugins") l); + + self = stdenv.mkDerivation rec { + pname = "vdr-xineliboutput"; + version = "2.2.0"; + + src = fetchurl { + url = "mirror://sourceforge/project/xineliboutput/xineliboutput/${pname}-${version}/${pname}-${version}.tgz"; + sha256 = "0a24hs5nr7ncf51c5agyfn1xrvb4p70y3i0s6dlyyd9bwbfjldns"; + }; + + postPatch = '' + # pkg-config is called with opengl, which do not contain needed glx symbols + substituteInPlace configure \ + --replace "X11 opengl" "X11 gl" + ''; + + # configure don't accept argument --prefix + dontAddPrefix = true; + + postConfigure = '' + sed -i config.mak \ + -e 's,XINEPLUGINDIR=/[^/]*/[^/]*/[^/]*/,XINEPLUGINDIR=/,' + ''; + + makeFlags = [ "DESTDIR=$(out)" ]; + + postFixup = '' + for f in $out/bin/*; do + wrapProgram $f \ + --prefix XINE_PLUGIN_PATH ":" "${makeXinePluginPath [ "$out" xineLib ]}" + done + ''; + + nativeBuildInputs = [ makeWrapper ]; + + buildInputs = [ + libav + libcap + libextractor + libjpeg + libglvnd + libGLU + libvdpau + libXext + libXrandr + libXrender + libX11 + vdr + xineLib + ]; + + passthru.requiredXinePlugins = [ xineLib self ]; + + meta = with lib;{ + homepage = "https://sourceforge.net/projects/xineliboutput/"; + description = "Xine-lib based software output device for VDR"; + maintainers = [ maintainers.ck3d ]; + license = licenses.gpl2; + inherit (vdr.meta) platforms; + }; + }; +in self diff --git a/infra/libkookie/nixpkgs/pkgs/applications/video/vlc/default.nix b/infra/libkookie/nixpkgs/pkgs/applications/video/vlc/default.nix new file mode 100644 index 000000000000..58df85332ea0 --- /dev/null +++ b/infra/libkookie/nixpkgs/pkgs/applications/video/vlc/default.nix @@ -0,0 +1,104 @@ +{ stdenv, fetchurl, autoreconfHook +, libarchive, perl, xorg, libdvdnav, libbluray +, zlib, a52dec, libmad, faad2, ffmpeg_3, alsaLib +, pkgconfig, dbus, fribidi, freefont_ttf, libebml, libmatroska +, libvorbis, libtheora, speex, lua5, libgcrypt, libgpgerror, libupnp +, libcaca, libpulseaudio, flac, schroedinger, libxml2, librsvg +, mpeg2dec, systemd, gnutls, avahi, libcddb, libjack2, SDL, SDL_image +, libmtp, unzip, taglib, libkate, libtiger, libv4l, samba, libssh2, liboggz +, libass, libva, libdvbpsi, libdc1394, libraw1394, libopus +, libvdpau, libsamplerate, live555, fluidsynth, wayland, wayland-protocols +, onlyLibVLC ? false +, withQt5 ? true, qtbase ? null, qtsvg ? null, qtx11extras ? null, wrapQtAppsHook ? null +, jackSupport ? false +, removeReferencesTo +, chromecastSupport ? true, protobuf, libmicrodns +}: + +# chromecastSupport requires TCP port 8010 to be open for it to work. +# If your firewall is enabled, make sure to have something like: +# networking.firewall.allowedTCPPorts = [ 8010 ]; + +with stdenv.lib; + +assert (withQt5 -> qtbase != null && qtsvg != null && qtx11extras != null && wrapQtAppsHook != null); + +stdenv.mkDerivation rec { + pname = "${optionalString onlyLibVLC "lib"}vlc"; + version = "3.0.11.1"; + + src = fetchurl { + url = "http://get.videolan.org/vlc/${version}/vlc-${version}.tar.xz"; + sha256 = "1f46h0hv7fk35zg4iczlp7ib7h2jmh8m4r5klw3g2558ib9134qq"; + }; + + # VLC uses a *ton* of libraries for various pieces of functionality, many of + # which are not included here for no other reason that nobody has mentioned + # needing them + buildInputs = [ + zlib a52dec libmad faad2 ffmpeg_3 alsaLib libdvdnav libdvdnav.libdvdread + libbluray dbus fribidi libvorbis libtheora speex lua5 libgcrypt libgpgerror + libupnp libcaca libpulseaudio flac schroedinger libxml2 librsvg mpeg2dec + systemd gnutls avahi libcddb SDL SDL_image libmtp unzip taglib libarchive + libkate libtiger libv4l samba libssh2 liboggz libass libdvbpsi libva + xorg.xlibsWrapper xorg.libXv xorg.libXvMC xorg.libXpm xorg.xcbutilkeysyms + libdc1394 libraw1394 libopus libebml libmatroska libvdpau libsamplerate + fluidsynth wayland wayland-protocols + ] ++ optional (!stdenv.hostPlatform.isAarch64) live555 + ++ optionals withQt5 [ qtbase qtsvg qtx11extras ] + ++ optional jackSupport libjack2 + ++ optionals chromecastSupport [ protobuf libmicrodns ]; + + nativeBuildInputs = [ autoreconfHook perl pkgconfig removeReferencesTo ] + ++ optionals withQt5 [ wrapQtAppsHook ]; + + enableParallelBuilding = true; + + LIVE555_PREFIX = if (!stdenv.hostPlatform.isAarch64) then live555 else null; + + # vlc depends on a c11-gcc wrapper script which we don't have so we need to + # set the path to the compiler + BUILDCC = "${stdenv.cc}/bin/gcc"; + + postPatch = '' + substituteInPlace configure \ + --replace /bin/echo echo + + substituteInPlace modules/text_renderer/freetype/platform_fonts.h --replace \ + /usr/share/fonts/truetype/freefont ${freefont_ttf}/share/fonts/truetype + ''; + + # - Touch plugins (plugins cache keyed off mtime and file size: + # https://github.com/NixOS/nixpkgs/pull/35124#issuecomment-370552830 + # - Remove references to the Qt development headers (used in error messages) + postFixup = '' + find $out/lib/vlc/plugins -exec touch -d @1 '{}' ';' + $out/lib/vlc/vlc-cache-gen $out/vlc/plugins + '' + optionalString withQt5 '' + remove-references-to -t "${qtbase.dev}" $out/lib/vlc/plugins/gui/libqt_plugin.so + ''; + + # Most of the libraries are auto-detected so we don't need to set a bunch of + # "--enable-foo" flags here + configureFlags = [ + "--with-kde-solid=$out/share/apps/solid/actions" + ] ++ optional onlyLibVLC "--disable-vlc" + ++ optionals chromecastSupport [ + "--enable-sout" + "--enable-chromecast" + "--enable-microdns" + ]; + + # Remove runtime dependencies on libraries + postConfigure = '' + sed -i 's|^#define CONFIGURE_LINE.*$|#define CONFIGURE_LINE "<removed>"|g' config.h + ''; + + meta = with stdenv.lib; { + description = "Cross-platform media player and streaming server"; + homepage = "http://www.videolan.org/vlc/"; + license = licenses.lgpl21Plus; + platforms = platforms.linux; + broken = if qtbase != null then versionAtLeast qtbase.version "5.15" else false; + }; +} diff --git a/infra/libkookie/nixpkgs/pkgs/applications/video/vokoscreen-ng/default.nix b/infra/libkookie/nixpkgs/pkgs/applications/video/vokoscreen-ng/default.nix new file mode 100644 index 000000000000..600bc715ffb4 --- /dev/null +++ b/infra/libkookie/nixpkgs/pkgs/applications/video/vokoscreen-ng/default.nix @@ -0,0 +1,71 @@ +{ lib +, mkDerivation +, fetchFromGitHub +, fetchpatch +, pkg-config +, qmake +, qttools +, gstreamer +, libX11 +, qtbase +, qtmultimedia +, qtx11extras + +, gst-plugins-base +, gst-plugins-good +, gst-plugins-bad +, gst-plugins-ugly +}: +mkDerivation rec { + + pname = "vokoscreen-ng"; + version = "3.0.5"; + + src = fetchFromGitHub { + owner = "vkohaupt"; + repo = "vokoscreenNG"; + rev = version; + sha256 = "1spyqw8h8bkc1prdb9aixiw5h3hk3gp2p0nj934bnwq04kmfp660"; + }; + + patches = [ + # Better linux integration + (fetchpatch { + url = "https://github.com/vkohaupt/vokoscreenNG/commit/0a3784095ecca582f7eb09551ceb34c309d83637.patch"; + sha256 = "1iibimv8xfxxfk44kkbrkay37ibdndjvs9g53mxr8x8vrsp917bz"; + }) + ]; + + qmakeFlags = [ "src/vokoscreenNG.pro" ]; + + nativeBuildInputs = [ qttools pkg-config qmake ]; + buildInputs = [ + gstreamer + libX11 + qtbase + qtmultimedia + qtx11extras + + gst-plugins-base + gst-plugins-good + gst-plugins-bad + gst-plugins-ugly + ]; + + postPatch = '' + substituteInPlace src/vokoscreenNG.pro \ + --replace lrelease-qt5 lrelease + ''; + + postInstall = '' + qtWrapperArgs+=(--prefix GST_PLUGIN_SYSTEM_PATH_1_0 : "$GST_PLUGIN_SYSTEM_PATH_1_0") + ''; + + meta = with lib; { + description = "User friendly Open Source screencaster for Linux and Windows"; + license = licenses.gpl2Plus; + homepage = "https://github.com/vkohaupt/vokoscreenNG"; + maintainers = with maintainers; [ shamilton ]; + platforms = platforms.linux; + }; +} diff --git a/infra/libkookie/nixpkgs/pkgs/applications/video/vokoscreen/default.nix b/infra/libkookie/nixpkgs/pkgs/applications/video/vokoscreen/default.nix new file mode 100644 index 000000000000..94d0de20ccf7 --- /dev/null +++ b/infra/libkookie/nixpkgs/pkgs/applications/video/vokoscreen/default.nix @@ -0,0 +1,53 @@ +{ stdenv, fetchFromGitHub, mkDerivation +, pkgconfig, qtbase, qttools, qmake, qtmultimedia, qtx11extras, alsaLib, libv4l, libXrandr +, ffmpeg +}: + +mkDerivation rec { + + pname = "vokoscreen"; + version = "2.5.8-beta"; + + src = fetchFromGitHub { + owner = "vkohaupt"; + repo = "vokoscreen"; + rev = version; + sha256 = "1a85vbsi53mhzva49smqwcs61c51wv3ic410nvb9is9nlsbifwan"; + }; + + nativeBuildInputs = [ pkgconfig qmake ]; + buildInputs = [ + alsaLib + libv4l + qtbase + qtmultimedia + qttools + qtx11extras + libXrandr + ]; + + patches = [ + ./ffmpeg-out-of-box.patch + ]; + + preConfigure = '' + sed -i 's/lrelease-qt5/lrelease/g' vokoscreen.pro + ''; + + postConfigure = '' + substituteInPlace settings/QvkSettings.cpp --subst-var-by ffmpeg ${ffmpeg} + ''; + + meta = with stdenv.lib; { + description = "Simple GUI screencast recorder, using ffmpeg"; + homepage = "https://linuxecke.volkoh.de/vokoscreen/vokoscreen.html"; + longDescription = '' + vokoscreen is an easy to use screencast creator to record + educational videos, live recordings of browser, installation, + videoconferences, etc. + ''; + license = licenses.gpl2Plus; + maintainers = [ maintainers.league ]; + platforms = platforms.linux; + }; +} diff --git a/infra/libkookie/nixpkgs/pkgs/applications/video/vokoscreen/ffmpeg-out-of-box.patch b/infra/libkookie/nixpkgs/pkgs/applications/video/vokoscreen/ffmpeg-out-of-box.patch new file mode 100644 index 000000000000..afcee3f9715f --- /dev/null +++ b/infra/libkookie/nixpkgs/pkgs/applications/video/vokoscreen/ffmpeg-out-of-box.patch @@ -0,0 +1,24 @@ +diff --git a/settings/QvkSettings.cpp b/settings/QvkSettings.cpp +index 3008e62..07485bd 100644 +--- a/settings/QvkSettings.cpp ++++ b/settings/QvkSettings.cpp +@@ -66,17 +66,8 @@ void QvkSettings::readAll() + Minimized = settings.value( "Minimized", 0 ).toUInt(); + MinimizedByStart = settings.value( "MinimizedByStart", 0 ).toUInt(); + Countdown = settings.value( "Countdown", 0 ).toUInt(); +- QFile file; +- if ( file.exists( qApp->applicationDirPath().append( "/bin/ffmpeg" ) ) == true ) +- { +- vokoscreenWithLibs = true; +- Recorder = qApp->applicationDirPath().append( "/bin/ffmpeg" ); +- } +- else +- { +- vokoscreenWithLibs = false; +- Recorder = settings.value( "Recorder", "ffmpeg" ).toString(); +- } ++ vokoscreenWithLibs = true; ++ Recorder = settings.value( "Recorder", "@ffmpeg@/bin/ffmpeg" ).toString(); + settings.endGroup(); + + settings.beginGroup( "Videooptions" ); diff --git a/infra/libkookie/nixpkgs/pkgs/applications/video/w_scan/default.nix b/infra/libkookie/nixpkgs/pkgs/applications/video/w_scan/default.nix new file mode 100644 index 000000000000..7710c7d67a31 --- /dev/null +++ b/infra/libkookie/nixpkgs/pkgs/applications/video/w_scan/default.nix @@ -0,0 +1,19 @@ +{ stdenv, fetchurl }: + +stdenv.mkDerivation rec { + pname = "w_scan"; + version = "20170107"; + + src = fetchurl { + url = "http://wirbel.htpc-forum.de/w_scan/${pname}-${version}.tar.bz2"; + sha256 = "1zkgnj2sfvckix360wwk1v5s43g69snm45m0drnzyv7hgf5g7q1q"; + }; + + meta = { + description = "Small CLI utility to scan DVB and ATSC transmissions"; + homepage = "http://wirbel.htpc-forum.de/w_scan/index_en.html"; + platforms = stdenv.lib.platforms.linux; + maintainers = [ stdenv.lib.maintainers.nico202 ] ; + license = stdenv.lib.licenses.gpl2; + }; +} diff --git a/infra/libkookie/nixpkgs/pkgs/applications/video/webcamoid/default.nix b/infra/libkookie/nixpkgs/pkgs/applications/video/webcamoid/default.nix new file mode 100644 index 000000000000..aa559215fe89 --- /dev/null +++ b/infra/libkookie/nixpkgs/pkgs/applications/video/webcamoid/default.nix @@ -0,0 +1,40 @@ +{ stdenv, fetchFromGitHub, pkgconfig, libxcb, mkDerivation, qmake +, qtbase, qtdeclarative, qtquickcontrols, qtquickcontrols2 +, ffmpeg-full, gst_all_1, libpulseaudio, alsaLib, jack2 +, v4l-utils }: +mkDerivation rec { + pname = "webcamoid"; + version = "8.7.1"; + + src = fetchFromGitHub { + sha256 = "1d8g7mq0wf0ycds87xpdhr3zkljgjmb94n3ak9kkxj2fqp9242d2"; + rev = version; + repo = "webcamoid"; + owner = "webcamoid"; + }; + + buildInputs = [ + libxcb + qtbase qtdeclarative qtquickcontrols qtquickcontrols2 + ffmpeg-full + gst_all_1.gstreamer gst_all_1.gst-plugins-base + alsaLib libpulseaudio jack2 + v4l-utils + ]; + + nativeBuildInputs = [ pkgconfig qmake ]; + + qmakeFlags = [ + "Webcamoid.pro" + "INSTALLQMLDIR=${placeholder "out"}/lib/qt/qml" + ]; + + meta = with stdenv.lib; { + description = "Webcam Capture Software"; + longDescription = "Webcamoid is a full featured and multiplatform webcam suite."; + homepage = "https://github.com/webcamoid/webcamoid/"; + license = [ licenses.gpl3Plus ]; + platforms = platforms.linux; + maintainers = with maintainers; [ robaca ]; + }; +} diff --git a/infra/libkookie/nixpkgs/pkgs/applications/video/webtorrent_desktop/default.nix b/infra/libkookie/nixpkgs/pkgs/applications/video/webtorrent_desktop/default.nix new file mode 100644 index 000000000000..961cb403f13c --- /dev/null +++ b/infra/libkookie/nixpkgs/pkgs/applications/video/webtorrent_desktop/default.nix @@ -0,0 +1,96 @@ +{ + alsaLib, atk, cairo, cups, dbus, dpkg, expat, fetchurl, fetchzip, fontconfig, freetype, + gdk-pixbuf, glib, gnome3, libX11, libXScrnSaver, libXcomposite, libXcursor, + libXdamage, libXext, libXfixes, libXi, libXrandr, libXrender, libXtst, + libxcb, nspr, nss, stdenv, udev, libuuid, pango, at-spi2-atk, at-spi2-core +}: + + let + rpath = stdenv.lib.makeLibraryPath ([ + alsaLib + atk + at-spi2-core + at-spi2-atk + cairo + cups + dbus + expat + fontconfig + freetype + gdk-pixbuf + glib + gnome3.gtk + pango + libuuid + libX11 + libXScrnSaver + libXcomposite + libXcursor + libXdamage + libXext + libXfixes + libXi + libXrandr + libXrender + libXtst + libxcb + nspr + nss + stdenv.cc.cc + udev + ]); + in stdenv.mkDerivation rec { + pname = "webtorrent-desktop"; + version = "0.21.0"; + + src = + if stdenv.hostPlatform.system == "x86_64-linux" then + fetchzip { + url = "https://github.com/webtorrent/webtorrent-desktop/releases/download/v${version}/WebTorrent-v${version}-linux.zip"; + sha256 = "13gd8isq2l10kibsc1bsc15dbgpnwa7nw4cwcamycgx6pfz9a852"; + } + else + throw "Webtorrent is not currently supported on ${stdenv.hostPlatform.system}"; + desktopFile = fetchurl { + url = "https://raw.githubusercontent.com/webtorrent/webtorrent-desktop/v${version}/static/linux/share/applications/webtorrent-desktop.desktop"; + sha256 = "1v16dqbxqds3cqg3xkzxsa5fyd8ssddvjhy9g3i3lz90n47916ca"; + }; + icon256File = fetchurl { + url = "https://raw.githubusercontent.com/webtorrent/webtorrent-desktop/v${version}/static/linux/share/icons/hicolor/256x256/apps/webtorrent-desktop.png"; + sha256 = "1dapxvvp7cx52zhyaby4bxm4rll9xc7x3wk8k0il4g3mc7zzn3yk"; + }; + icon48File = fetchurl { + url = "https://raw.githubusercontent.com/webtorrent/webtorrent-desktop/v${version}/static/linux/share/icons/hicolor/48x48/apps/webtorrent-desktop.png"; + sha256 = "00y96w9shbbrdbf6xcjlahqd08154kkrxmqraik7qshiwcqpw7p4"; + }; + phases = [ "unpackPhase" "installPhase" ]; + nativeBuildInputs = [ dpkg ]; + installPhase = '' + mkdir -p $out/share/{applications,icons/hicolor/{48x48,256x256}/apps} + cp -R . $out/libexec + + # Patch WebTorrent + patchelf --set-interpreter "$(cat $NIX_CC/nix-support/dynamic-linker)" \ + --set-rpath ${rpath}:$out/libexec $out/libexec/WebTorrent + + # Symlink to bin + mkdir -p $out/bin + ln -s $out/libexec/WebTorrent $out/bin/WebTorrent + + cp $icon48File $out/share/icons/hicolor/48x48/apps/webtorrent-desktop.png + cp $icon256File $out/share/icons/hicolor/256x256/apps/webtorrent-desktop.png + ## Fix the desktop link + substitute $desktopFile $out/share/applications/webtorrent-desktop.desktop \ + --replace /opt/webtorrent-desktop $out/libexec + ''; + + meta = with stdenv.lib; { + description = "Streaming torrent app for Mac, Windows, and Linux"; + homepage = "https://webtorrent.io/desktop"; + license = licenses.mit; + maintainers = [ maintainers.flokli ]; + platforms = [ + "x86_64-linux" + ]; + }; + } diff --git a/infra/libkookie/nixpkgs/pkgs/applications/video/wf-recorder/default.nix b/infra/libkookie/nixpkgs/pkgs/applications/video/wf-recorder/default.nix new file mode 100644 index 000000000000..09b67149f5a9 --- /dev/null +++ b/infra/libkookie/nixpkgs/pkgs/applications/video/wf-recorder/default.nix @@ -0,0 +1,29 @@ +{ stdenv, fetchFromGitHub, meson, ninja, pkg-config, wayland, scdoc +, wayland-protocols, ffmpeg, x264, libpulseaudio, ocl-icd, opencl-headers +}: + +stdenv.mkDerivation rec { + pname = "wf-recorder"; + version = "0.2.1"; + + src = fetchFromGitHub { + owner = "ammen99"; + repo = pname; + rev = "v${version}"; + sha256 = "1cw6kpcbl33wh95pvy32xrsrm6kkk1awccr3phyh885xjs3b3iim"; + }; + + nativeBuildInputs = [ meson ninja pkg-config wayland scdoc ]; + buildInputs = [ + wayland-protocols ffmpeg x264 libpulseaudio ocl-icd opencl-headers + ]; + + meta = with stdenv.lib; { + description = "Utility program for screen recording of wlroots-based compositors"; + inherit (src.meta) homepage; + changelog = "https://github.com/ammen99/wf-recorder/releases/tag/v${version}"; + license = licenses.mit; + maintainers = with maintainers; [ primeos CrazedProgrammer ]; + platforms = platforms.linux; + }; +} diff --git a/infra/libkookie/nixpkgs/pkgs/applications/video/wxcam/default.nix b/infra/libkookie/nixpkgs/pkgs/applications/video/wxcam/default.nix new file mode 100644 index 000000000000..32712d5b9b07 --- /dev/null +++ b/infra/libkookie/nixpkgs/pkgs/applications/video/wxcam/default.nix @@ -0,0 +1,51 @@ +{ stdenv, fetchurl +, pkgconfig +, intltool +, libX11, libXv, libSM +, gtk, libglade +, wxGTK +, perlPackages +, xvidcore +, mjpegtools +, alsaLib +, libv4l +, cimg }: + +stdenv.mkDerivation rec { + + pname = "wxcam"; + version = "1.1"; + + src = fetchurl { + url = "mirror://sourceforge/project/wxcam/wxcam/${version}/${pname}-${version}.tar.gz"; + sha256 = "1765bvc65fpzn9ycnnj5hais9xkx9v0sm6a878d35x54bpanr859"; + }; + + buildInputs = with stdenv.lib; + [ pkgconfig intltool libX11 libXv libSM gtk libglade wxGTK perlPackages.XMLParser xvidcore mjpegtools alsaLib libv4l cimg ]; + + NIX_CFLAGS_COMPILE="-I ${cimg}/include/cimg"; + + postUnpack = '' + sed -ie 's|/usr/share/|'"$out/share/"'|g' $sourceRoot/Makefile.in + ''; + + installPhase = '' + make install prefix="$out" wxcamdocdir="$out/share/doc/wxcam" + ''; + + meta = with stdenv.lib; { + description = "An open-source, wxGTK-based webcam app for Linux"; + longDescription = '' + wxCam is a webcam application for linux. It supports video recording + (avi uncompressed and Xvid formats), snapshot taking, and some special + commands for philips webcams, so you can also use it for astronomy purposes. + It supports both video4linux 1 and 2 drivers, + so it should work on a very large number of devices. + ''; + homepage = "http://wxcam.sourceforge.net/"; + license = licenses.gpl3Plus; + maintainers = [ maintainers.AndersonTorres ]; + platforms = platforms.linux; + }; +} diff --git a/infra/libkookie/nixpkgs/pkgs/applications/video/xawtv/0001-Fix-build-for-glibc-2.32.patch b/infra/libkookie/nixpkgs/pkgs/applications/video/xawtv/0001-Fix-build-for-glibc-2.32.patch new file mode 100644 index 000000000000..227559f1f91c --- /dev/null +++ b/infra/libkookie/nixpkgs/pkgs/applications/video/xawtv/0001-Fix-build-for-glibc-2.32.patch @@ -0,0 +1,63 @@ +From 009c426ab37ef7f8d9d8e30f45096225203d694a Mon Sep 17 00:00:00 2001 +From: Maximilian Bosch <maximilian@mbosch.me> +Date: Tue, 11 Aug 2020 11:27:21 +0200 +Subject: [PATCH] Fix build for glibc-2.32 + +The `sys_siglist`-array has been removed. Instead, `strsignal` should be +used. +--- + console/fbtools.c | 2 +- + console/record.c | 2 +- + x11/rootv.c | 4 ++-- + 3 files changed, 4 insertions(+), 4 deletions(-) + +diff --git a/console/fbtools.c b/console/fbtools.c +index 9f876df..07739ff 100644 +--- a/console/fbtools.c ++++ b/console/fbtools.c +@@ -520,6 +520,6 @@ fb_catch_exit_signals(void) + + /* cleanup */ + fb_cleanup(); +- fprintf(stderr,"Oops: %s\n",sys_siglist[termsig]); ++ fprintf(stderr,"Oops: %s\n",strsignal(termsig)); + exit(42); + } +diff --git a/console/record.c b/console/record.c +index 685221b..90f0c85 100644 +--- a/console/record.c ++++ b/console/record.c +@@ -429,7 +429,7 @@ ctrlc(int signal) + { + if (verbose) + fprintf(stderr,"\n%s - exiting\n", +- sys_siglist[signal]); ++ strsignal(signal)); + stop = 1; + } + +diff --git a/x11/rootv.c b/x11/rootv.c +index 60a8406..4bf458b 100644 +--- a/x11/rootv.c ++++ b/x11/rootv.c +@@ -133,7 +133,7 @@ catch_sig(int signal) + termsig = signal; + if (verbose) + fprintf(stderr,"received signal %d [%s]\n", +- termsig,sys_siglist[termsig]); ++ termsig,strsignal(termsig)); + } + + static void usage(FILE *fp) +@@ -422,7 +422,7 @@ main(int argc, char *argv[]) + } + if (verbose && termsig) + fprintf(stderr,"exiting on signal %d [%s]\n", +- termsig,sys_siglist[termsig]); ++ termsig,strsignal(termsig)); + if (do_mute && have_mute) + XvSetPortAttribute(dpy,port,XV_MUTE,1); + XvStopVideo(dpy,port,win); +-- +2.25.4 + diff --git a/infra/libkookie/nixpkgs/pkgs/applications/video/xawtv/default.nix b/infra/libkookie/nixpkgs/pkgs/applications/video/xawtv/default.nix new file mode 100644 index 000000000000..ee2f811cb4a1 --- /dev/null +++ b/infra/libkookie/nixpkgs/pkgs/applications/video/xawtv/default.nix @@ -0,0 +1,64 @@ +{ stdenv +, fetchurl +, ncurses +, libjpeg +, libX11 +, libXt +, alsaLib +, aalib +, libXft +, xorgproto +, libv4l +, libFS +, libXaw +, libXpm +, libXext +, libSM +, libICE +, perl +}: + +stdenv.mkDerivation rec { + name = "xawtv-3.107"; + + src = fetchurl { + url = "https://linuxtv.org/downloads/xawtv/${name}.tar.bz2"; + sha256 = "055p0wia0xsj073l8mg4ifa6m81dmv6p45qyh99brramq5iylfy5"; + }; + + patches = [ + ./0001-Fix-build-for-glibc-2.32.patch + ]; + + buildInputs = [ + ncurses + libjpeg + libX11 + libXt + libXft + xorgproto + libFS + perl + alsaLib + aalib + libXaw + libXpm + libXext + libSM + libICE + libv4l + ]; + + makeFlags = [ + "SUID_ROOT=" # do not try to setuid + "resdir=${placeholder ''out''}/share/X11" + ]; + + meta = { + description = "TV application for Linux with apps and tools such as a teletext browser"; + license = stdenv.lib.licenses.gpl2; + homepage = "https://www.kraxel.org/blog/linux/xawtv/"; + maintainers = with stdenv.lib.maintainers; [ domenkozar ]; + platforms = stdenv.lib.platforms.linux; + }; +} diff --git a/infra/libkookie/nixpkgs/pkgs/applications/video/xine-ui/default.nix b/infra/libkookie/nixpkgs/pkgs/applications/video/xine-ui/default.nix new file mode 100644 index 000000000000..f52db04928a4 --- /dev/null +++ b/infra/libkookie/nixpkgs/pkgs/applications/video/xine-ui/default.nix @@ -0,0 +1,34 @@ +{stdenv, fetchurl, pkgconfig, xorg, libpng, xineLib, readline, ncurses, curl +, lirc, shared-mime-info, libjpeg }: + +stdenv.mkDerivation rec { + name = "xine-ui-0.99.12"; + + src = fetchurl { + url = "mirror://sourceforge/xine/${name}.tar.xz"; + sha256 = "10zmmss3hm8gjjyra20qhdc0lb1m6sym2nb2w62bmfk8isfw9gsl"; + }; + + nativeBuildInputs = [ pkgconfig shared-mime-info ]; + + buildInputs = + [ xineLib libpng readline ncurses curl lirc libjpeg + xorg.xlibsWrapper xorg.libXext xorg.libXv xorg.libXxf86vm xorg.libXtst xorg.xorgproto + xorg.libXinerama xorg.libXi xorg.libXft + ]; + + patchPhase = ''sed -e '/curl\/types\.h/d' -i src/xitk/download.c''; + + configureFlags = [ "--with-readline=${readline.dev}" ]; + + LIRC_CFLAGS="-I${lirc}/include"; + LIRC_LIBS="-L ${lirc}/lib -llirc_client"; +#NIX_LDFLAGS = "-lXext -lgcc_s"; + + meta = with stdenv.lib; { + homepage = "http://www.xine-project.org/"; + description = "Xlib-based interface to Xine, a video player"; + platforms = platforms.linux; + license = licenses.gpl2; + }; +} diff --git a/infra/libkookie/nixpkgs/pkgs/applications/video/xscast/default.nix b/infra/libkookie/nixpkgs/pkgs/applications/video/xscast/default.nix new file mode 100644 index 000000000000..f9e6a3d6521f --- /dev/null +++ b/infra/libkookie/nixpkgs/pkgs/applications/video/xscast/default.nix @@ -0,0 +1,35 @@ +{ stdenv, fetchFromGitHub, makeWrapper, ffmpeg_3, imagemagick, dzen2, xorg }: + +stdenv.mkDerivation { + pname = "xscast-unstable"; + version = "2016-07-26"; + + src = fetchFromGitHub { + owner = "KeyboardFire"; + repo = "xscast"; + rev = "9e6fd3c28d3f5ae630619f6dbccaf1f6ca594b21"; + sha256 = "0br27bq9bpglfdpv63h827bipgvhlh10liyhmhcxls4227kagz72"; + }; + + buildInputs = [ makeWrapper ]; + + installPhase = '' + runHook preInstall + + install -Dm755 xscast.sh $out/bin/xscast + install -Dm644 xscast.1 $out/share/man/man1/xscast.1 + patchShebangs $out/bin + + wrapProgram "$out/bin/xscast" \ + --prefix PATH : ${stdenv.lib.makeBinPath [ ffmpeg_3 dzen2 xorg.xwininfo xorg.xinput xorg.xmodmap imagemagick ]} + + runHook postInstall + ''; + + meta = with stdenv.lib; { + homepage = "https://github.com/KeyboardFire/xscast"; + license = licenses.mit; + description = "Screencasts of windows with list of keystrokes overlayed"; + maintainers = with maintainers; [ ma27 ]; + }; +} diff --git a/infra/libkookie/nixpkgs/pkgs/applications/video/xvidcap/default.nix b/infra/libkookie/nixpkgs/pkgs/applications/video/xvidcap/default.nix new file mode 100644 index 000000000000..20d4d84741cc --- /dev/null +++ b/infra/libkookie/nixpkgs/pkgs/applications/video/xvidcap/default.nix @@ -0,0 +1,30 @@ +{ stdenv, fetchurl, perlPackages, pkgconfig, gtk2 +, scrollkeeper, libglade, libXmu, libX11, libXext, gettext +, lame, libXfixes, libXdamage }: + +stdenv.mkDerivation { + name = "xvidcap-1.1.7"; + + src = fetchurl { + url = "mirror://sourceforge/xvidcap/xvidcap-1.1.7.tar.gz"; + sha256 = "0p8rhpyhxgy37crf1xk1046z4p663jg7ww776jw92pld3s024ihm"; + }; + + patches = [ ./xlib.patch ]; + + nativeBuildInputs = [ pkgconfig ]; + buildInputs = [ + gtk2 scrollkeeper + libglade libXmu gettext lame libXdamage libXfixes libXext libX11 + ] ++ (with perlPackages; [ perl XMLParser ]); + + # !!! don't know why this is necessary + NIX_LDFLAGS = "-lXext -lX11 -lz -lgcc_s"; + + meta = with stdenv.lib; { + description = "Screencast video catpuring tool"; + homepage = "http://xvidcap.sourceforge.net/"; + license = stdenv.lib.licenses.gpl2; + platforms = platforms.linux; + }; +} diff --git a/infra/libkookie/nixpkgs/pkgs/applications/video/xvidcap/xlib.patch b/infra/libkookie/nixpkgs/pkgs/applications/video/xvidcap/xlib.patch new file mode 100644 index 000000000000..eb97854386b2 --- /dev/null +++ b/infra/libkookie/nixpkgs/pkgs/applications/video/xvidcap/xlib.patch @@ -0,0 +1,15 @@ +diff --git a/src/app_data.c b/src/app_data.c +index 5a44363..482b115 100644 +--- a/src/app_data.c ++++ b/src/app_data.c +@@ -52,9 +52,9 @@ + #include <pthread.h> + #include <signal.h> + ++#include <X11/Xlib.h> + #ifdef HAVE_LIBXFIXES + #include <X11/X.h> +-#include <X11/Xlib.h> + #include <X11/Xlibint.h> + #include <X11/Xproto.h> + #include <X11/Xutil.h> |