diff --git a/nixos/modules/services/security/e-imzo.nix b/nixos/modules/services/security/e-imzo.nix index 346fd2986246..1755a2054255 100644 --- a/nixos/modules/services/security/e-imzo.nix +++ b/nixos/modules/services/security/e-imzo.nix @@ -38,6 +38,13 @@ in Type = "simple"; Restart = "always"; RestartSec = 1; + ExecStartPre = [ + (pkgs.writeShellScript "e-imzo-check-port-availability" '' + until [ -z "$(${pkgs.iproute2}/bin/ss -tuln | grep -E ':(64646|64443)\>')" ]; do + sleep 1 + done + '') + ]; ExecStart = lib.getExe cfg.package; NoNewPrivileges = true; diff --git a/pkgs/by-name/e-/e-imzo/package.nix b/pkgs/by-name/e-/e-imzo/package.nix index 4802be75b48e..1c54c0a142bf 100644 --- a/pkgs/by-name/e-/e-imzo/package.nix +++ b/pkgs/by-name/e-/e-imzo/package.nix @@ -3,21 +3,10 @@ stdenvNoCC, fetchurl, jre8, - curl, - ccid, pcsclite, - pcsc-tools, - writeShellScript, + udev, + makeWrapper, }: -let - exec = writeShellScript "e-imzo" '' - cd "$(dirname "$0")/../lib/e-imzo" - - ${jre8}/bin/java -Dsun.security.smartcardio.library=${pcsclite.lib}/lib/libpcsclite.${stdenvNoCC.hostPlatform.extensions.sharedLibrary} -jar E-IMZO.jar - - exit 0 - ''; -in stdenvNoCC.mkDerivation (finalAttrs: { pname = "e-imzo"; version = "5.00"; @@ -27,6 +16,10 @@ stdenvNoCC.mkDerivation (finalAttrs: { hash = "sha256-jPAZu98prkC4NQlfA8/kJuw9qdCrSSSyzySSWPlIXpY="; }; + nativeBuildInputs = [ + makeWrapper + ]; + installPhase = '' runHook preInstall @@ -37,7 +30,15 @@ stdenvNoCC.mkDerivation (finalAttrs: { install -m 644 ./truststore.jks $out/lib/e-imzo/ cp -r ./lib $out/lib/e-imzo/ - install -m 755 "${exec}" $out/bin/e-imzo + makeWrapper ${jre8}/bin/java $out/bin/e-imzo \ + --set LD_LIBRARY_PATH "${ + lib.makeLibraryPath [ + udev + pcsclite + ] + }" \ + --add-flags "-Dsun.security.smartcardio.library=${pcsclite.lib}/lib/libpcsclite${stdenvNoCC.hostPlatform.extensions.sharedLibrary}" \ + --add-flags "-jar $out/lib/e-imzo/E-IMZO.jar" runHook postInstall '';