1{
2 lib,
3 stdenv,
4 autoPatchelfHook,
5 fetchurl,
6 nixosTests,
7 metaCommon,
8}:
9
10let
11 serverSource.url = "https://github.com/zadam/trilium/releases/download/v${version}/trilium-linux-x64-server-${version}.tar.xz";
12 serverSource.sha256 = "0gwp6h6nvfzq7k1g3233h838nans45jkd5c3pzl6qdhhm19vcs27";
13 version = "0.63.6";
14in
15stdenv.mkDerivation {
16 pname = "trilium-server";
17 inherit version;
18 meta = metaCommon // {
19 platforms = [ "x86_64-linux" ];
20 mainProgram = "trilium-server";
21 };
22
23 src = fetchurl serverSource;
24
25 nativeBuildInputs = [
26 autoPatchelfHook
27 ];
28
29 buildInputs = [
30 (lib.getLib stdenv.cc.cc)
31 ];
32
33 patches = [
34 # patch logger to use console instead of rolling files
35 ./0001-Use-console-logger-instead-of-rolling-files.patch
36 ];
37
38 installPhase = ''
39 runHook preInstall
40 mkdir -p $out/bin
41 mkdir -p $out/share/trilium-server
42
43 cp -r ./* $out/share/trilium-server
44 runHook postInstall
45 '';
46
47 postFixup = ''
48 cat > $out/bin/trilium-server <<EOF
49 #!${stdenv.cc.shell}
50 cd $out/share/trilium-server
51 exec ./node/bin/node src/www
52 EOF
53 chmod a+x $out/bin/trilium-server
54
55 # ERROR: noBrokenSymlinks: found 4 dangling symlinks, 0 reflexive symlinks and 0 unreadable symlinks
56 unlink $out/share/trilium-server/node/bin/npx
57 unlink $out/share/trilium-server/node/bin/npm
58 unlink $out/share/trilium-server/node_modules/.bin/electron
59 unlink $out/share/trilium-server/node_modules/.bin/electron-installer-debian
60 '';
61
62 passthru.tests = {
63 trilium-server = nixosTests.trilium-server;
64 };
65}