Merge staging-next into staging

This commit is contained in:
github-actions[bot] 2021-03-22 06:22:57 +00:00 committed by GitHub
commit 68a0ba619d
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
35 changed files with 213 additions and 36 deletions

View File

@ -97,6 +97,18 @@ with lib.maintainers; {
scope = "Maintain Jitsi."; scope = "Maintain Jitsi.";
}; };
kodi = {
members = [
aanderse
cpages
edwtjo
minijackson
peterhoeg
sephalon
];
scope = "Maintain Kodi and related packages.";
};
matrix = { matrix = {
members = [ members = [
ma27 ma27

View File

@ -93,10 +93,12 @@ in
}; };
paths = mkOption { paths = mkOption {
type = types.listOf types.str; type = types.nullOr (types.listOf types.str);
default = []; default = null;
description = '' description = ''
Which paths to backup. Which paths to backup. If null or an empty array, no
backup command will be run. This can be used to create a
prune-only job.
''; '';
example = [ example = [
"/var/lib/postgresql" "/var/lib/postgresql"
@ -217,7 +219,7 @@ in
resticCmd = "${pkgs.restic}/bin/restic${extraOptions}"; resticCmd = "${pkgs.restic}/bin/restic${extraOptions}";
filesFromTmpFile = "/run/restic-backups-${name}/includes"; filesFromTmpFile = "/run/restic-backups-${name}/includes";
backupPaths = if (backup.dynamicFilesFrom == null) backupPaths = if (backup.dynamicFilesFrom == null)
then concatStringsSep " " backup.paths then if (backup.paths != null) then concatStringsSep " " backup.paths else ""
else "--files-from ${filesFromTmpFile}"; else "--files-from ${filesFromTmpFile}";
pruneCmd = optionals (builtins.length backup.pruneOpts > 0) [ pruneCmd = optionals (builtins.length backup.pruneOpts > 0) [
( resticCmd + " forget --prune " + (concatStringsSep " " backup.pruneOpts) ) ( resticCmd + " forget --prune " + (concatStringsSep " " backup.pruneOpts) )
@ -243,7 +245,8 @@ in
restartIfChanged = false; restartIfChanged = false;
serviceConfig = { serviceConfig = {
Type = "oneshot"; Type = "oneshot";
ExecStart = [ "${resticCmd} backup --cache-dir=%C/restic-backups-${name} ${concatStringsSep " " backup.extraBackupArgs} ${backupPaths}" ] ++ pruneCmd; ExecStart = (optionals (backupPaths != "") [ "${resticCmd} backup --cache-dir=%C/restic-backups-${name} ${concatStringsSep " " backup.extraBackupArgs} ${backupPaths}" ])
++ pruneCmd;
User = backup.user; User = backup.user;
RuntimeDirectory = "restic-backups-${name}"; RuntimeDirectory = "restic-backups-${name}";
CacheDirectory = "restic-backups-${name}"; CacheDirectory = "restic-backups-${name}";

View File

@ -45,6 +45,10 @@ import ./make-test-python.nix (
''; '';
inherit passwordFile initialize paths pruneOpts; inherit passwordFile initialize paths pruneOpts;
}; };
remoteprune = {
inherit repository passwordFile;
pruneOpts = [ "--keep-last 1" ];
};
}; };
environment.sessionVariables.RCLONE_CONFIG_LOCAL_TYPE = "local"; environment.sessionVariables.RCLONE_CONFIG_LOCAL_TYPE = "local";
@ -84,6 +88,8 @@ import ./make-test-python.nix (
"systemctl start restic-backups-rclonebackup.service", "systemctl start restic-backups-rclonebackup.service",
'${pkgs.restic}/bin/restic -r ${repository} -p ${passwordFile} snapshots -c | grep -e "^4 snapshot"', '${pkgs.restic}/bin/restic -r ${repository} -p ${passwordFile} snapshots -c | grep -e "^4 snapshot"',
'${pkgs.restic}/bin/restic -r ${rcloneRepository} -p ${passwordFile} snapshots -c | grep -e "^4 snapshot"', '${pkgs.restic}/bin/restic -r ${rcloneRepository} -p ${passwordFile} snapshots -c | grep -e "^4 snapshot"',
"systemctl start restic-backups-remoteprune.service",
'${pkgs.restic}/bin/restic -r ${repository} -p ${passwordFile} snapshots -c | grep -e "^1 snapshot"',
) )
''; '';
} }

View File

@ -17,5 +17,6 @@ buildKodiAddon rec {
homepage = "https://certifi.io"; homepage = "https://certifi.io";
description = "Python package for providing Mozilla's CA Bundle"; description = "Python package for providing Mozilla's CA Bundle";
license = licenses.mpl20; license = licenses.mpl20;
maintainers = teams.kodi.members;
}; };
} }

View File

@ -17,5 +17,6 @@ buildKodiAddon rec {
homepage = "https://github.com/Freso/script.module.chardet"; homepage = "https://github.com/Freso/script.module.chardet";
description = "Universal encoding detector"; description = "Universal encoding detector";
license = licenses.lgpl2Only; license = licenses.lgpl2Only;
maintainers = teams.kodi.members;
}; };
} }

