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