1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
|
{ stdenv, lib, unzip, autoPatchelfHook
, fetchurl, makeWrapper
, alsa-lib, mesa, nss, nspr, systemd
, makeDesktopItem, copyDesktopItems, wrapGAppsHook3
, metaCommon
}:
let
pname = "trilium-desktop";
version = "0.63.6";
linuxSource.url = "https://github.com/zadam/trilium/releases/download/v${version}/trilium-linux-x64-${version}.tar.xz";
linuxSource.sha256 = "12kgq5x4f93hxz057zqhz0x1y0rxfxh90fv9fjjs3jrnk0by7f33";
darwinSource.url = "https://github.com/zadam/trilium/releases/download/v${version}/trilium-mac-x64-${version}.zip";
darwinSource.sha256 = "0ry512cn622av3nm8rnma2yvqc71rpzax639872ivvc5vm4rsc30";
meta = metaCommon // {
mainProgram = "trilium";
platforms = [ "x86_64-linux" "x86_64-darwin" ];
};
linux = stdenv.mkDerivation rec {
inherit pname version meta;
src = fetchurl linuxSource;
# TODO: migrate off autoPatchelfHook and use nixpkgs' electron
nativeBuildInputs = [
autoPatchelfHook
makeWrapper
wrapGAppsHook3
copyDesktopItems
];
buildInputs = [
alsa-lib
mesa
nss
nspr
stdenv.cc.cc
systemd
];
desktopItems = [
(makeDesktopItem {
name = "Trilium";
exec = "trilium";
icon = "trilium";
comment = meta.description;
desktopName = "Trilium Notes";
categories = [ "Office" ];
startupWMClass = "trilium notes";
})
];
# Remove trilium-portable.sh, so trilium knows it is packaged making it stop auto generating a desktop item on launch
postPatch = ''
rm ./trilium-portable.sh
'';
installPhase = ''
runHook preInstall
mkdir -p $out/bin
mkdir -p $out/share/trilium
mkdir -p $out/share/icons/hicolor/128x128/apps
cp -r ./* $out/share/trilium
ln -s $out/share/trilium/trilium $out/bin/trilium
ln -s $out/share/trilium/icon.png $out/share/icons/hicolor/128x128/apps/trilium.png
runHook postInstall
'';
# LD_LIBRARY_PATH "shouldn't" be needed, remove when possible :)
# Error: libstdc++.so.6: cannot open shared object file: No such file or directory
preFixup = ''
gappsWrapperArgs+=(--prefix LD_LIBRARY_PATH : ${lib.makeLibraryPath buildInputs})
'';
dontStrip = true;
passthru.updateScript = ./update.sh;
};
darwin = stdenv.mkDerivation {
inherit pname version meta;
src = fetchurl darwinSource;
nativeBuildInputs = [ unzip ];
installPhase = ''
mkdir -p $out/Applications
cp -r *.app $out/Applications
'';
};
in
if stdenv.hostPlatform.isDarwin then darwin else linux
|