biome: 1.9.2 -> 1.9.3
[NixPkgs.git] / pkgs / tools / security / cie-middleware-linux / default.nix
blob11c0567bb6f081de2e56db2e90c53a27fd758dc4
1 { stdenv
2 , lib
3 , fetchFromGitHub
4 , makeWrapper
5 , stripJavaArchivesHook
6 , meson
7 , ninja
8 , pkg-config
9 , gradle_8
10 , curl
11 , cryptopp
12 , fontconfig
13 , jre
14 , libxml2
15 , openssl
16 , pcsclite
17 , podofo
18 , ghostscript
21 let
22   pname = "cie-middleware-linux";
23   version = "1.5.2";
25   src = fetchFromGitHub {
26     owner = "M0rf30";
27     repo = pname;
28     rev = version;
29     sha256 = "sha256-M3Xwg3G2ZZhPRV7uhFVXQPyvuuY4zI5Z+D/Dt26KVM0=";
30   };
32   gradle = gradle_8;
34   # Shared libraries needed by the Java application
35   libraries = lib.makeLibraryPath [ ghostscript ];
39 stdenv.mkDerivation {
40   inherit pname src version;
42   hardeningDisable = [ "format" ];
44   nativeBuildInputs = [
45     makeWrapper
46     stripJavaArchivesHook
47     meson
48     ninja
49     pkg-config
50     gradle
51   ];
53   buildInputs = [
54     cryptopp
55     fontconfig
56     podofo
57     openssl
58     pcsclite
59     curl
60     libxml2
61   ];
63   patches = [ ./use-system-podofo.patch ];
65   postPatch = ''
66     # substitute the cieid command with this $out/bin/cieid
67     substituteInPlace libs/pkcs11/src/CSP/AbilitaCIE.cpp \
68       --replace 'file = "cieid"' 'file = "'$out'/bin/cieid"'
69   '';
71   # Note: we use pushd/popd to juggle between the
72   # libraries and the Java application builds.
73   preConfigure = "pushd libs";
75   mitmCache = gradle.fetchDeps {
76     inherit pname;
77     data = ./deps.json;
78   };
80   gradleFlags = [
81     "-Dorg.gradle.java.home=${jre}"
82     "--build-file" "cie-java/build.gradle"
83   ];
85   gradleBuildTask = "standalone";
87   buildPhase = ''
88     runHook preBuild
90     ninjaBuildPhase
91     pushd ../..
92     gradleBuildPhase
93     popd
95     runHook postBuild
96   '';
98   doCheck = true;
100   checkPhase = ''
101     runHook preCheck
103     mesonCheckPhase
104     pushd ../..
105     gradleCheckPhase
106     popd
108     runHook postCheck
109   '';
111   postInstall = ''
112     popd
114     # Install the Java application
115     install -Dm755 cie-java/build/libs/CIEID-standalone.jar \
116                    "$out/share/cieid/cieid.jar"
118     # Create a wrapper
119     mkdir -p "$out/bin"
120     makeWrapper "${jre}/bin/java" "$out/bin/cieid" \
121       --add-flags "-Djna.library.path='$out/lib:${libraries}'" \
122       --add-flags '-Dawt.useSystemAAFontSettings=on' \
123       --add-flags "-cp $out/share/cieid/cieid.jar" \
124       --add-flags "it.ipzs.cieid.MainApplication"
126     # Install other files
127     install -Dm644 data/cieid.desktop "$out/share/applications/cieid.desktop"
128     install -Dm755 data/logo.png "$out/share/pixmaps/cieid.png"
129     install -Dm644 LICENSE "$out/share/licenses/cieid/LICENSE"
130   '';
132   preGradleUpdate = "cd ../..";
134   meta = with lib; {
135     homepage = "https://github.com/M0Rf30/cie-middleware-linux";
136     description = "Middleware for the Italian Electronic Identity Card (CIE)";
137     longDescription = ''
138       Software for the usage of the Italian Electronic Identity Card (CIE).
139       Access to PA services, signing and verification of documents
141       Warning: this is an unofficial fork because the original software, as
142       distributed by the Italian government, is essentially lacking a build
143       system and is in violation of the license of the PoDoFo library.
144     '';
145     license = licenses.bsd3;
146     platforms = platforms.unix;
147     # Note: fails due to a lot of broken type conversions
148     badPlatforms = platforms.darwin;
149     maintainers = with maintainers; [ rnhmjoj ];
150   };