1{
2 lib,
3 stdenv,
4 fetchFromGitHub,
5 pkg-config,
6 asciidoc,
7 jansson,
8 jose,
9 http-parser,
10 systemd,
11 meson,
12 ninja,
13 makeWrapper,
14 testers,
15 tang,
16 gitUpdater,
17 nixosTests,
18}:
19
20stdenv.mkDerivation rec {
21 pname = "tang";
22 version = "15";
23
24 src = fetchFromGitHub {
25 owner = "latchset";
26 repo = "tang";
27 tag = "v${version}";
28 hash = "sha256-nlC2hdNzQZrfirjS2gX4oFp2OD1OdxmLsN03hfxD3ug=";
29 };
30
31 nativeBuildInputs = [
32 asciidoc
33 meson
34 ninja
35 pkg-config
36 makeWrapper
37 ];
38
39 buildInputs = [
40 jansson
41 jose
42 http-parser
43 systemd
44 ];
45
46 outputs = [
47 "out"
48 "man"
49 ];
50
51 postFixup = ''
52 wrapProgram $out/bin/tang-show-keys --prefix PATH ":" ${lib.makeBinPath [ jose ]}
53 wrapProgram $out/libexec/tangd-keygen --prefix PATH ":" ${lib.makeBinPath [ jose ]}
54 wrapProgram $out/libexec/tangd-rotate-keys --prefix PATH ":" ${lib.makeBinPath [ jose ]}
55 '';
56
57 passthru = {
58 tests = {
59 inherit (nixosTests) tang;
60 version = testers.testVersion {
61 package = tang;
62 command = "${tang}/libexec/tangd --version";
63 version = "tangd ${version}";
64 };
65 };
66 updateScript = gitUpdater { };
67 };
68
69 meta = {
70 description = "Server for binding data to network presence";
71 homepage = "https://github.com/latchset/tang";
72 changelog = "https://github.com/latchset/tang/releases/tag/v${version}";
73 maintainers = with lib.maintainers; [ fpletz ];
74 license = lib.licenses.gpl3Plus;
75 mainProgram = "tangd";
76 };
77}