12 , noto-fonts-color-emoji
24 electron = electron_30;
25 esbuild' = esbuild.override {
26 buildGoModule = args: buildGoModule (args // rec {
28 src = fetchFromGitHub {
32 hash = "sha256-NQ06esCSU6YPvQ4cMsi3DEFGIQGl8Ff6fhdTxUAyGvo=";
34 vendorHash = "sha256-+BfxCyg0KkDQpHt/wycy/8CTG6YBA/VJvJFhhzUnSiQ=";
39 pname = "deltachat-desktop";
42 src = fetchFromGitHub {
44 repo = "deltachat-desktop";
46 hash = "sha256-17JhaanYEySoDuLYFMc4vB3wVlCucMh3Jk2Uu9PqUdQ=";
49 npmDepsHash = "sha256-+74koym1lL2rk5n06i7JgcXmX+yW4zgqRfdH6ryXe0s=";
56 ] ++ lib.optionals stdenv.hostPlatform.isLinux [
62 ] ++ lib.optionals stdenv.hostPlatform.isDarwin [
63 darwin.apple_sdk.frameworks.CoreServices
67 ELECTRON_SKIP_BINARY_DOWNLOAD = "1";
68 ESBUILD_BINARY_PATH = "${esbuild'}/bin/esbuild";
69 USE_SYSTEM_LIBDELTACHAT = "true";
70 VERSION_INFO_GIT_REF = src.rev;
75 $(jq -r '.packages."node_modules/@deltachat/jsonrpc-client".version' package-lock.json) \
76 = ${deltachat-rpc-server.version} \
77 || (echo "error: deltachat-rpc-server version does not match jsonrpc-client" && exit 1)
80 $(jq -r '.packages."node_modules/electron".version' package-lock.json | grep -E -o "^[0-9]+") \
81 = ${lib.versions.major electron.version} \
82 || (echo 'error: electron version doesn not match package-lock.json' && exit 1)
84 rm node_modules/@deltachat/stdio-rpc-server-*/deltachat-rpc-server
85 ln -s ${lib.getExe deltachat-rpc-server} node_modules/@deltachat/stdio-rpc-server-linux-*
88 npmBuildScript = "build4production";
93 npm prune --production
95 mkdir -p $out/lib/node_modules/deltachat-desktop
96 cp -r . $out/lib/node_modules/deltachat-desktop
98 awk '!/^#/ && NF' build/packageignore_list \
99 | xargs -I {} sh -c "rm -rf $out/lib/node_modules/deltachat-desktop/{}" || true
101 # required for electron to import index.js as a module
102 cp package.json $out/lib/node_modules/deltachat-desktop
104 install -D build/icon.png \
105 $out/share/icons/hicolor/scalable/apps/deltachat.png
107 ln -sf ${noto-fonts-color-emoji}/share/fonts/noto/NotoColorEmoji.ttf \
108 $out/lib/node_modules/deltachat-desktop/html-dist/fonts/noto/emoji
109 for font in $out/lib/node_modules/deltachat-desktop/html-dist/fonts/Roboto-*.ttf; do
110 ln -sf ${roboto}/share/fonts/truetype/$(basename $font) \
111 $out/lib/node_modules/deltachat-desktop/html-dist/fonts
114 makeWrapper ${lib.getExe electron} $out/bin/deltachat \
115 --set LD_PRELOAD ${sqlcipher}/lib/libsqlcipher${stdenv.hostPlatform.extensions.sharedLibrary} \
116 --add-flags $out/lib/node_modules/deltachat-desktop
121 desktopItems = lib.singleton (makeDesktopItem {
123 exec = "deltachat %u";
125 desktopName = "Delta Chat";
126 genericName = "Delta Chat";
127 comment = meta.description;
128 categories = [ "Network" "InstantMessaging" "Chat" ];
129 startupWMClass = "DeltaChat";
131 "x-scheme-handler/openpgp4fpr"
132 "x-scheme-handler/dcaccount"
133 "x-scheme-handler/dclogin"
134 "x-scheme-handler/mailto"
139 version = testers.testVersion {
140 package = deltachat-desktop;
145 description = "Email-based instant messaging for Desktop";
146 homepage = "https://github.com/deltachat/deltachat-desktop";
147 changelog = "https://github.com/deltachat/deltachat-desktop/blob/${src.rev}/CHANGELOG.md";
148 license = licenses.gpl3Plus;
149 mainProgram = "deltachat";
150 maintainers = with maintainers; [ dotlambda ];