1 { config, lib, newScope, kodi, libretro }:
6 inherit (libretro) genesis-plus-gx mgba snes9x;
11 addonDir = "/share/kodi/addons";
14 callPackage = newScope self;
18 # Convert derivation to a kodi module. Stolen from ../../../top-level/python-packages.nix
19 toKodiAddon = drv: drv.overrideAttrs (oldAttrs: {
20 # Use passthru in order to prevent rebuilds when possible.
21 passthru = (oldAttrs.passthru or {}) // {
23 requiredKodiAddons = requiredKodiAddons drv.propagatedBuildInputs;
27 # Check whether a derivation provides a Kodi addon.
28 hasKodiAddon = drv: drv ? kodiAddonFor && drv.kodiAddonFor == kodi;
30 # Get list of required Kodi addons given a list of derivations.
31 requiredKodiAddons = drvs:
33 modules = filter hasKodiAddon drvs;
35 unique (modules ++ concatLists (catAttrs "requiredKodiAddons" modules));
37 # package update scripts
39 addonUpdateScript = callPackage ../applications/video/kodi/addons/addon-update-script { };
43 buildKodiAddon = callPackage ../applications/video/kodi/build-kodi-addon.nix { };
45 buildKodiBinaryAddon = callPackage ../applications/video/kodi/build-kodi-binary-addon.nix { };
49 kodi-platform = callPackage ../applications/video/kodi/addons/kodi-platform { };
53 a4ksubtitles = callPackage ../applications/video/kodi/addons/a4ksubtitles { };
55 arteplussept = callPackage ../applications/video/kodi/addons/arteplussept { };
57 controller-topology-project = callPackage ../applications/video/kodi/addons/controller-topology-project { };
59 iagl = callPackage ../applications/video/kodi/addons/iagl { };
61 invidious = callPackage ../applications/video/kodi/addons/invidious { };
63 libretro = callPackage ../applications/video/kodi/addons/libretro { };
65 libretro-genplus = callPackage ../applications/video/kodi/addons/libretro-genplus { inherit genesis-plus-gx; };
67 libretro-mgba = callPackage ../applications/video/kodi/addons/libretro-mgba { inherit mgba; };
69 libretro-snes9x = callPackage ../applications/video/kodi/addons/libretro-snes9x { inherit snes9x; };
71 jellyfin = callPackage ../applications/video/kodi/addons/jellyfin { };
73 joystick = callPackage ../applications/video/kodi/addons/joystick { };
75 keymap = callPackage ../applications/video/kodi/addons/keymap { };
77 netflix = callPackage ../applications/video/kodi/addons/netflix { };
79 orftvthek = callPackage ../applications/video/kodi/addons/orftvthek { };
81 svtplay = callPackage ../applications/video/kodi/addons/svtplay { };
83 steam-controller = callPackage ../applications/video/kodi/addons/steam-controller { };
85 steam-launcher = callPackage ../applications/video/kodi/addons/steam-launcher { };
87 steam-library = callPackage ../applications/video/kodi/addons/steam-library { };
89 pdfreader = callPackage ../applications/video/kodi/addons/pdfreader { };
91 pvr-hts = callPackage ../applications/video/kodi/addons/pvr-hts { };
93 pvr-hdhomerun = callPackage ../applications/video/kodi/addons/pvr-hdhomerun { };
95 pvr-iptvsimple = callPackage ../applications/video/kodi/addons/pvr-iptvsimple { };
97 osmc-skin = callPackage ../applications/video/kodi/addons/osmc-skin { };
99 vfs-sftp = callPackage ../applications/video/kodi/addons/vfs-sftp { };
101 vfs-libarchive = callPackage ../applications/video/kodi/addons/vfs-libarchive { };
103 visualization-waveform = callPackage ../applications/video/kodi/addons/visualization-waveform { };
105 youtube = callPackage ../applications/video/kodi/addons/youtube { };
107 # addon packages (dependencies)
109 archive_tool = callPackage ../applications/video/kodi/addons/archive_tool { };
111 certifi = callPackage ../applications/video/kodi/addons/certifi { };
113 chardet = callPackage ../applications/video/kodi/addons/chardet { };
115 dateutil = callPackage ../applications/video/kodi/addons/dateutil { };
117 defusedxml = callPackage ../applications/video/kodi/addons/defusedxml { };
119 future = callPackage ../applications/video/kodi/addons/future { };
121 idna = callPackage ../applications/video/kodi/addons/idna { };
123 inputstream-adaptive = callPackage ../applications/video/kodi/addons/inputstream-adaptive { };
125 inputstream-ffmpegdirect = callPackage ../applications/video/kodi/addons/inputstream-ffmpegdirect { };
127 inputstream-rtmp = callPackage ../applications/video/kodi/addons/inputstream-rtmp { };
129 inputstreamhelper = callPackage ../applications/video/kodi/addons/inputstreamhelper { };
131 kodi-six = callPackage ../applications/video/kodi/addons/kodi-six { };
133 myconnpy = callPackage ../applications/video/kodi/addons/myconnpy { };
135 requests = callPackage ../applications/video/kodi/addons/requests { };
137 requests-cache = callPackage ../applications/video/kodi/addons/requests-cache { };
139 routing = callPackage ../applications/video/kodi/addons/routing { };
141 signals = callPackage ../applications/video/kodi/addons/signals { };
143 simplejson = callPackage ../applications/video/kodi/addons/simplejson { };
145 six = callPackage ../applications/video/kodi/addons/six { };
147 urllib3 = callPackage ../applications/video/kodi/addons/urllib3 { };
149 websocket = callPackage ../applications/video/kodi/addons/websocket { };
151 xbmcswift2 = callPackage ../applications/video/kodi/addons/xbmcswift2 { };
153 typing_extensions = callPackage ../applications/video/kodi/addons/typing_extensions { };
155 arrow = callPackage ../applications/video/kodi/addons/arrow { };
157 trakt-module = callPackage ../applications/video/kodi/addons/trakt-module { };
159 trakt = callPackage ../applications/video/kodi/addons/trakt { };
160 }; in self // lib.optionalAttrs config.allowAliases {
161 # deprecated or renamed packages
163 controllers = throw "kodi.packages.controllers has been replaced with kodi.packages.controller-topology-project - a package which contains a large number of controller profiles." { };