View File

@ -16,6 +16,7 @@ buildKodiAddon rec {
meta = with lib; { meta = with lib; {
description = "Add support for different gaming controllers."; description = "Add support for different gaming controllers.";
platforms = platforms.all; platforms = platforms.all;
maintainers = with maintainers; [ edwtjo ]; license = licenses.odbl;
maintainers = teams.kodi.members;
}; };
} }

View File

@ -0,0 +1,27 @@
{ lib, buildKodiAddon, fetchzip, addonUpdateScript, six }:
buildKodiAddon rec {
pname = "dateutil";
namespace = "script.module.dateutil";
version = "2.8.1+matrix.1";
src = fetchzip {
url = "https://mirrors.kodi.tv/addons/matrix/${namespace}/${namespace}-${version}.zip";
sha256 = "1jr77017ihs7j3455i72af71wyvs792kbizq4539ccd98far8lm7";
};
propagatedBuildInputs = [
six
];
passthru.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;
};
}

View File

@ -17,5 +17,6 @@ buildKodiAddon rec {
homepage = "https://github.com/Freso/script.module.idna"; homepage = "https://github.com/Freso/script.module.idna";
description = "Internationalized Domain Names for Python"; description = "Internationalized Domain Names for Python";
license = licenses.bsd3; license = licenses.bsd3;
maintainers = teams.kodi.members;
}; };
} }

View File

@ -23,6 +23,7 @@ buildKodiBinaryAddon rec {
homepage = "https://github.com/peak3d/inputstream.adaptive"; homepage = "https://github.com/peak3d/inputstream.adaptive";
description = "Kodi inputstream addon for several manifest types"; description = "Kodi inputstream addon for several manifest types";
platforms = platforms.all; platforms = platforms.all;
maintainers = with maintainers; [ sephalon ]; license = licenses.gpl2Only;
maintainers = teams.kodi.members;
}; };
} }

View File

@ -17,5 +17,6 @@ buildKodiAddon rec {
homepage = "https://github.com/emilsvennesson/script.module.inputstreamhelper"; 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"; 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; license = licenses.mit;
maintainers = teams.kodi.members;
}; };
} }

View File

@ -0,0 +1,49 @@
{ lib, addonDir, buildKodiAddon, fetchFromGitHub, kodi, requests, dateutil, six, kodi-six, signals }:
let
python = kodi.pythonPackages.python.withPackages (p: with p; [ pyyaml ]);
in
buildKodiAddon rec {
pname = "jellyfin";
namespace = "plugin.video.jellyfin";
version = "0.7.1";
src = fetchFromGitHub {
owner = "jellyfin";
repo = "jellyfin-kodi";
rev = "v${version}";
sha256 = "0fx20gmd5xlg59ks4433qh2b3jhbs5qrnc49zi4rkqqr4jr4nhnn";
};
nativeBuildInputs = [
python
];
prePatch = ''
substituteInPlace .config/generate_xml.py \
--replace "'jellyfin-kodi/release.yaml'" "'release.yaml'" \
--replace "'jellyfin-kodi/addon.xml'" "'addon.xml'"
'';
buildPhase = ''
${python}/bin/python3 .config/generate_xml.py py3
'';
postInstall = ''
mv /build/source/addon.xml $out${addonDir}/${namespace}/
'';
propagatedBuildInputs = [
requests
dateutil
six
kodi-six
signals
];
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;
};
}

