biome: 1.9.2 -> 1.9.3
[NixPkgs.git] / pkgs / tools / security / swtpm / default.nix
blob6b1bdb4c03ab16284bcfc0744db31b3aa05f6c89
1 { lib
2 , stdenv
3 , fetchFromGitHub
4 , autoreconfHook
5 , pkg-config
6 , libtasn1, openssl, fuse, glib, libseccomp, json-glib
7 , libtpms
8 , unixtools, expect, socat
9 , gnutls
10 , perl
12 # Tests
13 , python3, which
14 , nixosTests
17 stdenv.mkDerivation (finalAttrs: {
18   pname = "swtpm";
19   version = "0.8.2";
21   src = fetchFromGitHub {
22     owner = "stefanberger";
23     repo = "swtpm";
24     rev = "v${finalAttrs.version}";
25     hash = "sha256-48/BOzGPoKr/BGEXFo3FXWr6ZoPB+ixZIvv78g6L294=";
26   };
28   nativeBuildInputs = [
29     pkg-config unixtools.netstat expect socat
30     perl # for pod2man
31     python3
32     autoreconfHook
33   ];
35   nativeCheckInputs = [
36     which
37   ];
39   buildInputs = [
40     libtpms
41     openssl libtasn1
42     glib json-glib
43     gnutls
44   ] ++ lib.optionals stdenv.hostPlatform.isLinux [
45     fuse
46     libseccomp
47   ];
49   configureFlags = [
50     "--localstatedir=/var"
51   ] ++ lib.optionals stdenv.hostPlatform.isLinux [
52     "--with-cuse"
53   ];
55   postPatch = ''
56     patchShebangs tests/*
58     # Makefile tries to create the directory /var/lib/swtpm-localca, which fails
59     substituteInPlace samples/Makefile.am \
60         --replace 'install-data-local:' 'do-not-execute:'
62     # Use the correct path to the certtool binary
63     # instead of relying on it being in the environment
64     substituteInPlace src/swtpm_localca/swtpm_localca.c \
65       --replace \
66         '# define CERTTOOL_NAME "gnutls-certtool"' \
67         '# define CERTTOOL_NAME "${gnutls}/bin/certtool"' \
68       --replace \
69         '# define CERTTOOL_NAME "certtool"' \
70         '# define CERTTOOL_NAME "${gnutls}/bin/certtool"'
72     substituteInPlace tests/common --replace \
73         'CERTTOOL=gnutls-certtool;;' \
74         'CERTTOOL=certtool;;'
76     # Fix error on macOS:
77     # stat: invalid option -- '%'
78     # This is caused by the stat program not being the BSD version,
79     # as is expected by the test
80     substituteInPlace tests/common --replace \
81         'if [[ "$(uname -s)" =~ (Linux|CYGWIN_NT-) ]]; then' \
82         'if [[ "$(uname -s)" =~ (Linux|Darwin|CYGWIN_NT-) ]]; then'
84     # Otherwise certtool seems to pick up the system language on macOS,
85     # which might cause a test to fail
86     substituteInPlace tests/test_swtpm_setup_create_cert --replace \
87         '$CERTTOOL' \
88         'LC_ALL=C.UTF-8 $CERTTOOL'
89   '';
91   doCheck = true;
92   enableParallelBuilding = true;
94   outputs = [ "out" "man" ];
96   passthru.tests = { inherit (nixosTests) systemd-cryptenroll; };
98   meta = with lib; {
99     description = "Libtpms-based TPM emulator";
100     homepage = "https://github.com/stefanberger/swtpm";
101     license = licenses.bsd3;
102     maintainers = [ maintainers.baloo ];
103     mainProgram = "swtpm";
104     platforms = platforms.all;
105   };