summaryrefslogtreecommitdiff
path: root/trivionomicon/pkgs/athena-bccr/default.nix
blob: c17911ea8f0ed33ae25a2e91c8d19e6f5d64bce1 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
{
  callPackage,
  lib,
  mirror ? null,
  vendor ? "idopte",
}: let
  releases = lib.mapAttrs resolveRelease (import ./releases.nix).${vendor};

  resolveRelease = name: release:
    if builtins.isString release
    then releases.${release}
    else release // {name = name;};

  overrideUnwrapped = default: new: let
    args = default // new;
    unwrappedPkgs = lib.filterAttrs (name: _: ! lib.elem name ["override" "overrideDerivation"]) (callPackage ./unwrapped.nix args);
  in
    lib.fix (unwrapped: lib.mapAttrs (_: pkg: callPackage pkg unwrapped) unwrappedPkgs)
    // {
      override = overrideUnwrapped args;
    };

  pkgsForRelease = release: let
    inherit (unwrapped) card-driver bccr-cacerts;

    unwrapped = overrideUnwrapped {inherit mirror release vendor;} {};
    pkcs11-module = "${card-driver.lib}/${card-driver.pkcs11-path}";
  in {
    inherit card-driver bccr-cacerts pkcs11-module;
    inherit (release) vendor;

    gaudi = callPackage ./gaudi-env.nix {inherit unwrapped;};
    firmador = callPackage ./firmador.nix {inherit pkcs11-module;};
  };
in
  lib.mapAttrs (_: pkgsForRelease) releases