21 deltachat-rpc-server' = deltachat-rpc-server.overrideAttrs rec {
23 src = fetchFromGitHub {
25 repo = "deltachat-core-rust";
27 hash = "sha256-XZLKvOvdyvR5poRY/oo9MHi1f2XzBmSDR8VqjW3wq74=";
29 cargoDeps = rustPlatform.fetchCargoVendor {
30 pname = "deltachat-core-rust";
32 hash = "sha256-ZxKR1M9wqmzKVbSdBKzTsKF9tDVRGHnd+Ra9Jy5CQQY=";
35 electron = electron_32;
38 stdenv.mkDerivation (finalAttrs: {
39 pname = "deltachat-desktop";
42 src = fetchFromGitHub {
44 repo = "deltachat-desktop";
45 tag = "v${finalAttrs.version}";
46 hash = "sha256-L/dgdg7Yrosy054Jdo2ST3x37kQ+CHOEN92/YNjnTYc=";
49 pnpmDeps = pnpm.fetchDeps {
50 inherit (finalAttrs) pname version src;
51 hash = "sha256-ovwdFpVFqXaGqsYc1ldhimqgdi0CXjQYMMMcmUXtMFc=";
61 ] ++ lib.optionals stdenv.hostPlatform.isLinux [
65 buildInputs = lib.optionals stdenv.hostPlatform.isDarwin [
66 darwin.apple_sdk.frameworks.CoreServices
70 ELECTRON_SKIP_BINARY_DOWNLOAD = "1";
71 VERSION_INFO_GIT_REF = finalAttrs.src.tag;
78 $(yq -r '.catalogs.default."@deltachat/jsonrpc-client".version' pnpm-lock.yaml) \
79 = ${deltachat-rpc-server'.version} \
80 || (echo "error: deltachat-rpc-server version does not match jsonrpc-client" && exit 1)
83 $(yq -r '.importers."packages/target-electron".devDependencies.electron.version' pnpm-lock.yaml | grep -E -o "^[0-9]+") \
84 = ${lib.versions.major electron.version} \
85 || (echo 'error: electron version doesn not match package-lock.json' && exit 1)
87 pnpm -w build:electron
89 pnpm --filter=@deltachat-desktop/target-electron pack:generate_config
90 pnpm --filter=@deltachat-desktop/target-electron pack:patch-node-modules
91 pnpm --filter=@deltachat-desktop/target-electron exec electron-builder \
92 --config ./electron-builder.json5 \
94 -c.electronDist=${electron.dist} \
95 -c.electronVersion=${electron.version}
97 pushd packages/target-electron/dist/*-unpacked/resources/app.asar.unpacked
98 rm node_modules/@deltachat/stdio-rpc-server-*/deltachat-rpc-server
99 ln -s ${lib.getExe deltachat-rpc-server'} node_modules/@deltachat/stdio-rpc-server-*
108 mkdir -p $out/opt/DeltaChat
109 cp -r packages/target-electron/dist/*-unpacked/{locales,resources{,.pak}} $out/opt/DeltaChat
111 makeWrapper ${lib.getExe electron} $out/bin/${finalAttrs.meta.mainProgram} \
112 --add-flags $out/opt/DeltaChat/resources/app.asar \
113 --add-flags "\''${NIXOS_OZONE_WL:+\''${WAYLAND_DISPLAY:+--ozone-platform-hint=auto --enable-features=WaylandWindowDecorations --enable-wayland-ime=true}}" \
119 desktopItems = lib.singleton (makeDesktopItem {
121 exec = "deltachat %u";
123 desktopName = "Delta Chat";
124 genericName = "Delta Chat";
125 comment = finalAttrs.meta.description;
126 categories = [ "Network" "InstantMessaging" "Chat" ];
127 startupWMClass = "DeltaChat";
129 "x-scheme-handler/openpgp4fpr"
130 "x-scheme-handler/dcaccount"
131 "x-scheme-handler/dclogin"
132 "x-scheme-handler/mailto"
137 version = testers.testVersion {
138 package = deltachat-desktop;
143 description = "Email-based instant messaging for Desktop";
144 homepage = "https://github.com/deltachat/deltachat-desktop";
145 changelog = "https://github.com/deltachat/deltachat-desktop/blob/${finalAttrs.src.tag}/CHANGELOG.md";
146 license = lib.licenses.gpl3Plus;
147 mainProgram = "deltachat";
148 maintainers = with lib.maintainers; [ dotlambda ];
149 platforms = lib.platforms.linux;