View File

@ -11,11 +11,12 @@ buildKodiBinaryAddon rec {
sha256 = "1dhj4afr9kj938xx70fq5r409mz6lbw4n581ljvdjj9lq7akc914"; sha256 = "1dhj4afr9kj938xx70fq5r409mz6lbw4n581ljvdjj9lq7akc914";
}; };
extraBuildInputs = [ tinyxml udev ];
meta = with lib; { meta = with lib; {
description = "Binary addon for raw joystick input."; description = "Binary addon for raw joystick input.";
platforms = platforms.all; platforms = platforms.all;
maintainers = with maintainers; [ edwtjo ]; license = licenses.gpl2Only;
maintainers = teams.kodi.members;
}; };
extraBuildInputs = [ tinyxml udev ];
} }

View File

@ -0,0 +1,23 @@
{ 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.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;
};
}

View File

@ -17,5 +17,6 @@ buildKodiAddon rec {
homepage = "http://dev.mysql.com/doc/connector-python/en/index.html"; homepage = "http://dev.mysql.com/doc/connector-python/en/index.html";
description = "MySQL Connector/Python"; description = "MySQL Connector/Python";
license = licenses.gpl2Only; license = licenses.gpl2Only;
maintainers = teams.kodi.members;
}; };
} }

View File

@ -1,4 +1,5 @@
{ lib, buildKodiAddon, fetchFromGitHub, signals, inputstreamhelper, requests, myconnpy }: { lib, buildKodiAddon, fetchFromGitHub, signals, inputstream-adaptive, inputstreamhelper, requests, myconnpy }:
buildKodiAddon rec { buildKodiAddon rec {
pname = "netflix"; pname = "netflix";
namespace = "plugin.video.netflix"; namespace = "plugin.video.netflix";
@ -13,6 +14,7 @@ buildKodiAddon rec {
propagatedBuildInputs = [ propagatedBuildInputs = [
signals signals
inputstream-adaptive
inputstreamhelper inputstreamhelper
requests requests
myconnpy myconnpy
@ -22,5 +24,6 @@ buildKodiAddon rec {
homepage = "https://github.com/CastagnaIT/plugin.video.netflix"; homepage = "https://github.com/CastagnaIT/plugin.video.netflix";
description = "Netflix VOD Services Add-on"; description = "Netflix VOD Services Add-on";
license = licenses.mit; license = licenses.mit;
maintainers = teams.kodi.members;
}; };
} }

View File

@ -14,6 +14,7 @@ buildKodiAddon rec {
meta = with lib; { meta = with lib; {
homepage = "https://forum.kodi.tv/showthread.php?tid=187421"; homepage = "https://forum.kodi.tv/showthread.php?tid=187421";
description = "A comic book reader"; description = "A comic book reader";
maintainers = with maintainers; [ edwtjo ]; license = licenses.gpl2Plus;
maintainers = teams.kodi.members;
}; };
} }

View File

@ -11,12 +11,13 @@ buildKodiBinaryAddon rec {
sha256 = "0gbwjssnd319csq2kwlyjj1rskg19m1dxac5dl2dymvx5hn3zrgm"; sha256 = "0gbwjssnd319csq2kwlyjj1rskg19m1dxac5dl2dymvx5hn3zrgm";
}; };
extraBuildInputs = [ jsoncpp libhdhomerun ];
meta = with lib; { meta = with lib; {
homepage = "https://github.com/kodi-pvr/pvr.hdhomerun"; homepage = "https://github.com/kodi-pvr/pvr.hdhomerun";
description = "Kodi's HDHomeRun PVR client addon"; description = "Kodi's HDHomeRun PVR client addon";
platforms = platforms.all; platforms = platforms.all;
maintainers = with maintainers; [ titanous ]; license = licenses.gpl2Only;
maintainers = teams.kodi.members;
}; };
extraBuildInputs = [ jsoncpp libhdhomerun ];
} }

View File

