{ fetchurl, fetchzip, applyPatches, lib, ... }: { url, hash ? "", sha256 ? "", appName ? null, appVersion ? null, license, patches ? [ ], description ? null, homepage ? null, unpack ? false, # whether to use fetchzip rather than fetchurl }: applyPatches ( { inherit patches; src = (if unpack then fetchzip else fetchurl) { inherit url hash sha256; meta = { license = lib.licenses.${license}; longDescription = description; inherit homepage; } // lib.optionalAttrs (description != null) { longDescription = description; } // lib.optionalAttrs (homepage != null) { inherit homepage; }; }; prePatch = '' if [ ! -f ./appinfo/info.xml ]; then echo "appinfo/info.xml doesn't exist in $out, aborting!" exit 1 fi ''; } // lib.optionalAttrs (appName != null && appVersion != null) { name = "nextcloud-app-${appName}-${appVersion}"; } )