1{
2 lib,
3 stdenv,
4 buildGoModule,
5 fetchFromGitHub,
6 nix-update-script,
7 nixosTests,
8 postgresql,
9 postgresqlTestHook,
10}:
11
12buildGoModule rec {
13 pname = "matrix-dendrite";
14 version = "0.14.1";
15
16 src = fetchFromGitHub {
17 owner = "element-hq";
18 repo = "dendrite";
19 rev = "v${version}";
20 hash = "sha256-b/kybHF9WcP88kQuG7LB0/pgflYUeWNqEHfUyKfUCIU=";
21 };
22
23 vendorHash = "sha256-380xuwMD9gxrjUsLfO8R08wruyWZwjRhiIDmSc/FGwA=";
24
25 subPackages = [
26 # The server
27 "cmd/dendrite"
28 # admin tools
29 "cmd/create-account"
30 "cmd/generate-config"
31 "cmd/generate-keys"
32 "cmd/resolve-state"
33 ## curl, but for federation requests, only useful for developers
34 # "cmd/furl"
35 ## an internal tool for upgrading ci tests, only relevant for developers
36 # "cmd/dendrite-upgrade-tests"
37 ## tech demos
38 # "cmd/dendrite-demo-pinecone"
39 # "cmd/dendrite-demo-yggdrasil"
40 ];
41
42 nativeCheckInputs = [
43 postgresqlTestHook
44 postgresql
45 ];
46
47 postgresqlTestUserOptions = "LOGIN SUPERUSER";
48 preCheck = ''
49 export PGUSER=$(whoami)
50 # temporarily disable this failing test
51 # it passes in upstream CI and requires further investigation
52 rm roomserver/internal/input/input_test.go
53 '';
54
55 # PostgreSQL's request for a shared memory segment exceeded your kernel's SHMALL parameter
56 doCheck = !stdenv.hostPlatform.isDarwin;
57
58 passthru.tests = {
59 inherit (nixosTests) dendrite;
60 };
61 passthru.updateScript = nix-update-script {
62 extraArgs = [
63 "--version-regex"
64 "v(.+)"
65 ];
66 };
67
68 meta = {
69 homepage = "https://element-hq.github.io/dendrite";
70 description = "Second-generation Matrix homeserver written in Go";
71 changelog = "https://github.com/element-hq/dendrite/releases/tag/v${version}";
72 license = lib.licenses.agpl3Plus;
73 teams = [ lib.teams.matrix ];
74 platforms = lib.platforms.unix;
75 };
76}