uboot: (firmwareOdroidC2/C4) don't invoke patch tool, use patches = [] instead
https://github.com/NixOS/nixpkgs/blob/master/pkgs/stdenv/generic/setup.sh#L948 this can do it nicely. Signed-off-by: Anton Arapov <anton@deadbeef.mx>
This commit is contained in:
commit
56de2bcd43
30691 changed files with 3076956 additions and 0 deletions
160
pkgs/applications/video/aegisub/default.nix
Normal file
160
pkgs/applications/video/aegisub/default.nix
Normal file
|
|
@ -0,0 +1,160 @@
|
|||
{ lib
|
||||
, config
|
||||
, stdenv
|
||||
, fetchurl
|
||||
, fetchpatch
|
||||
, boost
|
||||
, ffmpeg
|
||||
, ffms
|
||||
, fftw
|
||||
, fontconfig
|
||||
, freetype
|
||||
, icu
|
||||
, intltool
|
||||
, libGL
|
||||
, libGLU
|
||||
, libX11
|
||||
, libass
|
||||
, libiconv
|
||||
, pkg-config
|
||||
, wxGTK
|
||||
, zlib
|
||||
|
||||
, spellcheckSupport ? true
|
||||
, hunspell ? null
|
||||
|
||||
, automationSupport ? true
|
||||
, lua ? null
|
||||
|
||||
, openalSupport ? false
|
||||
, openal ? null
|
||||
|
||||
, alsaSupport ? stdenv.isLinux
|
||||
, alsa-lib ? 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 -> (alsa-lib != null);
|
||||
assert pulseaudioSupport -> (libpulseaudio != null);
|
||||
assert portaudioSupport -> (portaudio != null);
|
||||
|
||||
let
|
||||
inherit (lib) optional;
|
||||
in
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "aegisub";
|
||||
version = "3.2.2";
|
||||
|
||||
src = fetchurl {
|
||||
url = "http://ftp.aegisub.org/pub/releases/${pname}-${version}.tar.xz";
|
||||
hash = "sha256-xV4zlFuC2FE8AupueC8Ncscmrc03B+lbjAAi9hUeaIU=";
|
||||
};
|
||||
|
||||
patches = [
|
||||
# Compatibility with ICU 59
|
||||
(fetchpatch {
|
||||
url = "https://github.com/Aegisub/Aegisub/commit/dd67db47cb2203e7a14058e52549721f6ff16a49.patch";
|
||||
sha256 = "sha256-R2rN7EiyA5cuBYIAMpa0eKZJ3QZahfnRp8R4HyejGB8=";
|
||||
})
|
||||
|
||||
# Compatbility with Boost 1.69
|
||||
(fetchpatch {
|
||||
url = "https://github.com/Aegisub/Aegisub/commit/c3c446a8d6abc5127c9432387f50c5ad50012561.patch";
|
||||
sha256 = "sha256-7nlfojrb84A0DT82PqzxDaJfjIlg5BvWIBIgoqasHNk=";
|
||||
})
|
||||
|
||||
# Compatbility with make 4.3
|
||||
(fetchpatch {
|
||||
url = "https://github.com/Aegisub/Aegisub/commit/6bd3f4c26b8fc1f76a8b797fcee11e7611d59a39.patch";
|
||||
sha256 = "sha256-rG8RJokd4V4aSYOQw2utWnrWPVrkqSV3TAvnGXNhLOk=";
|
||||
})
|
||||
|
||||
# Compatibility with ffms2
|
||||
(fetchpatch {
|
||||
url = "https://github.com/Aegisub/Aegisub/commit/1aa9215e7fc360de05da9b7ec2cd68f1940af8b2.patch";
|
||||
sha256 = "sha256-JsuI4hQTcT0TEqHHoSsGbuiTg4hMCH3Cxp061oLk8Go=";
|
||||
})
|
||||
|
||||
./update-ffms2.patch
|
||||
|
||||
# Compatibility with X11
|
||||
(fetchpatch {
|
||||
url = "https://github.com/Aegisub/Aegisub/commit/7a6da26be6a830f4e1255091952cc0a1326a4520.patch";
|
||||
sha256 = "sha256-/aTcIjFlZY4N9+IyHL4nwR0hUR4HTJM7ibbdKmNxq0w=";
|
||||
})
|
||||
];
|
||||
|
||||
nativeBuildInputs = [
|
||||
intltool
|
||||
pkg-config
|
||||
];
|
||||
buildInputs = [
|
||||
boost
|
||||
ffmpeg
|
||||
ffms
|
||||
fftw
|
||||
fontconfig
|
||||
freetype
|
||||
icu
|
||||
libGL
|
||||
libGLU
|
||||
libX11
|
||||
libass
|
||||
libiconv
|
||||
wxGTK
|
||||
zlib
|
||||
]
|
||||
++ optional alsaSupport alsa-lib
|
||||
++ optional automationSupport lua
|
||||
++ optional openalSupport openal
|
||||
++ optional portaudioSupport portaudio
|
||||
++ optional pulseaudioSupport libpulseaudio
|
||||
++ optional spellcheckSupport hunspell
|
||||
;
|
||||
|
||||
enableParallelBuilding = true;
|
||||
|
||||
hardeningDisable = [
|
||||
"bindnow"
|
||||
"relro"
|
||||
];
|
||||
|
||||
postPatch = ''
|
||||
sed -i 's/-Wno-c++11-narrowing/-Wno-narrowing/' configure.ac src/Makefile
|
||||
'';
|
||||
|
||||
# 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 = with lib; {
|
||||
homepage = "https://github.com/Aegisub/Aegisub";
|
||||
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.
|
||||
'';
|
||||
# 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" ];
|
||||
};
|
||||
}
|
||||
# TODO [ AndersonTorres ]: update to fork release
|
||||
105
pkgs/applications/video/aegisub/update-ffms2.patch
Normal file
105
pkgs/applications/video/aegisub/update-ffms2.patch
Normal file
|
|
@ -0,0 +1,105 @@
|
|||
commit 89c4e8d34ab77c3322f097b91fd9de22cbea7a37
|
||||
Author: Thomas Goyne <plorkyeran@aegisub.org>
|
||||
Date: Wed Nov 21 16:41:05 2018 -0800
|
||||
|
||||
Update ffmpeg and ffms2
|
||||
|
||||
diff --git a/src/video_provider_ffmpegsource.cpp b/src/video_provider_ffmpegsource.cpp
|
||||
index 8bd68fbbf..f4ed6a2f2 100644
|
||||
--- a/src/video_provider_ffmpegsource.cpp
|
||||
+++ b/src/video_provider_ffmpegsource.cpp
|
||||
@@ -44,6 +44,23 @@
|
||||
#include <libaegisub/make_unique.h>
|
||||
|
||||
namespace {
|
||||
+typedef enum AGI_ColorSpaces {
|
||||
+ AGI_CS_RGB = 0,
|
||||
+ AGI_CS_BT709 = 1,
|
||||
+ AGI_CS_UNSPECIFIED = 2,
|
||||
+ AGI_CS_FCC = 4,
|
||||
+ AGI_CS_BT470BG = 5,
|
||||
+ AGI_CS_SMPTE170M = 6,
|
||||
+ AGI_CS_SMPTE240M = 7,
|
||||
+ AGI_CS_YCOCG = 8,
|
||||
+ AGI_CS_BT2020_NCL = 9,
|
||||
+ AGI_CS_BT2020_CL = 10,
|
||||
+ AGI_CS_SMPTE2085 = 11,
|
||||
+ AGI_CS_CHROMATICITY_DERIVED_NCL = 12,
|
||||
+ AGI_CS_CHROMATICITY_DERIVED_CL = 13,
|
||||
+ AGI_CS_ICTCP = 14
|
||||
+} AGI_ColorSpaces;
|
||||
+
|
||||
/// @class FFmpegSourceVideoProvider
|
||||
/// @brief Implements video loading through the FFMS library.
|
||||
class FFmpegSourceVideoProvider final : public VideoProvider, FFmpegSourceProvider {
|
||||
@@ -78,7 +95,7 @@ public:
|
||||
if (matrix == RealColorSpace)
|
||||
FFMS_SetInputFormatV(VideoSource, CS, CR, FFMS_GetPixFmt(""), nullptr);
|
||||
else if (matrix == "TV.601")
|
||||
- FFMS_SetInputFormatV(VideoSource, FFMS_CS_BT470BG, CR, FFMS_GetPixFmt(""), nullptr);
|
||||
+ FFMS_SetInputFormatV(VideoSource, AGI_CS_BT470BG, CR, FFMS_GetPixFmt(""), nullptr);
|
||||
else
|
||||
return;
|
||||
ColorSpace = matrix;
|
||||
@@ -103,16 +120,16 @@ std::string colormatrix_description(int cs, int cr) {
|
||||
std::string str = cr == FFMS_CR_JPEG ? "PC" : "TV";
|
||||
|
||||
switch (cs) {
|
||||
- case FFMS_CS_RGB:
|
||||
+ case AGI_CS_RGB:
|
||||
return "None";
|
||||
- case FFMS_CS_BT709:
|
||||
+ case AGI_CS_BT709:
|
||||
return str + ".709";
|
||||
- case FFMS_CS_FCC:
|
||||
+ case AGI_CS_FCC:
|
||||
return str + ".FCC";
|
||||
- case FFMS_CS_BT470BG:
|
||||
- case FFMS_CS_SMPTE170M:
|
||||
+ case AGI_CS_BT470BG:
|
||||
+ case AGI_CS_SMPTE170M:
|
||||
return str + ".601";
|
||||
- case FFMS_CS_SMPTE240M:
|
||||
+ case AGI_CS_SMPTE240M:
|
||||
return str + ".240M";
|
||||
default:
|
||||
throw VideoOpenError("Unknown video color space");
|
||||
@@ -206,8 +223,10 @@ void FFmpegSourceVideoProvider::LoadVideo(agi::fs::path const& filename, std::st
|
||||
|
||||
// set thread count
|
||||
int Threads = OPT_GET("Provider/Video/FFmpegSource/Decoding Threads")->GetInt();
|
||||
+#if FFMS_VERSION < ((2 << 24) | (30 << 16) | (0 << 8) | 0)
|
||||
if (FFMS_GetVersion() < ((2 << 24) | (17 << 16) | (2 << 8) | 1) && FFMS_GetSourceType(Index) == FFMS_SOURCE_LAVF)
|
||||
Threads = 1;
|
||||
+#endif
|
||||
|
||||
// set seekmode
|
||||
// TODO: give this its own option?
|
||||
@@ -235,18 +254,22 @@ void FFmpegSourceVideoProvider::LoadVideo(agi::fs::path const& filename, std::st
|
||||
else
|
||||
DAR = double(Width) / Height;
|
||||
|
||||
- CS = TempFrame->ColorSpace;
|
||||
+ int VideoCS = CS = TempFrame->ColorSpace;
|
||||
CR = TempFrame->ColorRange;
|
||||
|
||||
- if (CS == FFMS_CS_UNSPECIFIED)
|
||||
- CS = Width > 1024 || Height >= 600 ? FFMS_CS_BT709 : FFMS_CS_BT470BG;
|
||||
+ if (CS == AGI_CS_UNSPECIFIED)
|
||||
+ CS = Width > 1024 || Height >= 600 ? AGI_CS_BT709 : AGI_CS_BT470BG;
|
||||
RealColorSpace = ColorSpace = colormatrix_description(CS, CR);
|
||||
|
||||
#if FFMS_VERSION >= ((2 << 24) | (17 << 16) | (1 << 8) | 0)
|
||||
- if (CS != FFMS_CS_RGB && CS != FFMS_CS_BT470BG && ColorSpace != colormatrix && (colormatrix == "TV.601" || OPT_GET("Video/Force BT.601")->GetBool())) {
|
||||
- if (FFMS_SetInputFormatV(VideoSource, FFMS_CS_BT470BG, CR, FFMS_GetPixFmt(""), &ErrInfo))
|
||||
+ if (CS != AGI_CS_RGB && CS != AGI_CS_BT470BG && ColorSpace != colormatrix && (colormatrix == "TV.601" || OPT_GET("Video/Force BT.601")->GetBool())) {
|
||||
+ CS = AGI_CS_BT470BG;
|
||||
+ ColorSpace = colormatrix_description(AGI_CS_BT470BG, CR);
|
||||
+ }
|
||||
+
|
||||
+ if (CS != VideoCS) {
|
||||
+ if (FFMS_SetInputFormatV(VideoSource, CS, CR, FFMS_GetPixFmt(""), &ErrInfo))
|
||||
throw VideoOpenError(std::string("Failed to set input format: ") + ErrInfo.Buffer);
|
||||
- ColorSpace = colormatrix_description(FFMS_CS_BT470BG, CR);
|
||||
}
|
||||
#endif
|
||||
33
pkgs/applications/video/alass/default.nix
Normal file
33
pkgs/applications/video/alass/default.nix
Normal file
|
|
@ -0,0 +1,33 @@
|
|||
{ lib
|
||||
, fetchFromGitHub
|
||||
, rustPlatform
|
||||
, makeWrapper
|
||||
, ffmpeg
|
||||
}:
|
||||
|
||||
rustPlatform.buildRustPackage rec {
|
||||
pname = "alass";
|
||||
version = "2.0.0";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "kaegi";
|
||||
repo = pname;
|
||||
rev = "v${version}";
|
||||
sha256 = "sha256-q1IV9TtmznpR7RO75iN0p16nmTja5ADWqFj58EOPWvU=";
|
||||
};
|
||||
|
||||
cargoSha256 = "sha256-6swIoVp1B4CMvaGvq868LTKkzpI6zFKJNgUVqjdyH20=";
|
||||
|
||||
nativeBuildInputs = [ makeWrapper ];
|
||||
|
||||
postInstall = ''
|
||||
wrapProgram "$out/bin/alass-cli" --prefix PATH : "${lib.makeBinPath [ ffmpeg ]}"
|
||||
'';
|
||||
|
||||
meta = with lib; {
|
||||
description = "Automatic Language-Agnostic Subtitle Synchronization";
|
||||
homepage = "https://github.com/kaegi/alass";
|
||||
license = licenses.gpl3Plus;
|
||||
maintainers = with maintainers; [ erictapen ];
|
||||
};
|
||||
}
|
||||
44
pkgs/applications/video/ani-cli/default.nix
Normal file
44
pkgs/applications/video/ani-cli/default.nix
Normal file
|
|
@ -0,0 +1,44 @@
|
|||
{ fetchFromGitHub
|
||||
, makeWrapper
|
||||
, stdenvNoCC
|
||||
, lib
|
||||
, gnugrep
|
||||
, gnused
|
||||
, curl
|
||||
, openssl
|
||||
, mpv
|
||||
, aria2
|
||||
}:
|
||||
|
||||
stdenvNoCC.mkDerivation rec {
|
||||
pname = "ani-cli";
|
||||
version = "2.2";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "pystardust";
|
||||
repo = "ani-cli";
|
||||
rev = "v${version}";
|
||||
sha256 = "sha256-B/bIGrSQmKZFh3PpsbwivR2QKLMHIypWLxWuufiFHw4=";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [ makeWrapper ];
|
||||
|
||||
installPhase = ''
|
||||
runHook preInstall
|
||||
|
||||
install -Dm755 ani-cli $out/bin/ani-cli
|
||||
|
||||
wrapProgram $out/bin/ani-cli \
|
||||
--prefix PATH : ${lib.makeBinPath [ gnugrep gnused curl openssl mpv aria2 ]}
|
||||
|
||||
runHook postInstall
|
||||
'';
|
||||
|
||||
meta = with lib; {
|
||||
homepage = "https://github.com/pystardust/ani-cli";
|
||||
description = "A cli tool to browse and play anime";
|
||||
license = licenses.gpl3Plus;
|
||||
maintainers = with maintainers; [ skykanin ];
|
||||
platforms = platforms.unix;
|
||||
};
|
||||
}
|
||||
26
pkgs/applications/video/avidemux/bootstrap_logging.patch
Normal file
26
pkgs/applications/video/avidemux/bootstrap_logging.patch
Normal file
|
|
@ -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
|
||||
}
|
||||
99
pkgs/applications/video/avidemux/default.nix
Normal file
99
pkgs/applications/video/avidemux/default.nix
Normal file
|
|
@ -0,0 +1,99 @@
|
|||
{ stdenv, lib, fetchurl, cmake, pkg-config
|
||||
, zlib, gettext, libvdpau, libva, libXv, sqlite
|
||||
, yasm, freetype, fontconfig, fribidi
|
||||
, makeWrapper, libXext, libGLU, qttools, qtbase, wrapQtAppsHook
|
||||
, alsa-lib
|
||||
, 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.8.0";
|
||||
|
||||
src = fetchurl {
|
||||
url = "mirror://sourceforge/avidemux/avidemux/${version}/avidemux_${version}.tar.gz";
|
||||
sha256 = "sha256-0exvUnflEijs8O4cqJ+uJMWR9SD4fOlvq+yIGNBN4zs=";
|
||||
};
|
||||
|
||||
patches = [
|
||||
./dynamic_install_dir.patch
|
||||
./bootstrap_logging.patch
|
||||
];
|
||||
|
||||
nativeBuildInputs =
|
||||
[ yasm cmake pkg-config ]
|
||||
++ lib.optional withQT wrapQtAppsHook;
|
||||
buildInputs = [
|
||||
zlib gettext libvdpau libva libXv sqlite fribidi fontconfig
|
||||
freetype alsa-lib 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.${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"}
|
||||
|
||||
${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 lib; {
|
||||
homepage = "http://fixounet.free.fr/avidemux/";
|
||||
description = "Free video editor designed for simple video editing tasks";
|
||||
maintainers = with maintainers; [ abbradar ];
|
||||
# "CPU not supported" errors on AArch64
|
||||
platforms = [ "i686-linux" "x86_64-linux" ];
|
||||
license = licenses.gpl2;
|
||||
};
|
||||
}
|
||||
12
pkgs/applications/video/avidemux/dynamic_install_dir.patch
Normal file
12
pkgs/applications/video/avidemux/dynamic_install_dir.patch
Normal file
|
|
@ -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)
|
||||
{
|
||||
25
pkgs/applications/video/bino3d/default.nix
Normal file
25
pkgs/applications/video/bino3d/default.nix
Normal file
|
|
@ -0,0 +1,25 @@
|
|||
{ mkDerivation, lib, fetchurl, pkg-config, ffmpeg, glew, libass, openal, qtbase }:
|
||||
|
||||
mkDerivation rec {
|
||||
pname = "bino";
|
||||
version = "1.6.8";
|
||||
|
||||
src = fetchurl {
|
||||
url = "https://bino3d.org/releases/${pname}-${version}.tar.xz";
|
||||
sha256 = "sha256-8sIdX+qm7CGPHIziFBHHIe+KEbhbwDY6w/iRm1V+so4=";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [ pkg-config ];
|
||||
|
||||
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;
|
||||
};
|
||||
}
|
||||
88
pkgs/applications/video/bombono/default.nix
Normal file
88
pkgs/applications/video/bombono/default.nix
Normal file
|
|
@ -0,0 +1,88 @@
|
|||
{ lib, stdenv
|
||||
, fetchFromGitHub
|
||||
, pkg-config
|
||||
, fetchpatch
|
||||
, scons
|
||||
, boost172
|
||||
, dvdauthor
|
||||
, dvdplusrwtools
|
||||
, enca
|
||||
, cdrkit
|
||||
, ffmpeg
|
||||
, gettext
|
||||
, gtk2
|
||||
, gtkmm2
|
||||
, libdvdread
|
||||
, libxmlxx
|
||||
, mjpegtools
|
||||
, wrapGAppsHook
|
||||
}:
|
||||
|
||||
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 = "bombono-dvd";
|
||||
repo = "bombono-dvd";
|
||||
rev = version;
|
||||
sha256 = "sha256-aRW8H8+ca/61jGLxUs7u3R7yEiulwr5viMEuZWbc4dM=";
|
||||
};
|
||||
|
||||
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 = "sha256-5OKBWrRZvHem2MTdAObfdw76ig3Z4ZdDFtq4CJoJISA=";
|
||||
})
|
||||
] ++ (map fetchPatchFromAur [
|
||||
{name="fix_ffmpeg_codecid.patch"; sha256="sha256-58L+1BJy5HK/R+xALbq2z4+Se4i6yp21lo/MjylgTqs=";}
|
||||
{name="fix_ptr2bool_cast.patch"; sha256="sha256-DyqMw/m2Op9+gBq1CTCjSZ1qM9igV5Y6gTOi8VbNH0c=";}
|
||||
{name="fix_c++11_literal_warnings.patch"; sha256="sha256-iZ/CN5+xg7jPXl5r/KGCys+jyPu0/AsSABLcc6IIbv0=";}
|
||||
{name="autoptr2uniqueptr.patch"; sha256="sha256-teGp6uICB4jAJk18pdbBMcDxC/JJJGkdihtXeh3ffCg=";}
|
||||
{name="fix_deprecated_boost_api.patch"; sha256="sha256-qD5QuO/ndEU1N7vueQiNpPVz8OaX6Y6ahjCWxMdvj6A=";}
|
||||
{name="fix_throw_specifications.patch"; sha256="sha256-NjCDGwXRCSLcuW2HbPOpXRgNvNQHy7i7hoOgyvGIr7g=";}
|
||||
{name="fix_operator_ambiguity.patch"; sha256="sha256-xx7WyrxEdDrDuz5YoFrM/u2qJru9u6X/4+Y5rJdmmmQ=";}
|
||||
{name="fix_ffmpeg30.patch"; sha256="sha256-vKEbvbjYVRzEaVYC8XOJBPmk6FDXI/WA0X/dldRRO8c=";}
|
||||
]);
|
||||
|
||||
nativeBuildInputs = [ wrapGAppsHook scons pkg-config gettext ];
|
||||
|
||||
buildInputs = [
|
||||
boost172
|
||||
dvdauthor
|
||||
dvdplusrwtools
|
||||
enca
|
||||
ffmpeg
|
||||
gtk2
|
||||
gtkmm2
|
||||
libdvdread
|
||||
libxmlxx
|
||||
mjpegtools
|
||||
];
|
||||
|
||||
prefixKey = "PREFIX=";
|
||||
|
||||
enableParallelBuilding = true;
|
||||
|
||||
postInstall = ''
|
||||
# fix iso authoring
|
||||
install -Dt $out/share/bombono/resources/scons_authoring tools/scripts/SConsTwin.py
|
||||
|
||||
wrapProgram $out/bin/bombono-dvd --prefix PATH : ${lib.makeBinPath [ ffmpeg dvdauthor cdrkit ]}
|
||||
'';
|
||||
|
||||
meta = with lib; {
|
||||
description = "a DVD authoring program for personal computers";
|
||||
homepage = "https://www.bombono.org/";
|
||||
license = licenses.gpl2Only;
|
||||
maintainers = with maintainers; [ symphorien ];
|
||||
};
|
||||
}
|
||||
12
pkgs/applications/video/byzanz/add-amflags.patch
Normal file
12
pkgs/applications/video/byzanz/add-amflags.patch
Normal file
|
|
@ -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 \
|
||||
65
pkgs/applications/video/byzanz/default.nix
Normal file
65
pkgs/applications/video/byzanz/default.nix
Normal file
|
|
@ -0,0 +1,65 @@
|
|||
{ lib, stdenv
|
||||
, fetchgit
|
||||
, wrapGAppsHook
|
||||
, cairo
|
||||
, glib
|
||||
, gnome
|
||||
, gst_all_1
|
||||
, gtk3
|
||||
, intltool
|
||||
, libtool
|
||||
, pkg-config
|
||||
, which
|
||||
, xorg
|
||||
}:
|
||||
|
||||
stdenv.mkDerivation {
|
||||
pname = "byzanz";
|
||||
version = "unstable-2016-03-12";
|
||||
|
||||
src = fetchgit {
|
||||
url = "https://gitlab.gnome.org/Archive/byzanz";
|
||||
rev = "81235d235d12c9687897f7fc6ec0de1feaed6623";
|
||||
hash = "sha256-3DUwXCPBAmeCRlDkiPUgwNyBa6bCvC/TLguMCK3bo4E=";
|
||||
};
|
||||
|
||||
patches = [ ./add-amflags.patch ];
|
||||
|
||||
preBuild = ''
|
||||
./autogen.sh --prefix=$out
|
||||
'';
|
||||
|
||||
NIX_CFLAGS_COMPILE = builtins.concatStringsSep " " [
|
||||
"-Wno-error=deprecated-declarations"
|
||||
"-Wno-error=incompatible-pointer-types"
|
||||
];
|
||||
|
||||
nativeBuildInputs = [ pkg-config ];
|
||||
buildInputs = [
|
||||
which
|
||||
gnome.gnome-common
|
||||
glib
|
||||
intltool
|
||||
libtool
|
||||
cairo
|
||||
gtk3
|
||||
xorg.xwininfo
|
||||
xorg.libXdamage
|
||||
] ++ (with gst_all_1; [
|
||||
gstreamer
|
||||
gst-plugins-base
|
||||
gst-plugins-bad
|
||||
gst-plugins-good
|
||||
gst-plugins-ugly
|
||||
gst-libav
|
||||
wrapGAppsHook
|
||||
]);
|
||||
|
||||
meta = with 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 = [ ];
|
||||
};
|
||||
}
|
||||
69
pkgs/applications/video/catt/default.nix
Normal file
69
pkgs/applications/video/catt/default.nix
Normal file
|
|
@ -0,0 +1,69 @@
|
|||
{ lib
|
||||
, fetchFromGitHub
|
||||
, python3
|
||||
}:
|
||||
|
||||
let
|
||||
py = python3.override {
|
||||
packageOverrides = self: super: {
|
||||
# Upstream is pinning releases incl. dependencies of their dependencies
|
||||
zeroconf = super.zeroconf.overridePythonAttrs (oldAttrs: rec {
|
||||
version = "0.31.0";
|
||||
src = fetchFromGitHub {
|
||||
owner = "jstasiak";
|
||||
repo = "python-zeroconf";
|
||||
rev = version;
|
||||
sha256 = "158dqay74zvnz6kmpvip4ml0kw59nf2aaajwgaamx0zc8ci1p5pj";
|
||||
};
|
||||
});
|
||||
|
||||
click = super.click.overridePythonAttrs (oldAttrs: rec {
|
||||
version = "7.1.2";
|
||||
src = oldAttrs.src.override {
|
||||
inherit version;
|
||||
sha256 = "06kbzd6sjfkqan3miwj9wqyddfxc2b6hi7p5s4dvqjb3gif2bdfj";
|
||||
};
|
||||
});
|
||||
|
||||
PyChromecast = super.PyChromecast.overridePythonAttrs (oldAttrs: rec {
|
||||
version = "9.2.0";
|
||||
src = oldAttrs.src.override {
|
||||
inherit version;
|
||||
sha256 = "02ig2wf2yyrnnl88r2n13s1naskwsifwgx3syifmcxygflsmjd3d";
|
||||
};
|
||||
});
|
||||
};
|
||||
};
|
||||
in
|
||||
with py.pkgs;
|
||||
|
||||
buildPythonApplication rec {
|
||||
pname = "catt";
|
||||
version = "0.12.2";
|
||||
|
||||
disabled = python3.pythonOlder "3.4";
|
||||
|
||||
src = fetchPypi {
|
||||
inherit pname version;
|
||||
sha256 = "sha256-BOETKTkcbLOu5SubiejswU7D47qWS13QZ7rU9x3jf5Y=";
|
||||
};
|
||||
|
||||
propagatedBuildInputs = [
|
||||
click
|
||||
ifaddr
|
||||
PyChromecast
|
||||
requests
|
||||
youtube-dl
|
||||
];
|
||||
|
||||
doCheck = false; # attempts to access various URLs
|
||||
|
||||
pythonImportsCheck = [ "catt" ];
|
||||
|
||||
meta = with lib; {
|
||||
description = "Tool to send media from online sources to Chromecast devices";
|
||||
homepage = "https://github.com/skorokithakis/catt";
|
||||
license = licenses.bsd2;
|
||||
maintainers = with maintainers; [ dtzWill ];
|
||||
};
|
||||
}
|
||||
64
pkgs/applications/video/ccextractor/default.nix
Normal file
64
pkgs/applications/video/ccextractor/default.nix
Normal file
|
|
@ -0,0 +1,64 @@
|
|||
{ lib
|
||||
, stdenv
|
||||
, fetchFromGitHub
|
||||
, pkg-config
|
||||
, cmake
|
||||
, libiconv
|
||||
, zlib
|
||||
, enableOcr ? true
|
||||
, makeWrapper
|
||||
, tesseract4
|
||||
, leptonica
|
||||
, ffmpeg
|
||||
}:
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "ccextractor";
|
||||
version = "0.93";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "CCExtractor";
|
||||
repo = pname;
|
||||
rev = "v${version}";
|
||||
sha256 = "sha256-usVAKBkdd8uz9cD5eLd0hnwGonOJLscRdc+iWDlNXVc=";
|
||||
};
|
||||
|
||||
postPatch = lib.optionalString stdenv.isDarwin ''
|
||||
substituteInPlace src/CMakeLists.txt \
|
||||
--replace 'add_definitions(-DGPAC_CONFIG_LINUX)' 'add_definitions(-DGPAC_CONFIG_DARWIN)'
|
||||
'';
|
||||
|
||||
cmakeDir = "../src";
|
||||
|
||||
nativeBuildInputs = [ pkg-config cmake makeWrapper ];
|
||||
|
||||
buildInputs = [ zlib ]
|
||||
++ lib.optional (!stdenv.isLinux) libiconv
|
||||
++ lib.optionals enableOcr [ leptonica tesseract4 ffmpeg ];
|
||||
|
||||
cmakeFlags = lib.optionals enableOcr [ "-DWITH_OCR=on" "-DWITH_HARDSUBX=on" ];
|
||||
|
||||
postInstall = lib.optionalString enableOcr ''
|
||||
wrapProgram "$out/bin/ccextractor" \
|
||||
--set TESSDATA_PREFIX "${tesseract4}/share/"
|
||||
'';
|
||||
|
||||
meta = with lib; {
|
||||
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;
|
||||
# undefined reference to `png_do_expand_palette_rgba8_neon'
|
||||
# undefined reference to `png_riffle_palette_neon'
|
||||
# undefined reference to `png_do_expand_palette_rgb8_neon'
|
||||
# undefined reference to `png_init_filter_functions_neon'
|
||||
# during Linking C executable ccextractor
|
||||
broken = stdenv.isAarch64;
|
||||
license = licenses.gpl2Only;
|
||||
maintainers = with maintainers; [ titanous ];
|
||||
};
|
||||
}
|
||||
69
pkgs/applications/video/celluloid/default.nix
Normal file
69
pkgs/applications/video/celluloid/default.nix
Normal file
|
|
@ -0,0 +1,69 @@
|
|||
{ lib
|
||||
, stdenv
|
||||
, fetchFromGitHub
|
||||
, appstream-glib
|
||||
, desktop-file-utils
|
||||
, libepoxy
|
||||
, glib
|
||||
, gtk4
|
||||
, wayland
|
||||
, meson
|
||||
, mpv
|
||||
, ninja
|
||||
, nix-update-script
|
||||
, pkg-config
|
||||
, python3
|
||||
, wrapGAppsHook4
|
||||
}:
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "celluloid";
|
||||
version = "0.23";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "celluloid-player";
|
||||
repo = "celluloid";
|
||||
rev = "v${version}";
|
||||
hash = "sha256-YKDud/UJJx9ko5k+Oux8mUUme0MXaRMngESE14Hhxv8=";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [
|
||||
appstream-glib
|
||||
desktop-file-utils
|
||||
meson
|
||||
ninja
|
||||
pkg-config
|
||||
python3
|
||||
wrapGAppsHook4
|
||||
];
|
||||
buildInputs = [
|
||||
libepoxy
|
||||
glib
|
||||
gtk4
|
||||
wayland
|
||||
mpv
|
||||
];
|
||||
|
||||
postPatch = ''
|
||||
patchShebangs meson-post-install.py src/generate-authors.py
|
||||
'';
|
||||
|
||||
doCheck = true;
|
||||
|
||||
meta = with lib; {
|
||||
homepage = "https://github.com/celluloid-player/celluloid";
|
||||
description = "Simple GTK frontend for the mpv video player";
|
||||
longDescription = ''
|
||||
Celluloid (formerly GNOME MPV) is a simple GTK+ frontend for mpv.
|
||||
Celluloid interacts with mpv via the client API exported by libmpv,
|
||||
allowing access to mpv's powerful playback capabilities.
|
||||
'';
|
||||
license = licenses.gpl3Plus;
|
||||
maintainers = with maintainers; [ AndersonTorres ];
|
||||
platforms = platforms.linux;
|
||||
};
|
||||
|
||||
passthru.updateScript = nix-update-script {
|
||||
attrPath = pname;
|
||||
};
|
||||
}
|
||||
113
pkgs/applications/video/cinelerra/default.nix
Normal file
113
pkgs/applications/video/cinelerra/default.nix
Normal file
|
|
@ -0,0 +1,113 @@
|
|||
{ lib
|
||||
, stdenv
|
||||
, fetchFromGitHub
|
||||
, autoconf
|
||||
, automake
|
||||
, libtool
|
||||
, pkg-config
|
||||
, faad2
|
||||
, faac
|
||||
, a52dec
|
||||
, alsa-lib
|
||||
, 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 {
|
||||
pname = "cinelerra-cv";
|
||||
version = "unstable-2021-02-14";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "cinelerra-cv-team";
|
||||
repo = "cinelerra-cv";
|
||||
rev = "7d0e8ede557d0cdf3606e0a8d97166a22f88d89e";
|
||||
sha256 = "0n84y2wp47y89drc48cm1609gads5c6saw6c6bqcf5c5wcg1yfbj";
|
||||
};
|
||||
|
||||
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;
|
||||
|
||||
nativeBuildInputs = [ automake autoconf libtool pkg-config file intltool ];
|
||||
|
||||
buildInputs = [
|
||||
faad2
|
||||
faac
|
||||
a52dec
|
||||
alsa-lib
|
||||
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
|
||||
];
|
||||
|
||||
meta = with lib; {
|
||||
description = "Professional video editing and compositing environment (community version)";
|
||||
homepage = "http://cinelerra-cv.wikidot.com/";
|
||||
maintainers = with maintainers; [ marcweber ];
|
||||
license = licenses.gpl2Only;
|
||||
};
|
||||
}
|
||||
89
pkgs/applications/video/clapper/default.nix
Normal file
89
pkgs/applications/video/clapper/default.nix
Normal file
|
|
@ -0,0 +1,89 @@
|
|||
{ config
|
||||
, lib
|
||||
, stdenv
|
||||
, fetchFromGitHub
|
||||
, glib
|
||||
, gobject-introspection
|
||||
, python3
|
||||
, pkg-config
|
||||
, ninja
|
||||
, wayland
|
||||
, wayland-protocols
|
||||
, desktop-file-utils
|
||||
, makeWrapper
|
||||
, shared-mime-info
|
||||
, wrapGAppsHook4
|
||||
, meson
|
||||
, gjs
|
||||
, gtk4
|
||||
, gst_all_1
|
||||
, libadwaita
|
||||
, appstream-glib
|
||||
, libsoup
|
||||
}:
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "clapper";
|
||||
version = "0.4.1";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "Rafostar";
|
||||
repo = pname;
|
||||
rev = version;
|
||||
sha256 = "sha256-ccvg8yxPCN7OYmJvq0SPY6iyiuFuWJyiu+mRoykEzqI=";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [
|
||||
appstream-glib
|
||||
desktop-file-utils # for update-desktop-database
|
||||
glib
|
||||
gobject-introspection
|
||||
meson
|
||||
ninja
|
||||
makeWrapper
|
||||
pkg-config
|
||||
python3
|
||||
shared-mime-info # for update-mime-database
|
||||
wrapGAppsHook4 # for gsettings
|
||||
];
|
||||
|
||||
buildInputs = [
|
||||
gjs
|
||||
gst_all_1.gstreamer
|
||||
gst_all_1.gst-plugins-base
|
||||
gst_all_1.gst-plugins-good
|
||||
gst_all_1.gst-plugins-bad
|
||||
gst_all_1.gst-plugins-ugly
|
||||
gtk4
|
||||
libadwaita
|
||||
libsoup
|
||||
wayland
|
||||
wayland-protocols
|
||||
];
|
||||
|
||||
postPatch = ''
|
||||
patchShebangs build-aux/meson/postinstall.py
|
||||
'';
|
||||
|
||||
mesonFlags = [
|
||||
# TODO: https://github.com/NixOS/nixpkgs/issues/36468
|
||||
"-Dc_args=-I${glib.dev}/include/gio-unix-2.0"
|
||||
];
|
||||
|
||||
postInstall = ''
|
||||
cp ${src}/data/icons/*.svg $out/share/icons/hicolor/scalable/apps/
|
||||
cp ${src}/data/icons/*.svg $out/share/icons/hicolor/symbolic/apps/
|
||||
'';
|
||||
|
||||
meta = with lib; {
|
||||
description = "A GNOME media player built using GJS with GTK4 toolkit and powered by GStreamer with OpenGL rendering. ";
|
||||
longDescription = ''
|
||||
Clapper is a GNOME media player build using GJS with GTK4 toolkit.
|
||||
The media player is using GStreamer as a media backend and renders everything via OpenGL.
|
||||
'';
|
||||
homepage = "https://github.com/Rafostar/clapper";
|
||||
license = licenses.gpl3Plus;
|
||||
maintainers = with maintainers; [ tomfitzhenry ];
|
||||
platforms = platforms.linux;
|
||||
};
|
||||
}
|
||||
122
pkgs/applications/video/clickshare-csc1/default.nix
Normal file
122
pkgs/applications/video/clickshare-csc1/default.nix
Normal file
|
|
@ -0,0 +1,122 @@
|
|||
{ lib
|
||||
, stdenv
|
||||
, fetchurl
|
||||
, alsa-lib
|
||||
, autoPatchelfHook
|
||||
, binutils-unwrapped
|
||||
, 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
|
||||
rpmextract
|
||||
unzip
|
||||
];
|
||||
buildInputs = [
|
||||
alsa-lib
|
||||
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.
|
||||
'';
|
||||
};
|
||||
}
|
||||
65
pkgs/applications/video/clipgrab/default.nix
Normal file
65
pkgs/applications/video/clipgrab/default.nix
Normal file
|
|
@ -0,0 +1,65 @@
|
|||
{ lib, fetchurl, makeDesktopItem, ffmpeg
|
||||
, qmake, qttools, mkDerivation
|
||||
, qtbase, qtdeclarative, qtlocation, qtquickcontrols2, qtwebchannel, qtwebengine
|
||||
, yt-dlp
|
||||
}:
|
||||
|
||||
mkDerivation rec {
|
||||
pname = "clipgrab";
|
||||
version = "3.9.7";
|
||||
|
||||
src = fetchurl {
|
||||
sha256 = "sha256-9H8raJd6MyyFICY8WUZQGLJ4teKPJUiQfqbu1HWAVIw=";
|
||||
# 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 qtbase qtdeclarative qtlocation qtquickcontrols2 qtwebchannel qtwebengine ];
|
||||
nativeBuildInputs = [ qmake qttools ];
|
||||
|
||||
patches = [
|
||||
./yt-dlp-path.patch
|
||||
];
|
||||
|
||||
postPatch = ''
|
||||
substituteInPlace youtube_dl.cpp \
|
||||
--replace 'QString YoutubeDl::path = QString();' \
|
||||
'QString YoutubeDl::path = QString("${yt-dlp}/bin/yt-dlp");'
|
||||
'' + lib.optionalString (ffmpeg != null) ''
|
||||
substituteInPlace converter_ffmpeg.cpp \
|
||||
--replace '"ffmpeg"' '"${ffmpeg.bin}/bin/ffmpeg"' \
|
||||
--replace '"ffmpeg ' '"${ffmpeg.bin}/bin/ffmpeg '
|
||||
'';
|
||||
|
||||
qmakeFlags = [ "clipgrab.pro" ];
|
||||
|
||||
desktopItem = makeDesktopItem rec {
|
||||
name = "clipgrab";
|
||||
exec = name;
|
||||
icon = name;
|
||||
desktopName = "ClipGrab";
|
||||
comment = meta.description;
|
||||
genericName = "Web video downloader";
|
||||
categories = [ "Qt" "AudioVideo" "Audio" "Video" ];
|
||||
};
|
||||
|
||||
installPhase = ''
|
||||
runHook preInstall
|
||||
install -Dm755 clipgrab $out/bin/clipgrab
|
||||
install -Dm644 icon.png $out/share/pixmaps/clipgrab.png
|
||||
cp -r ${desktopItem}/share/applications $out/share
|
||||
runHook postInstall
|
||||
'';
|
||||
|
||||
meta = with 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;
|
||||
};
|
||||
}
|
||||
86
pkgs/applications/video/clipgrab/yt-dlp-path.patch
Normal file
86
pkgs/applications/video/clipgrab/yt-dlp-path.patch
Normal file
|
|
@ -0,0 +1,86 @@
|
|||
--- a/main.cpp
|
||||
+++ b/main.cpp
|
||||
@@ -91,14 +91,5 @@ int main(int argc, char *argv[])
|
||||
w.show();
|
||||
}
|
||||
|
||||
- QTimer::singleShot(0, [=] {
|
||||
- cg->getUpdateInfo();
|
||||
- QObject::connect(cg, &ClipGrab::updateInfoProcessed, [cg] {
|
||||
- bool force = QSettings().value("forceYoutubeDlDownload", false).toBool();
|
||||
- if (force) QSettings().setValue("forceYoutubeDlDownload", false);
|
||||
- cg->downloadYoutubeDl(force);
|
||||
- });
|
||||
- });
|
||||
-
|
||||
return app.exec();
|
||||
}
|
||||
--- a/youtube_dl.cpp
|
||||
+++ b/youtube_dl.cpp
|
||||
@@ -8,52 +8,16 @@ YoutubeDl::YoutubeDl()
|
||||
QString YoutubeDl::path = QString();
|
||||
|
||||
QString YoutubeDl::find(bool force) {
|
||||
- if (!force && !path.isEmpty()) return path;
|
||||
-
|
||||
- // Prefer downloaded youtube-dl
|
||||
- QString localPath = QStandardPaths::locate(QStandardPaths::AppDataLocation, "yt-dlp");
|
||||
- QProcess* process = instance(localPath, QStringList() << "--version");
|
||||
- process->start();
|
||||
- process->waitForFinished();
|
||||
- process->deleteLater();
|
||||
- if (process->state() != QProcess::NotRunning) process->kill();
|
||||
- if (process->exitCode() == QProcess::ExitStatus::NormalExit) {
|
||||
- path = localPath;
|
||||
- return path;
|
||||
- }
|
||||
-
|
||||
- // Try system-wide youtube-dlp installation
|
||||
- QString globalPath = QStandardPaths::findExecutable("yt-dlp");
|
||||
- process = instance(globalPath, QStringList() << "--version");
|
||||
- process->start();
|
||||
- process->waitForFinished();
|
||||
- process->deleteLater();
|
||||
- if (process->state() != QProcess::NotRunning) process->kill();
|
||||
- if (process->exitCode() == QProcess::ExitStatus::NormalExit) {
|
||||
- path = globalPath;
|
||||
- return path;
|
||||
- }
|
||||
-
|
||||
- return "";
|
||||
+ // We supply yt-dlp from nixpkgs, so the downloading
|
||||
+ // machinery is not needed anymore.
|
||||
+ (void)force;
|
||||
+ return path;
|
||||
}
|
||||
|
||||
QProcess* YoutubeDl::instance(QStringList arguments) {
|
||||
- return instance(find(), arguments);
|
||||
-}
|
||||
-
|
||||
-QProcess* YoutubeDl::instance(QString path, QStringList arguments) {
|
||||
QProcess *process = new QProcess();
|
||||
|
||||
- QString execPath = QCoreApplication::applicationDirPath();
|
||||
- QProcessEnvironment env = QProcessEnvironment::systemEnvironment();
|
||||
- env.insert("PATH", execPath + ":" + env.value("PATH"));
|
||||
- process->setEnvironment(env.toStringList());
|
||||
-
|
||||
- #if defined Q_OS_WIN
|
||||
- process->setProgram(execPath + "/python/python.exe");
|
||||
- #else
|
||||
- process->setProgram(QStandardPaths::findExecutable("python3"));
|
||||
- #endif
|
||||
+ process->setProgram(path);
|
||||
|
||||
QSettings settings;
|
||||
QStringList proxyArguments;
|
||||
@@ -81,7 +45,7 @@ QProcess* YoutubeDl::instance(QString path, QStringList arguments) {
|
||||
networkArguments << "--force-ipv4";
|
||||
}
|
||||
|
||||
- process->setArguments(QStringList() << path << arguments << proxyArguments << networkArguments);
|
||||
+ process->setArguments(QStringList() << arguments << proxyArguments << networkArguments);
|
||||
return process;
|
||||
}
|
||||
|
||||
39
pkgs/applications/video/coriander/default.nix
Normal file
39
pkgs/applications/video/coriander/default.nix
Normal file
|
|
@ -0,0 +1,39 @@
|
|||
{ lib
|
||||
, stdenv
|
||||
, fetchurl
|
||||
, pkg-config
|
||||
, glib
|
||||
, gtk2
|
||||
, libgnomeui
|
||||
, libXv
|
||||
, libraw1394
|
||||
, libdc1394
|
||||
, SDL
|
||||
, automake
|
||||
, GConf
|
||||
}:
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "coriander";
|
||||
version = "2.0.1";
|
||||
|
||||
src = fetchurl {
|
||||
url = "http://damien.douxchamps.net/ieee1394/coriander/archives/coriander-${version}.tar.gz";
|
||||
sha256 = "0l6hpfgy5r4yardilmdrggsnn1fbfww516sk5a90g1740cd435x5";
|
||||
};
|
||||
|
||||
preConfigure = ''
|
||||
cp ${automake}/share/automake-*/mkinstalldirs .
|
||||
'';
|
||||
|
||||
nativeBuildInputs = [ pkg-config ];
|
||||
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 = lib.licenses.gpl3Plus;
|
||||
maintainers = with lib.maintainers; [ viric ];
|
||||
platforms = with lib.platforms; linux;
|
||||
};
|
||||
}
|
||||
70
pkgs/applications/video/corrscope/default.nix
Normal file
70
pkgs/applications/video/corrscope/default.nix
Normal file
|
|
@ -0,0 +1,70 @@
|
|||
{ lib
|
||||
, mkDerivationWith
|
||||
, python3Packages
|
||||
, fetchFromGitHub
|
||||
, wrapQtAppsHook
|
||||
, ffmpeg
|
||||
, qtbase
|
||||
}:
|
||||
|
||||
mkDerivationWith python3Packages.buildPythonApplication rec {
|
||||
pname = "corrscope";
|
||||
version = "0.8.0";
|
||||
format = "pyproject";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "corrscope";
|
||||
repo = "corrscope";
|
||||
rev = version;
|
||||
sha256 = "1wdla4ryif1ss37aqi61lcvzddvf568wyh5s3xv1lrryh4al9vpd";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [
|
||||
wrapQtAppsHook
|
||||
] ++ (with python3Packages; [
|
||||
poetry-core
|
||||
]);
|
||||
|
||||
buildInputs = [
|
||||
ffmpeg
|
||||
qtbase
|
||||
];
|
||||
|
||||
propagatedBuildInputs = with python3Packages; [
|
||||
appdirs
|
||||
atomicwrites
|
||||
attrs
|
||||
click
|
||||
matplotlib
|
||||
numpy
|
||||
packaging
|
||||
qtpy
|
||||
pyqt5
|
||||
ruamel-yaml
|
||||
colorspacious
|
||||
];
|
||||
|
||||
dontWrapQtApps = true;
|
||||
|
||||
preFixup = ''
|
||||
makeWrapperArgs+=(
|
||||
--prefix PATH : ${lib.makeBinPath [ ffmpeg ]}
|
||||
"''${qtWrapperArgs[@]}"
|
||||
)
|
||||
'';
|
||||
|
||||
meta = with lib; {
|
||||
description = "Render wave files into oscilloscope views, featuring advanced correlation-based triggering algorithm";
|
||||
longDescription = ''
|
||||
Corrscope renders oscilloscope views of WAV files recorded from chiptune (game music from
|
||||
retro sound chips).
|
||||
|
||||
Corrscope uses "waveform correlation" to track complex waves (including SNES and Sega
|
||||
Genesis/FM synthesis) which jump around on other oscilloscope programs.
|
||||
'';
|
||||
homepage = "https://github.com/corrscope/corrscope";
|
||||
license = licenses.bsd2;
|
||||
maintainers = with maintainers; [ OPNA2608 ];
|
||||
platforms = platforms.all;
|
||||
};
|
||||
}
|
||||
179
pkgs/applications/video/davinci-resolve/default.nix
Normal file
179
pkgs/applications/video/davinci-resolve/default.nix
Normal file
|
|
@ -0,0 +1,179 @@
|
|||
{ stdenv
|
||||
, lib
|
||||
, cacert
|
||||
, curl
|
||||
, runCommandLocal
|
||||
, targetPlatform
|
||||
, unzip
|
||||
, appimage-run
|
||||
, addOpenGLRunpath
|
||||
, libGLU
|
||||
, xorg
|
||||
, buildFHSUserEnv
|
||||
, bash
|
||||
, writeText
|
||||
, ocl-icd
|
||||
, xkeyboard_config
|
||||
, glib
|
||||
, libarchive
|
||||
, python2
|
||||
}:
|
||||
|
||||
let
|
||||
davinci = (
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "davinci-resolve";
|
||||
version = "17.4.3";
|
||||
|
||||
nativeBuildInputs = [ unzip appimage-run addOpenGLRunpath ];
|
||||
|
||||
# Pretty sure, there are missing dependencies ...
|
||||
buildInputs = [ libGLU xorg.libXxf86vm ];
|
||||
|
||||
src = runCommandLocal "${pname}-src.zip"
|
||||
rec {
|
||||
outputHashMode = "recursive";
|
||||
outputHashAlgo = "sha256";
|
||||
outputHash = "0hq374n26mbcds8f1z644cvnh4h2rjdrbxxxbj4p34mx9b04ab28";
|
||||
|
||||
impureEnvVars = lib.fetchers.proxyImpureEnvVars;
|
||||
|
||||
nativeBuildInputs = [ curl ];
|
||||
|
||||
# ENV VARS
|
||||
SSL_CERT_FILE = "${cacert}/etc/ssl/certs/ca-bundle.crt";
|
||||
|
||||
DOWNLOADID = "5efad1a052e8471989f662338d5247f1";
|
||||
REFERID = "263d62f31cbb49e0868005059abcb0c9";
|
||||
SITEURL = "https://www.blackmagicdesign.com/api/register/us/download/${DOWNLOADID}";
|
||||
|
||||
USERAGENT = builtins.concatStringsSep " " [
|
||||
"User-Agent: Mozilla/5.0 (X11; Linux ${targetPlatform.linuxArch})"
|
||||
"AppleWebKit/537.36 (KHTML, like Gecko)"
|
||||
"Chrome/77.0.3865.75"
|
||||
"Safari/537.36"
|
||||
];
|
||||
|
||||
REQJSON = builtins.toJSON {
|
||||
"firstname" = "NixOS";
|
||||
"lastname" = "Linux";
|
||||
"email" = "someone@nixos.org";
|
||||
"phone" = "+31 71 452 5670";
|
||||
"country" = "nl";
|
||||
"state" = "Province of Utrecht";
|
||||
"city" = "Utrecht";
|
||||
"product" = "DaVinci Resolve";
|
||||
};
|
||||
|
||||
} ''
|
||||
RESOLVEURL=$(curl \
|
||||
-s \
|
||||
-H 'Host: www.blackmagicdesign.com' \
|
||||
-H 'Accept: application/json, text/plain, */*' \
|
||||
-H 'Origin: https://www.blackmagicdesign.com' \
|
||||
-H "$USERAGENT" \
|
||||
-H 'Content-Type: application/json;charset=UTF-8' \
|
||||
-H "Referer: https://www.blackmagicdesign.com/support/download/$REFERID/Linux" \
|
||||
-H 'Accept-Encoding: gzip, deflate, br' \
|
||||
-H 'Accept-Language: en-US,en;q=0.9' \
|
||||
-H 'Authority: www.blackmagicdesign.com' \
|
||||
-H 'Cookie: _ga=GA1.2.1849503966.1518103294; _gid=GA1.2.953840595.1518103294' \
|
||||
--data-ascii "$REQJSON" \
|
||||
--compressed \
|
||||
"$SITEURL")
|
||||
|
||||
curl \
|
||||
--retry 3 --retry-delay 3 \
|
||||
-H "Host: sw.blackmagicdesign.com" \
|
||||
-H "Upgrade-Insecure-Requests: 1" \
|
||||
-H "$USERAGENT" \
|
||||
-H "Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8" \
|
||||
-H "Accept-Language: en-US,en;q=0.9" \
|
||||
--compressed \
|
||||
"$RESOLVEURL" \
|
||||
> $out
|
||||
'';
|
||||
|
||||
# The unpack phase won't generate a directory
|
||||
setSourceRoot = ''
|
||||
sourceRoot=$PWD
|
||||
'';
|
||||
|
||||
installPhase = ''
|
||||
runHook preInstall
|
||||
|
||||
export HOME=$PWD/home
|
||||
mkdir -p $HOME
|
||||
|
||||
mkdir -p $out
|
||||
appimage-run ./DaVinci_Resolve_${version}_Linux.run -i -y -n -C $out
|
||||
|
||||
mkdir -p $out/{configs,DolbyVision,easyDCP,Fairlight,GPUCache,logs,Media,"Resolve Disk Database",.crashreport,.license,.LUT}
|
||||
runHook postInstall
|
||||
'';
|
||||
|
||||
dontStrip = true;
|
||||
|
||||
postFixup = ''
|
||||
for program in $out/bin/*; do
|
||||
isELF "$program" || continue
|
||||
addOpenGLRunpath "$program"
|
||||
done
|
||||
|
||||
for program in $out/libs/*; do
|
||||
isELF "$program" || continue
|
||||
if [[ "$program" != *"libcudnn_cnn_infer"* ]];then
|
||||
echo $program
|
||||
addOpenGLRunpath "$program"
|
||||
fi
|
||||
done
|
||||
'';
|
||||
}
|
||||
);
|
||||
in
|
||||
buildFHSUserEnv {
|
||||
name = "davinci-resolve";
|
||||
targetPkgs = pkgs: with pkgs; [
|
||||
librsvg
|
||||
libGLU
|
||||
libGL
|
||||
xorg.libICE
|
||||
xorg.libSM
|
||||
xorg.libXxf86vm
|
||||
xorg.libxcb
|
||||
udev
|
||||
opencl-headers
|
||||
alsa-lib
|
||||
xorg.libX11
|
||||
xorg.libXext
|
||||
expat
|
||||
zlib
|
||||
libuuid
|
||||
bzip2
|
||||
libtool
|
||||
ocl-icd
|
||||
glib
|
||||
libarchive
|
||||
xdg-utils # xdg-open needed to open URLs
|
||||
python2
|
||||
# currently they want python 3.6 which is EOL
|
||||
#python3
|
||||
];
|
||||
|
||||
runScript = "${bash}/bin/bash ${
|
||||
writeText "davinci-wrapper"
|
||||
''
|
||||
export QT_XKB_CONFIG_ROOT="${xkeyboard_config}/share/X11/xkb"
|
||||
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:${davinci}/libs
|
||||
${davinci}/bin/resolve
|
||||
''
|
||||
}";
|
||||
|
||||
meta = with lib; {
|
||||
description = "Professional Video Editing, Color, Effects and Audio Post";
|
||||
homepage = "https://www.blackmagicdesign.com/products/davinciresolve/";
|
||||
license = licenses.unfree;
|
||||
maintainers = with maintainers; [ jshcmpbll ];
|
||||
platforms = platforms.linux;
|
||||
};
|
||||
}
|
||||
53
pkgs/applications/video/devede/default.nix
Normal file
53
pkgs/applications/video/devede/default.nix
Normal file
|
|
@ -0,0 +1,53 @@
|
|||
{ lib, fetchFromGitLab, python3Packages, ffmpeg, mplayer, vcdimager, cdrkit, dvdauthor
|
||||
, gtk3, gettext, wrapGAppsHook, gdk-pixbuf, gobject-introspection }:
|
||||
|
||||
let
|
||||
inherit (python3Packages) dbus-python buildPythonApplication pygobject3 urllib3 setuptools;
|
||||
in buildPythonApplication rec {
|
||||
pname = "devede";
|
||||
version = "4.16.0";
|
||||
namePrefix = "";
|
||||
|
||||
src = fetchFromGitLab {
|
||||
owner = "rastersoft";
|
||||
repo = "devedeng";
|
||||
rev = version;
|
||||
sha256 = "1xb7acjphvn4ya8fgjsvag5gzi9a6c2famfl0ffr8nhb9y8ig9mg";
|
||||
};
|
||||
|
||||
# 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
|
||||
];
|
||||
|
||||
propagatedBuildInputs = [
|
||||
gtk3 pygobject3 gdk-pixbuf dbus-python ffmpeg 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 lib; {
|
||||
description = "DVD Creator for Linux";
|
||||
homepage = "http://www.rastersoft.com/programas/devede.html";
|
||||
license = licenses.gpl3;
|
||||
maintainers = [ maintainers.bdimcheff ];
|
||||
};
|
||||
}
|
||||
61
pkgs/applications/video/droidcam/default.nix
Normal file
61
pkgs/applications/video/droidcam/default.nix
Normal file
|
|
@ -0,0 +1,61 @@
|
|||
{ lib, stdenv, fetchFromGitHub
|
||||
, ffmpeg, libjpeg_turbo, gtk3, alsa-lib, speex, libusbmuxd, libappindicator-gtk3
|
||||
, pkg-config
|
||||
}:
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "droidcam";
|
||||
version = "1.8.2";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "aramg";
|
||||
repo = "droidcam";
|
||||
rev = "v${version}";
|
||||
sha256 = "sha256-AxJBpoiBnb+5Pq/h4giOYAeLlvOtAJT5sCwzPEKo7w4=";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [
|
||||
pkg-config
|
||||
];
|
||||
|
||||
buildInputs = [
|
||||
ffmpeg
|
||||
libjpeg_turbo
|
||||
gtk3
|
||||
alsa-lib
|
||||
speex
|
||||
libusbmuxd
|
||||
libappindicator-gtk3
|
||||
];
|
||||
|
||||
postPatch = ''
|
||||
substituteInPlace src/droidcam.c \
|
||||
--replace "/opt/droidcam-icon.png" "$out/share/icons/hicolor/96x96/apps/droidcam.png"
|
||||
substituteInPlace droidcam.desktop \
|
||||
--replace "/opt/droidcam-icon.png" "droidcam" \
|
||||
--replace "/usr/local/bin/droidcam" "droidcam"
|
||||
'';
|
||||
|
||||
preBuild = ''
|
||||
makeFlagsArray+=("JPEG=$(pkg-config --libs --cflags libturbojpeg)")
|
||||
makeFlagsArray+=("USBMUXD=$(pkg-config --libs --cflags libusbmuxd-2.0)")
|
||||
'';
|
||||
|
||||
installPhase = ''
|
||||
runHook preInstall
|
||||
|
||||
install -Dt $out/bin droidcam droidcam-cli
|
||||
install -D icon2.png $out/share/icons/hicolor/96x96/apps/droidcam.png
|
||||
install -D droidcam.desktop $out/share/applications/droidcam.desktop
|
||||
|
||||
runHook postInstall
|
||||
'';
|
||||
|
||||
meta = with lib; {
|
||||
description = "Linux client for DroidCam app";
|
||||
homepage = "https://github.com/aramg/droidcam";
|
||||
license = licenses.gpl2Only;
|
||||
maintainers = [ maintainers.suhr ];
|
||||
platforms = platforms.linux;
|
||||
};
|
||||
}
|
||||
72
pkgs/applications/video/dvd-slideshow/default.nix
Normal file
72
pkgs/applications/video/dvd-slideshow/default.nix
Normal file
|
|
@ -0,0 +1,72 @@
|
|||
{ stdenv, lib, fetchurl, writeScript, cdrtools, dvdauthor, ffmpeg, imagemagick, lame, mjpegtools, sox, transcode, vorbis-tools, runtimeShell }:
|
||||
|
||||
let
|
||||
binPath = lib.makeBinPath [ cdrtools dvdauthor ffmpeg 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 = lib.licenses.gpl2;
|
||||
platforms = lib.platforms.linux;
|
||||
maintainers = [ lib.maintainers.robbinch ];
|
||||
};
|
||||
}
|
||||
40
pkgs/applications/video/dvdauthor/default.nix
Normal file
40
pkgs/applications/video/dvdauthor/default.nix
Normal file
|
|
@ -0,0 +1,40 @@
|
|||
{ lib
|
||||
, stdenv
|
||||
, fetchurl
|
||||
, imagemagick
|
||||
, libdvdread
|
||||
, libxml2
|
||||
, freetype
|
||||
, fribidi
|
||||
, libpng
|
||||
, zlib
|
||||
, pkg-config
|
||||
, flex
|
||||
, bison
|
||||
}:
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "dvdauthor";
|
||||
version = "0.7.1";
|
||||
|
||||
src = fetchurl {
|
||||
url = "mirror://sourceforge/dvdauthor/dvdauthor-${version}.tar.gz";
|
||||
sha256 = "1s8zqlim0s3hk5sbdsilip3qqh0yv05l1jwx49d9rsy614dv27sh";
|
||||
};
|
||||
|
||||
buildInputs = [ libpng freetype libdvdread libxml2 zlib fribidi imagemagick flex bison ];
|
||||
nativeBuildInputs = [ pkg-config ];
|
||||
|
||||
patches = [
|
||||
./dvdauthor-0.7.1-automake-1.13.patch
|
||||
./dvdauthor-0.7.1-mga-strndup.patch
|
||||
./dvdauthor-imagemagick-0.7.0.patch
|
||||
];
|
||||
|
||||
meta = with 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;
|
||||
};
|
||||
}
|
||||
|
|
@ -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
|
||||
|
|
@ -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"
|
||||
|
||||
|
|
@ -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"
|
||||
28
pkgs/applications/video/dvdbackup/default.nix
Normal file
28
pkgs/applications/video/dvdbackup/default.nix
Normal file
|
|
@ -0,0 +1,28 @@
|
|||
{ lib, 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 = lib.licenses.gpl3Plus;
|
||||
maintainers = [ lib.maintainers.bradediger ];
|
||||
platforms = lib.platforms.linux;
|
||||
};
|
||||
}
|
||||
127
pkgs/applications/video/dvdstyler/default.nix
Normal file
127
pkgs/applications/video/dvdstyler/default.nix
Normal file
|
|
@ -0,0 +1,127 @@
|
|||
{ lib
|
||||
, stdenv
|
||||
, fetchurl
|
||||
, bison
|
||||
, cdrtools
|
||||
, docbook_xml_dtd_412
|
||||
, docbook-xsl-nons
|
||||
, dvdauthor
|
||||
, dvdplusrwtools
|
||||
, ffmpeg
|
||||
, flex
|
||||
, fontconfig
|
||||
, gettext
|
||||
, glib
|
||||
, gobject-introspection
|
||||
, libexif
|
||||
, libjpeg
|
||||
, pkg-config
|
||||
, wrapGAppsHook
|
||||
, wxGTK30-gtk3 # crash with wxGTK30 with GTK2 compat
|
||||
, wxSVG
|
||||
, xine-ui
|
||||
, xmlto
|
||||
, zip
|
||||
|
||||
, dvdisasterSupport ? true, dvdisaster ? null
|
||||
, thumbnailSupport ? true, libgnomeui ? null
|
||||
, udevSupport ? true, udev ? null
|
||||
, dbusSupport ? true, dbus ? null
|
||||
}:
|
||||
|
||||
let
|
||||
inherit (lib) optionals makeBinPath;
|
||||
in stdenv.mkDerivation rec {
|
||||
pname = "dvdstyler";
|
||||
version = "3.1.2";
|
||||
|
||||
src = fetchurl {
|
||||
url = "mirror://sourceforge/project/dvdstyler/dvdstyler/${version}/DVDStyler-${version}.tar.bz2";
|
||||
sha256 = "03lsblqficcadlzkbyk8agh5rqcfz6y6dqvy9y866wqng3163zq4";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [
|
||||
bison
|
||||
docbook_xml_dtd_412
|
||||
docbook-xsl-nons
|
||||
flex
|
||||
gettext
|
||||
gobject-introspection
|
||||
pkg-config
|
||||
wrapGAppsHook
|
||||
xmlto
|
||||
zip
|
||||
];
|
||||
buildInputs = [
|
||||
cdrtools
|
||||
dvdauthor
|
||||
dvdplusrwtools
|
||||
ffmpeg
|
||||
fontconfig
|
||||
glib
|
||||
libexif
|
||||
libjpeg
|
||||
wxSVG
|
||||
wxGTK30-gtk3
|
||||
xine-ui
|
||||
]
|
||||
++ optionals dvdisasterSupport [ dvdisaster ]
|
||||
++ optionals udevSupport [ udev ]
|
||||
++ optionals dbusSupport [ dbus ]
|
||||
++ optionals thumbnailSupport [ libgnomeui ];
|
||||
|
||||
enableParallelBuilding = true;
|
||||
|
||||
preFixup = let
|
||||
binPath = makeBinPath ([
|
||||
cdrtools
|
||||
dvdauthor
|
||||
dvdplusrwtools
|
||||
] ++ optionals dvdisasterSupport [ dvdisaster ]);
|
||||
in
|
||||
''
|
||||
gappsWrapperArgs+=(
|
||||
--prefix PATH : "${binPath}"
|
||||
)
|
||||
'';
|
||||
|
||||
|
||||
meta = with lib; {
|
||||
homepage = "https://www.dvdstyler.org/";
|
||||
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
|
||||
'';
|
||||
license = licenses.gpl2Plus;
|
||||
maintainers = with maintainers; [ AndersonTorres ];
|
||||
platforms = with platforms; linux;
|
||||
};
|
||||
}
|
||||
33
pkgs/applications/video/electronplayer/electronplayer.nix
Normal file
33
pkgs/applications/video/electronplayer/electronplayer.nix
Normal file
|
|
@ -0,0 +1,33 @@
|
|||
{ appimageTools, lib, 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 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" ];
|
||||
};
|
||||
}
|
||||
135
pkgs/applications/video/entangle/default.nix
Normal file
135
pkgs/applications/video/entangle/default.nix
Normal file
|
|
@ -0,0 +1,135 @@
|
|||
{ lib
|
||||
, stdenv
|
||||
, fetchFromGitLab
|
||||
, fetchpatch
|
||||
, itstool
|
||||
, libxml2
|
||||
, meson
|
||||
, ninja
|
||||
, perl
|
||||
, python3
|
||||
, pkgconf
|
||||
, wrapGAppsHook
|
||||
, at-spi2-core
|
||||
, dbus
|
||||
, elfutils
|
||||
, libepoxy
|
||||
, gexiv2
|
||||
, glib
|
||||
, gobject-introspection
|
||||
, gst-plugins-base
|
||||
, gstreamer
|
||||
, gtk3
|
||||
, lcms2
|
||||
, libdatrie
|
||||
, libgphoto2
|
||||
, libgudev
|
||||
, libpeas
|
||||
, libraw
|
||||
, libselinux
|
||||
, libsepol
|
||||
, libthai
|
||||
, libunwind
|
||||
, libxkbcommon
|
||||
, orc
|
||||
, pcre
|
||||
, udev
|
||||
, util-linux
|
||||
, xorg
|
||||
, zstd
|
||||
}:
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "entangle";
|
||||
version = "3.0";
|
||||
|
||||
src = fetchFromGitLab {
|
||||
owner = "entangle";
|
||||
repo = "entangle";
|
||||
rev = "v${version}";
|
||||
sha256 = "hz2WSDOjriQSavFlDT+35x1X5MeInq80ZrSP1WR/td0=";
|
||||
};
|
||||
|
||||
patches = [
|
||||
# Fix build with meson 0.61, can be removed on next update
|
||||
# https://gitlab.com/entangle/entangle/-/issues/67
|
||||
(fetchpatch {
|
||||
url = "https://gitlab.com/entangle/entangle/-/commit/54795d275a93e94331a614c8712740fcedbdd4f0.patch";
|
||||
sha256 = "iEgqGjKa0xwSdctwvNdEV361l9nx+bz53xn3fuDgtzY=";
|
||||
})
|
||||
];
|
||||
|
||||
nativeBuildInputs = [
|
||||
itstool
|
||||
glib
|
||||
libxml2 # for xmllint
|
||||
meson
|
||||
ninja
|
||||
perl # for pod2man and build scripts
|
||||
python3 # for build scripts
|
||||
pkgconf
|
||||
wrapGAppsHook
|
||||
];
|
||||
|
||||
buildInputs = [
|
||||
at-spi2-core
|
||||
dbus
|
||||
libepoxy
|
||||
elfutils
|
||||
gexiv2
|
||||
glib
|
||||
gobject-introspection
|
||||
gst-plugins-base
|
||||
gstreamer
|
||||
gtk3
|
||||
lcms2
|
||||
libdatrie
|
||||
libgphoto2
|
||||
libgudev
|
||||
libpeas
|
||||
libraw
|
||||
libselinux
|
||||
libsepol
|
||||
libthai
|
||||
libunwind
|
||||
libxkbcommon
|
||||
orc
|
||||
pcre
|
||||
udev
|
||||
util-linux
|
||||
zstd
|
||||
] ++ (with xorg; [
|
||||
libXdmcp
|
||||
libXtst
|
||||
]);
|
||||
|
||||
# Disable building of doc/reference since it requires network connection to render XML to HTML
|
||||
# Patch build script shebangs
|
||||
postPatch = ''
|
||||
sed -i "/subdir('reference')/d" "docs/meson.build"
|
||||
patchShebangs --build build-aux meson_post_install.py
|
||||
sed -i meson_post_install.py \
|
||||
-e "/print('Update icon cache...')/d" \
|
||||
-e "/gtk-update-icon-cache/d"
|
||||
'';
|
||||
|
||||
postInstall = ''
|
||||
substituteInPlace "$out/share/applications/org.entangle_photo.Manager.desktop" \
|
||||
--replace "Exec=entangle" "Exec=$out/bin/entangle"
|
||||
'';
|
||||
|
||||
meta = with lib; {
|
||||
description = "Tethered camera control and capture";
|
||||
longDescription = ''
|
||||
Entangle uses GTK and libgphoto2 to provide a graphical interface
|
||||
for tethered photography with digital cameras.
|
||||
It includes control over camera shooting and configuration settings
|
||||
and 'hands off' shooting directly from the controlling computer.
|
||||
This app can also serve as a camera app for mobile devices.
|
||||
'';
|
||||
homepage = "https://gitlab.com/entangle/entangle";
|
||||
license = licenses.gpl3Plus;
|
||||
platforms = platforms.all;
|
||||
maintainers = with maintainers; [ ShamrockLee ];
|
||||
};
|
||||
}
|
||||
57
pkgs/applications/video/epgstation/client/package.json
Normal file
57
pkgs/applications/video/epgstation/client/package.json
Normal file
|
|
@ -0,0 +1,57 @@
|
|||
{
|
||||
"name": "epgstation-client",
|
||||
"version": "2.6.20",
|
||||
"private": true,
|
||||
"scripts": {
|
||||
"build": "vue-cli-service build",
|
||||
"lint": "vue-cli-service lint",
|
||||
"watch": "vue-cli-service build --watch --mode development"
|
||||
},
|
||||
"dependencies": {
|
||||
"@mdi/font": "6.5.95",
|
||||
"aribb24.js": "1.8.8",
|
||||
"axios": "0.24.0",
|
||||
"eventemitter2": "6.4.5",
|
||||
"hls.js": "1.1.2",
|
||||
"inversify": "6.0.1",
|
||||
"json-stable-stringify": "1.0.1",
|
||||
"lodash": "4.17.21",
|
||||
"material-design-icons-iconfont": "6.1.1",
|
||||
"mpegts.js": "1.6.10",
|
||||
"reflect-metadata": "0.1.13",
|
||||
"resize-observer-polyfill": "1.5.1",
|
||||
"roboto-fontface": "*",
|
||||
"smoothscroll-polyfill": "0.4.4",
|
||||
"socket.io-client": "4.3.2",
|
||||
"typeface-roboto": "1.1.13",
|
||||
"vue": "2.6.14",
|
||||
"vue-class-component": "7.2.6",
|
||||
"vue-property-decorator": "9.1.2",
|
||||
"vue-router": "3.5.3",
|
||||
"vuetify": "2.5.10",
|
||||
"vuetify-datetime-picker": "2.1.1",
|
||||
"@types/hls.js": "0.13.3",
|
||||
"@types/json-stable-stringify": "1.0.33",
|
||||
"@types/lodash": "4.14.178",
|
||||
"@types/smoothscroll-polyfill": "0.3.1",
|
||||
"@types/socket.io-client": "1.4.36",
|
||||
"@typescript-eslint/eslint-plugin": "4.33.0",
|
||||
"@typescript-eslint/parser": "4.33.0",
|
||||
"@vue/cli-plugin-eslint": "4.5.12",
|
||||
"@vue/cli-plugin-typescript": "4.5.13",
|
||||
"@vue/cli-plugin-vuex": "4.5.13",
|
||||
"@vue/cli-service": "4.5.13",
|
||||
"@vue/eslint-config-prettier": "6.0.0",
|
||||
"@vue/eslint-config-typescript": "7.0.0",
|
||||
"eslint": "7.32.0",
|
||||
"eslint-plugin-prettier": "3.4.1",
|
||||
"eslint-plugin-vue": "7.20.0",
|
||||
"prettier": "2.4.1",
|
||||
"sass": "1.32.12",
|
||||
"sass-loader": "10.2.0",
|
||||
"typescript": "4.4.4",
|
||||
"vue-cli-plugin-vuetify": "2.4.3",
|
||||
"vue-template-compiler": "2.6.14",
|
||||
"vuetify-loader": "1.7.3"
|
||||
}
|
||||
}
|
||||
139
pkgs/applications/video/epgstation/default.nix
Normal file
139
pkgs/applications/video/epgstation/default.nix
Normal file
|
|
@ -0,0 +1,139 @@
|
|||
{ lib
|
||||
, stdenv
|
||||
, fetchFromGitHub
|
||||
, gitUpdater
|
||||
, writers
|
||||
, makeWrapper
|
||||
, bash
|
||||
, nodejs
|
||||
, nodePackages
|
||||
, gzip
|
||||
, jq
|
||||
, yq
|
||||
}:
|
||||
|
||||
let
|
||||
# NOTE: use updateScript to bump the package version
|
||||
pname = "EPGStation";
|
||||
version = "2.6.20";
|
||||
src = fetchFromGitHub {
|
||||
owner = "l3tnun";
|
||||
repo = "EPGStation";
|
||||
rev = "v${version}";
|
||||
sha256 = "K1cAvmqWEfS6EY4MKAtjXb388XLYHtouxNM70PWgFig=";
|
||||
};
|
||||
|
||||
client = nodePackages.epgstation-client.override (drv: {
|
||||
# FIXME: remove this option if possible
|
||||
#
|
||||
# Unsetting this option resulted NPM attempting to re-download packages.
|
||||
dontNpmInstall = true;
|
||||
|
||||
meta = drv.meta // {
|
||||
inherit (nodejs.meta) platforms;
|
||||
};
|
||||
});
|
||||
|
||||
server = nodePackages.epgstation.override (drv: {
|
||||
inherit src;
|
||||
|
||||
# This is set to false to keep devDependencies at build time. Build time
|
||||
# dependencies are pruned afterwards.
|
||||
production = false;
|
||||
|
||||
buildInputs = (drv.buildInputs or [ ]) ++ [ bash ];
|
||||
nativeBuildInputs = (drv.nativeBuildInputs or [ ]) ++ [
|
||||
makeWrapper
|
||||
];
|
||||
|
||||
preRebuild = ''
|
||||
# Fix for not being able to connect to mysql using domain sockets.
|
||||
patch -p1 < ${./use-mysql-over-domain-socket.patch}
|
||||
|
||||
# Workaround for https://github.com/svanderburg/node2nix/issues/275
|
||||
sed -i -e "s|#!/usr/bin/env node|#! ${nodejs}/bin/node|" node_modules/node-gyp-build/bin.js
|
||||
|
||||
find . -name package-lock.json -delete
|
||||
'';
|
||||
|
||||
postInstall = let
|
||||
runtimeDeps = [ nodejs bash ];
|
||||
in
|
||||
''
|
||||
mkdir -p $out/{bin,libexec,share/doc/epgstation,share/man/man1}
|
||||
|
||||
pushd $out/lib/node_modules/epgstation
|
||||
|
||||
cp -r ${client}/lib/node_modules/epgstation-client/node_modules client/node_modules
|
||||
chmod -R u+w client/node_modules
|
||||
|
||||
npm run build
|
||||
|
||||
npm prune --production
|
||||
pushd client
|
||||
npm prune --production
|
||||
popd
|
||||
|
||||
mv config/enc.js.template $out/libexec/enc.js
|
||||
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 \
|
||||
--chdir "$out/lib/node_modules/epgstation" \
|
||||
--prefix PATH : ${lib.makeBinPath runtimeDeps} \
|
||||
--set APP_ROOT_PATH "$out/lib/node_modules/epgstation"
|
||||
|
||||
popd
|
||||
'';
|
||||
|
||||
# NOTE: this may take a while since it has to update all packages in
|
||||
# nixpkgs.nodePackages
|
||||
passthru.updateScript = import ./update.nix {
|
||||
inherit lib;
|
||||
inherit (src.meta) homepage;
|
||||
inherit
|
||||
pname
|
||||
version
|
||||
gitUpdater
|
||||
writers
|
||||
jq
|
||||
yq;
|
||||
};
|
||||
|
||||
# nodePackages.epgstation is a stub package to fetch npm dependencies and
|
||||
# its meta.platforms is made empty 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.
|
||||
meta = drv.meta // {
|
||||
inherit (nodejs.meta) platforms;
|
||||
};
|
||||
});
|
||||
in
|
||||
server // {
|
||||
name = "${pname}-${version}";
|
||||
|
||||
meta = with lib; server.meta // {
|
||||
maintainers = with maintainers; [ midchildan ];
|
||||
|
||||
# NOTE: updateScript relies on this being correct
|
||||
position = toString ./default.nix + ":1";
|
||||
};
|
||||
}
|
||||
56
pkgs/applications/video/epgstation/epgstation.1
Normal file
56
pkgs/applications/video/epgstation/epgstation.1
Normal file
|
|
@ -0,0 +1,56 @@
|
|||
.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.yml
|
||||
.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
|
||||
Restore the EPGstation database from the prior v1 release.
|
||||
.Pp
|
||||
.Dl $ epgstation run v1migrate /path/to/src
|
||||
.Pp
|
||||
.Sh SEE ALSO
|
||||
.Xr npm 1
|
||||
72
pkgs/applications/video/epgstation/package.json
Normal file
72
pkgs/applications/video/epgstation/package.json
Normal file
|
|
@ -0,0 +1,72 @@
|
|||
{
|
||||
"name": "epgstation",
|
||||
"version": "2.6.20",
|
||||
"description": "DTV Software in Japan.",
|
||||
"repository": {
|
||||
"type": "git",
|
||||
"url": "git+https://github.com/l3tnun/EPGStation-V2.git"
|
||||
},
|
||||
"author": "l3tnun",
|
||||
"license": "MIT",
|
||||
"bugs": {
|
||||
"url": "https://github.com/l3tnun/EPGStation-V2/issues"
|
||||
},
|
||||
"homepage": "https://github.com/l3tnun/EPGStation-V2#readme",
|
||||
"dependencies": {
|
||||
"arib-subtitle-timedmetadater": "4.0.9",
|
||||
"aribts": "2.1.12",
|
||||
"axios": "0.24.0",
|
||||
"body-parser": "1.19.0",
|
||||
"cors": "2.8.5",
|
||||
"diskusage-ng": "1.0.2",
|
||||
"express": "4.17.1",
|
||||
"express-openapi": "9.3.0",
|
||||
"file-type": "16.5.3",
|
||||
"inversify": "5.1.1",
|
||||
"js-yaml": "4.1.0",
|
||||
"lodash": "4.17.21",
|
||||
"log4js": "6.3.0",
|
||||
"minimist": "1.2.5",
|
||||
"mirakurun": "3.9.0-beta.26",
|
||||
"mkdirp": "1.0.4",
|
||||
"multer": "1.4.3",
|
||||
"mysql": "2.18.1",
|
||||
"openapi-types": "9.3.0",
|
||||
"reflect-metadata": "0.1.13",
|
||||
"socket.io": "4.3.1",
|
||||
"source-map-support": "0.5.20",
|
||||
"sqlite3": "5.0.2",
|
||||
"swagger-ui-dist": "3.52.5",
|
||||
"typeorm": "0.2.38",
|
||||
"url-join": "4.0.1",
|
||||
"@types/body-parser": "1.19.1",
|
||||
"@types/express": "4.17.13",
|
||||
"@types/file-type": "10.9.1",
|
||||
"@types/js-yaml": "4.0.4",
|
||||
"@types/lodash": "4.14.176",
|
||||
"@types/minimist": "1.2.2",
|
||||
"@types/mkdirp": "1.0.2",
|
||||
"@types/mongodb": "4.0.6",
|
||||
"@types/multer": "1.4.7",
|
||||
"@types/node": "16.11.6",
|
||||
"@types/socket.io": "3.0.1",
|
||||
"@types/source-map-support": "0.5.4",
|
||||
"@types/sqlite3": "3.1.7",
|
||||
"@types/url-join": "4.0.1",
|
||||
"@typescript-eslint/eslint-plugin": "4.33.0",
|
||||
"@typescript-eslint/parser": "4.33.0",
|
||||
"del": "6.0.0",
|
||||
"eslint": "7.32.0",
|
||||
"eslint-config-prettier": "8.3.0",
|
||||
"eslint-plugin-prettier": "3.4.1",
|
||||
"gulp": "4.0.2",
|
||||
"gulp-eslint": "6.0.0",
|
||||
"gulp-plumber": "1.2.1",
|
||||
"gulp-sourcemaps": "3.0.0",
|
||||
"gulp-typescript": "5.0.1",
|
||||
"prettier": "2.4.1",
|
||||
"ts-loader": "9.2.6",
|
||||
"ts-node": "10.4.0",
|
||||
"typescript": "4.4.4"
|
||||
}
|
||||
}
|
||||
63
pkgs/applications/video/epgstation/update.nix
Normal file
63
pkgs/applications/video/epgstation/update.nix
Normal file
|
|
@ -0,0 +1,63 @@
|
|||
{ pname
|
||||
, version
|
||||
, homepage
|
||||
, lib
|
||||
, gitUpdater
|
||||
, writers
|
||||
, jq
|
||||
, yq
|
||||
}:
|
||||
|
||||
let
|
||||
updater = gitUpdater {
|
||||
inherit pname version;
|
||||
attrPath = lib.toLower pname;
|
||||
rev-prefix = "v";
|
||||
};
|
||||
updateScript = builtins.elemAt updater 0;
|
||||
updateArgs = map (lib.escapeShellArg) (builtins.tail updater);
|
||||
in writers.writeBash "update-epgstation" ''
|
||||
set -euxo pipefail
|
||||
|
||||
# bump the version
|
||||
${updateScript} ${lib.concatStringsSep " " updateArgs}
|
||||
|
||||
cd "${toString ./.}"
|
||||
|
||||
# Get the path to the latest source. Note that we can't just pass the value
|
||||
# of epgstation.src directly because it'd be evaluated before we can run
|
||||
# updateScript.
|
||||
SRC="$(nix-build ../../../.. --no-out-link -A epgstation.src)"
|
||||
if [[ "${version}" == "$(${jq}/bin/jq -r .version "$SRC/package.json")" ]]; then
|
||||
echo "[INFO] Already using the latest version of ${pname}" >&2
|
||||
exit
|
||||
fi
|
||||
|
||||
# Regenerate package.json from the latest source.
|
||||
${jq}/bin/jq '. + {
|
||||
dependencies: (.dependencies + .devDependencies),
|
||||
} | del(.devDependencies, .main, .scripts)' \
|
||||
"$SRC/package.json" \
|
||||
> package.json
|
||||
${jq}/bin/jq '. + {
|
||||
dependencies: (.dependencies + .devDependencies),
|
||||
} | del(.devDependencies, .main, .scripts)' \
|
||||
"$SRC/client/package.json" \
|
||||
> client/package.json
|
||||
|
||||
# Regenerate node packages to update the pre-overriden epgstation derivation.
|
||||
# This must come *after* package.json has been regenerated.
|
||||
pushd ../../../development/node-packages
|
||||
./generate.sh
|
||||
popd
|
||||
|
||||
# Generate default streaming settings for the nixos module.
|
||||
pushd ../../../../nixos/modules/services/video/epgstation
|
||||
${yq}/bin/yq -j '{ urlscheme , stream }' \
|
||||
"$SRC/config/config.yml.template" \
|
||||
> streaming.json
|
||||
|
||||
# Fix generated output for EditorConfig compliance
|
||||
printf '\n' >> streaming.json # rule: insert_final_newline
|
||||
popd
|
||||
''
|
||||
|
|
@ -0,0 +1,46 @@
|
|||
diff --git a/ormconfig.js b/ormconfig.js
|
||||
index 5591853b..838c06cb 100644
|
||||
--- a/ormconfig.js
|
||||
+++ b/ormconfig.js
|
||||
@@ -38,8 +38,6 @@ switch (config.dbtype) {
|
||||
|
||||
case 'mysql':
|
||||
ormConfig.type = 'mysql';
|
||||
- ormConfig.host = config.mysql.host;
|
||||
- ormConfig.port = config.mysql.port;
|
||||
ormConfig.username = config.mysql.user;
|
||||
ormConfig.password = config.mysql.password;
|
||||
ormConfig.database = config.mysql.database;
|
||||
@@ -49,6 +47,12 @@ switch (config.dbtype) {
|
||||
} else {
|
||||
ormConfig.charset = config.mysql.charset;
|
||||
}
|
||||
+ if (config.mysql.socketPath) {
|
||||
+ ormConfig.socketPath = config.mysql.socketPath;
|
||||
+ } else {
|
||||
+ ormConfig.host = config.mysql.host;
|
||||
+ ormConfig.port = config.mysql.port;
|
||||
+ }
|
||||
break;
|
||||
|
||||
case 'postgres':
|
||||
diff --git a/src/model/IConfigFile.ts b/src/model/IConfigFile.ts
|
||||
index 6a502e83..ba84a423 100644
|
||||
--- a/src/model/IConfigFile.ts
|
||||
+++ b/src/model/IConfigFile.ts
|
||||
@@ -61,12 +61,13 @@ export default interface IConfigFile {
|
||||
regexp?: boolean;
|
||||
};
|
||||
mysql?: {
|
||||
- host: string;
|
||||
+ host?: string;
|
||||
user: string;
|
||||
- port: number;
|
||||
+ port?: number;
|
||||
password: string;
|
||||
database: string;
|
||||
charset?: string;
|
||||
+ socketPath?: string;
|
||||
};
|
||||
postgres?: {
|
||||
host: string;
|
||||
23
pkgs/applications/video/f1viewer/default.nix
Normal file
23
pkgs/applications/video/f1viewer/default.nix
Normal file
|
|
@ -0,0 +1,23 @@
|
|||
{ lib, buildGoModule, fetchFromGitHub }:
|
||||
|
||||
buildGoModule rec {
|
||||
pname = "f1viewer";
|
||||
version = "2.7.0";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "SoMuchForSubtlety";
|
||||
repo = pname;
|
||||
rev = "v${version}";
|
||||
sha256 = "sha256-jXC2dENXuqicNQqTHyZKsjibDvjta/npQmf3+uivjX0=";
|
||||
};
|
||||
|
||||
vendorSha256 = "sha256-UNeH3zxgssXxFpJws6nAL8EgXt0DRyAQfmlJWz/qyDg=";
|
||||
|
||||
meta = with lib; {
|
||||
description =
|
||||
"A TUI to view Formula 1 footage using VLC or another media player";
|
||||
homepage = "https://github.com/SoMuchForSubtlety/f1viewer";
|
||||
license = licenses.gpl3Only;
|
||||
maintainers = with maintainers; [ michzappa ];
|
||||
};
|
||||
}
|
||||
29
pkgs/applications/video/ffmpeg-normalize/default.nix
Normal file
29
pkgs/applications/video/ffmpeg-normalize/default.nix
Normal file
|
|
@ -0,0 +1,29 @@
|
|||
{ lib
|
||||
, buildPythonApplication
|
||||
, fetchPypi
|
||||
, ffmpeg
|
||||
, ffmpeg-progress-yield
|
||||
}:
|
||||
|
||||
buildPythonApplication rec {
|
||||
pname = "ffmpeg-normalize";
|
||||
version = "1.23.0";
|
||||
|
||||
src = fetchPypi {
|
||||
inherit pname version;
|
||||
sha256 = "sha256-DSBh3m7gGm5fWH47YWALlyhi4x6A2RcVrpuDDpXolSI=";
|
||||
};
|
||||
|
||||
propagatedBuildInputs = [ ffmpeg ffmpeg-progress-yield ];
|
||||
|
||||
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 ];
|
||||
};
|
||||
}
|
||||
49
pkgs/applications/video/filebot/default.nix
Normal file
49
pkgs/applications/video/filebot/default.nix
Normal file
|
|
@ -0,0 +1,49 @@
|
|||
{ lib, stdenv, fetchurl, openjdk17, makeWrapper, autoPatchelfHook
|
||||
, zlib, libzen, libmediainfo, curlWithGnuTls, libmms, glib
|
||||
}:
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "filebot";
|
||||
version = "4.9.6";
|
||||
|
||||
src = fetchurl {
|
||||
url = "https://web.archive.org/web/20220305095926/https://get.filebot.net/filebot/FileBot_${version}/FileBot_${version}-portable.tar.xz";
|
||||
sha256 = "sha256-3j0WmmamE9KUNwjOVZvrdFH5dS/9FHSdbLfcAsOzQOo=";
|
||||
};
|
||||
|
||||
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/$(id -u)"' '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 : ${lib.makeBinPath [ openjdk17 ]}
|
||||
# Expose the binary in bin to make runnable.
|
||||
ln -s $out/opt/filebot.sh $out/bin/filebot
|
||||
'';
|
||||
|
||||
meta = with 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";
|
||||
sourceProvenance = with sourceTypes; [ binaryBytecode ];
|
||||
license = licenses.unfreeRedistributable;
|
||||
maintainers = with maintainers; [ gleber felschr ];
|
||||
platforms = platforms.linux;
|
||||
};
|
||||
}
|
||||
11
pkgs/applications/video/flirc/99-flirc.rules
Normal file
11
pkgs/applications/video/flirc/99-flirc.rules
Normal file
|
|
@ -0,0 +1,11 @@
|
|||
# Flirc Devices
|
||||
|
||||
# Bootloader
|
||||
SUBSYSTEM=="usb", ENV{DEVTYPE}=="usb_device", ATTR{idVendor}=="20a0", ATTR{idProduct}=="0000", MODE="0666"
|
||||
SUBSYSTEM=="usb", ENV{DEVTYPE}=="usb_device", ATTR{idVendor}=="20a0", ATTR{idProduct}=="0002", MODE="0666"
|
||||
SUBSYSTEM=="hidraw", ATTRS{idVendor}=="20a0", ATTRS{idProduct}=="0005", MODE="0666"
|
||||
|
||||
# Flirc Application
|
||||
SUBSYSTEM=="usb", ENV{DEVTYPE}=="usb_device", ATTR{idVendor}=="20a0", ATTR{idProduct}=="0001", MODE="0666"
|
||||
SUBSYSTEM=="usb", ENV{DEVTYPE}=="usb_device", ATTR{idVendor}=="20a0", ATTR{idProduct}=="0004", MODE="0666"
|
||||
SUBSYSTEM=="hidraw", ATTRS{idVendor}=="20a0", ATTRS{idProduct}=="0006", MODE="0666"
|
||||
45
pkgs/applications/video/flirc/default.nix
Normal file
45
pkgs/applications/video/flirc/default.nix
Normal file
|
|
@ -0,0 +1,45 @@
|
|||
{ lib
|
||||
, mkDerivation
|
||||
, fetchurl
|
||||
, autoPatchelfHook
|
||||
, hidapi
|
||||
, readline
|
||||
, qtsvg
|
||||
, qtxmlpatterns
|
||||
}:
|
||||
|
||||
mkDerivation rec {
|
||||
pname = "flirc";
|
||||
version = "3.24.3";
|
||||
|
||||
src = fetchurl {
|
||||
url = "https://web.archive.org/web/20211021211803/http://apt.flirc.tv/arch/x86_64/flirc.latest.x86_64.tar.gz";
|
||||
sha256 = "0p4pp7j70lbw6m25lmjg6ibc67r6jcy7qs3kki9f86ji1jvrxpga";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [ autoPatchelfHook ];
|
||||
buildInputs = [
|
||||
hidapi
|
||||
readline
|
||||
qtsvg
|
||||
qtxmlpatterns
|
||||
];
|
||||
|
||||
dontConfigure = true;
|
||||
dontBuild = true;
|
||||
|
||||
# udev rules don't appear in the official package
|
||||
# https://flirc.gitbooks.io/flirc-instructions/content/linux.html
|
||||
installPhase = ''
|
||||
install -D -t $out/bin/ Flirc flirc_util
|
||||
install -D ${./99-flirc.rules} $out/lib/udev/rules.d/99-flirc.rules
|
||||
'';
|
||||
|
||||
meta = with lib; {
|
||||
homepage = "https://flirc.tv/more/flirc-usb";
|
||||
description = "Use any Remote with your Media Center";
|
||||
maintainers = with maintainers; [ aanderse ];
|
||||
license = licenses.unfree;
|
||||
platforms = [ "x86_64-linux" ];
|
||||
};
|
||||
}
|
||||
45
pkgs/applications/video/flowblade/default.nix
Normal file
45
pkgs/applications/video/flowblade/default.nix
Normal file
|
|
@ -0,0 +1,45 @@
|
|||
{ lib, fetchFromGitHub, stdenv
|
||||
, ffmpeg, frei0r, sox, gtk3, python3, ladspaPlugins
|
||||
, gobject-introspection, makeWrapper, wrapGAppsHook
|
||||
}:
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "flowblade";
|
||||
version = "2.8.0.3";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "jliljebl";
|
||||
repo = pname;
|
||||
rev = "v${version}";
|
||||
sha256 = "sha256-/EkI3qiceB5eKTVQnpG+z4e6yaE9hDtn6I+iN/J+h/g=";
|
||||
};
|
||||
|
||||
buildInputs = [
|
||||
ffmpeg frei0r sox gtk3 gobject-introspection ladspaPlugins
|
||||
(python3.withPackages (ps: with ps; [ mlt pygobject3 dbus-python numpy pillow ]))
|
||||
];
|
||||
|
||||
nativeBuildInputs = [ gobject-introspection makeWrapper wrapGAppsHook ];
|
||||
|
||||
installPhase = ''
|
||||
runHook preInstall
|
||||
|
||||
mkdir -p $out
|
||||
cp -a ${src}/flowblade-trunk $out/flowblade
|
||||
|
||||
makeWrapper $out/flowblade/flowblade $out/bin/flowblade \
|
||||
--set FREI0R_PATH ${frei0r}/lib/frei0r-1 \
|
||||
--set LADSPA_PATH ${ladspaPlugins}/lib/ladspa \
|
||||
''${gappsWrapperArgs[@]}
|
||||
|
||||
runHook postInstall
|
||||
'';
|
||||
|
||||
meta = with lib; {
|
||||
description = "Multitrack Non-Linear Video Editor";
|
||||
homepage = "https://jliljebl.github.io/flowblade/";
|
||||
license = with licenses; [ gpl3Plus ];
|
||||
platforms = platforms.linux;
|
||||
maintainers = with maintainers; [ polygon ];
|
||||
};
|
||||
}
|
||||
50
pkgs/applications/video/freetube/default.nix
Normal file
50
pkgs/applications/video/freetube/default.nix
Normal file
|
|
@ -0,0 +1,50 @@
|
|||
{ stdenv, lib, fetchurl, appimageTools, makeWrapper, electron }:
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "freetube";
|
||||
version = "0.16.0";
|
||||
|
||||
src = fetchurl {
|
||||
url = "https://github.com/FreeTubeApp/FreeTube/releases/download/v${version}-beta/freetube_${version}_amd64.AppImage";
|
||||
sha256 = "sha256-G4lZ1lbNN8X9ocWhcuuNZGTZm9AUzuWKVm23YgsJwig=";
|
||||
};
|
||||
|
||||
appimageContents = appimageTools.extractType2 {
|
||||
name = "${pname}-${version}";
|
||||
inherit src;
|
||||
};
|
||||
|
||||
dontUnpack = true;
|
||||
dontConfigure = true;
|
||||
dontBuild = true;
|
||||
|
||||
nativeBuildInputs = [ makeWrapper ];
|
||||
|
||||
installPhase = ''
|
||||
runHook preInstall
|
||||
|
||||
mkdir -p $out/bin $out/share/${pname} $out/share/applications $out/share/icons/hicolor/scalable/apps
|
||||
|
||||
cp -a ${appimageContents}/{locales,resources} $out/share/${pname}
|
||||
cp -a ${appimageContents}/freetube.desktop $out/share/applications/${pname}.desktop
|
||||
cp -a ${appimageContents}/usr/share/icons/hicolor/scalable/freetube.svg $out/share/icons/hicolor/scalable/apps
|
||||
|
||||
substituteInPlace $out/share/applications/${pname}.desktop \
|
||||
--replace 'Exec=AppRun' 'Exec=${pname}'
|
||||
|
||||
runHook postInstall
|
||||
'';
|
||||
|
||||
postFixup = ''
|
||||
makeWrapper ${electron}/bin/electron $out/bin/${pname} \
|
||||
--add-flags $out/share/${pname}/resources/app.asar
|
||||
'';
|
||||
|
||||
meta = with lib; {
|
||||
description = "An Open Source YouTube app for privacy";
|
||||
homepage = "https://freetubeapp.io/";
|
||||
license = licenses.agpl3Only;
|
||||
maintainers = with maintainers; [ ryneeverett alyaeanyx ];
|
||||
platforms = [ "x86_64-linux" ];
|
||||
};
|
||||
}
|
||||
43
pkgs/applications/video/giph/default.nix
Normal file
43
pkgs/applications/video/giph/default.nix
Normal file
|
|
@ -0,0 +1,43 @@
|
|||
{ stdenvNoCC
|
||||
, lib
|
||||
, fetchFromGitHub
|
||||
, ffmpeg
|
||||
, xdotool
|
||||
, slop
|
||||
, libnotify
|
||||
, procps
|
||||
, makeWrapper
|
||||
}:
|
||||
|
||||
stdenvNoCC.mkDerivation rec {
|
||||
pname = "giph";
|
||||
version = "1.1.1";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "phisch";
|
||||
repo = pname;
|
||||
rev = version;
|
||||
sha256 = "19l46m1f32b3bagzrhaqsfnl5n3wbrmg3sdy6fdss4y1yf6nqayk";
|
||||
};
|
||||
|
||||
dontConfigure = true;
|
||||
|
||||
dontBuild = true;
|
||||
|
||||
installFlags = [ "PREFIX=${placeholder "out"}" ];
|
||||
|
||||
nativeBuildInputs = [ makeWrapper ];
|
||||
|
||||
postInstall = ''
|
||||
wrapProgram $out/bin/giph \
|
||||
--prefix PATH : ${lib.makeBinPath [ ffmpeg xdotool libnotify slop procps ]}
|
||||
'';
|
||||
|
||||
meta = with lib; {
|
||||
homepage = "https://github.com/phisch/giph";
|
||||
description = "Simple gif recorder";
|
||||
license = licenses.mit;
|
||||
maintainers = [ maintainers.lom ];
|
||||
platforms = platforms.linux;
|
||||
};
|
||||
}
|
||||
33
pkgs/applications/video/gnome-mplayer/default.nix
Normal file
33
pkgs/applications/video/gnome-mplayer/default.nix
Normal file
|
|
@ -0,0 +1,33 @@
|
|||
{lib, stdenv, substituteAll, fetchFromGitHub, pkg-config, 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 = [ pkg-config 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 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;
|
||||
};
|
||||
}
|
||||
87
pkgs/applications/video/gnome-mplayer/fix-paths.patch
Normal file
87
pkgs/applications/video/gnome-mplayer/fix-paths.patch
Normal file
|
|
@ -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);
|
||||
}
|
||||
36
pkgs/applications/video/gnomecast/default.nix
Normal file
36
pkgs/applications/video/gnomecast/default.nix
Normal file
|
|
@ -0,0 +1,36 @@
|
|||
{ stdenv, lib, python3Packages, gtk3, gobject-introspection, ffmpeg, wrapGAppsHook }:
|
||||
|
||||
with python3Packages;
|
||||
buildPythonApplication rec {
|
||||
pname = "gnomecast";
|
||||
version = "1.9.11";
|
||||
|
||||
src = fetchPypi {
|
||||
inherit pname version;
|
||||
sha256 = "4d8cd7a71f352137252c5a9ee13475bd67fb99594560ecff1efb0f718d8bbaac";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [ wrapGAppsHook ];
|
||||
propagatedBuildInputs = [
|
||||
PyChromecast bottle pycaption paste html5lib pygobject3 dbus-python
|
||||
gtk3 gobject-introspection
|
||||
];
|
||||
|
||||
# NOTE: gdk-pixbuf setup hook does not run with strictDeps
|
||||
# https://nixos.org/manual/nixpkgs/stable/#ssec-gnome-hooks-gobject-introspection
|
||||
strictDeps = false;
|
||||
|
||||
preFixup = ''
|
||||
gappsWrapperArgs+=(--prefix PATH : ${lib.makeBinPath [ ffmpeg ]})
|
||||
'';
|
||||
|
||||
# no tests
|
||||
doCheck = false;
|
||||
|
||||
meta = with lib; {
|
||||
description = "A native Linux GUI for Chromecasting local files";
|
||||
homepage = "https://github.com/keredson/gnomecast";
|
||||
license = with licenses; [ gpl3 ];
|
||||
broken = stdenv.isDarwin;
|
||||
};
|
||||
}
|
||||
24
pkgs/applications/video/go-chromecast/default.nix
Normal file
24
pkgs/applications/video/go-chromecast/default.nix
Normal file
|
|
@ -0,0 +1,24 @@
|
|||
{ lib, buildGoModule, fetchFromGitHub }:
|
||||
|
||||
buildGoModule rec {
|
||||
pname = "go-chromecast";
|
||||
version = "0.2.12";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "vishen";
|
||||
repo = pname;
|
||||
rev = "v${version}";
|
||||
sha256 = "sha256-h8qWwMaEhXnj6ZSrKAXBVbrMR0je41EoOtFeN9XlCuk=";
|
||||
};
|
||||
|
||||
vendorSha256 = "sha256-PpMLHuJR6irp+QHhzguwGtBy30HM7DR0tNGiwB07M5E=";
|
||||
|
||||
ldflags = [ "-s" "-w" "-X main.version=${version}" "-X main.commit=${src.rev}" "-X main.date=unknown" ];
|
||||
|
||||
meta = with lib; {
|
||||
homepage = "https://github.com/vishen/go-chromecast";
|
||||
description = "CLI for Google Chromecast, Home devices and Cast Groups";
|
||||
license = licenses.asl20;
|
||||
maintainers = with maintainers; [ marsam ];
|
||||
};
|
||||
}
|
||||
45
pkgs/applications/video/gpac/default.nix
Normal file
45
pkgs/applications/video/gpac/default.nix
Normal file
|
|
@ -0,0 +1,45 @@
|
|||
{ lib, stdenv, fetchFromGitHub, pkg-config, zlib }:
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
version = "2.0.0";
|
||||
pname = "gpac";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "gpac";
|
||||
repo = "gpac";
|
||||
rev = "v${version}";
|
||||
sha256 = "sha256-MIX32lSqf/lrz9240h4wMIQp/heUmwvDJz8WN08yf6c=";
|
||||
};
|
||||
|
||||
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 = [ pkg-config ];
|
||||
|
||||
buildInputs = [ zlib ];
|
||||
|
||||
enableParallelBuilding = true;
|
||||
|
||||
meta = with 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;
|
||||
};
|
||||
}
|
||||
50
pkgs/applications/video/gpu-screen-recorder/default.nix
Normal file
50
pkgs/applications/video/gpu-screen-recorder/default.nix
Normal file
|
|
@ -0,0 +1,50 @@
|
|||
{ stdenv, lib, fetchgit, makeWrapper, pkg-config, cudatoolkit, glew, libX11
|
||||
, libXcomposite, glfw, libpulseaudio, ffmpeg }:
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "gpu-screen-recorder";
|
||||
version = "1.0.0";
|
||||
|
||||
src = fetchgit {
|
||||
url = "https://repo.dec05eba.com/gpu-screen-recorder";
|
||||
rev = "36fd4516db06bcb192e49055319d1778bbed0322";
|
||||
sha256 = "sha256-hYEHM4FOYcPmQ5Yxh520PKy8HiD+G0xv9hrn8SmA07w=";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [
|
||||
pkg-config
|
||||
makeWrapper
|
||||
];
|
||||
|
||||
buildInputs = [
|
||||
glew
|
||||
libX11
|
||||
libXcomposite
|
||||
glfw
|
||||
libpulseaudio
|
||||
ffmpeg
|
||||
];
|
||||
|
||||
postPatch = ''
|
||||
substituteInPlace ./build.sh \
|
||||
--replace '/opt/cuda/targets/x86_64-linux/include' '${cudatoolkit}/targets/x86_64-linux/include' \
|
||||
--replace '/usr/lib64/libcuda.so' '${cudatoolkit}/targets/x86_64-linux/lib/stubs/libcuda.so'
|
||||
'';
|
||||
|
||||
buildPhase = ''
|
||||
./build.sh
|
||||
'';
|
||||
|
||||
installPhase = ''
|
||||
install -Dt $out/bin/ gpu-screen-recorder
|
||||
wrapProgram $out/bin/gpu-screen-recorder --prefix LD_LIBRARY_PATH : /run/opengl-driver/lib
|
||||
'';
|
||||
|
||||
meta = with lib; {
|
||||
description = "A screen recorder that has minimal impact on system performance by recording a window using the GPU only";
|
||||
homepage = "https://git.dec05eba.com/gpu-screen-recorder/about/";
|
||||
license = licenses.gpl3Only;
|
||||
maintainers = with maintainers; [ babbaj ];
|
||||
platforms = [ "x86_64-linux" ];
|
||||
};
|
||||
}
|
||||
|
|
@ -0,0 +1,38 @@
|
|||
diff --git a/build.sh b/build.sh
|
||||
index 05603db..8c38b31 100755
|
||||
--- a/build.sh
|
||||
+++ b/build.sh
|
||||
@@ -2,5 +2,5 @@
|
||||
|
||||
dependencies="gtk+-3.0 x11 xrandr libpulse"
|
||||
includes="$(pkg-config --cflags $dependencies)"
|
||||
-libs="$(pkg-config --libs $dependencies)"
|
||||
+libs="$(pkg-config --libs $dependencies) -ldl"
|
||||
g++ -o gpu-screen-recorder-gtk -O2 src/main.cpp -s $includes $libs
|
||||
diff --git a/src/main.cpp b/src/main.cpp
|
||||
index ae2078f..9dcdce1 100644
|
||||
--- a/src/main.cpp
|
||||
+++ b/src/main.cpp
|
||||
@@ -15,6 +15,7 @@
|
||||
#include <pwd.h>
|
||||
#include <libgen.h>
|
||||
#include <functional>
|
||||
+#include <dlfcn.h>
|
||||
|
||||
typedef struct {
|
||||
Display *display;
|
||||
@@ -830,7 +831,13 @@ static void audio_input_change_callback(GtkComboBox *widget, gpointer userdata)
|
||||
}
|
||||
|
||||
static bool is_nv_fbc_installed() {
|
||||
- return access("/usr/lib/libnvidia-fbc.so.1", F_OK) == 0 || access("/usr/local/lib/libnvidia-fbc.so.1", F_OK) == 0;
|
||||
+ auto handle = dlopen("libnvidia-fbc.so.1", RTLD_LAZY);
|
||||
+ if (handle) {
|
||||
+ dlclose(handle);
|
||||
+ return true;
|
||||
+ } else {
|
||||
+ return false;
|
||||
+ }
|
||||
}
|
||||
|
||||
static GtkWidget* create_common_settings_page(GtkStack *stack, GtkApplication *app) {
|
||||
|
|
@ -0,0 +1,46 @@
|
|||
{ stdenv, lib, fetchgit, pkg-config, makeWrapper, gtk3, libX11, libXrandr
|
||||
, libpulseaudio, gpu-screen-recorder }:
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "gpu-screen-recorder-gtk";
|
||||
version = "0.1.0";
|
||||
|
||||
src = fetchgit {
|
||||
url = "https://repo.dec05eba.com/gpu-screen-recorder-gtk";
|
||||
rev = "4c317abd0531f8e155fbbbcd32850bbeebbf2ead";
|
||||
sha256 = "sha256-5W6qmUMP31ndRDxMHuQ/XnZysPQgaie0vVlMTzfODU4=";
|
||||
};
|
||||
|
||||
patches = [ ./fix-nvfbc-check.patch ];
|
||||
|
||||
nativeBuildInputs = [
|
||||
pkg-config
|
||||
makeWrapper
|
||||
];
|
||||
|
||||
buildInputs = [
|
||||
gtk3
|
||||
libX11
|
||||
libXrandr
|
||||
libpulseaudio
|
||||
];
|
||||
|
||||
buildPhase = ''
|
||||
./build.sh
|
||||
'';
|
||||
|
||||
installPhase = ''
|
||||
install -Dt $out/bin/ gpu-screen-recorder-gtk
|
||||
install -Dt $out/share/applications/ gpu-screen-recorder-gtk.desktop
|
||||
|
||||
wrapProgram $out/bin/gpu-screen-recorder-gtk --prefix PATH : ${lib.makeBinPath [ gpu-screen-recorder ]}
|
||||
'';
|
||||
|
||||
meta = with lib; {
|
||||
description = "GTK frontend for gpu-screen-recorder.";
|
||||
homepage = "https://git.dec05eba.com/gpu-screen-recorder-gtk/about/";
|
||||
license = licenses.gpl3Only;
|
||||
maintainers = with maintainers; [ babbaj ];
|
||||
platforms = [ "x86_64-linux" ];
|
||||
};
|
||||
}
|
||||
253
pkgs/applications/video/handbrake/default.nix
Normal file
253
pkgs/applications/video/handbrake/default.nix
Normal file
|
|
@ -0,0 +1,253 @@
|
|||
# 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
|
||||
# For tests
|
||||
, testers
|
||||
, runCommand
|
||||
, fetchurl
|
||||
# Main build tools
|
||||
, pkg-config
|
||||
, autoconf
|
||||
, automake
|
||||
, libtool
|
||||
, m4
|
||||
, xz
|
||||
, python3
|
||||
, numactl
|
||||
, writeText
|
||||
# Processing, video codecs, containers
|
||||
, ffmpeg-full
|
||||
, nv-codec-headers
|
||||
, libogg
|
||||
, x264
|
||||
, x265
|
||||
, libvpx
|
||||
, libtheora
|
||||
, dav1d
|
||||
, zimg
|
||||
# Codecs, audio
|
||||
, libopus
|
||||
, lame
|
||||
, libvorbis
|
||||
, a52dec
|
||||
, speex
|
||||
, libsamplerate
|
||||
# Text processing
|
||||
, libiconv
|
||||
, fribidi
|
||||
, fontconfig
|
||||
, freetype
|
||||
, libass
|
||||
, jansson
|
||||
, libxml2
|
||||
, harfbuzz
|
||||
, libjpeg_turbo
|
||||
# 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
|
||||
, intltool
|
||||
, glib
|
||||
, gtk3
|
||||
, libappindicator-gtk3
|
||||
, libnotify
|
||||
, gst_all_1
|
||||
, dbus-glib
|
||||
, udev
|
||||
, libgudev
|
||||
, hicolor-icon-theme
|
||||
# FDK
|
||||
, useFdk ? false
|
||||
, fdk_aac
|
||||
}:
|
||||
|
||||
let
|
||||
version = "1.5.1";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "HandBrake";
|
||||
repo = "HandBrake";
|
||||
rev = version;
|
||||
sha256 = "1kk11zl1mk37d4cvbc75gfndmma7vy3vkp4gmkyl92kiz6zadhyy";
|
||||
};
|
||||
|
||||
versionFile = writeText "version.txt" ''
|
||||
BRANCH=${versions.majorMinor version}.x
|
||||
DATE=1970-01-01 00:00:01 +0000
|
||||
HASH=${src.rev}
|
||||
REV=${src.rev}
|
||||
SHORTHASH=${src.rev}
|
||||
TAG=${version}
|
||||
URL=${src.meta.homepage}
|
||||
'';
|
||||
|
||||
inherit (lib) optional optionals optionalString versions;
|
||||
|
||||
in
|
||||
let self = stdenv.mkDerivation rec {
|
||||
pname = "handbrake";
|
||||
inherit version src;
|
||||
|
||||
postPatch = ''
|
||||
install -Dm444 ${versionFile} ${versionFile.name}
|
||||
|
||||
patchShebangs scripts
|
||||
|
||||
substituteInPlace libhb/hb.c \
|
||||
--replace 'return hb_version;' 'return "${version}";'
|
||||
|
||||
# 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
|
||||
'' + 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
|
||||
'' + 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 = [
|
||||
autoconf
|
||||
automake
|
||||
libtool
|
||||
m4
|
||||
pkg-config
|
||||
python3
|
||||
]
|
||||
++ optionals useGtk [ intltool wrapGAppsHook ];
|
||||
|
||||
buildInputs = [
|
||||
a52dec
|
||||
dav1d
|
||||
ffmpeg-full
|
||||
fontconfig
|
||||
freetype
|
||||
fribidi
|
||||
harfbuzz
|
||||
jansson
|
||||
lame
|
||||
libass
|
||||
libbluray
|
||||
libdvdcss
|
||||
libdvdnav
|
||||
libdvdread
|
||||
libiconv
|
||||
libjpeg_turbo
|
||||
libogg
|
||||
libopus
|
||||
libsamplerate
|
||||
libtheora
|
||||
libvorbis
|
||||
libvpx
|
||||
libxml2
|
||||
speex
|
||||
x264
|
||||
x265
|
||||
xz
|
||||
zimg
|
||||
]
|
||||
++ optional (!stdenv.isDarwin) numactl
|
||||
++ optionals useGtk [
|
||||
dbus-glib
|
||||
glib
|
||||
gst_all_1.gst-plugins-base
|
||||
gst_all_1.gstreamer
|
||||
gtk3
|
||||
hicolor-icon-theme
|
||||
libappindicator-gtk3
|
||||
libgudev
|
||||
libnotify
|
||||
udev
|
||||
]
|
||||
++ optional useFdk fdk_aac
|
||||
++ 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"
|
||||
++ optional stdenv.isLinux nv-codec-headers;
|
||||
|
||||
configureFlags = [
|
||||
"--disable-df-fetch"
|
||||
"--disable-df-verify"
|
||||
"--disable-gtk-update-checks"
|
||||
]
|
||||
++ optional (!useGtk) "--disable-gtk"
|
||||
++ optional useFdk "--enable-fdk-aac"
|
||||
++ optional stdenv.isDarwin "--disable-xcode"
|
||||
++ optional (stdenv.isx86_32 || stdenv.isx86_64) "--harden";
|
||||
|
||||
# NOTE: 2018-12-27: Check NixOS HandBrake test if changing
|
||||
NIX_LDFLAGS = [ "-lx265" ];
|
||||
|
||||
makeFlags = [ "--directory=build" ];
|
||||
|
||||
passthru.tests = {
|
||||
basic-conversion =
|
||||
let
|
||||
# Big Buck Bunny example, licensed under CC Attribution 3.0.
|
||||
testMkv = fetchurl {
|
||||
url = "https://github.com/Matroska-Org/matroska-test-files/blob/cf0792be144ac470c4b8052cfe19bb691993e3a2/test_files/test1.mkv?raw=true";
|
||||
sha256 = "1hfxbbgxwfkzv85pvpvx55a72qsd0hxjbm9hkl5r3590zw4s75h9";
|
||||
};
|
||||
in
|
||||
runCommand "${pname}-${version}-basic-conversion" { nativeBuildInputs = [ self ]; } ''
|
||||
mkdir -p $out
|
||||
cd $out
|
||||
HandBrakeCLI -i ${testMkv} -o test.mp4 -e x264 -q 20 -B 160
|
||||
test -e test.mp4
|
||||
HandBrakeCLI -i ${testMkv} -o test.mkv -e x264 -q 20 -B 160
|
||||
test -e test.mkv
|
||||
'';
|
||||
version = testers.testVersion { package = self; command = "HandBrakeCLI --version"; };
|
||||
};
|
||||
|
||||
meta = with lib; {
|
||||
homepage = "https://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.gpl2Only;
|
||||
maintainers = with maintainers; [ Anton-Latukha wmertens ];
|
||||
platforms = with platforms; unix;
|
||||
broken = stdenv.isDarwin && lib.versionOlder stdenv.hostPlatform.darwinMinVersion "10.13";
|
||||
};
|
||||
};
|
||||
in self
|
||||
74
pkgs/applications/video/haruna/default.nix
Normal file
74
pkgs/applications/video/haruna/default.nix
Normal file
|
|
@ -0,0 +1,74 @@
|
|||
{ lib
|
||||
, fetchFromGitLab
|
||||
, mkDerivation
|
||||
, breeze-icons
|
||||
, breeze-qt5
|
||||
, cmake
|
||||
, extra-cmake-modules
|
||||
, ffmpeg-full
|
||||
, kcodecs
|
||||
, kconfig
|
||||
, kcoreaddons
|
||||
, kfilemetadata
|
||||
, ki18n
|
||||
, kiconthemes
|
||||
, kio
|
||||
, kio-extras
|
||||
, kirigami2
|
||||
, kxmlgui
|
||||
, mpv
|
||||
, pkg-config
|
||||
, qqc2-desktop-style
|
||||
, qtbase
|
||||
, qtquickcontrols2
|
||||
, qtwayland
|
||||
, youtube-dl
|
||||
}:
|
||||
|
||||
mkDerivation rec {
|
||||
pname = "haruna";
|
||||
version = "0.7.3";
|
||||
|
||||
src = fetchFromGitLab {
|
||||
owner = "multimedia";
|
||||
repo = "haruna";
|
||||
rev = "v${version}";
|
||||
sha256 = "sha256-pFrmTaRvsqxJw34VULzfjx2k56kJgkB96nJtai2D1wY=";
|
||||
domain = "invent.kde.org";
|
||||
};
|
||||
|
||||
buildInputs = [
|
||||
breeze-icons
|
||||
breeze-qt5
|
||||
ffmpeg-full
|
||||
kcodecs
|
||||
kconfig
|
||||
kcoreaddons
|
||||
kfilemetadata
|
||||
ki18n
|
||||
kiconthemes
|
||||
kio
|
||||
kio-extras
|
||||
kirigami2
|
||||
kxmlgui
|
||||
mpv
|
||||
qqc2-desktop-style
|
||||
qtbase
|
||||
qtquickcontrols2
|
||||
qtwayland
|
||||
youtube-dl
|
||||
];
|
||||
|
||||
nativeBuildInputs = [
|
||||
cmake
|
||||
extra-cmake-modules
|
||||
pkg-config
|
||||
];
|
||||
|
||||
meta = with lib; {
|
||||
homepage = "https://github.com/g-fb/haruna";
|
||||
description = "Open source video player built with Qt/QML and libmpv";
|
||||
license = with licenses; [ bsd3 cc-by-40 gpl3Plus wtfpl ];
|
||||
maintainers = with maintainers; [ jojosch ];
|
||||
};
|
||||
}
|
||||
31
pkgs/applications/video/hdhomerun-config-gui/default.nix
Normal file
31
pkgs/applications/video/hdhomerun-config-gui/default.nix
Normal file
|
|
@ -0,0 +1,31 @@
|
|||
{ lib, stdenv, fetchurl, libhdhomerun, pkg-config, gtk2 }:
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "hdhomerun-config-gui";
|
||||
version = "20210224";
|
||||
|
||||
src = fetchurl {
|
||||
url = "https://download.silicondust.com/hdhomerun/hdhomerun_config_gui_${version}.tgz";
|
||||
sha256 = "sha256-vzrSk742Ca2I8Uk0uGo44SxpEoVY1QBn62Ahwz8E7p8=";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [ pkg-config ];
|
||||
buildInputs = [ gtk2 libhdhomerun ];
|
||||
|
||||
configureFlags = [ "CPPFLAGS=-I${libhdhomerun}/include/hdhomerun" ];
|
||||
makeFlags = [ "SUBDIRS=src" ];
|
||||
|
||||
installPhase = ''
|
||||
runHook preInstall
|
||||
install -vDm 755 src/hdhomerun_config_gui $out/bin/hdhomerun_config_gui
|
||||
runHook postInstall
|
||||
'';
|
||||
|
||||
meta = with 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 ];
|
||||
};
|
||||
}
|
||||
51
pkgs/applications/video/hyperion-ng/default.nix
Normal file
51
pkgs/applications/video/hyperion-ng/default.nix
Normal file
|
|
@ -0,0 +1,51 @@
|
|||
{ stdenv, avahi-compat, cmake, fetchFromGitHub, flatbuffers, hidapi, lib, libcec
|
||||
, libusb1, libX11, libxcb, libXrandr, mbedtls, mkDerivation, protobuf, python3
|
||||
, qtbase, qtserialport, qtsvg, qtx11extras, wrapQtAppsHook }:
|
||||
|
||||
mkDerivation rec {
|
||||
pname = "hyperion.ng";
|
||||
version = "2.0.12";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "hyperion-project";
|
||||
repo = pname;
|
||||
rev = version;
|
||||
sha256 = "sha256-J31QaWwGNhIpnZmWN9lZEI6fC0VheY5X8fGchQqtAlQ=";
|
||||
};
|
||||
|
||||
buildInputs = [
|
||||
avahi-compat
|
||||
flatbuffers
|
||||
hidapi
|
||||
libcec
|
||||
libusb1
|
||||
libX11
|
||||
libxcb
|
||||
libXrandr
|
||||
mbedtls
|
||||
protobuf
|
||||
python3
|
||||
qtbase
|
||||
qtserialport
|
||||
qtsvg
|
||||
qtx11extras
|
||||
];
|
||||
|
||||
nativeBuildInputs = [ cmake wrapQtAppsHook ];
|
||||
|
||||
cmakeFlags = [
|
||||
"-DCMAKE_BUILD_TYPE=Release"
|
||||
"-DUSE_SYSTEM_MBEDTLS_LIBS=ON"
|
||||
"-DUSE_SYSTEM_FLATBUFFERS_LIBS=ON"
|
||||
"-DUSE_SYSTEM_PROTO_LIBS=ON"
|
||||
];
|
||||
|
||||
meta = with lib; {
|
||||
broken = (stdenv.isLinux && stdenv.isAarch64);
|
||||
description = "Open Source Ambilight solution";
|
||||
homepage = "https://github.com/hyperion-project/hyperion.ng";
|
||||
license = licenses.mit;
|
||||
maintainers = with maintainers; [ algram ];
|
||||
platforms = platforms.unix;
|
||||
};
|
||||
}
|
||||
86
pkgs/applications/video/hypnotix/default.nix
Normal file
86
pkgs/applications/video/hypnotix/default.nix
Normal file
|
|
@ -0,0 +1,86 @@
|
|||
{ lib
|
||||
, stdenv
|
||||
, fetchFromGitHub
|
||||
, substituteAll
|
||||
, cinnamon
|
||||
, gettext
|
||||
, gobject-introspection
|
||||
, mpv
|
||||
, python3
|
||||
, wrapGAppsHook
|
||||
}:
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "hypnotix";
|
||||
version = "2.6";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "linuxmint";
|
||||
repo = "hypnotix";
|
||||
rev = version;
|
||||
hash = "sha256-9HWr8zjUuhj/GZdrt1WwpwYNLEl34S9IJ7ikGZBSw3s=";
|
||||
};
|
||||
|
||||
patches = [
|
||||
(substituteAll {
|
||||
src = ./libmpv-path.patch;
|
||||
libmpv = "${lib.getLib mpv}/lib/libmpv${stdenv.hostPlatform.extensions.sharedLibrary}";
|
||||
})
|
||||
];
|
||||
|
||||
postPatch = ''
|
||||
substituteInPlace usr/lib/hypnotix/hypnotix.py \
|
||||
--replace __DEB_VERSION__ ${version} \
|
||||
--replace /usr/share/hypnotix $out/share/hypnotix
|
||||
'';
|
||||
|
||||
nativeBuildInputs = [
|
||||
gettext
|
||||
gobject-introspection
|
||||
python3.pkgs.wrapPython
|
||||
wrapGAppsHook
|
||||
];
|
||||
|
||||
dontWrapGApps = true;
|
||||
|
||||
buildInputs = [
|
||||
cinnamon.xapps
|
||||
];
|
||||
|
||||
pythonPath = with python3.pkgs; [
|
||||
imdbpy
|
||||
pygobject3
|
||||
requests
|
||||
setproctitle
|
||||
unidecode
|
||||
xapp
|
||||
];
|
||||
|
||||
installPhase = ''
|
||||
runHook preInstall
|
||||
|
||||
mkdir -p $out
|
||||
cp -r usr/lib $out
|
||||
cp -r usr/share $out
|
||||
|
||||
glib-compile-schemas $out/share/glib-2.0/schemas
|
||||
|
||||
runHook postInstall
|
||||
'';
|
||||
|
||||
preFixup = ''
|
||||
buildPythonPath "$out $pythonPath"
|
||||
makeWrapper ${python3.interpreter} $out/bin/hypnotix \
|
||||
--add-flags $out/lib/hypnotix/hypnotix.py \
|
||||
--prefix PYTHONPATH : "$program_PYTHONPATH" \
|
||||
''${gappsWrapperArgs[@]}
|
||||
'';
|
||||
|
||||
meta = {
|
||||
description = "IPTV streaming application";
|
||||
homepage = "https://github.com/linuxmint/hypnotix";
|
||||
license = lib.licenses.gpl3Plus;
|
||||
maintainers = with lib.maintainers; [ dotlambda ];
|
||||
platforms = lib.platforms.linux;
|
||||
};
|
||||
}
|
||||
18
pkgs/applications/video/hypnotix/libmpv-path.patch
Normal file
18
pkgs/applications/video/hypnotix/libmpv-path.patch
Normal file
|
|
@ -0,0 +1,18 @@
|
|||
diff --git a/usr/lib/hypnotix/mpv.py b/usr/lib/hypnotix/mpv.py
|
||||
index f42a3be..f1fc40b 100644
|
||||
--- a/usr/lib/hypnotix/mpv.py
|
||||
+++ b/usr/lib/hypnotix/mpv.py
|
||||
@@ -44,12 +44,7 @@ else:
|
||||
# still better than segfaulting, we are setting LC_NUMERIC to "C".
|
||||
locale.setlocale(locale.LC_NUMERIC, 'C')
|
||||
|
||||
- sofile = ctypes.util.find_library('mpv')
|
||||
- if sofile is None:
|
||||
- raise OSError("Cannot find libmpv in the usual places. Depending on your distro, you may try installing an "
|
||||
- "mpv-devel or mpv-libs package. If you have libmpv around but this script can't find it, consult "
|
||||
- "the documentation for ctypes.util.find_library which this script uses to look up the library "
|
||||
- "filename.")
|
||||
+ sofile = '@libmpv@'
|
||||
backend = CDLL(sofile)
|
||||
fs_enc = sys.getfilesystemencoding()
|
||||
|
||||
32
pkgs/applications/video/iina/default.nix
Normal file
32
pkgs/applications/video/iina/default.nix
Normal file
|
|
@ -0,0 +1,32 @@
|
|||
{ lib
|
||||
, fetchurl
|
||||
, stdenv
|
||||
, undmg
|
||||
}:
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "iina";
|
||||
version = "1.2.0";
|
||||
|
||||
src = fetchurl {
|
||||
url = "https://github.com/iina/iina/releases/download/v${version}/IINA.v${version}.dmg";
|
||||
sha256 = "sha256-kbh+gAVfCXoct6jJGXnetTAzFfIGdVLL5zh/SL/EJzY=";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [ undmg ];
|
||||
|
||||
sourceRoot = "IINA.app";
|
||||
|
||||
installPhase = ''
|
||||
mkdir -p "$out/Applications/IINA.app"
|
||||
cp -R . "$out/Applications/IINA.app"
|
||||
'';
|
||||
|
||||
meta = with lib; {
|
||||
homepage = "https://iina.io/";
|
||||
description = "The modern media player for macOS";
|
||||
platforms = platforms.darwin;
|
||||
license = licenses.gpl3;
|
||||
maintainers = with maintainers; [ arkivm ];
|
||||
};
|
||||
}
|
||||
45
pkgs/applications/video/imagination/default.nix
Normal file
45
pkgs/applications/video/imagination/default.nix
Normal file
|
|
@ -0,0 +1,45 @@
|
|||
{ lib, stdenv, fetchurl, autoreconfHook, docbook_xsl, ffmpeg-full, glib, gtk3
|
||||
, intltool, libxslt, pkg-config, sox, wrapGAppsHook }:
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "imagination";
|
||||
version = "3.6";
|
||||
|
||||
src = fetchurl {
|
||||
url = "mirror://sourceforge/${pname}/${pname}-${version}.tar.gz";
|
||||
sha256 = "139dgb9vfr2q7bxvjskykdz526xxwrn0bh463ir8m2p7rx5a3pw5";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [
|
||||
autoreconfHook
|
||||
docbook_xsl
|
||||
intltool
|
||||
libxslt
|
||||
pkg-config
|
||||
wrapGAppsHook
|
||||
];
|
||||
|
||||
buildInputs = [ ffmpeg-full glib gtk3 sox ];
|
||||
|
||||
preBuild = ''
|
||||
substituteInPlace src/main-window.c \
|
||||
--replace 'gtk_icon_theme_load_icon(icon_theme,"image", 20, 0, NULL)' \
|
||||
'gtk_icon_theme_load_icon(icon_theme,"insert-image", 20, 0, NULL)' \
|
||||
--replace 'gtk_icon_theme_load_icon(icon_theme,"sound", 20, 0, NULL)' \
|
||||
'gtk_icon_theme_load_icon(icon_theme,"audio-x-generic", 20, 0, NULL)'
|
||||
'';
|
||||
|
||||
preFixup = ''
|
||||
gappsWrapperArgs+=(
|
||||
--prefix PATH : "${lib.makeBinPath [ ffmpeg-full sox ]}"
|
||||
)
|
||||
'';
|
||||
|
||||
meta = with lib; {
|
||||
description = "Lightweight and simple DVD slide show maker";
|
||||
homepage = "http://imagination.sourceforge.net";
|
||||
license = licenses.gpl3Only;
|
||||
maintainers = with maintainers; [ austinbutler ];
|
||||
platforms = platforms.linux;
|
||||
};
|
||||
}
|
||||
108
pkgs/applications/video/jellyfin-media-player/default.nix
Normal file
108
pkgs/applications/video/jellyfin-media-player/default.nix
Normal file
|
|
@ -0,0 +1,108 @@
|
|||
{ lib
|
||||
, fetchFromGitHub
|
||||
, fetchzip
|
||||
, mkDerivation
|
||||
, stdenv
|
||||
, Cocoa
|
||||
, CoreAudio
|
||||
, CoreFoundation
|
||||
, MediaPlayer
|
||||
, SDL2
|
||||
, cmake
|
||||
, libGL
|
||||
, libX11
|
||||
, libXrandr
|
||||
, libvdpau
|
||||
, mpv
|
||||
, ninja
|
||||
, pkg-config
|
||||
, python3
|
||||
, qtbase
|
||||
, qtwayland
|
||||
, qtwebchannel
|
||||
, qtwebengine
|
||||
, qtx11extras
|
||||
}:
|
||||
|
||||
mkDerivation rec {
|
||||
pname = "jellyfin-media-player";
|
||||
version = "1.6.1";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "jellyfin";
|
||||
repo = "jellyfin-media-player";
|
||||
rev = "v${version}";
|
||||
sha256 = "sha256-iqwOv95JFxQ1j/9B+oBFAp7mD1/1g2EJYvvUKbrDQes=";
|
||||
};
|
||||
|
||||
jmpDist = fetchzip {
|
||||
url = "https://github.com/iwalton3/jellyfin-web-jmp/releases/download/jwc-10.7.3/dist.zip";
|
||||
sha256 = "sha256-P7WEYbVvpaVLwMgqC2e8QtMOaJclg0bX78J1fdGzcCU=";
|
||||
};
|
||||
|
||||
patches = [
|
||||
# the webclient-files are not copied in the regular build script. Copy them just like the linux build
|
||||
./fix-osx-resources.patch
|
||||
# disable update notifications since the end user can't simply download the release artifacts to update
|
||||
./disable-update-notifications.patch
|
||||
];
|
||||
|
||||
buildInputs = [
|
||||
SDL2
|
||||
libGL
|
||||
libX11
|
||||
libXrandr
|
||||
libvdpau
|
||||
mpv
|
||||
qtbase
|
||||
qtwebchannel
|
||||
qtwebengine
|
||||
qtx11extras
|
||||
] ++ lib.optionals stdenv.isLinux [
|
||||
qtwayland
|
||||
] ++ lib.optionals stdenv.isDarwin [
|
||||
Cocoa
|
||||
CoreAudio
|
||||
CoreFoundation
|
||||
MediaPlayer
|
||||
];
|
||||
|
||||
nativeBuildInputs = [
|
||||
cmake
|
||||
ninja
|
||||
pkg-config
|
||||
python3
|
||||
];
|
||||
|
||||
cmakeFlags = [
|
||||
"-DCMAKE_BUILD_TYPE=Release"
|
||||
"-DQTROOT=${qtbase}"
|
||||
"-GNinja"
|
||||
];
|
||||
|
||||
preBuild = ''
|
||||
# copy the webclient-files to the expected "dist" directory
|
||||
mkdir -p dist
|
||||
cp -a ${jmpDist}/* dist
|
||||
'';
|
||||
|
||||
postInstall = lib.optionalString stdenv.isDarwin ''
|
||||
mkdir -p $out/bin $out/Applications
|
||||
mv "$out/Jellyfin Media Player.app" $out/Applications
|
||||
|
||||
# move web-client resources
|
||||
mv $out/Resources/* "$out/Applications/Jellyfin Media Player.app/Contents/Resources/"
|
||||
rmdir $out/Resources
|
||||
|
||||
ln -s "$out/Applications/Jellyfin Media Player.app/Contents/MacOS/Jellyfin Media Player" $out/bin/jellyfinmediaplayer
|
||||
'';
|
||||
|
||||
meta = with lib; {
|
||||
homepage = "https://github.com/jellyfin/jellyfin-media-player";
|
||||
description = "Jellyfin Desktop Client based on Plex Media Player";
|
||||
license = with licenses; [ gpl2Only mit ];
|
||||
platforms = [ "x86_64-linux" "x86_64-darwin" ];
|
||||
maintainers = with maintainers; [ jojosch kranzes ];
|
||||
mainProgram = "jellyfinmediaplayer";
|
||||
};
|
||||
}
|
||||
|
|
@ -0,0 +1,13 @@
|
|||
diff --git a/resources/settings/settings_description.json b/resources/settings/settings_description.json
|
||||
index 20fff81..9979de5 100644
|
||||
--- a/resources/settings/settings_description.json
|
||||
+++ b/resources/settings/settings_description.json
|
||||
@@ -118,7 +118,7 @@
|
||||
},
|
||||
{
|
||||
"value": "checkForUpdates",
|
||||
- "default": true
|
||||
+ "default": false
|
||||
},
|
||||
{
|
||||
"value": "enableInputRepeat",
|
||||
|
|
@ -0,0 +1,15 @@
|
|||
diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
|
||||
index 780c0d3..d9c2341 100644
|
||||
--- a/src/CMakeLists.txt
|
||||
+++ b/src/CMakeLists.txt
|
||||
@@ -108,8 +108,8 @@ endif()
|
||||
set(RESOURCE_ROOT .)
|
||||
if(APPLE)
|
||||
set(RESOURCE_ROOT Resources)
|
||||
- add_resources(TARGET ${MAIN_TARGET} SOURCES ${CMAKE_CURRENT_BINARY_DIR}/../dist/ DEST ${RESOURCE_ROOT}/web-client/desktop)
|
||||
- add_resources(TARGET ${MAIN_TARGET} SOURCES ${CMAKE_SOURCE_DIR}/native/ DEST ${RESOURCE_ROOT}/web-client/extension)
|
||||
+ install(DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/../dist/ DESTINATION ${RESOURCE_ROOT}/web-client/desktop)
|
||||
+ install(DIRECTORY ${CMAKE_SOURCE_DIR}/native/ DESTINATION ${RESOURCE_ROOT}/web-client/extension)
|
||||
endif()
|
||||
|
||||
if(NOT APPLE)
|
||||
84
pkgs/applications/video/jellyfin-mpv-shim/default.nix
Normal file
84
pkgs/applications/video/jellyfin-mpv-shim/default.nix
Normal file
|
|
@ -0,0 +1,84 @@
|
|||
{ lib
|
||||
, buildPythonApplication
|
||||
, fetchPypi
|
||||
, jellyfin-apiclient-python
|
||||
, jinja2
|
||||
, mpv
|
||||
, pillow
|
||||
, pystray
|
||||
, python-mpv-jsonipc
|
||||
, pywebview
|
||||
, tkinter
|
||||
}:
|
||||
|
||||
buildPythonApplication rec {
|
||||
pname = "jellyfin-mpv-shim";
|
||||
version = "2.0.2";
|
||||
|
||||
src = fetchPypi {
|
||||
inherit pname version;
|
||||
sha256 = "yFFMsGbzMAKyXpD/vZelswYulTYe5WybjG5pD2RpLrk=";
|
||||
};
|
||||
|
||||
propagatedBuildInputs = [
|
||||
jellyfin-apiclient-python
|
||||
mpv
|
||||
pillow
|
||||
python-mpv-jsonipc
|
||||
|
||||
# gui dependencies
|
||||
pystray
|
||||
tkinter
|
||||
|
||||
# display_mirror dependencies
|
||||
jinja2
|
||||
pywebview
|
||||
];
|
||||
|
||||
# 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 = ''
|
||||
substituteInPlace jellyfin_mpv_shim/conf.py \
|
||||
--replace "check_updates: bool = True" "check_updates: bool = False" \
|
||||
--replace "notify_updates: bool = True" "notify_updates: bool = False"
|
||||
'';
|
||||
|
||||
# no tests
|
||||
doCheck = false;
|
||||
pythonImportsCheck = [ "jellyfin_mpv_shim" ];
|
||||
|
||||
meta = with lib; {
|
||||
homepage = "https://github.com/jellyfin/jellyfin-mpv-shim";
|
||||
description = "Allows casting of videos to MPV via the jellyfin mobile and web app";
|
||||
longDescription = ''
|
||||
Jellyfin MPV Shim is a client for the Jellyfin media server which plays media in the
|
||||
MPV media player. The application runs in the background and opens MPV only
|
||||
when media is cast to the player. The player supports most file formats, allowing you
|
||||
to prevent needless transcoding of your media files on the server. The player also has
|
||||
advanced features, such as bulk subtitle updates and launching commands on events.
|
||||
'';
|
||||
license = with licenses; [
|
||||
# jellyfin-mpv-shim
|
||||
gpl3Only
|
||||
mit
|
||||
|
||||
# shader-pack licenses (github:iwalton3/default-shader-pack)
|
||||
# KrigBilateral, SSimDownscaler, NNEDI3
|
||||
gpl3Plus
|
||||
# Anime4K, FSRCNNX
|
||||
mit
|
||||
# Static Grain
|
||||
unlicense
|
||||
];
|
||||
maintainers = with maintainers; [ jojosch ];
|
||||
};
|
||||
}
|
||||
41
pkgs/applications/video/jftui/default.nix
Normal file
41
pkgs/applications/video/jftui/default.nix
Normal file
|
|
@ -0,0 +1,41 @@
|
|||
{ lib, stdenv
|
||||
, fetchFromGitHub
|
||||
, pkg-config
|
||||
, curl
|
||||
, mpv
|
||||
, yajl
|
||||
}:
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "jftui";
|
||||
version = "0.5.1";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "Aanok";
|
||||
repo = pname;
|
||||
rev = "v${version}";
|
||||
sha256 = "sha256-/QVSywS0O+HZpwY9W3le3RK3OhCkmdLYMCGTyyBdsFw=";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [
|
||||
pkg-config
|
||||
];
|
||||
|
||||
buildInputs = [
|
||||
curl
|
||||
mpv
|
||||
yajl
|
||||
];
|
||||
|
||||
installPhase = ''
|
||||
install -Dm555 build/jftui $out/bin/jftui
|
||||
'';
|
||||
|
||||
meta = with lib; {
|
||||
description = "Jellyfin Terminal User Interface ";
|
||||
homepage = "https://github.com/Aanok/jftui";
|
||||
license = licenses.unlicense;
|
||||
maintainers = [ maintainers.nyanloutre ];
|
||||
platforms = platforms.linux;
|
||||
};
|
||||
}
|
||||
50
pkgs/applications/video/kaffeine/default.nix
Normal file
50
pkgs/applications/video/kaffeine/default.nix
Normal file
|
|
@ -0,0 +1,50 @@
|
|||
{ stdenv
|
||||
, lib
|
||||
, fetchFromGitLab
|
||||
, kio
|
||||
, cmake
|
||||
, extra-cmake-modules
|
||||
, libvlc
|
||||
, libX11
|
||||
, kidletime
|
||||
, kdelibs4support
|
||||
, libXScrnSaver
|
||||
, wrapQtAppsHook
|
||||
, qtx11extras
|
||||
}:
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "kaffeine";
|
||||
version = "2.0.18";
|
||||
|
||||
src = fetchFromGitLab {
|
||||
domain = "invent.kde.org";
|
||||
repo = pname;
|
||||
owner = "Multimedia";
|
||||
rev = "v${version}";
|
||||
hash = "sha256-FOaS9gkzkHglbsNBNMwjzbHCNQg3Mbf+9so/Vfbaquc=";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [
|
||||
cmake
|
||||
extra-cmake-modules
|
||||
wrapQtAppsHook
|
||||
];
|
||||
|
||||
buildInputs = [
|
||||
libvlc
|
||||
libX11
|
||||
kidletime
|
||||
qtx11extras
|
||||
kdelibs4support
|
||||
libXScrnSaver
|
||||
];
|
||||
|
||||
meta = with lib; {
|
||||
description = "KDE media player";
|
||||
homepage = "https://apps.kde.org/kaffeine/";
|
||||
license = licenses.gpl2;
|
||||
maintainers = [ maintainers.pasqui23 ];
|
||||
platforms = platforms.all;
|
||||
};
|
||||
}
|
||||
65
pkgs/applications/video/kazam/default.nix
Normal file
65
pkgs/applications/video/kazam/default.nix
Normal file
|
|
@ -0,0 +1,65 @@
|
|||
{ lib
|
||||
, fetchFromGitHub
|
||||
, substituteAll
|
||||
, python3Packages
|
||||
, gst_all_1
|
||||
, wrapGAppsHook
|
||||
, gobject-introspection
|
||||
, gtk3
|
||||
, libwnck
|
||||
, keybinder3
|
||||
, intltool
|
||||
, libcanberra-gtk3
|
||||
, libappindicator-gtk3
|
||||
, libpulseaudio
|
||||
, libgudev
|
||||
}:
|
||||
|
||||
python3Packages.buildPythonApplication rec {
|
||||
pname = "kazam";
|
||||
version = "unstable-2021-06-22";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "niknah";
|
||||
repo = "kazam";
|
||||
rev = "13f6ce124e5234348f56358b9134a87121f3438c";
|
||||
sha256 = "1jk6khwgdv3nmagdgp5ivz3156pl0ljhf7b6i4b52w1h5ywsg9ah";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [ gobject-introspection python3Packages.distutils_extra intltool wrapGAppsHook ];
|
||||
buildInputs = [
|
||||
gst_all_1.gstreamer
|
||||
gst_all_1.gst-plugins-base
|
||||
gst_all_1.gst-plugins-good
|
||||
gtk3
|
||||
libwnck
|
||||
keybinder3
|
||||
libappindicator-gtk3
|
||||
libgudev
|
||||
];
|
||||
|
||||
propagatedBuildInputs = with python3Packages; [ pygobject3 pyxdg pycairo dbus-python xlib ];
|
||||
|
||||
# workaround https://github.com/NixOS/nixpkgs/issues/56943
|
||||
strictDeps = false;
|
||||
|
||||
patches = [
|
||||
# Fix paths
|
||||
(substituteAll {
|
||||
src = ./fix-paths.patch;
|
||||
libcanberra = libcanberra-gtk3;
|
||||
inherit libpulseaudio;
|
||||
})
|
||||
];
|
||||
|
||||
# no tests
|
||||
doCheck = false;
|
||||
|
||||
meta = with lib; {
|
||||
description = "A screencasting program created with design in mind";
|
||||
homepage = "https://github.com/niknah/kazam";
|
||||
license = licenses.lgpl3;
|
||||
platforms = platforms.linux;
|
||||
maintainers = [ maintainers.domenkozar ];
|
||||
};
|
||||
}
|
||||
22
pkgs/applications/video/kazam/fix-paths.patch
Normal file
22
pkgs/applications/video/kazam/fix-paths.patch
Normal file
|
|
@ -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
|
||||
48
pkgs/applications/video/kmplayer/default.nix
Normal file
48
pkgs/applications/video/kmplayer/default.nix
Normal file
|
|
@ -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 ];
|
||||
};
|
||||
}
|
||||
|
|
@ -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();
|
||||
12
pkgs/applications/video/kmplayer/no-docs.patch
Normal file
12
pkgs/applications/video/kmplayer/no-docs.patch
Normal file
|
|
@ -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")
|
||||
|
|
@ -0,0 +1,88 @@
|
|||
From 620c3eb38f0dbea6e877e37e97508513e87a0732 Mon Sep 17 00:00:00 2001
|
||||
From: Jeremy Fleischman <jeremyfleischman@gmail.com>
|
||||
Date: Sun, 27 Mar 2022 00:44:52 -0700
|
||||
Subject: [PATCH] Add new KODI_WEBSERVER_EXTRA_WHITELIST cmake var to allow
|
||||
access to more directories
|
||||
|
||||
(This is a backport of
|
||||
https://github.com/xbmc/xbmc/commit/a6dedce7ba1f03bdd83b019941d1e369a06f7888
|
||||
to Kodi 19.4 Matrix)
|
||||
|
||||
This is useful for NixOS, which often ends up creating a `KODI_HOME`
|
||||
with symlinks to other files (including the chorus2 interface). Kodi's
|
||||
webserver cautiously refuses to follow these symlinks, and you end up
|
||||
getting 404s rather than the web page.
|
||||
|
||||
See https://forum.kodi.tv/showthread.php?tid=366338&pid=3079493 for a
|
||||
discussion of this on the Kodi forum.
|
||||
---
|
||||
CMakeLists.txt | 1 +
|
||||
xbmc/CompileInfo.cpp.in | 5 +++++
|
||||
xbmc/CompileInfo.h | 1 +
|
||||
xbmc/utils/FileUtils.cpp | 6 +++++-
|
||||
4 files changed, 12 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/CMakeLists.txt b/CMakeLists.txt
|
||||
index 2d5369798df23..d5ef6d9390ef0 100644
|
||||
--- a/CMakeLists.txt
|
||||
+++ b/CMakeLists.txt
|
||||
@@ -243,6 +243,7 @@ add_custom_command(OUTPUT ${CORE_BUILD_DIR}/xbmc/CompileInfo.cpp
|
||||
-DAPP_BUILD_DATE=${APP_BUILD_DATE}
|
||||
-DAPP_SHARED_LIBRARY_SUFFIX="${APP_SHARED_LIBRARY_SUFFIX}"
|
||||
-Dprefix=${CMAKE_BINARY_DIR}/${CORE_BUILD_DIR}
|
||||
+ -DKODI_WEBSERVER_EXTRA_WHITELIST="${KODI_WEBSERVER_EXTRA_WHITELIST}"
|
||||
-P ${CMAKE_SOURCE_DIR}/cmake/scripts/common/GenerateVersionedFiles.cmake
|
||||
DEPENDS ${CMAKE_SOURCE_DIR}/version.txt
|
||||
export-files
|
||||
diff --git a/xbmc/CompileInfo.cpp.in b/xbmc/CompileInfo.cpp.in
|
||||
index f81fe77902236..4f19203a89cde 100644
|
||||
--- a/xbmc/CompileInfo.cpp.in
|
||||
+++ b/xbmc/CompileInfo.cpp.in
|
||||
@@ -105,3 +105,8 @@ std::vector<std::string> CCompileInfo::GetAvailableWindowSystems()
|
||||
{
|
||||
return StringUtils::Split("@CORE_PLATFORM_NAME_LC@", ' ');
|
||||
}
|
||||
+
|
||||
+const std::vector<std::string> CCompileInfo::GetWebserverExtraWhitelist()
|
||||
+{
|
||||
+ return StringUtils::Split("@KODI_WEBSERVER_EXTRA_WHITELIST@", ',');
|
||||
+}
|
||||
diff --git a/xbmc/CompileInfo.h b/xbmc/CompileInfo.h
|
||||
index 553a0194ee77f..e2521324e6576 100644
|
||||
--- a/xbmc/CompileInfo.h
|
||||
+++ b/xbmc/CompileInfo.h
|
||||
@@ -32,4 +32,5 @@ class CCompileInfo
|
||||
static const char* GetVersionCode();
|
||||
static std::vector<std::string> GetAvailableWindowSystems();
|
||||
static std::vector<ADDON::RepoInfo> LoadOfficialRepoInfos();
|
||||
+ static const std::vector<std::string> GetWebserverExtraWhitelist();
|
||||
};
|
||||
diff --git a/xbmc/utils/FileUtils.cpp b/xbmc/utils/FileUtils.cpp
|
||||
index e51f3d631c256..fc717c9608098 100644
|
||||
--- a/xbmc/utils/FileUtils.cpp
|
||||
+++ b/xbmc/utils/FileUtils.cpp
|
||||
@@ -6,6 +6,7 @@
|
||||
* See LICENSES/README.md for more information.
|
||||
*/
|
||||
|
||||
+#include "CompileInfo.h"
|
||||
#include "FileUtils.h"
|
||||
#include "ServiceBroker.h"
|
||||
#include "guilib/GUIKeyboardFactory.h"
|
||||
@@ -261,12 +262,15 @@ bool CFileUtils::CheckFileAccessAllowed(const std::string &filePath)
|
||||
"/.ssh/",
|
||||
};
|
||||
// ALLOW kodi paths
|
||||
- const std::vector<std::string> whitelist = {
|
||||
+ std::vector<std::string> whitelist = {
|
||||
CSpecialProtocol::TranslatePath("special://home"),
|
||||
CSpecialProtocol::TranslatePath("special://xbmc"),
|
||||
CSpecialProtocol::TranslatePath("special://musicartistsinfo")
|
||||
};
|
||||
|
||||
+ auto kodiExtraWhitelist = CCompileInfo::GetWebserverExtraWhitelist();
|
||||
+ whitelist.insert(whitelist.end(), kodiExtraWhitelist.begin(), kodiExtraWhitelist.end());
|
||||
+
|
||||
// image urls come in the form of image://... sometimes with a / appended at the end
|
||||
// and can be embedded in a music or video file image://music@...
|
||||
// strip this off to get the real file path
|
||||
26
pkgs/applications/video/kodi/addons/a4ksubtitles/default.nix
Normal file
26
pkgs/applications/video/kodi/addons/a4ksubtitles/default.nix
Normal file
|
|
@ -0,0 +1,26 @@
|
|||
{ lib, buildKodiAddon, fetchFromGitHub, requests, vfs-libarchive }:
|
||||
|
||||
buildKodiAddon rec {
|
||||
pname = "a4ksubtitles";
|
||||
namespace = "service.subtitles.a4ksubtitles";
|
||||
version = "2.8.0";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "a4k-openproject";
|
||||
repo = "a4kSubtitles";
|
||||
rev = "${namespace}/${namespace}-${version}";
|
||||
sha256 = "0fg5mcvxdc3hqybp1spy7d1nnqirwhcvrblbwksikym9m3qgw2m5";
|
||||
};
|
||||
|
||||
propagatedBuildInputs = [
|
||||
requests
|
||||
vfs-libarchive
|
||||
];
|
||||
|
||||
meta = with lib; {
|
||||
homepage = "https://a4k-openproject.github.io/a4kSubtitles/";
|
||||
description = "Multi-Source Subtitles Addon";
|
||||
license = licenses.mit;
|
||||
maintainers = teams.kodi.members;
|
||||
};
|
||||
}
|
||||
|
|
@ -0,0 +1,23 @@
|
|||
{ writeShellScript
|
||||
, nix
|
||||
, curl
|
||||
, gzip
|
||||
, xmlstarlet
|
||||
, common-updater-scripts
|
||||
}:
|
||||
|
||||
{ attrPath }:
|
||||
|
||||
let
|
||||
url = "http://mirrors.kodi.tv/addons/matrix/addons.xml.gz";
|
||||
updateScript = writeShellScript "update.sh" ''
|
||||
set -ex
|
||||
|
||||
attrPath=$1
|
||||
namespace=$(${nix}/bin/nix-instantiate $systemArg --eval -E "with import ./. {}; $attrPath.namespace" | tr -d '"')
|
||||
version=$(${curl}/bin/curl -s -L ${url} | ${gzip}/bin/gunzip -c | ${xmlstarlet}/bin/xml select -T -t -m "//addons/addon[@id='$namespace']" -v @version)
|
||||
|
||||
${common-updater-scripts}/bin/update-source-version "$attrPath" "$version"
|
||||
'';
|
||||
in
|
||||
[ updateScript attrPath ]
|
||||
28
pkgs/applications/video/kodi/addons/archive_tool/default.nix
Normal file
28
pkgs/applications/video/kodi/addons/archive_tool/default.nix
Normal file
|
|
@ -0,0 +1,28 @@
|
|||
{ lib, buildKodiAddon, fetchFromGitHub, vfs-libarchive }:
|
||||
buildKodiAddon rec {
|
||||
pname = "archive_tool";
|
||||
namespace = "script.module.archive_tool";
|
||||
version = "2.0.3";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "zach-morris";
|
||||
repo = "script.module.archive_tool";
|
||||
rev = version;
|
||||
sha256 = "0hbkyk59xxfjv6vzfjplahmqxi5564qjlwyq6k8ijy6jjcwnd3p7";
|
||||
};
|
||||
|
||||
propagatedBuildInputs = [
|
||||
vfs-libarchive
|
||||
];
|
||||
|
||||
passthru = {
|
||||
pythonPath = "lib";
|
||||
};
|
||||
|
||||
meta = with lib; {
|
||||
homepage = "https://github.com/zach-morris/script.module.archive_tool";
|
||||
description = "A set of common python functions to work with the Kodi archive virtual file system (vfs) binary addons";
|
||||
license = licenses.gpl3Plus;
|
||||
maintainers = teams.kodi.members;
|
||||
};
|
||||
}
|
||||
30
pkgs/applications/video/kodi/addons/arrow/default.nix
Normal file
30
pkgs/applications/video/kodi/addons/arrow/default.nix
Normal file
|
|
@ -0,0 +1,30 @@
|
|||
{ lib, buildKodiAddon, fetchzip, addonUpdateScript, dateutil, typing_extensions }:
|
||||
buildKodiAddon rec {
|
||||
pname = "arrow";
|
||||
namespace = "script.module.arrow";
|
||||
version = "1.0.3.1";
|
||||
|
||||
src = fetchzip {
|
||||
url = "https://mirrors.kodi.tv/addons/matrix/${namespace}/${namespace}-${version}.zip";
|
||||
sha256 = "0xa16sb2hls59l4gsg1xwb1qbkhcvbykq02l05n5rcm0alg80l3l";
|
||||
};
|
||||
|
||||
propagatedBuildInputs = [
|
||||
dateutil
|
||||
typing_extensions
|
||||
];
|
||||
|
||||
passthru = {
|
||||
pythonPath = "lib";
|
||||
updateScript = addonUpdateScript {
|
||||
attrPath = "kodi.packages.arrow";
|
||||
};
|
||||
};
|
||||
|
||||
meta = with lib; {
|
||||
homepage = "https://github.com/razzeee/script.module.arrow";
|
||||
description = "Better dates & times for Python";
|
||||
license = licenses.asl20;
|
||||
maintainers = teams.kodi.members;
|
||||
};
|
||||
}
|
||||
31
pkgs/applications/video/kodi/addons/arteplussept/default.nix
Normal file
31
pkgs/applications/video/kodi/addons/arteplussept/default.nix
Normal file
|
|
@ -0,0 +1,31 @@
|
|||
{ lib, buildKodiAddon, fetchzip, addonUpdateScript, dateutil, requests, xbmcswift2 }:
|
||||
|
||||
buildKodiAddon rec {
|
||||
pname = "arteplussept";
|
||||
namespace = "plugin.video.arteplussept";
|
||||
version = "1.1.1";
|
||||
|
||||
src = fetchzip {
|
||||
url = "https://mirrors.kodi.tv/addons/matrix/${namespace}/${namespace}-${version}.zip";
|
||||
hash = "sha256-IYodi0Uz16Qg4MHCz/K06pEXblrsBxHD25fb6LrW8To=";
|
||||
};
|
||||
|
||||
propagatedBuildInputs = [
|
||||
dateutil
|
||||
requests
|
||||
xbmcswift2
|
||||
];
|
||||
|
||||
passthru = {
|
||||
updateScript = addonUpdateScript {
|
||||
attrPath = "kodi.packages.arteplussept";
|
||||
};
|
||||
};
|
||||
|
||||
meta = with lib; {
|
||||
homepage = "https://github.com/known-as-bmf/plugin.video.arteplussept";
|
||||
description = "Watch videos available on Arte+7";
|
||||
license = licenses.mit;
|
||||
maintainers = teams.kodi.members;
|
||||
};
|
||||
}
|
||||
25
pkgs/applications/video/kodi/addons/certifi/default.nix
Normal file
25
pkgs/applications/video/kodi/addons/certifi/default.nix
Normal file
|
|
@ -0,0 +1,25 @@
|
|||
{ lib, buildKodiAddon, fetchzip, addonUpdateScript }:
|
||||
buildKodiAddon rec {
|
||||
pname = "certifi";
|
||||
namespace = "script.module.certifi";
|
||||
version = "2020.12.05+matrix.1";
|
||||
|
||||
src = fetchzip {
|
||||
url = "https://mirrors.kodi.tv/addons/matrix/${namespace}/${namespace}-${version}.zip";
|
||||
sha256 = "1z49b8va7wdyr714c8ixb2sldi0igffcjj3xpbmga58ph0z985vy";
|
||||
};
|
||||
|
||||
passthru = {
|
||||
pythonPath = "lib";
|
||||
updateScript = addonUpdateScript {
|
||||
attrPath = "kodi.packages.certifi";
|
||||
};
|
||||
};
|
||||
|
||||
meta = with lib; {
|
||||
homepage = "https://certifi.io";
|
||||
description = "Python package for providing Mozilla's CA Bundle";
|
||||
license = licenses.mpl20;
|
||||
maintainers = teams.kodi.members;
|
||||
};
|
||||
}
|
||||
25
pkgs/applications/video/kodi/addons/chardet/default.nix
Normal file
25
pkgs/applications/video/kodi/addons/chardet/default.nix
Normal file
|
|
@ -0,0 +1,25 @@
|
|||
{ lib, buildKodiAddon, fetchzip, addonUpdateScript }:
|
||||
buildKodiAddon rec {
|
||||
pname = "chardet";
|
||||
namespace = "script.module.chardet";
|
||||
version = "4.0.0+matrix.1";
|
||||
|
||||
src = fetchzip {
|
||||
url = "https://mirrors.kodi.tv/addons/matrix/${namespace}/${namespace}-${version}.zip";
|
||||
sha256 = "1jsd165mb1b8jdan2jbjd3y3xa0xam2cxcccmwazkybpa0r6a7dj";
|
||||
};
|
||||
|
||||
passthru = {
|
||||
pythonPath = "lib";
|
||||
updateScript = addonUpdateScript {
|
||||
attrPath = "kodi.packages.chardet";
|
||||
};
|
||||
};
|
||||
|
||||
meta = with lib; {
|
||||
homepage = "https://github.com/Freso/script.module.chardet";
|
||||
description = "Universal encoding detector";
|
||||
license = licenses.lgpl2Only;
|
||||
maintainers = teams.kodi.members;
|
||||
};
|
||||
}
|
||||
|
|
@ -0,0 +1,35 @@
|
|||
{ lib, stdenv, fetchFromGitHub, toKodiAddon, addonDir }:
|
||||
let
|
||||
drv = stdenv.mkDerivation {
|
||||
pname = "controller-topology-project";
|
||||
version = "unstable-2022-01-22";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "kodi-game";
|
||||
repo = "controller-topology-project";
|
||||
rev = "e2a9bac903f21b2acfeee374070cfc97d03aba2d";
|
||||
sha256 = "sha256-o6uKxOjEYNAK27drvNOokOFPdjkOEnr49mBre9ycM0w=";
|
||||
};
|
||||
|
||||
postPatch = ''
|
||||
# remove addons already included in the base kodi package
|
||||
rm -r addons/game.controller.default
|
||||
rm -r addons/game.controller.snes
|
||||
'';
|
||||
|
||||
installPhase = ''
|
||||
runHook preInstall
|
||||
mkdir -p $out${addonDir}
|
||||
cp -r addons/* $out${addonDir}
|
||||
runHook postInstall
|
||||
'';
|
||||
|
||||
meta = with lib; {
|
||||
homepage = "https://github.com/kodi-game/controller-topology-project";
|
||||
description = "Models how controllers connect to and map to each other for all gaming history";
|
||||
license = with licenses; [ odbl ];
|
||||
maintainers = teams.kodi.members;
|
||||
};
|
||||
};
|
||||
in
|
||||
toKodiAddon drv
|
||||
30
pkgs/applications/video/kodi/addons/dateutil/default.nix
Normal file
30
pkgs/applications/video/kodi/addons/dateutil/default.nix
Normal file
|
|
@ -0,0 +1,30 @@
|
|||
{ lib, buildKodiAddon, fetchzip, addonUpdateScript, six }:
|
||||
|
||||
buildKodiAddon rec {
|
||||
pname = "dateutil";
|
||||
namespace = "script.module.dateutil";
|
||||
version = "2.8.2";
|
||||
|
||||
src = fetchzip {
|
||||
url = "https://mirrors.kodi.tv/addons/matrix/${namespace}/${namespace}-${version}.zip";
|
||||
sha256 = "iQnyS0GjYcPbnBDUxmMrmDxHOA3K8RbTVke/HF4d5u4=";
|
||||
};
|
||||
|
||||
propagatedBuildInputs = [
|
||||
six
|
||||
];
|
||||
|
||||
passthru = {
|
||||
pythonPath = "lib";
|
||||
updateScript = addonUpdateScript {
|
||||
attrPath = "kodi.packages.dateutil";
|
||||
};
|
||||
};
|
||||
|
||||
meta = with lib; {
|
||||
homepage = "https://dateutil.readthedocs.io/en/stable/";
|
||||
description = "Extensions to the standard Python datetime module";
|
||||
license = with licenses; [ asl20 bsd3 ];
|
||||
maintainers = teams.kodi.members;
|
||||
};
|
||||
}
|
||||
26
pkgs/applications/video/kodi/addons/defusedxml/default.nix
Normal file
26
pkgs/applications/video/kodi/addons/defusedxml/default.nix
Normal file
|
|
@ -0,0 +1,26 @@
|
|||
{ lib, buildKodiAddon, fetchzip, addonUpdateScript }:
|
||||
|
||||
buildKodiAddon rec {
|
||||
pname = "defusedxml";
|
||||
namespace = "script.module.defusedxml";
|
||||
version = "0.6.0+matrix.1";
|
||||
|
||||
src = fetchzip {
|
||||
url = "https://mirrors.kodi.tv/addons/matrix/${namespace}/${namespace}-${version}.zip";
|
||||
sha256 = "026i5rx9rmxcc18ixp6qhbryqdl4pn7cbwqicrishivan6apnacd";
|
||||
};
|
||||
|
||||
passthru = {
|
||||
pythonPath = "lib";
|
||||
updateScript = addonUpdateScript {
|
||||
attrPath = "kodi.packages.defusedxml";
|
||||
};
|
||||
};
|
||||
|
||||
meta = with lib; {
|
||||
homepage = "https://github.com/tiran/defusedxml";
|
||||
description = "defusing XML bombs and other exploits";
|
||||
license = licenses.psfl;
|
||||
maintainers = teams.kodi.members;
|
||||
};
|
||||
}
|
||||
26
pkgs/applications/video/kodi/addons/future/default.nix
Normal file
26
pkgs/applications/video/kodi/addons/future/default.nix
Normal file
|
|
@ -0,0 +1,26 @@
|
|||
{ lib, buildKodiAddon, fetchzip, addonUpdateScript }:
|
||||
|
||||
buildKodiAddon rec {
|
||||
pname = "future";
|
||||
namespace = "script.module.future";
|
||||
version = "0.18.2+matrix.1";
|
||||
|
||||
src = fetchzip {
|
||||
url = "https://mirrors.kodi.tv/addons/matrix/${namespace}/${namespace}-${version}.zip";
|
||||
sha256 = "sha256-QBG7V70Dwmfq8ISILxGNvtmQT9fJp2e5gs2C9skRwIw=";
|
||||
};
|
||||
|
||||
passthru = {
|
||||
pythonPath = "lib";
|
||||
updateScript = addonUpdateScript {
|
||||
attrPath = "kodi.packages.future";
|
||||
};
|
||||
};
|
||||
|
||||
meta = with lib; {
|
||||
homepage = "https://python-future.org";
|
||||
description = "The missing compatibility layer between Python 2 and Python 3";
|
||||
license = licenses.mit;
|
||||
maintainers = teams.kodi.members;
|
||||
};
|
||||
}
|
||||
30
pkgs/applications/video/kodi/addons/iagl/default.nix
Normal file
30
pkgs/applications/video/kodi/addons/iagl/default.nix
Normal file
|
|
@ -0,0 +1,30 @@
|
|||
{ lib, buildKodiAddon, fetchFromGitHub, fetchzip, dateutil, requests, routing, vfs-libarchive, archive_tool, youtube }:
|
||||
|
||||
buildKodiAddon rec {
|
||||
pname = "iagl";
|
||||
namespace = "plugin.program.iagl";
|
||||
version = "3.0.5";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "zach-morris";
|
||||
repo = "plugin.program.iagl";
|
||||
rev = version;
|
||||
sha256 = "sha256-Ha9wUHURPql6xew5bUd33DpgRt+8vwIHocxPopmXj4c=";
|
||||
};
|
||||
|
||||
propagatedBuildInputs = [
|
||||
dateutil
|
||||
requests
|
||||
routing
|
||||
vfs-libarchive
|
||||
archive_tool
|
||||
youtube
|
||||
];
|
||||
|
||||
meta = with lib; {
|
||||
homepage = "https://github.com/zach-morris/plugin.program.iagl";
|
||||
description = "Launch Games from the Internet using Kodi";
|
||||
license = licenses.gpl3Plus;
|
||||
maintainers = teams.kodi.members;
|
||||
};
|
||||
}
|
||||
25
pkgs/applications/video/kodi/addons/idna/default.nix
Normal file
25
pkgs/applications/video/kodi/addons/idna/default.nix
Normal file
|
|
@ -0,0 +1,25 @@
|
|||
{ lib, buildKodiAddon, fetchzip, addonUpdateScript }:
|
||||
buildKodiAddon rec {
|
||||
pname = "idna";
|
||||
namespace = "script.module.idna";
|
||||
version = "2.10.0+matrix.1";
|
||||
|
||||
src = fetchzip {
|
||||
url = "https://mirrors.kodi.tv/addons/matrix/${namespace}/${namespace}-${version}.zip";
|
||||
sha256 = "0pm86m8kh2p0brps3xzxcmmabvb4izkglzkj8dsn33br3vlc7cm7";
|
||||
};
|
||||
|
||||
passthru = {
|
||||
pythonPath = "lib";
|
||||
updateScript = addonUpdateScript {
|
||||
attrPath = "kodi.packages.idna";
|
||||
};
|
||||
};
|
||||
|
||||
meta = with lib; {
|
||||
homepage = "https://github.com/Freso/script.module.idna";
|
||||
description = "Internationalized Domain Names for Python";
|
||||
license = licenses.bsd3;
|
||||
maintainers = teams.kodi.members;
|
||||
};
|
||||
}
|
||||
|
|
@ -0,0 +1,31 @@
|
|||
{ stdenv, lib, rel, addonDir, buildKodiBinaryAddon, fetchFromGitHub, expat, glib, nspr, nss, gtest }:
|
||||
buildKodiBinaryAddon rec {
|
||||
pname = "inputstream-adaptive";
|
||||
namespace = "inputstream.adaptive";
|
||||
version = "19.0.3";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "xbmc";
|
||||
repo = "inputstream.adaptive";
|
||||
rev = "${version}-${rel}";
|
||||
sha256 = "sha256-YYIPPxM8zVIugqLz0YntVZt1N+dReH+7V1Lkeif2wIY=";
|
||||
};
|
||||
|
||||
extraNativeBuildInputs = [ gtest ];
|
||||
|
||||
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/${addonDir}/${n}/libssd_wv.so
|
||||
'';
|
||||
|
||||
meta = with lib; {
|
||||
homepage = "https://github.com/xbmc/inputstream.adaptive";
|
||||
description = "Kodi inputstream addon for several manifest types";
|
||||
platforms = platforms.all;
|
||||
license = licenses.gpl2Only;
|
||||
maintainers = teams.kodi.members;
|
||||
};
|
||||
}
|
||||
|
|
@ -0,0 +1,24 @@
|
|||
{ lib, rel, buildKodiBinaryAddon, fetchFromGitHub, kodi, bzip2, zlib }:
|
||||
|
||||
buildKodiBinaryAddon rec {
|
||||
pname = "inputstream-ffmpegdirect";
|
||||
namespace = "inputstream.ffmpegdirect";
|
||||
version = "19.0.1";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "xbmc";
|
||||
repo = "inputstream.ffmpegdirect";
|
||||
rev = "${version}-${rel}";
|
||||
sha256 = "sha256-yVMo3cRsIww1y0jGrqRag2Bc1x98+e86AHlnY1O9klE=";
|
||||
};
|
||||
|
||||
extraBuildInputs = [ bzip2 zlib kodi.ffmpeg ];
|
||||
|
||||
meta = with lib; {
|
||||
homepage = "https://github.com/xbmc/inputstream.ffmpegdirect/";
|
||||
description = "InputStream Client for streams that can be opened by either FFmpeg's libavformat or Kodi's cURL";
|
||||
platforms = platforms.all;
|
||||
license = licenses.gpl2Plus;
|
||||
maintainers = teams.kodi.members;
|
||||
};
|
||||
}
|
||||
|
|
@ -0,0 +1,24 @@
|
|||
{ lib, rel, buildKodiBinaryAddon, fetchFromGitHub, openssl, rtmpdump, zlib }:
|
||||
|
||||
buildKodiBinaryAddon rec {
|
||||
pname = "inputstream-rtmp";
|
||||
namespace = "inputstream.rtmp";
|
||||
version = "19.0.1";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "xbmc";
|
||||
repo = "inputstream.rtmp";
|
||||
rev = "${version}-${rel}";
|
||||
sha256 = "sha256-BNc9HJ4Yq1WTxTr7AUHBB9yDz8oefy2EtFRwVYVGcaY=";
|
||||
};
|
||||
|
||||
extraBuildInputs = [ openssl rtmpdump zlib ];
|
||||
|
||||
meta = with lib; {
|
||||
homepage = "https://github.com/xbmc/inputstream.rtmp/";
|
||||
description = "Client for RTMP streams";
|
||||
platforms = platforms.all;
|
||||
license = licenses.gpl2Plus;
|
||||
maintainers = teams.kodi.members;
|
||||
};
|
||||
}
|
||||
|
|
@ -0,0 +1,25 @@
|
|||
{ lib, buildKodiAddon, fetchzip, addonUpdateScript }:
|
||||
buildKodiAddon rec {
|
||||
pname = "inputstreamhelper";
|
||||
namespace = "script.module.inputstreamhelper";
|
||||
version = "0.5.10+matrix.1";
|
||||
|
||||
src = fetchzip {
|
||||
url = "https://mirrors.kodi.tv/addons/matrix/${namespace}/${namespace}-${version}.zip";
|
||||
sha256 = "FcOktwtOT7kDM+3y9qPDk3xU1qVeCduyAdUzebtJzv4=";
|
||||
};
|
||||
|
||||
passthru = {
|
||||
pythonPath = "lib";
|
||||
updateScript = addonUpdateScript {
|
||||
attrPath = "kodi.packages.inputstreamhelper";
|
||||
};
|
||||
};
|
||||
|
||||
meta = with lib; {
|
||||
homepage = "https://github.com/emilsvennesson/script.module.inputstreamhelper";
|
||||
description = "A simple Kodi module that makes life easier for add-on developers relying on InputStream based add-ons and DRM playback";
|
||||
license = licenses.mit;
|
||||
maintainers = teams.kodi.members;
|
||||
};
|
||||
}
|
||||
50
pkgs/applications/video/kodi/addons/jellyfin/default.nix
Normal file
50
pkgs/applications/video/kodi/addons/jellyfin/default.nix
Normal file
|
|
@ -0,0 +1,50 @@
|
|||
{ lib, addonDir, buildKodiAddon, fetchFromGitHub, kodi, requests, dateutil, six, kodi-six, signals, websocket }:
|
||||
let
|
||||
python = kodi.pythonPackages.python.withPackages (p: with p; [ pyyaml ]);
|
||||
in
|
||||
buildKodiAddon rec {
|
||||
pname = "jellyfin";
|
||||
namespace = "plugin.video.jellyfin";
|
||||
version = "0.7.7";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "jellyfin";
|
||||
repo = "jellyfin-kodi";
|
||||
rev = "v${version}";
|
||||
sha256 = "06glhnpayldficvvhlkbxg7zizl2wqms66fnc3p63nm3y7mqa9dd";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [
|
||||
python
|
||||
];
|
||||
|
||||
prePatch = ''
|
||||
# ZIP does not support timestamps before 1980 - https://bugs.python.org/issue34097
|
||||
substituteInPlace build.py \
|
||||
--replace "with zipfile.ZipFile('{}/{}'.format(target, archive_name), 'w') as z:" "with zipfile.ZipFile('{}/{}'.format(target, archive_name), 'w', strict_timestamps=False) as z:"
|
||||
'';
|
||||
|
||||
buildPhase = ''
|
||||
${python}/bin/python3 build.py --version=py3
|
||||
'';
|
||||
|
||||
postInstall = ''
|
||||
mv /build/source/addon.xml $out${addonDir}/${namespace}/
|
||||
'';
|
||||
|
||||
propagatedBuildInputs = [
|
||||
requests
|
||||
dateutil
|
||||
six
|
||||
kodi-six
|
||||
signals
|
||||
websocket
|
||||
];
|
||||
|
||||
meta = with lib; {
|
||||
homepage = "https://jellyfin.org/";
|
||||
description = "A whole new way to manage and view your media library";
|
||||
license = licenses.gpl3Only;
|
||||
maintainers = teams.kodi.members;
|
||||
};
|
||||
}
|
||||
22
pkgs/applications/video/kodi/addons/joystick/default.nix
Normal file
22
pkgs/applications/video/kodi/addons/joystick/default.nix
Normal file
|
|
@ -0,0 +1,22 @@
|
|||
{ lib, rel, buildKodiBinaryAddon, fetchFromGitHub, tinyxml, udev }:
|
||||
buildKodiBinaryAddon rec {
|
||||
pname = namespace;
|
||||
namespace = "peripheral.joystick";
|
||||
version = "1.7.1";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "xbmc";
|
||||
repo = namespace;
|
||||
rev = "${version}-${rel}";
|
||||
sha256 = "1dhj4afr9kj938xx70fq5r409mz6lbw4n581ljvdjj9lq7akc914";
|
||||
};
|
||||
|
||||
extraBuildInputs = [ tinyxml udev ];
|
||||
|
||||
meta = with lib; {
|
||||
description = "Binary addon for raw joystick input.";
|
||||
platforms = platforms.all;
|
||||
license = licenses.gpl2Only;
|
||||
maintainers = teams.kodi.members;
|
||||
};
|
||||
}
|
||||
24
pkgs/applications/video/kodi/addons/keymap/default.nix
Normal file
24
pkgs/applications/video/kodi/addons/keymap/default.nix
Normal file
|
|
@ -0,0 +1,24 @@
|
|||
{ lib, addonDir, buildKodiAddon, fetchzip, defusedxml, kodi-six }:
|
||||
|
||||
buildKodiAddon rec {
|
||||
pname = "keymap";
|
||||
namespace = "script.keymap";
|
||||
version = "1.1.3+matrix.1";
|
||||
|
||||
src = fetchzip {
|
||||
url = "https://mirrors.kodi.tv/addons/matrix/${namespace}/${namespace}-${version}.zip";
|
||||
sha256 = "1icrailzpf60nw62xd0khqdp66dnr473m2aa9wzpmkk3qj1ay6jv";
|
||||
};
|
||||
|
||||
propagatedBuildInputs = [
|
||||
defusedxml
|
||||
kodi-six
|
||||
];
|
||||
|
||||
meta = with lib; {
|
||||
homepage = "https://github.com/tamland/xbmc-keymap-editor";
|
||||
description = "A GUI for configuring mappings for remotes, keyboard and other inputs supported by Kodi";
|
||||
license = licenses.gpl3Plus;
|
||||
maintainers = teams.kodi.members;
|
||||
};
|
||||
}
|
||||
|
|
@ -0,0 +1,15 @@
|
|||
{ stdenv, fetchFromGitHub, cmake, kodi, libcec_platform, tinyxml }:
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "kodi-platform";
|
||||
version = "17.1";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "xbmc";
|
||||
repo = pname;
|
||||
rev = "c8188d82678fec6b784597db69a68e74ff4986b5";
|
||||
sha256 = "1r3gs3c6zczmm66qcxh9mr306clwb3p7ykzb70r3jv5jqggiz199";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [ cmake ];
|
||||
buildInputs = [ kodi libcec_platform tinyxml ];
|
||||
}
|
||||
26
pkgs/applications/video/kodi/addons/kodi-six/default.nix
Normal file
26
pkgs/applications/video/kodi/addons/kodi-six/default.nix
Normal file
|
|
@ -0,0 +1,26 @@
|
|||
{ lib, buildKodiAddon, fetchzip, addonUpdateScript }:
|
||||
|
||||
buildKodiAddon rec {
|
||||
pname = "kodi-six";
|
||||
namespace = "script.module.kodi-six";
|
||||
version = "0.1.3.1";
|
||||
|
||||
src = fetchzip {
|
||||
url = "https://mirrors.kodi.tv/addons/matrix/${namespace}/${namespace}-${version}.zip";
|
||||
sha256 = "14m232p9hx925pbk8knsg994m1nbpa5278zmcrnfblh4z84gjv4x";
|
||||
};
|
||||
|
||||
passthru = {
|
||||
pythonPath = "libs";
|
||||
updateScript = addonUpdateScript {
|
||||
attrPath = "kodi.packages.kodi-six";
|
||||
};
|
||||
};
|
||||
|
||||
meta = with lib; {
|
||||
homepage = "https://github.com/romanvm/kodi.six";
|
||||
description = "Wrappers around Kodi Python API for seamless Python 2/3 compatibility";
|
||||
license = licenses.gpl3Only;
|
||||
maintainers = teams.kodi.members;
|
||||
};
|
||||
}
|
||||
|
|
@ -0,0 +1,31 @@
|
|||
{ lib, rel, buildKodiBinaryAddon, fetchFromGitHub, libretro, genesis-plus-gx }:
|
||||
|
||||
buildKodiBinaryAddon rec {
|
||||
pname = "kodi-libretro-genplus";
|
||||
namespace = "game.libretro.genplus";
|
||||
version = "1.7.4.31";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "kodi-game";
|
||||
repo = "game.libretro.genplus";
|
||||
rev = "${version}-${rel}";
|
||||
sha256 = "0lcii32wzpswjjkwhv250l238g31akr66dhkbv8gj4v1i4z7hry8";
|
||||
};
|
||||
|
||||
extraCMakeFlags = [
|
||||
"-DGENPLUS_LIB=${genesis-plus-gx}/lib/retroarch/cores/genesis_plus_gx_libretro.so"
|
||||
];
|
||||
|
||||
extraBuildInputs = [ genesis-plus-gx ];
|
||||
propagatedBuildInputs = [
|
||||
libretro
|
||||
];
|
||||
|
||||
meta = with lib; {
|
||||
homepage = "https://github.com/kodi-game/game.libretro.genplus";
|
||||
description = "Genesis Plus GX GameClient for Kodi";
|
||||
platforms = platforms.all;
|
||||
license = licenses.gpl2Only;
|
||||
maintainers = teams.kodi.members;
|
||||
};
|
||||
}
|
||||
|
|
@ -0,0 +1,31 @@
|
|||
{ lib, rel, buildKodiBinaryAddon, fetchFromGitHub, libretro, mgba }:
|
||||
|
||||
buildKodiBinaryAddon rec {
|
||||
pname = "kodi-libretro-mgba";
|
||||
namespace = "game.libretro.mgba";
|
||||
version = "0.9.2.31";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "kodi-game";
|
||||
repo = "game.libretro.mgba";
|
||||
rev = "${version}-${rel}";
|
||||
sha256 = "sha256-eZLuNhLwMTtzpLGkymc9cLC83FQJWZ2ZT0iyz4sY4EA=";
|
||||
};
|
||||
|
||||
extraCMakeFlags = [
|
||||
"-DMGBA_LIB=${mgba}/lib/retroarch/cores/mgba_libretro.so"
|
||||
];
|
||||
|
||||
extraBuildInputs = [ mgba ];
|
||||
propagatedBuildInputs = [
|
||||
libretro
|
||||
];
|
||||
|
||||
meta = with lib; {
|
||||
homepage = "https://github.com/kodi-game/game.libretro.mgba";
|
||||
description = "mGBA for Kodi";
|
||||
platforms = platforms.all;
|
||||
license = licenses.gpl2Only;
|
||||
maintainers = teams.kodi.members;
|
||||
};
|
||||
}
|
||||
|
|
@ -0,0 +1,31 @@
|
|||
{ lib, rel, buildKodiBinaryAddon, fetchFromGitHub, libretro, snes9x }:
|
||||
|
||||
buildKodiBinaryAddon rec {
|
||||
pname = "kodi-libretro-snes9x";
|
||||
namespace = "game.libretro.snes9x";
|
||||
version = "1.60.0.29";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "kodi-game";
|
||||
repo = "game.libretro.snes9x";
|
||||
rev = "${version}-${rel}";
|
||||
sha256 = "1wyfkg4fncc604alnbaqk92fi1h80n7bwiqfkb8479x5517byab1";
|
||||
};
|
||||
|
||||
extraCMakeFlags = [
|
||||
"-DSNES9X_LIB=${snes9x}/lib/retroarch/cores/snes9x_libretro.so"
|
||||
];
|
||||
|
||||
extraBuildInputs = [ snes9x ];
|
||||
propagatedBuildInputs = [
|
||||
libretro
|
||||
];
|
||||
|
||||
meta = with lib; {
|
||||
homepage = "https://github.com/kodi-game/game.libretro.snes9x";
|
||||
description = "Snes9X GameClient for Kodi";
|
||||
platforms = platforms.all;
|
||||
license = licenses.gpl2Only;
|
||||
maintainers = teams.kodi.members;
|
||||
};
|
||||
}
|
||||
Some files were not shown because too many files have changed in this diff Show more
Loading…
Add table
Add a link
Reference in a new issue