summaryrefslogtreecommitdiff
path: root/trivionomicon/pkgs/athena-bccr/gaudi-env.nix
diff options
context:
space:
mode:
authorAlejandro Soto <alejandro@34project.org>2025-08-24 15:48:29 -0600
committerAlejandro Soto <alejandro@34project.org>2025-08-24 15:48:29 -0600
commitecab16d635554150627403675642d5603ef64cc6 (patch)
treef94619061973fc0a5fd6097e27e80a5dde627fda /trivionomicon/pkgs/athena-bccr/gaudi-env.nix
parent0e11a692f223b268ca0d208b0ebf48c80caddfb6 (diff)
parent53a923158861a9c52b86f37d826c3f4637476dfa (diff)
Add 'trivionomicon/' from commit 'c651b8c4706cfc750303db12ae19e58164a6bebb'
git-subtree-dir: trivionomicon git-subtree-mainline: 02d3ab9583983e823909020c34b9d5a6894fb773 git-subtree-split: c651b8c4706cfc750303db12ae19e58164a6bebb
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..0ca1b82
--- /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.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";
+ }