@ -15,7 +15,7 @@ buildKodiBinaryAddon rec {
homepage = "https://github.com/kodi-pvr/pvr.hts"; homepage = "https://github.com/kodi-pvr/pvr.hts";
description = "Kodi's Tvheadend HTSP client addon"; description = "Kodi's Tvheadend HTSP client addon";
platforms = platforms.all; platforms = platforms.all;
maintainers = with maintainers; [ cpages ]; license = licenses.gpl2Only;
maintainers = teams.kodi.members;
}; };
} }

View File

@ -11,12 +11,13 @@ buildKodiBinaryAddon rec {
sha256 = "062i922qi0izkvn7v47yhyy2cf3fa7xc3k95b1gm9abfdwkk8ywr"; sha256 = "062i922qi0izkvn7v47yhyy2cf3fa7xc3k95b1gm9abfdwkk8ywr";
}; };
extraBuildInputs = [ zlib pugixml ];
meta = with lib; { meta = with lib; {
homepage = "https://github.com/kodi-pvr/pvr.iptvsimple"; homepage = "https://github.com/kodi-pvr/pvr.iptvsimple";
description = "Kodi's IPTV Simple client addon"; description = "Kodi's IPTV Simple client addon";
platforms = platforms.all; platforms = platforms.all;
license = licenses.gpl2Plus; license = licenses.gpl2Plus;
maintainers = teams.kodi.members;
}; };
extraBuildInputs = [ zlib pugixml ];
} }

View File

@ -24,5 +24,6 @@ buildKodiAddon rec {
homepage = "http://python-requests.org"; homepage = "http://python-requests.org";
description = "Python HTTP for Humans"; description = "Python HTTP for Humans";
license = licenses.asl20; license = licenses.asl20;
maintainers = teams.kodi.members;
}; };
} }

View File

@ -17,5 +17,6 @@ buildKodiAddon rec {
homepage = "https://github.com/ruuk/script.module.addon.signals"; homepage = "https://github.com/ruuk/script.module.addon.signals";
description = "Provides signal/slot mechanism for inter-addon communication"; description = "Provides signal/slot mechanism for inter-addon communication";
license = licenses.lgpl21Only; license = licenses.lgpl21Only;
maintainers = teams.kodi.members;
}; };
} }

View File

@ -0,0 +1,23 @@
{ lib, buildKodiAddon, fetchzip, addonUpdateScript }:
buildKodiAddon rec {
pname = "six";
namespace = "script.module.six";
version = "1.14.0+matrix.2";
src = fetchzip {
url = "https://mirrors.kodi.tv/addons/matrix/${namespace}/${namespace}-${version}.zip";
sha256 = "1f9g43j4y5x7b1bgbwqqfj0p2bkqjpycj17dj7a9j271mcr5zhwb";
};
passthru.updateScript = addonUpdateScript {
attrPath = "kodi.packages.six";
};
meta = with lib; {
homepage = "https://pypi.org/project/six/";
description = "Python 2 and 3 compatibility utilities";
license = licenses.mit;
maintainers = teams.kodi.members;
};
}

View File

@ -16,7 +16,6 @@ buildKodiBinaryAddon rec {
meta = with lib; { meta = with lib; {
description = "Binary addon for steam controller."; description = "Binary addon for steam controller.";
platforms = platforms.all; platforms = platforms.all;
maintainers = with maintainers; [ edwtjo ]; maintainers = teams.kodi.members;
}; };
} }

View File

@ -23,6 +23,7 @@ buildKodiAddon {
restart/maximise. Running pre/post Steam scripts can be restart/maximise. Running pre/post Steam scripts can be
configured via the addon. configured via the addon.
''; '';
maintainers = with maintainers; [ edwtjo ]; license = licenses.gpl2Only;
maintainers = teams.kodi.members;
}; };
} }

View File

@ -21,6 +21,7 @@ buildKodiAddon rec {
is the preferred video format by the plugin. is the preferred video format by the plugin.
''; '';
platforms = platforms.all; platforms = platforms.all;
maintainers = with maintainers; [ edwtjo ]; license = licenses.gpl3Plus;
maintainers = teams.kodi.members;
}; };
} }

View File

