forked from deepState/trivionomicon
63 lines
2.1 KiB
Nix
63 lines
2.1 KiB
Nix
{
|
|
buildFHSEnv,
|
|
curl,
|
|
lib,
|
|
writeShellScriptBin,
|
|
gaudiHash ? null,
|
|
unwrapped,
|
|
}: let
|
|
unwrappedWithGaudi = unwrapped.override {inherit gaudiHash;};
|
|
in
|
|
buildFHSEnv {
|
|
name = "gaudi";
|
|
|
|
targetPkgs = pkgs: [
|
|
unwrappedWithGaudi.ase-idprotect.lib
|
|
unwrappedWithGaudi.gaudi
|
|
|
|
(writeShellScriptBin "launch-gaudi" ''
|
|
set -o errexit
|
|
set -o pipefail
|
|
set -o nounset
|
|
|
|
PATH="${lib.makeBinPath [curl]}:$PATH"
|
|
|
|
echo "$0: testing for incompatible releases..." >&2
|
|
|
|
jar_name=bccr-firma-fva-clienteMultiplataforma.jar
|
|
url="https://www.firmadigital.go.cr/Bccr.Firma.Fva.Actualizador.ClienteFirmadorJava//recursosLiberica17/actualizador/$jar_name"
|
|
ca_file="${unwrappedWithGaudi.bccr-cacerts}/root-ca.pem"
|
|
url_hash=$(curl -sS --cacert "$ca_file" "$url" | sha256sum | cut -d' ' -f1)
|
|
jar_path="${unwrappedWithGaudi.gaudi}/share/java/$jar_name"
|
|
jar_hash=$(sha256sum "$jar_path" | cut -d' ' -f1)
|
|
|
|
if [ "$url_hash" != "$jar_hash" ]; then
|
|
last_modified=$(curl -sS --head --cacert "$ca_file" "$url" | grep -i '^last-modified:' | head -1)
|
|
|
|
echo "$0: sha256 mismatch for $jar_path due to server-side update" >&2
|
|
echo "$0: expected: $url_hash" >&2
|
|
echo "$0: actual: $jar_hash" >&2
|
|
echo "$0: $last_modified" >&2
|
|
echo "$0: run the following to download the new client JAR, then update your derivation:" >&2
|
|
echo "$0: \$ ${unwrappedWithGaudi.update-gaudi}" >&2
|
|
|
|
exit 1
|
|
fi
|
|
|
|
cache_path_1="''${XDG_CACHE_HOME:-$HOME/.cache}/Agente-GAUDI"
|
|
cache_path_2="''${XDG_CACHE_HOME:-$HOME/.cache}/Firmador-BCCR"
|
|
|
|
for cache_path in "$cache_path_1" "$cache_path_2"; do
|
|
mkdir -p "$cache_path"
|
|
ln -sf -- ${unwrappedWithGaudi.gaudi}/share/java/bccr-firma-fva-clienteMultiplataforma.jar "$cache_path"
|
|
done
|
|
|
|
cp -f --no-preserve=mode -t "$cache_path_1" -- "${unwrappedWithGaudi.gaudi}/share/java/config.properties"
|
|
|
|
exec gaudi
|
|
'')
|
|
];
|
|
|
|
runScript = "launch-gaudi";
|
|
}
|