{ stdenvNoCC, fetchzip, lib, kobo-utils, gawk, ... }: { hardware, date, version, hash ? "", ... }: stdenvNoCC.mkDerivation (finalAttrs: { pname = "kobo-firmware"; inherit version hardware date; src = fetchzip { url = "https://ereaderfiles.kobo.com/firmwares/${finalAttrs.hardware}/${finalAttrs.date}/kobo-update-${finalAttrs.version}.zip"; stripRoot = false; inherit hash; }; nativeBuildInputs = [ kobo-utils gawk ]; # outputs = [ # "out" # "KoboRoot" # ]; phases = [ "checkPhase" "installPhase" ]; doCheck = true; checkPhase = '' KOBOVERSION="$(kobo-versionextract "$src/KoboRoot.tgz" | awk '{if ($1 == "Version:") print $2}')" if [[ ! "$KOBOVERSION" == "${finalAttrs.version}" ]]; then >&2 echo "Expected version ${finalAttrs.version}, but actual firmware is version $KOBOVERSION" exit 1 fi ''; installPhase = '' runHook preInstall cp -rv $src $out # rsync -av --links --exclude="KoboRoot.tgz" $src/ $out # mkdir $KoboRoot # tar xvzf $src/KoboRoot.tgz --directory=$KoboRoot runHook postInstall ''; passthru = { inherit hardware date; }; meta = with lib; { homepage = "https://pgaskin.net/KoboStuff/kobofirmware.html"; description = '' Kobo firmware files. ''; platform = platforms.all; # outputsToInstall = finalAttrs.outputs; }; })