@ -17,5 +17,6 @@ buildKodiAddon rec {
homepage = "https://urllib3.readthedocs.io/en/latest/"; homepage = "https://urllib3.readthedocs.io/en/latest/";
description = "HTTP library with thread-safe connection pooling, file post, and more"; description = "HTTP library with thread-safe connection pooling, file post, and more";
license = licenses.mit; license = licenses.mit;
maintainers = teams.kodi.members;
}; };
} }

View File

@ -11,12 +11,12 @@ buildKodiBinaryAddon rec {
sha256 = "1q62p1i6rvqk2zv6f1cpffkh95lgclys2xl4dwyhj3acmqdxd9i5"; sha256 = "1q62p1i6rvqk2zv6f1cpffkh95lgclys2xl4dwyhj3acmqdxd9i5";
}; };
extraBuildInputs = [ libarchive lzma bzip2 zlib lz4 lzo openssl ];
meta = with lib; { meta = with lib; {
description = "LibArchive Virtual Filesystem add-on for Kodi"; description = "LibArchive Virtual Filesystem add-on for Kodi";
license = licenses.gpl2Plus; license = licenses.gpl2Plus;
platforms = platforms.all; platforms = platforms.all;
maintainers = with maintainers; [ minijackson ]; maintainers = teams.kodi.members;
}; };
extraBuildInputs = [ libarchive lzma bzip2 zlib lz4 lzo openssl ];
} }

View File

@ -11,12 +11,12 @@ buildKodiBinaryAddon rec {
sha256 = "06w74sh8yagrrp7a7rjaz3xrh1j3wdqald9c4b72c33gpk5997dk"; sha256 = "06w74sh8yagrrp7a7rjaz3xrh1j3wdqald9c4b72c33gpk5997dk";
}; };
extraBuildInputs = [ openssl libssh zlib ];
meta = with lib; { meta = with lib; {
description = "SFTP Virtual Filesystem add-on for Kodi"; description = "SFTP Virtual Filesystem add-on for Kodi";
license = licenses.gpl2Plus; license = licenses.gpl2Plus;
platforms = platforms.all; platforms = platforms.all;
maintainers = with maintainers; [ minijackson ]; maintainers = teams.kodi.members;
}; };
extraBuildInputs = [ openssl libssh zlib ];
} }

View File

