{ stdenv, fetchurl, lib, }: { version, src, ... }: let artifacts = lib.mapAttrs (version: hash: rec { file = fetchurl { inherit url hash; }; url = if lib.versionOlder version "v4_6_1" then "https://storage.googleapis.com/simon-public-euw3/assets/sqlcipher/${version}.c" else "https://fsn1.your-objectstorage.com/simon-public/assets/sqlcipher/${version}.c"; }) { v4_8_0 = "sha256-nfYmi9PJlMbLqiFRksOIUXYHgD8LL2AVey9GCUc03Jw="; v4_6_1 = "sha256-8kBJiy8g1odpBQQUF5A7f9g3+WStbJTARyfvAi84YVE="; v4_5_7 = "sha256-lDgSEVGZcoruF7nAp0C2kr6TN7XllpMzMVi/R1XfGP4="; v4_5_6 = "sha256-evZl3JUeyAfW0fGJ0EfFQs64Z/yRCZGeOeDGgXrFHFU="; }; in stdenv.mkDerivation rec { pname = "sqlcipher_flutter_libs"; inherit version src; inherit (src) passthru; installPhase = '' runHook preInstall cp -r "$src" "$out" _replace() { # --replace-fail messes with the file if it fails (is empty afterwards) so we do this instead if cat "$out/linux/CMakeLists.txt" | grep "$1" >/dev/null 2>/dev/null; then substituteInPlace "$out/linux/CMakeLists.txt" --replace "$1" "file://$2" else return 2 fi } ${lib.concatMapAttrsStringSep " || " (_: v: ''_replace "${v.url}" "${v.file}"'') artifacts} || \ (echo "unknown version of sqlcipher, please add to pkgs/development/compilers/dart/package-source-builders/sqlcipher_flutter_libs" && cat linux/CMakeLists.txt | grep "https://storage.*" -o && exit 2) runHook postInstall ''; meta.sourceProvenance = [ lib.sourceTypes.binaryBytecode ]; }