diff options
Diffstat (limited to 'trivionomicon/pkgs/athena-bccr/gaudi-env.nix')
| -rw-r--r-- | trivionomicon/pkgs/athena-bccr/gaudi-env.nix | 62 |
1 files changed, 62 insertions, 0 deletions
diff --git a/trivionomicon/pkgs/athena-bccr/gaudi-env.nix b/trivionomicon/pkgs/athena-bccr/gaudi-env.nix new file mode 100644 index 0000000..db79641 --- /dev/null +++ b/trivionomicon/pkgs/athena-bccr/gaudi-env.nix @@ -0,0 +1,62 @@ +{ + buildFHSEnv, + curl, + lib, + writeShellScriptBin, + gaudiHash ? null, + unwrapped, +}: let + unwrappedWithGaudi = unwrapped.override {inherit gaudiHash;}; +in + buildFHSEnv { + name = "gaudi"; + + targetPkgs = pkgs: [ + unwrappedWithGaudi.card-driver.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"; + } |
