summaryrefslogtreecommitdiff
path: root/trivionomicon/pkgs/athena-bccr/gaudi-env.nix
diff options
context:
space:
mode:
Diffstat (limited to 'trivionomicon/pkgs/athena-bccr/gaudi-env.nix')
-rw-r--r--trivionomicon/pkgs/athena-bccr/gaudi-env.nix62
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";
+ }