Skip to content

Commit

Permalink
deltachat-desktop: 1.46.8 -> 1.48.0
Browse files Browse the repository at this point in the history
  • Loading branch information
dotlambda committed Nov 13, 2024
1 parent 60d453c commit fc7a8c9
Showing 1 changed file with 41 additions and 63 deletions.
104 changes: 41 additions & 63 deletions pkgs/by-name/de/deltachat-desktop/package.nix
Original file line number Diff line number Diff line change
@@ -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
Expand All @@ -64,56 +54,44 @@ buildNpmPackage rec {
];

env = {
DELTA_CHAT_RPC_SERVER = lib.getExe deltachat-rpc-server;
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)
rm node_modules/@deltachat/stdio-rpc-server-*/deltachat-rpc-server
ln -s ${lib.getExe deltachat-rpc-server} node_modules/@deltachat/stdio-rpc-server-linux-*
'';

npmBuildScript = "build4production";

installPhase = ''
runHook preInstall
npm prune --production
#rm node_modules/@deltachat/stdio-rpc-server-*/deltachat-rpc-server
#ln -s ${lib.getExe deltachat-rpc-server} node_modules/@deltachat/stdio-rpc-server-linux-*
mkdir -p $out/lib/node_modules/deltachat-desktop
cp -r . $out/lib/node_modules/deltachat-desktop
pnpm -w build:electron
awk '!/^#/ && NF' build/packageignore_list \
| xargs -I {} sh -c "rm -rf $out/lib/node_modules/deltachat-desktop/{}" || true
pnpm --filter=@deltachat-desktop/target-electron exec electron-builder -- \
--config ./electron-builder.json5 \
--dir \
-c.electronDist=${electron.dist} \
-c.electronVersion=${electron.version}
# required for electron to import index.js as a module
cp package.json $out/lib/node_modules/deltachat-desktop
runHook postBuild
'';

install -D build/icon.png \
$out/share/icons/hicolor/scalable/apps/deltachat.png
installPhase = ''
runHook preInstall
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 $out
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
# TODO
runHook postInstall
'';
Expand All @@ -124,7 +102,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 = [
Expand All @@ -144,9 +122,9 @@ buildNpmPackage rec {
meta = with lib; {
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";
changelog = "https://github.com/deltachat/deltachat-desktop/blob/${finalAttrs.src.rev}/CHANGELOG.md";
license = licenses.gpl3Plus;
mainProgram = "deltachat";
maintainers = with maintainers; [ dotlambda ];
};
}
})

0 comments on commit fc7a8c9

Please sign in to comment.