diff --git a/pkgs/applications/video/kodi-packages/addon-update-script/default.nix b/pkgs/applications/video/kodi-packages/addon-update-script/default.nix new file mode 100644 index 00000000000..17c1d45783f --- /dev/null +++ b/pkgs/applications/video/kodi-packages/addon-update-script/default.nix @@ -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 ] diff --git a/pkgs/applications/video/kodi-packages/certifi/default.nix b/pkgs/applications/video/kodi-packages/certifi/default.nix index b27e612d86d..bfce47b7b2c 100644 --- a/pkgs/applications/video/kodi-packages/certifi/default.nix +++ b/pkgs/applications/video/kodi-packages/certifi/default.nix @@ -1,4 +1,4 @@ -{ lib, buildKodiAddon, fetchzip }: +{ lib, buildKodiAddon, fetchzip, addonUpdateScript }: buildKodiAddon rec { pname = "certifi"; namespace = "script.module.certifi"; @@ -9,6 +9,10 @@ buildKodiAddon rec { sha256 = "0vsd68izv1ix0hb1gm74qq3zff0sxmhfhjyh7y9005zzp2gpi62v"; }; + passthru.updateScript = addonUpdateScript { + attrPath = "kodi.packages.certifi"; + }; + meta = with lib; { homepage = "https://certifi.io"; description = "Python package for providing Mozilla's CA Bundle"; diff --git a/pkgs/applications/video/kodi-packages/chardet/default.nix b/pkgs/applications/video/kodi-packages/chardet/default.nix index 02ea0f54d52..1e37f6b46e2 100644 --- a/pkgs/applications/video/kodi-packages/chardet/default.nix +++ b/pkgs/applications/video/kodi-packages/chardet/default.nix @@ -1,4 +1,4 @@ -{ lib, buildKodiAddon, fetchzip }: +{ lib, buildKodiAddon, fetchzip, addonUpdateScript }: buildKodiAddon rec { pname = "chardet"; namespace = "script.module.chardet"; @@ -9,6 +9,10 @@ buildKodiAddon rec { sha256 = "05928dj4fsj2zg8ajdial3sdf8izddq64sr0al3zy1gqw91jp80f"; }; + passthru.updateScript = addonUpdateScript { + attrPath = "kodi.packages.chardet"; + }; + meta = with lib; { homepage = "https://github.com/Freso/script.module.chardet"; description = "Universal encoding detector"; diff --git a/pkgs/applications/video/kodi-packages/idna/default.nix b/pkgs/applications/video/kodi-packages/idna/default.nix index 96d317830fd..abe5635e828 100644 --- a/pkgs/applications/video/kodi-packages/idna/default.nix +++ b/pkgs/applications/video/kodi-packages/idna/default.nix @@ -1,4 +1,4 @@ -{ lib, buildKodiAddon, fetchzip }: +{ lib, buildKodiAddon, fetchzip, addonUpdateScript }: buildKodiAddon rec { pname = "idna"; namespace = "script.module.idna"; @@ -9,6 +9,10 @@ buildKodiAddon rec { sha256 = "02s75fhfmbs3a38wvxba51aj3lv5bidshjdkl6yjfji6waxpr9xh"; }; + passthru.updateScript = addonUpdateScript { + attrPath = "kodi.packages.idna"; + }; + meta = with lib; { homepage = "https://github.com/Freso/script.module.idna"; description = "Internationalized Domain Names for Python"; diff --git a/pkgs/applications/video/kodi-packages/inputstreamhelper/default.nix b/pkgs/applications/video/kodi-packages/inputstreamhelper/default.nix index 3ccfdd1eb0d..2bbcc6d9d2c 100644 --- a/pkgs/applications/video/kodi-packages/inputstreamhelper/default.nix +++ b/pkgs/applications/video/kodi-packages/inputstreamhelper/default.nix @@ -1,4 +1,4 @@ -{ lib, buildKodiAddon, fetchzip }: +{ lib, buildKodiAddon, fetchzip, addonUpdateScript }: buildKodiAddon rec { pname = "inputstreamhelper"; namespace = "script.module.inputstreamhelper"; @@ -9,6 +9,10 @@ buildKodiAddon rec { sha256 = "18lkksljfa57w69yklbldf7dgyykrm84pd10mdjdqdm88fdiiijk"; }; + passthru.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"; diff --git a/pkgs/applications/video/kodi-packages/myconnpy/default.nix b/pkgs/applications/video/kodi-packages/myconnpy/default.nix index 38624612209..a1b25576524 100644 --- a/pkgs/applications/video/kodi-packages/myconnpy/default.nix +++ b/pkgs/applications/video/kodi-packages/myconnpy/default.nix @@ -1,4 +1,4 @@ -{ lib, buildKodiAddon, fetchzip }: +{ lib, buildKodiAddon, fetchzip, addonUpdateScript }: buildKodiAddon rec { pname = "myconnpy"; namespace = "script.module.myconnpy"; @@ -9,6 +9,10 @@ buildKodiAddon rec { sha256 = "1cx3qdzw9lkkmbyvyrmc2i193is20fihn2sfl7kmv43f708vam0k"; }; + passthru.updateScript = addonUpdateScript { + attrPath = "kodi.packages.myconnpy"; + }; + meta = with lib; { homepage = "http://dev.mysql.com/doc/connector-python/en/index.html"; description = "MySQL Connector/Python"; diff --git a/pkgs/applications/video/kodi-packages/requests/default.nix b/pkgs/applications/video/kodi-packages/requests/default.nix index 73fa20f47fb..05288b74b6c 100644 --- a/pkgs/applications/video/kodi-packages/requests/default.nix +++ b/pkgs/applications/video/kodi-packages/requests/default.nix @@ -1,4 +1,4 @@ -{ lib, buildKodiAddon, fetchzip, certifi, chardet, idna, urllib3 }: +{ lib, buildKodiAddon, fetchzip, addonUpdateScript, certifi, chardet, idna, urllib3 }: buildKodiAddon rec { pname = "requests"; namespace = "script.module.requests"; @@ -16,6 +16,10 @@ buildKodiAddon rec { urllib3 ]; + passthru.updateScript = addonUpdateScript { + attrPath = "kodi.packages.requests"; + }; + meta = with lib; { homepage = "http://python-requests.org"; description = "Python HTTP for Humans"; diff --git a/pkgs/applications/video/kodi-packages/signals/default.nix b/pkgs/applications/video/kodi-packages/signals/default.nix index 5ade48aa813..9d49e632721 100644 --- a/pkgs/applications/video/kodi-packages/signals/default.nix +++ b/pkgs/applications/video/kodi-packages/signals/default.nix @@ -1,4 +1,4 @@ -{ lib, buildKodiAddon, fetchzip }: +{ lib, buildKodiAddon, fetchzip, addonUpdateScript }: buildKodiAddon rec { pname = "signals"; namespace = "script.module.addon.signals"; @@ -9,6 +9,10 @@ buildKodiAddon rec { sha256 = "1qcjbakch8hvx02wc01zv014nmzgn6ahc4n2bj5mzr114ppd3hjs"; }; + passthru.updateScript = addonUpdateScript { + attrPath = "kodi.packages.signals"; + }; + meta = with lib; { homepage = "https://github.com/ruuk/script.module.addon.signals"; description = "Provides signal/slot mechanism for inter-addon communication"; diff --git a/pkgs/applications/video/kodi-packages/urllib3/default.nix b/pkgs/applications/video/kodi-packages/urllib3/default.nix index 5d54aa6ea03..e8146987913 100644 --- a/pkgs/applications/video/kodi-packages/urllib3/default.nix +++ b/pkgs/applications/video/kodi-packages/urllib3/default.nix @@ -1,4 +1,4 @@ -{ lib, buildKodiAddon, fetchzip }: +{ lib, buildKodiAddon, fetchzip, addonUpdateScript }: buildKodiAddon rec { pname = "urllib3"; namespace = "script.module.urllib3"; @@ -9,6 +9,10 @@ buildKodiAddon rec { sha256 = "080yq8ns0sag6rmdag1hjwi0whcmp35wzqjp3by92m81cpszs75q"; }; + passthru.updateScript = addonUpdateScript { + attrPath = "kodi.packages.urllib3"; + }; + meta = with lib; { homepage = "https://urllib3.readthedocs.io/en/latest/"; description = "HTTP library with thread-safe connection pooling, file post, and more"; diff --git a/pkgs/top-level/kodi-packages.nix b/pkgs/top-level/kodi-packages.nix index 0ff32f38217..f9b20dd2bc7 100644 --- a/pkgs/top-level/kodi-packages.nix +++ b/pkgs/top-level/kodi-packages.nix @@ -30,6 +30,10 @@ let self = rec { in unique (modules ++ concatLists (catAttrs "requiredKodiAddons" modules)); + # package update scripts + + addonUpdateScript = callPackage ../applications/video/kodi-packages/addon-update-script { }; + # package builders buildKodiAddon = callPackage ../applications/video/kodi/build-kodi-addon.nix { };