summaryrefslogtreecommitdiff
path: root/modules/athena-bccr
diff options
context:
space:
mode:
Diffstat (limited to 'modules/athena-bccr')
-rw-r--r--modules/athena-bccr/default.nix14
-rw-r--r--modules/athena-bccr/hm.nix19
-rw-r--r--modules/athena-bccr/options.nix42
-rw-r--r--modules/athena-bccr/sys.nix100
4 files changed, 0 insertions, 175 deletions
diff --git a/modules/athena-bccr/default.nix b/modules/athena-bccr/default.nix
deleted file mode 100644
index 93c5660..0000000
--- a/modules/athena-bccr/default.nix
+++ /dev/null
@@ -1,14 +0,0 @@
-{
- config,
- lib,
- pkgs,
- doctrine,
- ...
-}:
-doctrine.lib.mkModule {
- inherit config;
- name = "athena-bccr";
- hm = ./hm.nix;
- sys = ./sys.nix;
- options = ./options.nix;
-}
diff --git a/modules/athena-bccr/hm.nix b/modules/athena-bccr/hm.nix
deleted file mode 100644
index df41f12..0000000
--- a/modules/athena-bccr/hm.nix
+++ /dev/null
@@ -1,19 +0,0 @@
-{
- pkgs,
- lib,
- cfg,
- doctrine,
- ...
-}: let
- athena =
- (pkgs.${doctrine.prefix}.athena-bccr.override {
- inherit (cfg) mirror;
- }).${
- cfg.release
- };
-in {
- home.packages = [
- athena.firmador
- (athena.gaudi.override {inherit (cfg) gaudiHash;})
- ];
-}
diff --git a/modules/athena-bccr/options.nix b/modules/athena-bccr/options.nix
deleted file mode 100644
index 7b6cf93..0000000
--- a/modules/athena-bccr/options.nix
+++ /dev/null
@@ -1,42 +0,0 @@
-{lib, ...}:
-with lib.types; {
- hm = {
- gaudiHash = lib.mkOption {
- type = nullOr str;
- default = null;
- 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 = {
- group = lib.mkOption {
- type = str;
- default = "users";
- 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";
- };
- };
-}
diff --git a/modules/athena-bccr/sys.nix b/modules/athena-bccr/sys.nix
deleted file mode 100644
index bd7d758..0000000
--- a/modules/athena-bccr/sys.nix
+++ /dev/null
@@ -1,100 +0,0 @@
-{
- config,
- pkgs,
- lib,
- cfg,
- doctrine,
- ...
-}: let
- athena =
- (pkgs.${doctrine.prefix}.athena-bccr.override {
- inherit (cfg) mirror;
- }).${
- cfg.release
- };
-
- inherit (athena) vendor;
-
- driver = athena.card-driver.lib;
- scmiddleware = "${driver}/lib/SCMiddleware";
-in {
- environment = {
- etc =
- {
- "pkcs11/modules/${vendor}".text = ''
- module: ${athena.pkcs11-module}
- '';
- }
- // lib.optionalAttrs (vendor == "athena") {
- "Athena".source = "${driver}/etc/Athena";
- }
- // lib.optionalAttrs (vendor == "idopte") {
- "idoss.conf".source = "${driver}/etc/idoss.conf";
- "idoss.lic".source = "${driver}/etc/idoss.lic";
- "SCMiddleware".source = scmiddleware;
- };
-
- systemPackages = [athena.card-driver];
- };
-
- security = {
- #FIXME: Extremadamente peligroso si BCCR o MICITT caen, investigar polĂ­tica nacional de root CA
- pki.certificateFiles = ["${athena.bccr-cacerts}/root-ca.pem"];
-
- polkit = {
- enable = lib.mkDefault true;
-
- extraConfig = ''
- polkit.addRule(function(action, subject) {
- if ((action.id == "org.debian.pcsc-lite.access_pcsc" || action.id == "org.debian.pcsc-lite.access_card") &&
- subject.isInGroup("users")) {
- return polkit.Result.YES;
- }
- });
- '';
- };
- };
-
- services = {
- pcscd.enable = true;
-
- udev.extraRules =
- lib.optionalString (vendor == "athena") ''
- # Athena Smartcard Solutions, Inc. ASEDrive V3CR
- ATTRS{idVendor}=="0dc3", ATTRS{idProduct}=="1004", MODE="660", GROUP="${cfg.group}", TAG+="uaccess"
- ''
- + lib.optionalString (vendor == "idopte") ''
- # Bit4id Srl miniLector-s
- ACTION=="add", SUBSYSTEM=="usb", ENV{PRODUCT}=="25dd/1101*", RUN+="${config.systemd.package}/bin/systemctl start --no-block idopte-reader.target"
- ACTION=="remove", SUBSYSTEM=="usb", ENV{PRODUCT}=="25dd/1101*", RUN+="${config.systemd.package}/bin/systemctl stop --no-block idopte-reader.target"
- '';
- };
-
- systemd = lib.mkIf (vendor == "idopte") {
- #TODO: make this run as a non-root user
- services.idopte-cache = {
- description = "Idopte cache server";
-
- after = ["smartcard.target"];
- bindsTo = ["idopte-reader.target"];
- wantedBy = ["idopte-reader.target"];
-
- serviceConfig = {
- Type = "forking";
- PIDFile = "/run/idoCacheSrv.pid";
- RuntimeDirectory = "idoss";
-
- ExecStart = "${scmiddleware}/idocachesrv";
- };
- };
-
- targets.idopte-reader = {
- description = "Idopte USB reader inserted";
-
- wants = ["smartcard.target"];
- before = ["smartcard.target"];
- };
- };
-
- users.groups.${cfg.group} = {};
-}