diff options
Diffstat (limited to 'pkgs/applications/video')
-rw-r--r-- | pkgs/applications/video/handbrake/default.nix | 4 | ||||
-rw-r--r-- | pkgs/applications/video/kodi-packages/vfs-libarchive/default.nix | 4 | ||||
-rw-r--r-- | pkgs/applications/video/kodi/packages.nix | 560 |
3 files changed, 564 insertions, 4 deletions
diff --git a/pkgs/applications/video/handbrake/default.nix b/pkgs/applications/video/handbrake/default.nix index 6317d7b1ab327..e14d902681dfd 100644 --- a/pkgs/applications/video/handbrake/default.nix +++ b/pkgs/applications/video/handbrake/default.nix @@ -9,7 +9,7 @@ { stdenv, lib, fetchFromGitHub, # Main build tools - pkg-config, autoconf, automake, libtool, m4, lzma, python3, + pkg-config, autoconf, automake, libtool, m4, xz, python3, numactl, # Processing, video codecs, containers ffmpeg-full, nv-codec-headers, libogg, x264, x265, libvpx, libtheora, dav1d, @@ -100,7 +100,7 @@ _EOF ffmpeg-full libogg libtheora x264 x265 libvpx dav1d libopus lame libvorbis a52dec speex libsamplerate libiconv fribidi fontconfig freetype libass jansson libxml2 harfbuzz - libdvdread libdvdnav libdvdcss libbluray lzma + libdvdread libdvdnav libdvdcss libbluray xz ] ++ lib.optional (!stdenv.isDarwin) numactl ++ lib.optionals useGtk [ glib gtk3 libappindicator-gtk3 libnotify diff --git a/pkgs/applications/video/kodi-packages/vfs-libarchive/default.nix b/pkgs/applications/video/kodi-packages/vfs-libarchive/default.nix index 6819f7bfdcb0e..2db17f17abad9 100644 --- a/pkgs/applications/video/kodi-packages/vfs-libarchive/default.nix +++ b/pkgs/applications/video/kodi-packages/vfs-libarchive/default.nix @@ -1,4 +1,4 @@ -{ lib, rel, buildKodiBinaryAddon, fetchFromGitHub, libarchive, lzma, bzip2, zlib, lz4, lzo, openssl }: +{ lib, rel, buildKodiBinaryAddon, fetchFromGitHub, libarchive, xz, bzip2, zlib, lz4, lzo, openssl }: buildKodiBinaryAddon rec { pname = namespace; namespace = "vfs.libarchive"; @@ -11,7 +11,7 @@ buildKodiBinaryAddon rec { sha256 = "1q62p1i6rvqk2zv6f1cpffkh95lgclys2xl4dwyhj3acmqdxd9i5"; }; - extraBuildInputs = [ libarchive lzma bzip2 zlib lz4 lzo openssl ]; + extraBuildInputs = [ libarchive xz bzip2 zlib lz4 lzo openssl ]; meta = with lib; { description = "LibArchive Virtual Filesystem add-on for Kodi"; diff --git a/pkgs/applications/video/kodi/packages.nix b/pkgs/applications/video/kodi/packages.nix new file mode 100644 index 0000000000000..e6ce955e055b7 --- /dev/null +++ b/pkgs/applications/video/kodi/packages.nix @@ -0,0 +1,560 @@ +{ lib, stdenv, callPackage, fetchFromGitHub +, cmake, kodi, libcec_platform, tinyxml, pugixml +, steam, udev, libusb1, jsoncpp, libhdhomerun, zlib +, python3Packages, expat, glib, nspr, nss, openssl +, libssh, libarchive, xz, bzip2, lz4, lzo }: + +with lib; + +let self = rec { + + addonDir = "/share/kodi/addons"; + rel = "Matrix"; + + inherit kodi; + + # Convert derivation to a kodi module. Stolen from ../../../top-level/python-packages.nix + toKodiAddon = drv: drv.overrideAttrs(oldAttrs: { + # Use passthru in order to prevent rebuilds when possible. + passthru = (oldAttrs.passthru or {})// { + kodiAddonFor = kodi; + requiredKodiAddons = requiredKodiAddons drv.propagatedBuildInputs; + }; + }); + + # Check whether a derivation provides a Kodi addon. + hasKodiAddon = drv: drv ? kodiAddonFor && drv.kodiAddonFor == kodi; + + # Get list of required Kodi addons given a list of derivations. + requiredKodiAddons = drvs: let + modules = filter hasKodiAddon drvs; + in unique (modules ++ concatLists (catAttrs "requiredKodiAddons" modules)); + + kodi-platform = stdenv.mkDerivation rec { + project = "kodi-platform"; + version = "17.1"; + name = "${project}-${version}"; + + src = fetchFromGitHub { + owner = "xbmc"; + repo = project; + rev = "c8188d82678fec6b784597db69a68e74ff4986b5"; + sha256 = "1r3gs3c6zczmm66qcxh9mr306clwb3p7ykzb70r3jv5jqggiz199"; + }; + + nativeBuildInputs = [ cmake ]; + buildInputs = [ kodi libcec_platform tinyxml ]; + }; + + buildKodiAddon = + { name ? "${attrs.pname}-${attrs.version}" + , namespace + , sourceDir ? "" + , ... } @ attrs: + toKodiAddon (stdenv.mkDerivation ({ + name = "kodi-" + name; + + dontStrip = true; + + extraRuntimeDependencies = [ ]; + + installPhase = '' + cd $src/$sourceDir + d=$out${addonDir}/${namespace} + mkdir -p $d + sauce="." + [ -d ${namespace} ] && sauce=${namespace} + cp -R "$sauce/"* $d + ''; + } // attrs)); + + buildKodiBinaryAddon = + { name ? "${attrs.pname}-${attrs.version}" + , namespace + , version + , extraBuildInputs ? [] + , extraRuntimeDependencies ? [] + , extraInstallPhase ? "", ... } @ attrs: + toKodiAddon (stdenv.mkDerivation ({ + name = "kodi-" + name; + + dontStrip = true; + + nativeBuildInputs = [ cmake ]; + buildInputs = [ kodi kodi-platform libcec_platform ] ++ extraBuildInputs; + + inherit extraRuntimeDependencies; + + # disables check ensuring install prefix is that of kodi + cmakeFlags = [ + "-DOVERRIDE_PATHS=1" + ]; + + # kodi checks for addon .so libs existance in the addon folder (share/...) + # and the non-wrapped kodi lib/... folder before even trying to dlopen + # them. Symlinking .so, as setting LD_LIBRARY_PATH is of no use + installPhase = let n = namespace; in '' + make install + ln -s $out/lib/addons/${n}/${n}.so.${version} $out${addonDir}/${n}/${n}.so.${version} + ${extraInstallPhase} + ''; + } // attrs)); + + advanced-launcher = buildKodiAddon rec { + + pname = "advanced-launcher"; + namespace = "plugin.program.advanced.launcher"; + version = "2.5.8"; + + src = fetchFromGitHub { + owner = "edwtjo"; + repo = pname; + rev = version; + sha256 = "142vvgs37asq5m54xqhjzqvgmb0xlirvm0kz6lxaqynp0vvgrkx2"; + }; + + meta = { + homepage = "https://forum.kodi.tv/showthread.php?tid=85724"; + description = "A program launcher for Kodi"; + longDescription = '' + Advanced Launcher allows you to start any Linux, Windows and + macOS external applications (with command line support or not) + directly from the Kodi GUI. Advanced Launcher also give you + the possibility to edit, download (from Internet resources) + and manage all the meta-data (informations and images) related + to these applications. + ''; + platforms = platforms.all; + maintainers = with maintainers; [ edwtjo ]; + broken = true; # requires port to python3 + }; + + }; + + advanced-emulator-launcher = buildKodiAddon rec { + + pname = "advanced-emulator-launcher"; + namespace = "plugin.program.advanced.emulator.launcher"; + version = "0.9.6"; + + src = fetchFromGitHub { + owner = "Wintermute0110"; + repo = namespace; + rev = version; + sha256 = "1sv9z77jj6bam6llcnd9b3dgkbvhwad2m1v541rv3acrackms2z2"; + }; + + meta = { + homepage = "https://forum.kodi.tv/showthread.php?tid=287826"; + description = "A program launcher for Kodi"; + longDescription = '' + Advanced Emulator Launcher is a multi-emulator front-end for Kodi + scalable to collections of thousands of ROMs. Includes offline scrapers + for MAME and No-Intro ROM sets and also supports scrapping ROM metadata + and artwork online. ROM auditing for No-Intro ROMs using No-Intro XML + DATs. Launching of games and standalone applications is also available. + ''; + platforms = platforms.all; + maintainers = with maintainers; [ edwtjo ]; + broken = true; # requires port to python3 + }; + + }; + + controllers = let + pname = "game-controller"; + version = "1.0.3"; + + src = fetchFromGitHub { + owner = "kodi-game"; + repo = "kodi-game-controllers"; + rev = "01acb5b6e8b85392b3cb298b034aadb1b24ccf18"; + sha256 = "0sbc0w0fwbp7rbmbgb6a1kglhnn5g85hijcbbvf5x6jdq9v3f1qb"; + }; + + meta = { + description = "Add support for different gaming controllers."; + platforms = platforms.all; + maintainers = with maintainers; [ edwtjo ]; + }; + + mkController = controller: { + ${controller} = buildKodiAddon rec { + pname = pname + "-" + controller; + namespace = "game.controller." + controller; + sourceDir = "addons/" + namespace; + inherit version src meta; + }; + }; + in (mkController "default") + // (mkController "dreamcast") + // (mkController "gba") + // (mkController "genesis") + // (mkController "mouse") + // (mkController "n64") + // (mkController "nes") + // (mkController "ps") + // (mkController "snes"); + + hyper-launcher = let + pname = "hyper-launcher"; + version = "1.5.2"; + src = fetchFromGitHub rec { + name = pname + "-" + version + ".tar.gz"; + owner = "teeedubb"; + repo = owner + "-xbmc-repo"; + rev = "f958ba93fe85b9c9025b1745d89c2db2e7dd9bf6"; + sha256 = "1dvff24fbas25k5kvca4ssks9l1g5rfa3hl8lqxczkaqi3pp41j5"; + }; + meta = { + homepage = "https://forum.kodi.tv/showthread.php?tid=258159"; + description = "A ROM launcher for Kodi that uses HyperSpin assets."; + maintainers = with maintainers; [ edwtjo ]; + broken = true; # requires port to python3 + }; + in { + service = buildKodiAddon { + pname = pname + "-service"; + version = "1.2.1"; + namespace = "service.hyper.launcher"; + inherit src meta; + }; + plugin = buildKodiAddon { + namespace = "plugin.hyper.launcher"; + inherit pname version src meta; + }; + }; + + joystick = buildKodiBinaryAddon rec { + pname = namespace; + namespace = "peripheral.joystick"; + version = "1.7.1"; + + src = fetchFromGitHub { + owner = "xbmc"; + repo = namespace; + rev = "${version}-${rel}"; + sha256 = "1dhj4afr9kj938xx70fq5r409mz6lbw4n581ljvdjj9lq7akc914"; + }; + + meta = { + description = "Binary addon for raw joystick input."; + platforms = platforms.all; + maintainers = with maintainers; [ edwtjo ]; + }; + + extraBuildInputs = [ tinyxml udev ]; + }; + + simpleplugin = buildKodiAddon rec { + pname = "simpleplugin"; + namespace = "script.module.simpleplugin"; + version = "2.3.2"; + + src = fetchFromGitHub { + owner = "romanvm"; + repo = namespace; + rev = "v.${version}"; + sha256 = "0myar8dqjigb75pcc8zx3i5z79p1ifgphgb82s5syqywk0zaxm3j"; + }; + + meta = { + homepage = src.meta.homepage; + description = "Simpleplugin API"; + license = licenses.gpl3; + broken = true; # requires port to python3 + }; + }; + + svtplay = buildKodiAddon rec { + + pname = "svtplay"; + namespace = "plugin.video.svtplay"; + version = "5.1.12"; + + src = fetchFromGitHub { + name = pname + "-" + version + ".tar.gz"; + owner = "nilzen"; + repo = "xbmc-" + pname; + rev = "v${version}"; + sha256 = "04j1nhm7mh9chs995lz6bv1vsq5xzk7a7c0lmk4bnfv8jrfpj0w6"; + }; + + meta = { + homepage = "https://forum.kodi.tv/showthread.php?tid=67110"; + description = "Watch content from SVT Play"; + longDescription = '' + With this addon you can stream content from SVT Play + (svtplay.se). The plugin fetches the video URL from the SVT + Play website and feeds it to the Kodi video player. HLS (m3u8) + is the preferred video format by the plugin. + ''; + platforms = platforms.all; + maintainers = with maintainers; [ edwtjo ]; + }; + + }; + + steam-controller = buildKodiBinaryAddon rec { + pname = namespace; + namespace = "peripheral.steamcontroller"; + version = "0.11.0"; + + src = fetchFromGitHub { + owner = "kodi-game"; + repo = namespace; + rev = "f68140ca44f163a03d3a625d1f2005a6edef96cb"; + sha256 = "09lm8i119xlsxxk0c64rnp8iw0crr90v7m8iwi9r31qdmxrdxpmg"; + }; + + extraBuildInputs = [ libusb1 ]; + + meta = { + description = "Binary addon for steam controller."; + platforms = platforms.all; + maintainers = with maintainers; [ edwtjo ]; + }; + + }; + + steam-launcher = buildKodiAddon { + + pname = "steam-launcher"; + namespace = "script.steam.launcher"; + version = "3.5.1"; + + src = fetchFromGitHub rec { + owner = "teeedubb"; + repo = owner + "-xbmc-repo"; + rev = "8260bf9b464846a1f1965da495d2f2b7ceb81d55"; + sha256 = "1fj3ry5s44nf1jzxk4bmnpa4b9p23nrpmpj2a4i6xf94h7jl7p5k"; + }; + + propagatedBuildInputs = [ steam ]; + + meta = { + homepage = "https://forum.kodi.tv/showthread.php?tid=157499"; + description = "Launch Steam in Big Picture Mode from Kodi"; + longDescription = '' + This add-on will close/minimise Kodi, launch Steam in Big + Picture Mode and when Steam BPM is exited (either by quitting + Steam or returning to the desktop) Kodi will + restart/maximise. Running pre/post Steam scripts can be + configured via the addon. + ''; + maintainers = with maintainers; [ edwtjo ]; + }; + }; + + pdfreader = buildKodiAddon rec { + pname = "pdfreader"; + namespace = "plugin.image.pdf"; + version = "2.0.2"; + + src = fetchFromGitHub { + owner = "i96751414"; + repo = "plugin.image.pdfreader"; + rev = "v${version}"; + sha256 = "0nkqhlm1gyagq6xpdgqvd5qxyr2ngpml9smdmzfabc8b972mwjml"; + }; + + meta = { + homepage = "https://forum.kodi.tv/showthread.php?tid=187421"; + description = "A comic book reader"; + maintainers = with maintainers; [ edwtjo ]; + }; + }; + + pvr-hts = buildKodiBinaryAddon rec { + + pname = "pvr-hts"; + namespace = "pvr.hts"; + version = "8.2.2"; + + src = fetchFromGitHub { + owner = "kodi-pvr"; + repo = "pvr.hts"; + rev = "${version}-${rel}"; + sha256 = "0jnn9gfjl556acqjf92wzzn371gxymhbbi665nqgg2gjcan0a49q"; + }; + + meta = { + homepage = "https://github.com/kodi-pvr/pvr.hts"; + description = "Kodi's Tvheadend HTSP client addon"; + platforms = platforms.all; + maintainers = with maintainers; [ cpages ]; + }; + + }; + + pvr-hdhomerun = buildKodiBinaryAddon rec { + + pname = "pvr-hdhomerun"; + namespace = "pvr.hdhomerun"; + version = "7.1.0"; + + src = fetchFromGitHub { + owner = "kodi-pvr"; + repo = "pvr.hdhomerun"; + rev = "${version}-${rel}"; + sha256 = "0gbwjssnd319csq2kwlyjj1rskg19m1dxac5dl2dymvx5hn3zrgm"; + }; + + meta = { + homepage = "https://github.com/kodi-pvr/pvr.hdhomerun"; + description = "Kodi's HDHomeRun PVR client addon"; + platforms = platforms.all; + maintainers = with maintainers; [ titanous ]; + }; + + extraBuildInputs = [ jsoncpp libhdhomerun ]; + + }; + + pvr-iptvsimple = buildKodiBinaryAddon rec { + + pname = "pvr-iptvsimple"; + namespace = "pvr.iptvsimple"; + version = "7.4.2"; + + src = fetchFromGitHub { + owner = "kodi-pvr"; + repo = "pvr.iptvsimple"; + rev = "${version}-${rel}"; + sha256 = "062i922qi0izkvn7v47yhyy2cf3fa7xc3k95b1gm9abfdwkk8ywr"; + }; + + meta = { + homepage = "https://github.com/kodi-pvr/pvr.iptvsimple"; + description = "Kodi's IPTV Simple client addon"; + platforms = platforms.all; + maintainers = with maintainers; [ ]; + license = licenses.gpl2Plus; + }; + + extraBuildInputs = [ zlib pugixml ]; + }; + + osmc-skin = buildKodiAddon rec { + + pname = "osmc-skin"; + namespace = "skin.osmc"; + version = "18.0.0"; + + src = fetchFromGitHub { + owner = "osmc"; + repo = namespace; + rev = "40a6c318641e2cbeac58fb0e7dde9c2beac737a0"; + sha256 = "1l7hyfj5zvjxjdm94y325bmy1naak455b9l8952sb0gllzrcwj6s"; + }; + + meta = { + homepage = "https://github.com/osmc/skin.osmc"; + description = "The default skin for OSMC"; + platforms = platforms.all; + maintainers = with maintainers; [ worldofpeace ]; + license = licenses.cc-by-nc-sa-30; + }; + }; + + yatp = python3Packages.toPythonModule (buildKodiAddon rec { + pname = "yatp"; + namespace = "plugin.video.yatp"; + version = "3.3.2"; + + src = fetchFromGitHub { + owner = "romanvm"; + repo = "kodi.yatp"; + rev = "v.${version}"; + sha256 = "12g1f57sx7dy6wy7ljl7siz2qs1kxcmijcg7xx2xpvmq61x9qa2d"; + }; + + patches = [ ./yatp/dont-monkey.patch ]; + + propagatedBuildInputs = [ + simpleplugin + python3Packages.requests + python3Packages.libtorrent-rasterbar + ]; + + meta = { + homepage = src.meta.homepage; + description = "Yet Another Torrent Player: libtorrent-based torrent streaming for Kodi"; + license = licenses.gpl3; + broken = true; # requires port to python3 + }; + }); + + inputstream-adaptive = buildKodiBinaryAddon rec { + + pname = "inputstream-adaptive"; + namespace = "inputstream.adaptive"; + version = "2.6.7"; + + src = fetchFromGitHub { + owner = "peak3d"; + repo = "inputstream.adaptive"; + rev = "${version}-${rel}"; + sha256 = "1pwqmbr78wp12jn6rwv63npdfc456adwz0amlxf6gvgg43li6p7s"; + }; + + 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 = { + homepage = "https://github.com/peak3d/inputstream.adaptive"; + description = "Kodi inputstream addon for several manifest types"; + platforms = platforms.all; + maintainers = with maintainers; [ sephalon ]; + }; + }; + + vfs-sftp = buildKodiBinaryAddon rec { + pname = namespace; + namespace = "vfs.sftp"; + version = "2.0.0"; + + src = fetchFromGitHub { + owner = "xbmc"; + repo = namespace; + rev = "${version}-${rel}"; + sha256 = "06w74sh8yagrrp7a7rjaz3xrh1j3wdqald9c4b72c33gpk5997dk"; + }; + + meta = with lib; { + description = "SFTP Virtual Filesystem add-on for Kodi"; + license = licenses.gpl2Plus; + platforms = platforms.all; + maintainers = with maintainers; [ minijackson ]; + }; + + extraBuildInputs = [ openssl libssh zlib ]; + }; + + vfs-libarchive = buildKodiBinaryAddon rec { + pname = namespace; + namespace = "vfs.libarchive"; + version = "2.0.0"; + + src = fetchFromGitHub { + owner = "xbmc"; + repo = namespace; + rev = "${version}-${rel}"; + sha256 = "1q62p1i6rvqk2zv6f1cpffkh95lgclys2xl4dwyhj3acmqdxd9i5"; + }; + + meta = with lib; { + description = "LibArchive Virtual Filesystem add-on for Kodi"; + license = licenses.gpl2Plus; + platforms = platforms.all; + maintainers = with maintainers; [ minijackson ]; + }; + + extraBuildInputs = [ libarchive xz bzip2 zlib lz4 lzo openssl ]; + }; +}; in self |