Skip to content

Commit 6e15303

Browse files
authored
ente-desktop: init at 1.7.10 (#386162)
1 parent d067126 commit 6e15303

File tree

1 file changed

+147
-0
lines changed

1 file changed

+147
-0
lines changed
Lines changed: 147 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,147 @@
1+
{
2+
stdenv,
3+
lib,
4+
fetchFromGitHub,
5+
fetchYarnDeps,
6+
nodejs,
7+
electron_34,
8+
yarnConfigHook,
9+
copyDesktopItems,
10+
vips,
11+
ffmpeg,
12+
makeWrapper,
13+
autoPatchelfHook,
14+
makeDesktopItem,
15+
imagemagick,
16+
}:
17+
let
18+
electron = electron_34;
19+
in
20+
21+
stdenv.mkDerivation (finalAttrs: {
22+
pname = "ente-desktop";
23+
version = "1.7.10";
24+
25+
src = fetchFromGitHub {
26+
owner = "ente-io";
27+
repo = "ente";
28+
fetchSubmodules = true;
29+
sparseCheckout = [
30+
"desktop"
31+
"web"
32+
];
33+
tag = "photosd-v${finalAttrs.version}";
34+
hash = "sha256-iH9fbeUOd/8oVVQbMCSlWyruQZKgSjexNrOuS7szJ9w=";
35+
};
36+
37+
sourceRoot = "${finalAttrs.src.name}/desktop";
38+
39+
offlineCache = fetchYarnDeps {
40+
name = "ente-desktop-${finalAttrs.version}-offline-cache";
41+
inherit (finalAttrs) src sourceRoot;
42+
hash = "sha256-kiL2XQPPN9VkDa3rzO1rLwUZVTbwEz0zeqpgpWOSy7Y=";
43+
};
44+
webOfflineCache = fetchYarnDeps {
45+
name = "ente-desktop-${finalAttrs.version}-web-offline-cache";
46+
inherit (finalAttrs) src;
47+
sourceRoot = "${finalAttrs.src.name}/web";
48+
hash = "sha256-7epwOEWi5lZNo6Z7Rf+QZtGvVCZxk5bXU2aN+9KDYCc=";
49+
};
50+
51+
nativeBuildInputs = [
52+
nodejs
53+
yarnConfigHook
54+
makeWrapper
55+
autoPatchelfHook # for onnxruntime
56+
copyDesktopItems
57+
imagemagick
58+
];
59+
60+
buildInputs = [
61+
(lib.getLib stdenv.cc.cc) # for onnxruntime
62+
];
63+
64+
# Path to vips (otherwise it looks within the electron derivation)
65+
postPatch = ''
66+
substituteInPlace src/main/services/image.ts --replace-fail "process.resourcesPath" "\"$out/share/ente-desktop/resources\""
67+
'';
68+
69+
postConfigure = ''
70+
chmod u+w -R ..
71+
72+
pushd ../web
73+
offlineCache=$webOfflineCache yarnConfigHook
74+
popd
75+
76+
cp -r ${electron.dist} ./electron_dist
77+
chmod u+w -R ./electron_dist
78+
'';
79+
80+
buildPhase = ''
81+
runHook preBuild
82+
83+
pushd ../web
84+
_ENTE_IS_DESKTOP=1 yarn build
85+
popd
86+
cp -r ../web/apps/photos/out out
87+
88+
yarn run tsc
89+
yarn run electron-builder --dir -c.electronDist=./electron_dist -c.electronVersion=${electron.version}
90+
91+
runHook postBuild
92+
'';
93+
94+
installPhase = ''
95+
runHook preInstall
96+
97+
for size in 16 32 48 64 72 96 128 192 256 512 1024; do
98+
mkdir -p $out/share/icons/hicolor/"$size"x"$size"/apps
99+
convert -resize "$size"x"$size" build/icon.png $out/share/icons/hicolor/"$size"x"$size"/apps/ente-desktop.png
100+
done
101+
102+
mkdir -p $out/share/ente-desktop
103+
cp -r dist/*/resources $out/share/ente-desktop
104+
ln -s ${vips}/bin/vips $out/share/ente-desktop/resources/vips
105+
ln -s ${ffmpeg}/bin/ffmpeg $out/share/ente-desktop/resources/app.asar.unpacked/node_modules/ffmpeg-static/ffmpeg
106+
107+
# executable wrapper
108+
makeWrapper '${electron}/bin/electron' "$out/bin/ente-desktop" \
109+
--set ELECTRON_FORCE_IS_PACKAGED 1 \
110+
--set ELECTRON_IS_DEV 0 \
111+
--add-flags "$out/share/ente-desktop/resources/app.asar" \
112+
--add-flags "\''${NIXOS_OZONE_WL:+\''${WAYLAND_DISPLAY:+--ozone-platform-hint=auto --enable-features=WaylandWindowDecorations --enable-wayland-ime=true}}"
113+
114+
runHook postInstall
115+
'';
116+
117+
# The desktop item properties should be kept in sync with data from upstream:
118+
# https://github.com/ente-io/ente/blob/main/desktop/electron-builder.yml
119+
desktopItems = [
120+
(makeDesktopItem {
121+
name = "ente-desktop";
122+
desktopName = "Ente";
123+
exec = "ente-desktop %U";
124+
terminal = false;
125+
type = "Application";
126+
icon = "ente-desktop";
127+
mimeTypes = [
128+
"x-scheme-handler/ente"
129+
];
130+
categories = [
131+
"Photography"
132+
];
133+
})
134+
];
135+
136+
meta = {
137+
description = "Desktop (Electron) client for Ente Photos";
138+
homepage = "https://ente.io/";
139+
changelog = "https://github.com/ente-io/photos-desktop/releases";
140+
license = lib.licenses.agpl3Only;
141+
maintainers = with lib.maintainers; [
142+
pinpox
143+
yuka
144+
];
145+
platforms = lib.platforms.all;
146+
};
147+
})

0 commit comments

Comments
 (0)