summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRobert Schütz <mail@dotlambda.de>2024-11-12 15:44:41 -0800
committergithub-actions[bot] <github-actions[bot]@users.noreply.github.com>2024-12-03 19:20:59 +0000
commit9b8779fec1ffd9fc3c6dce84e9def2835c49ea4a (patch)
treedeb3fa7530436342411c2f9ebef8f397febb633c
parentlibdeltachat: 1.142.12 -> 1.148.7 (diff)
downloadnixpkgs-origin/backport-355575-to-release-24.11.tar.gz
deltachat-desktop: 1.46.8 -> 1.48.0origin/backport-355575-to-release-24.11
Diff: https://github.com/deltachat/deltachat-desktop/compare/v1.46.8...v1.48.0 Changelog: https://github.com/deltachat/deltachat-desktop/blob/v1.48.0/CHANGELOG.md (cherry picked from commit d783bfad2b676a8eb1ffbeb2f2f05cad8a52d009)
-rw-r--r--pkgs/by-name/de/deltachat-desktop/package.nix116
1 files changed, 51 insertions, 65 deletions
diff --git a/pkgs/by-name/de/deltachat-desktop/package.nix b/pkgs/by-name/de/deltachat-desktop/package.nix
index 78f7c75d4e03..d32ef3575f67 100644
--- a/pkgs/by-name/de/deltachat-desktop/package.nix
+++ b/pkgs/by-name/de/deltachat-desktop/package.nix
@@ -1,57 +1,47 @@
{ lib
-, buildNpmPackage
, copyDesktopItems
-, electron_30
-, buildGoModule
-, esbuild
+, electron_32
, fetchFromGitHub
-, jq
, deltachat-rpc-server
, makeDesktopItem
, makeWrapper
-, noto-fonts-color-emoji
+, nodejs
, pkg-config
+, pnpm_9
, python3
-, roboto
-, sqlcipher
, stdenv
, darwin
, testers
, deltachat-desktop
+, yq
}:
let
- electron = electron_30;
- esbuild' = esbuild.override {
- buildGoModule = args: buildGoModule (args // rec {
- version = "0.19.12";
- src = fetchFromGitHub {
- owner = "evanw";
- repo = "esbuild";
- rev = "v${version}";
- hash = "sha256-NQ06esCSU6YPvQ4cMsi3DEFGIQGl8Ff6fhdTxUAyGvo=";
- };
- vendorHash = "sha256-+BfxCyg0KkDQpHt/wycy/8CTG6YBA/VJvJFhhzUnSiQ=";
- });
- };
+ electron = electron_32;
+ pnpm = pnpm_9;
in
-buildNpmPackage rec {
+stdenv.mkDerivation (finalAttrs: {
pname = "deltachat-desktop";
- version = "1.46.8";
+ version = "1.48.0";
src = fetchFromGitHub {
owner = "deltachat";
repo = "deltachat-desktop";
- rev = "v${version}";
- hash = "sha256-17JhaanYEySoDuLYFMc4vB3wVlCucMh3Jk2Uu9PqUdQ=";
+ rev = "v${finalAttrs.version}";
+ hash = "sha256-BgB12pHySJIMtBCph5UkBjioMhEYQq9i7htkrWQNlps=";
};
- npmDepsHash = "sha256-+74koym1lL2rk5n06i7JgcXmX+yW4zgqRfdH6ryXe0s=";
+ pnpmDeps = pnpm.fetchDeps {
+ inherit (finalAttrs) pname version src;
+ hash = "sha256-YBfHVZB6TScIKbWQrN1KJYSUZytR81UwKZ87GaxGlZ8=";
+ };
nativeBuildInputs = [
- jq
+ yq
makeWrapper
+ nodejs
pkg-config
+ pnpm.configHook
python3
] ++ lib.optionals stdenv.hostPlatform.isLinux [
copyDesktopItems
@@ -65,55 +55,50 @@ buildNpmPackage rec {
env = {
ELECTRON_SKIP_BINARY_DOWNLOAD = "1";
- ESBUILD_BINARY_PATH = "${esbuild'}/bin/esbuild";
- USE_SYSTEM_LIBDELTACHAT = "true";
- VERSION_INFO_GIT_REF = src.rev;
+ VERSION_INFO_GIT_REF = finalAttrs.src.rev;
};
- preBuild = ''
+ buildPhase = ''
+ runHook preBuild
+
test \
- $(jq -r '.packages."node_modules/@deltachat/jsonrpc-client".version' package-lock.json) \
+ $(yq -r '.catalogs.default."@deltachat/jsonrpc-client".version' pnpm-lock.yaml) \
= ${deltachat-rpc-server.version} \
|| (echo "error: deltachat-rpc-server version does not match jsonrpc-client" && exit 1)
test \
- $(jq -r '.packages."node_modules/electron".version' package-lock.json | grep -E -o "^[0-9]+") \
+ $(yq -r '.importers."packages/target-electron".devDependencies.electron.version' pnpm-lock.yaml | grep -E -o "^[0-9]+") \
= ${lib.versions.major electron.version} \
|| (echo 'error: electron version doesn not match package-lock.json' && exit 1)
+ pnpm -w build:electron
+
+ pnpm --filter=@deltachat-desktop/target-electron pack:generate_config
+ pnpm --filter=@deltachat-desktop/target-electron pack:patch-node-modules
+ pnpm --filter=@deltachat-desktop/target-electron exec electron-builder \
+ --config ./electron-builder.json5 \
+ --dir \
+ -c.electronDist=${electron.dist} \
+ -c.electronVersion=${electron.version}
+
+ pushd packages/target-electron/dist/*-unpacked/resources/app.asar.unpacked
rm node_modules/@deltachat/stdio-rpc-server-*/deltachat-rpc-server
- ln -s ${lib.getExe deltachat-rpc-server} node_modules/@deltachat/stdio-rpc-server-linux-*
- '';
+ ln -s ${lib.getExe deltachat-rpc-server} node_modules/@deltachat/stdio-rpc-server-*
+ popd
- npmBuildScript = "build4production";
+ runHook postBuild
+ '';
installPhase = ''
runHook preInstall
- npm prune --production
-
- mkdir -p $out/lib/node_modules/deltachat-desktop
- cp -r . $out/lib/node_modules/deltachat-desktop
-
- awk '!/^#/ && NF' build/packageignore_list \
- | xargs -I {} sh -c "rm -rf $out/lib/node_modules/deltachat-desktop/{}" || true
-
- # required for electron to import index.js as a module
- cp package.json $out/lib/node_modules/deltachat-desktop
-
- install -D build/icon.png \
- $out/share/icons/hicolor/scalable/apps/deltachat.png
-
- ln -sf ${noto-fonts-color-emoji}/share/fonts/noto/NotoColorEmoji.ttf \
- $out/lib/node_modules/deltachat-desktop/html-dist/fonts/noto/emoji
- for font in $out/lib/node_modules/deltachat-desktop/html-dist/fonts/Roboto-*.ttf; do
- ln -sf ${roboto}/share/fonts/truetype/$(basename $font) \
- $out/lib/node_modules/deltachat-desktop/html-dist/fonts
- done
+ mkdir -p $out/opt/DeltaChat
+ cp -r packages/target-electron/dist/*-unpacked/{locales,resources{,.pak}} $out/opt/DeltaChat
- makeWrapper ${lib.getExe electron} $out/bin/deltachat \
- --set LD_PRELOAD ${sqlcipher}/lib/libsqlcipher${stdenv.hostPlatform.extensions.sharedLibrary} \
- --add-flags $out/lib/node_modules/deltachat-desktop
+ makeWrapper ${lib.getExe electron} $out/bin/${finalAttrs.meta.mainProgram} \
+ --add-flags $out/opt/DeltaChat/resources/app.asar \
+ --add-flags "\''${NIXOS_OZONE_WL:+\''${WAYLAND_DISPLAY:+--ozone-platform-hint=auto --enable-features=WaylandWindowDecorations}}" \
+ --inherit-argv0
runHook postInstall
'';
@@ -124,7 +109,7 @@ buildNpmPackage rec {
icon = "deltachat";
desktopName = "Delta Chat";
genericName = "Delta Chat";
- comment = meta.description;
+ comment = finalAttrs.meta.description;
categories = [ "Network" "InstantMessaging" "Chat" ];
startupWMClass = "DeltaChat";
mimeTypes = [
@@ -141,12 +126,13 @@ buildNpmPackage rec {
};
};
- meta = with lib; {
+ meta = {
description = "Email-based instant messaging for Desktop";
homepage = "https://github.com/deltachat/deltachat-desktop";
- changelog = "https://github.com/deltachat/deltachat-desktop/blob/${src.rev}/CHANGELOG.md";
- license = licenses.gpl3Plus;
+ changelog = "https://github.com/deltachat/deltachat-desktop/blob/${finalAttrs.src.rev}/CHANGELOG.md";
+ license = lib.licenses.gpl3Plus;
mainProgram = "deltachat";
- maintainers = with maintainers; [ dotlambda ];
+ maintainers = with lib.maintainers; [ dotlambda ];
+ platforms = lib.platforms.linux;
};
-}
+})