nixpkgs/pkgs/build-support/fetchnextcloudapp/default.nix
Maximilian Bosch 3ca9b9a8ad
fetchNextcloudApp: rewrite with fetchzip & applyPatches
There are the following issues with the current implementation:

* `fetchurl` with a tarball from GitHub appears to break occasionally
  because the tarballs are not necessarily reproducible. Because of
  that, `fetchFromGitHub` unpacks the tarball already because the
  contents are actually reproducible in contrast to the tarball. To have
  the same behavior here, we use `fetchzip` now (and `applyPatches` on
  top to apply additional patches if needed).

* Fixes the way how patches are applied. Previously, when having patches
  for a git checkout of the app, these wouldn't apply because the
  `appname-version` prefix is missing.

* Because all old hashes are broken with this, I added an evaluation
  check that breaks evaluation when using the old API (i.e. with
  `name`/`version` which are not needed anymore).
2022-09-26 20:32:33 +02:00

28 lines
589 B
Nix

{ stdenv, fetchzip, applyPatches, ... }:
{ url
, sha256
, patches ? [ ]
, name ? null
, version ? null
}:
if name != null || version != null then throw ''
`pkgs.fetchNextcloudApp` has been changed to use `fetchzip`.
To update, please
* remove `name`/`version`
* update the hash
''
else applyPatches {
inherit patches;
src = fetchzip {
inherit url sha256;
postFetch = ''
pushd $out &>/dev/null
if [ ! -f ./appinfo/info.xml ]; then
echo "appinfo/info.xml doesn't exist in $out, aborting!"
exit 1
fi
popd &>/dev/null
'';
};
}