{ stdenv, fetchurl, lib, unzip, }: with builtins; with lib; let themes = lists.init (splitString "\n" (readFile ./themes)); in listToAttrs (map (name: { inherit name; value = let source = importJSON ./${name}.json; in stdenv.mkDerivation { inherit (source) pname version; src = fetchurl { inherit (source) url sha256; }; nativeBuildInputs = [unzip]; unpackPhase = '' unzip $src ''; installPhase = "mkdir -p $out; cp -R $pname/* $out/"; meta = {inherit (source) description;}; passthru.updateScript = if name == "activitypub" then ./update.sh else []; }; }) themes)