@ -11,11 +11,15 @@ toKodiAddon (stdenv.mkDerivation ({
extraRuntimeDependencies = [ ]; extraRuntimeDependencies = [ ];
installPhase = '' installPhase = ''
runHook preInstall
cd $src/$sourceDir cd $src/$sourceDir
d=$out${addonDir}/${namespace} d=$out${addonDir}/${namespace}
mkdir -p $d mkdir -p $d
sauce="." sauce="."
[ -d ${namespace} ] && sauce=${namespace} [ -d ${namespace} ] && sauce=${namespace}
cp -R "$sauce/"* $d cp -R "$sauce/"* $d
runHook postInstall
''; '';
} // attrs)) } // attrs))

View File

@ -24,8 +24,12 @@ toKodiAddon (stdenv.mkDerivation ({
# and the non-wrapped kodi lib/... folder before even trying to dlopen # and the non-wrapped kodi lib/... folder before even trying to dlopen
# them. Symlinking .so, as setting LD_LIBRARY_PATH is of no use # them. Symlinking .so, as setting LD_LIBRARY_PATH is of no use
installPhase = let n = namespace; in '' installPhase = let n = namespace; in ''
runHook preInstall
make install make install
ln -s $out/lib/addons/${n}/${n}.so.${version} $out${addonDir}/${n}/${n}.so.${version} ln -s $out/lib/addons/${n}/${n}.so.${version} $out${addonDir}/${n}/${n}.so.${version}
${extraInstallPhase} ${extraInstallPhase}
runHook postInstall
''; '';
} // attrs)) } // attrs))

View File

@ -237,6 +237,6 @@ in stdenv.mkDerivation {
homepage = "https://kodi.tv/"; homepage = "https://kodi.tv/";
license = licenses.gpl2Plus; license = licenses.gpl2Plus;
platforms = platforms.linux; platforms = platforms.linux;
maintainers = with maintainers; [ titanous edwtjo peterhoeg sephalon ]; maintainers = teams.kodi.members;
}; };
} }

View File

@ -2,11 +2,11 @@
buildPythonPackage rec { buildPythonPackage rec {
pname = "avro"; pname = "avro";
version = "1.10.1"; version = "1.10.2";
src = fetchPypi { src = fetchPypi {
inherit pname version; inherit pname version;
sha256 = "b3a405df5aa8654b992d2aca7b80482b858a1919a44dc0b10a682162e8ee340a"; sha256 = "381b990cc4c4444743c3297348ffd46e0c3a5d7a17e15b2f4a9042f6e955c31a";
}; };
patchPhase = '' patchPhase = ''

View File

@ -9,14 +9,14 @@
buildPythonPackage rec { buildPythonPackage rec {
pname = "icmplib"; pname = "icmplib";
version = "2.0.2"; version = "2.1.1";
disabled = pythonOlder "3.6"; disabled = pythonOlder "3.6";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "ValentinBELYN"; owner = "ValentinBELYN";
repo = pname; repo = pname;
rev = "v${version}"; rev = "v${version}";
sha256 = "0djsbksgml2h18w6509w59s88730w1xaxdxzws12alq4m5v4hirr"; sha256 = "06xx9854yzxa7x1mjfzbhhw5rfzgjnw269j5k0rshyqh3qvw1nwv";
}; };
propagatedBuildInputs = [ propagatedBuildInputs = [

View File

@ -10,12 +10,12 @@
buildPythonPackage rec { buildPythonPackage rec {
pname = "jupyterlab"; pname = "jupyterlab";
version = "3.0.11"; version = "3.0.12";
disabled = pythonOlder "3.5"; disabled = pythonOlder "3.5";
src = fetchPypi { src = fetchPypi {
inherit pname version; inherit pname version;
sha256 = "sha256-zkz08xFjzlGu0BPAGoV8BdQ6k8Ru1pAWbkhkT255R94="; sha256 = "929c60d7fb4aa704084c02d8ededc209b8b378e0b3adab46158b7fa6acc24230";
}; };
propagatedBuildInputs = [ jupyterlab_server notebook jupyter-packaging nbclassic ]; propagatedBuildInputs = [ jupyterlab_server notebook jupyter-packaging nbclassic ];

View File

@ -66,6 +66,8 @@ let self = rec {
snes = callPackage ../applications/video/kodi-packages/controllers { controller = "snes"; }; snes = callPackage ../applications/video/kodi-packages/controllers { controller = "snes"; };
}; };
jellyfin = callPackage ../applications/video/kodi-packages/jellyfin { };
joystick = callPackage ../applications/video/kodi-packages/joystick { }; joystick = callPackage ../applications/video/kodi-packages/joystick { };
netflix = callPackage ../applications/video/kodi-packages/netflix { }; netflix = callPackage ../applications/video/kodi-packages/netflix { };
@ -96,18 +98,24 @@ let self = rec {
chardet = callPackage ../applications/video/kodi-packages/chardet { }; chardet = callPackage ../applications/video/kodi-packages/chardet { };
dateutil = callPackage ../applications/video/kodi-packages/dateutil { };
idna = callPackage ../applications/video/kodi-packages/idna { }; idna = callPackage ../applications/video/kodi-packages/idna { };
inputstream-adaptive = callPackage ../applications/video/kodi-packages/inputstream-adaptive { }; inputstream-adaptive = callPackage ../applications/video/kodi-packages/inputstream-adaptive { };
inputstreamhelper = callPackage ../applications/video/kodi-packages/inputstreamhelper { }; inputstreamhelper = callPackage ../applications/video/kodi-packages/inputstreamhelper { };
kodi-six = callPackage ../applications/video/kodi-packages/kodi-six { };
myconnpy = callPackage ../applications/video/kodi-packages/myconnpy { }; myconnpy = callPackage ../applications/video/kodi-packages/myconnpy { };
requests = callPackage ../applications/video/kodi-packages/requests { }; requests = callPackage ../applications/video/kodi-packages/requests { };
signals = callPackage ../applications/video/kodi-packages/signals { }; signals = callPackage ../applications/video/kodi-packages/signals { };
six = callPackage ../applications/video/kodi-packages/six { };
urllib3 = callPackage ../applications/video/kodi-packages/urllib3 { }; urllib3 = callPackage ../applications/video/kodi-packages/urllib3 { };
}; in self }; in self