This commit is contained in:
Fabian Montero 2026-03-24 22:47:54 -06:00
commit f586e8afae
Signed by: fabian
GPG key ID: 3EDA9AE3937CCDE3
9 changed files with 290 additions and 70 deletions

View file

@ -1,26 +1,41 @@
{
fetchurl,
lib,
mirror ? null,
requireFile,
release,
gaudiHash ? null,
vendor,
...
}: let
inherit (release) srcPaths vendor;
inherit (release) srcPaths;
src = requireFile {
url = "https://soportefirmadigital.com";
url =
if mirror != null
then "${mirror}/${release.filename}"
else "https://soportefirmadigital.com";
fetchSrc =
if mirror != null
then fetchurl
else requireFile;
src = fetchSrc {
name = release.filename;
inherit url;
inherit (release) hash;
};
gaudiUpdateSrc = {update-gaudi}:
requireFile {
url = "${update-gaudi}";
name = "gaudi-update-${release.name}.zip";
hash = gaudiHash;
};
gaudiUpdateSrc = {
update-gaudi,
runCommand,
}:
runCommand "gaudi-update-${release.name}.zip" {
outputHash = gaudiHash;
} ''
${update-gaudi} $out
'';
moduleFromDeb = name: args @ {
stdenv,
@ -102,6 +117,7 @@
libnotify,
openssl,
pcsclite,
python3,
stdenv,
unzip,
webkitgtk_4_1,
@ -124,6 +140,7 @@
nativeBuildInputs = [
autoPatchelfHook
python3
];
outputs = ["out" "lib"];
@ -132,15 +149,35 @@
runHook preInstall
install -m755 -d $out/bin $lib/{etc,lib/SCMiddleware}
install -m755 usr/lib/SCMiddleware/{idocachesrv,SCManager} $out/bin
install -m755 usr/lib/SCMiddleware/*.so $lib/lib/SCMiddleware
install -m755 usr/lib/SCMiddleware/SCManager $out/bin
install -m755 usr/lib/SCMiddleware/{*.so,idocachesrv} $lib/lib/SCMiddleware
cp -r etc/id* $lib/etc
ln -s ../lib/SCMiddleware $lib/etc
runHook postInstall
'';
preFixup = ''
patchelf --set-rpath $lib/lib/SCMiddleware $lib/lib/SCMiddleware/* $out/bin/*
for elf in $lib/lib/SCMiddleware/* $out/bin/*; do
python3 /dev/fd/3 <$elf >$elf.patched 3<<EOF
import sys
contents = sys.stdin.buffer.read()
def bin_replace(s, a, b):
assert len(a) >= len(b)
return s.replace(a, b + b'\0' * (len(a) - len(b)))
contents = bin_replace(contents, b'/usr/lib/SCMiddleware', b'/etc/SCMiddleware')
contents = bin_replace(contents, b'/tmp/.idoss_socket', b'/run/idoss/socket')
sys.stdout.buffer.write(contents)
EOF
chmod --reference=$elf $elf.patched
mv $elf.patched $elf
patchelf --set-rpath $lib/lib/SCMiddleware $elf
done
'';
passthru.pkcs11-path = "lib/SCMiddleware/libidop11.so";
@ -155,6 +192,7 @@ in
pkgs,
stdenv,
unzip,
runCommand,
writeShellScriptBin,
update-gaudi,
...
@ -165,7 +203,7 @@ in
};
fakeSudo = writeShellScriptBin "sudo" "";
gaudiUpdate = gaudiUpdateSrc {inherit update-gaudi;};
gaudiUpdate = gaudiUpdateSrc {inherit runCommand update-gaudi;};
in
moduleFromDeb "gaudi" {
inherit dpkg stdenv unzip;
@ -267,17 +305,20 @@ in
wget --ca-certificate="$ca_cert" "$base_url/bccr-firma-fva-clienteMultiplataforma.jar"
wget --ca-certificate="$ca_cert" "$base_url/ServicioActualizadorClienteBCCR.jar"
if [ -n "$1" ]; then
zip_path="$1"
else
zip_path="$PWD/gaudi-update-${release.name}.zip"
fi
# https://gist.github.com/stokito/c588b8d6a6a0aee211393d68eea678f2
TZ=UTC find . -exec touch --no-dereference -a -m -t 198002010000.00 {} +
zip_path="$PWD/gaudi-update-${release.name}.zip"
TZ=UTC zip -q --move --recurse-paths --symlinks -X "$zip_path" .
TZ=UTC touch -a -m -t 198002010000.00 "$zip_path"
set -x
nix-store --add-fixed sha256 "$zip_path"
set +x
echo -e "\ngaudiHash: $(nix-hash --to-sri --type sha256 $(sha256sum "$zip_path" | cut -d' ' -f1))"
if [ -z "$1" ]; then
echo -e "\ngaudiHash: $(nix-hash --to-sri --type sha256 $(sha256sum "$zip_path" | cut -d' ' -f1))"
fi
'';
}
// lib.optionalAttrs (vendor == "athena") {