trivionomicon: athena-bccr: separate releases by vendor, add 'vendor' option

This commit is contained in:
Alejandro Soto 2026-03-10 20:03:02 -06:00
parent a74fc0c70e
commit aac5bbeb91
7 changed files with 70 additions and 63 deletions

View file

@ -5,12 +5,11 @@
doctrine, doctrine,
... ...
}: let }: let
athena = releases = pkgs.${doctrine.prefix}.athena-bccr.override {
(pkgs.${doctrine.prefix}.athena-bccr.override { inherit (cfg) mirror vendor;
inherit (cfg) mirror; };
}).${
cfg.release athena = releases.${cfg.release};
};
in { in {
home.packages = [ home.packages = [
athena.firmador athena.firmador

View file

@ -1,42 +1,40 @@
{lib, ...}: {lib, ...}:
with lib.types; { with lib.types; let
mirror = lib.mkOption {
type = nullOr str;
default = null;
description = "release zip mirror base URL, if null then the release zip must be manually added to the Nix store";
};
release = lib.mkOption {
type = str;
default = "latest";
description = "pinned athena-bccr release tag";
};
vendor = lib.mkOption {
type = enum ["athena" "idopte"];
default = "idopte";
description = "driver dvendor";
};
in {
hm = { hm = {
inherit mirror release vendor;
gaudiHash = lib.mkOption { gaudiHash = lib.mkOption {
type = nullOr str; type = nullOr str;
default = null; default = null;
description = "hash of the Gaudi client"; description = "hash of the Gaudi client";
}; };
mirror = lib.mkOption {
type = nullOr str;
default = null;
description = "release zip mirror base URL, if null then the release zip must be manually added to the Nix store";
};
release = lib.mkOption {
type = str;
default = "latest";
description = "pinned athena-bccr release tag";
};
}; };
sys = { sys = {
inherit mirror release vendor;
group = lib.mkOption { group = lib.mkOption {
type = str; type = str;
default = "users"; default = "users";
description = "user group with full access to the smartcard reader"; description = "user group with full access to the smartcard reader";
}; };
mirror = lib.mkOption {
type = nullOr str;
default = null;
description = "release zip mirror base URL, if null then the release zip must be manually added to the Nix store";
};
release = lib.mkOption {
type = str;
default = "latest";
description = "pinned athena-bccr release tag";
};
}; };
} }

View file

@ -6,17 +6,15 @@
doctrine, doctrine,
... ...
}: let }: let
athena = releases = pkgs.${doctrine.prefix}.athena-bccr.override {
(pkgs.${doctrine.prefix}.athena-bccr.override { inherit (cfg) mirror vendor;
inherit (cfg) mirror; };
}).${
cfg.release
};
inherit (athena) vendor;
athena = releases.${cfg.release};
driver = athena.card-driver.lib; driver = athena.card-driver.lib;
scmiddleware = "${driver}/lib/SCMiddleware"; scmiddleware = "${driver}/lib/SCMiddleware";
inherit (cfg) vendor;
in { in {
environment = { environment = {
etc = etc =

View file

@ -2,10 +2,14 @@
callPackage, callPackage,
lib, lib,
mirror ? null, mirror ? null,
vendor ? "idopte",
}: let }: let
latest = "deb64-rev26.2"; releases = lib.mapAttrs resolveRelease (import ./releases.nix).${vendor};
releases = lib.mapAttrs (name: release: release // {name = name;}) (import ./releases.nix); resolveRelease = name: release:
if builtins.isString release
then releases.${release}
else release // {name = name;};
overrideUnwrapped = default: new: let overrideUnwrapped = default: new: let
args = default // new; args = default // new;
@ -19,7 +23,7 @@
pkgsForRelease = release: let pkgsForRelease = release: let
inherit (unwrapped) card-driver bccr-cacerts; inherit (unwrapped) card-driver bccr-cacerts;
unwrapped = overrideUnwrapped {inherit mirror release;} {}; unwrapped = overrideUnwrapped {inherit mirror release vendor;} {};
pkcs11-module = "${card-driver.lib}/${card-driver.pkcs11-path}"; pkcs11-module = "${card-driver.lib}/${card-driver.pkcs11-path}";
in { in {
inherit card-driver bccr-cacerts pkcs11-module; inherit card-driver bccr-cacerts pkcs11-module;
@ -29,4 +33,4 @@
firmador = callPackage ./firmador.nix {inherit pkcs11-module;}; firmador = callPackage ./firmador.nix {inherit pkcs11-module;};
}; };
in in
lib.mapAttrs (_: pkgsForRelease) (releases // {latest = releases.${latest};}) lib.mapAttrs (_: pkgsForRelease) releases

View file

@ -1,27 +1,33 @@
{ {
"deb64-rev26" = { "athena" = {
# nix hash convert --hash-algo sha256 --from base16 --to sri $(sha256sum sfd_ClientesLinux_DEB64_Rev26.zip | cut -d' ' -f1) latest = "deb64-rev26";
hash = "sha256-ZPWP9TqJQ5coJAPzUSiaXKVItBWlqFM4smCjOf+gqQM=";
filename = "sfd_ClientesLinux_DEB64_Rev26.zip";
basename = "sfd_ClientesLinux_DEB64_Rev26";
vendor = "athena";
srcPaths = { "deb64-rev26" = {
gaudi = "Firma Digital/Agente GAUDI/agente-gaudi_20.0_amd64.deb"; # nix hash convert --hash-algo sha256 --from base16 --to sri $(sha256sum sfd_ClientesLinux_DEB64_Rev26.zip | cut -d' ' -f1)
idprotect = "Firma Digital/PinTool/IDProtect PINTool 7.24.02/DEB/idprotectclient_7.24.02-0_amd64.deb"; hash = "sha256-ZPWP9TqJQ5coJAPzUSiaXKVItBWlqFM4smCjOf+gqQM=";
filename = "sfd_ClientesLinux_DEB64_Rev26.zip";
basename = "sfd_ClientesLinux_DEB64_Rev26";
srcPaths = {
gaudi = "Firma Digital/Agente GAUDI/agente-gaudi_20.0_amd64.deb";
idprotect = "Firma Digital/PinTool/IDProtect PINTool 7.24.02/DEB/idprotectclient_7.24.02-0_amd64.deb";
};
}; };
}; };
"deb64-rev26.2" = { "idopte" = {
# nix hash convert --hash-algo sha256 --from base16 --to sri $(sha256sum sfd_ClientesLinux_DEB64_Ubuntu24_rev26_02 | cut -d' ' -f1) latest = "deb64-rev26.2";
hash = "sha256-DNzP0YRnuUbfKLhi7JeQCirdGx4kM7ROqHDkTuVs0mA=";
filename = "sfd_ClientesLinux_DEB64_Ubuntu24_rev26_02.zip";
basename = "sfd_ClientesLinux_DEB64_Ubuntu24_26_02";
vendor = "idopte";
srcPaths = { "deb64-rev26.2" = {
gaudi = "Firma Digital/Agente GAUDI/agente-gaudi_27.0_amd64.deb"; # nix hash convert --hash-algo sha256 --from base16 --to sri $(sha256sum sfd_ClientesLinux_DEB64_Ubuntu24_rev26_02 | cut -d' ' -f1)
idopte = "Firma Digital/Idopte/Idopte_6.23.44.0_ubun24_amd64.deb"; hash = "sha256-DNzP0YRnuUbfKLhi7JeQCirdGx4kM7ROqHDkTuVs0mA=";
filename = "sfd_ClientesLinux_DEB64_Ubuntu24_rev26_02.zip";
basename = "sfd_ClientesLinux_DEB64_Ubuntu24_26_02";
srcPaths = {
gaudi = "Firma Digital/Agente GAUDI/agente-gaudi_27.0_amd64.deb";
idopte = "Firma Digital/Idopte/Idopte_6.23.44.0_ubun24_amd64.deb";
};
}; };
}; };
} }

View file

@ -5,9 +5,10 @@
requireFile, requireFile,
release, release,
gaudiHash ? null, gaudiHash ? null,
vendor,
... ...
}: let }: let
inherit (release) srcPaths vendor; inherit (release) srcPaths;
url = url =
if mirror != null if mirror != null

View file

@ -4,7 +4,8 @@ with prev.lib; let
in { in {
override = {}; override = {};
athena-bccr = callPackage ./athena-bccr {}; athena-bccr = callPackage ./athena-bccr {vendor = "athena";};
idopte-bccr = callPackage ./athena-bccr {vendor = "idopte";};
snapborg = final.python3Packages.callPackage ./snapborg {}; snapborg = final.python3Packages.callPackage ./snapborg {};
socialpredict = callPackage ./socialpredict {}; socialpredict = callPackage ./socialpredict {};
spliit = callPackage ./spliit {}; spliit = callPackage ./spliit {};