|
21 | 21 | system: |
22 | 22 | let |
23 | 23 | pkgs = import nixpkgs { inherit system; }; |
24 | | - electron = pkgs.electron_35; |
| 24 | + electron = pkgs."electron_${lib.versions.major packageJsonDesktop.devDependencies.electron}"; |
25 | 25 | nodejs = pkgs.nodejs_22; |
26 | 26 | pnpm = pkgs.pnpm_10; |
27 | 27 | inherit (pkgs) |
|
30 | 30 | lib |
31 | 31 | makeBinaryWrapper |
32 | 32 | makeDesktopItem |
| 33 | + makeShellWrapper |
33 | 34 | moreutils |
34 | 35 | removeReferencesTo |
35 | 36 | stdenv |
|
40 | 41 | fullCleanSourceFilter = |
41 | 42 | name: type: |
42 | 43 | (lib.cleanSourceFilter name type) |
43 | | - || ( |
| 44 | + && ( |
44 | 45 | let |
45 | 46 | baseName = baseNameOf (toString name); |
46 | 47 | in |
47 | 48 | # No need to copy the flake. |
48 | 49 | # Don't copy local development instance of NX cache. |
49 | | - baseName == "flake.nix" || baseName == "flake.lock" || baseName == ".nx" |
| 50 | + baseName != "flake.nix" && baseName != "flake.lock" && baseName != ".nx" |
50 | 51 | ); |
51 | 52 | fullCleanSource = |
52 | 53 | src: |
|
55 | 56 | src = src; |
56 | 57 | }; |
57 | 58 | packageJson = builtins.fromJSON (builtins.readFile ./package.json); |
| 59 | + packageJsonDesktop = builtins.fromJSON (builtins.readFile ./apps/desktop/package.json); |
58 | 60 |
|
59 | 61 | makeApp = |
60 | 62 | { |
|
101 | 103 |
|
102 | 104 | extraNativeBuildInputs = |
103 | 105 | [ |
104 | | - makeBinaryWrapper |
105 | 106 | moreutils # sponge |
106 | 107 | nodejs.python |
107 | 108 | removeReferencesTo |
108 | 109 | ] |
109 | 110 | ++ lib.optionals (app == "desktop") [ |
110 | 111 | copyDesktopItems |
| 112 | + # required for NIXOS_OZONE_WL expansion |
| 113 | + # https://github.com/NixOS/nixpkgs/issues/172583 |
| 114 | + makeShellWrapper |
111 | 115 | wrapGAppsHook3 |
112 | 116 | ] |
| 117 | + ++ lib.optionals (app == "server") [ |
| 118 | + makeBinaryWrapper |
| 119 | + ] |
113 | 120 | ++ lib.optionals stdenv.hostPlatform.isDarwin [ |
114 | 121 | xcodebuild |
115 | 122 | darwin.cctools |
|
162 | 169 | comment = meta.description; |
163 | 170 | desktopName = "TriliumNext Notes"; |
164 | 171 | categories = [ "Office" ]; |
165 | | - startupWMClass = "Trilium Notes Next"; |
| 172 | + # TODO: electron-forge build has this set to PRODUCT_NAME (forge.config.cjs) |
| 173 | + # But the plain build doesn't set this (or the app icon). |
| 174 | + startupWMClass = "TriliumNext Notes"; |
166 | 175 | }) |
167 | 176 | ]; |
168 | 177 |
|
|
184 | 193 | mkdir -p $out/{bin,share/icons/hicolor/512x512/apps,opt/trilium} |
185 | 194 | cp --archive apps/desktop/dist/* $out/opt/trilium |
186 | 195 | cp apps/client/src/assets/icon.png $out/share/icons/hicolor/512x512/apps/trilium.png |
187 | | - makeWrapper ${lib.getExe electron} $out/bin/trilium \ |
| 196 | + makeShellWrapper ${lib.getExe electron} $out/bin/trilium \ |
188 | 197 | "''${gappsWrapperArgs[@]}" \ |
| 198 | + --add-flags "\''${NIXOS_OZONE_WL:+\''${WAYLAND_DISPLAY:+--ozone-platform-hint=auto --enable-features=WaylandWindowDecorations --enable-wayland-ime=true}}" \ |
189 | 199 | --set-default ELECTRON_IS_DEV 0 \ |
| 200 | + --set TRILIUM_RESOURCE_DIR $out/opt/trilium \ |
190 | 201 | --add-flags $out/opt/trilium/main.cjs |
191 | 202 | ''; |
192 | 203 | }; |
|
0 commit comments