sqlite_orm: 1.9 -> 1.9.1 (#379250)
[NixPkgs.git] / pkgs / by-name / de / deltachat-desktop / package.nix
blob3cdbafdc33f038a3879566b45e7fe13f22ba088e
1 { lib
2 , copyDesktopItems
3 , electron_32
4 , fetchFromGitHub
5 , deltachat-rpc-server
6 , makeDesktopItem
7 , makeWrapper
8 , nodejs
9 , pkg-config
10 , pnpm_9
11 , python3
12 , rustPlatform
13 , stdenv
14 , darwin
15 , testers
16 , deltachat-desktop
17 , yq
20 let
21   deltachat-rpc-server' = deltachat-rpc-server.overrideAttrs rec {
22     version = "1.155.1";
23     src = fetchFromGitHub {
24       owner = "deltachat";
25       repo = "deltachat-core-rust";
26       tag = "v${version}";
27       hash = "sha256-XZLKvOvdyvR5poRY/oo9MHi1f2XzBmSDR8VqjW3wq74=";
28     };
29     cargoDeps = rustPlatform.fetchCargoVendor {
30       pname = "deltachat-core-rust";
31       inherit version src;
32       hash = "sha256-ZxKR1M9wqmzKVbSdBKzTsKF9tDVRGHnd+Ra9Jy5CQQY=";
33     };
34   };
35   electron = electron_32;
36   pnpm = pnpm_9;
38 stdenv.mkDerivation (finalAttrs: {
39   pname = "deltachat-desktop";
40   version = "1.52.1";
42   src = fetchFromGitHub {
43     owner = "deltachat";
44     repo = "deltachat-desktop";
45     tag = "v${finalAttrs.version}";
46     hash = "sha256-L/dgdg7Yrosy054Jdo2ST3x37kQ+CHOEN92/YNjnTYc=";
47   };
49   pnpmDeps = pnpm.fetchDeps {
50     inherit (finalAttrs) pname version src;
51     hash = "sha256-ovwdFpVFqXaGqsYc1ldhimqgdi0CXjQYMMMcmUXtMFc=";
52   };
54   nativeBuildInputs = [
55     yq
56     makeWrapper
57     nodejs
58     pkg-config
59     pnpm.configHook
60     python3
61   ] ++ lib.optionals stdenv.hostPlatform.isLinux [
62     copyDesktopItems
63   ];
65   buildInputs = lib.optionals stdenv.hostPlatform.isDarwin [
66     darwin.apple_sdk.frameworks.CoreServices
67   ];
69   env = {
70     ELECTRON_SKIP_BINARY_DOWNLOAD = "1";
71     VERSION_INFO_GIT_REF = finalAttrs.src.tag;
72   };
74   buildPhase = ''
75     runHook preBuild
77     test \
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)
82     test \
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 \
93       --dir \
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-*
100     popd
102     runHook postBuild
103   '';
105   installPhase = ''
106     runHook preInstall
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}}" \
114       --inherit-argv0
116     runHook postInstall
117   '';
119   desktopItems = lib.singleton (makeDesktopItem {
120     name = "deltachat";
121     exec = "deltachat %u";
122     icon = "deltachat";
123     desktopName = "Delta Chat";
124     genericName = "Delta Chat";
125     comment = finalAttrs.meta.description;
126     categories = [ "Network" "InstantMessaging" "Chat" ];
127     startupWMClass = "DeltaChat";
128     mimeTypes = [
129       "x-scheme-handler/openpgp4fpr"
130       "x-scheme-handler/dcaccount"
131       "x-scheme-handler/dclogin"
132       "x-scheme-handler/mailto"
133     ];
134   });
136   passthru.tests = {
137     version = testers.testVersion {
138       package = deltachat-desktop;
139     };
140   };
142   meta = {
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;
150   };