1414
1515let
1616 branding = self . packages . ${ system } . graphite-branding ;
17- cargoVendorDir = deps . crane . lib . vendorCargoDeps { inherit ( info ) src ; } ;
18- resourcesCommon = {
19- pname = "${ info . pname } -resources" ;
20- inherit ( info ) version src ;
21- inherit cargoVendorDir ;
22- strictDeps = true ;
23- nativeBuildInputs = [
24- pkgs . pkg-config
25- pkgs . lld
26- pkgs . nodejs
27- pkgs . nodePackages . npm
28- pkgs . binaryen
29- pkgs . wasm-bindgen-cli_0_2_100
30- pkgs . wasm-pack
31- pkgs . cargo-about
32- ] ;
33- buildInputs = [ pkgs . openssl ] ;
34- env . CARGO_PROFILE = if dev then "dev" else "release" ;
35- cargoExtraArgs = "--target wasm32-unknown-unknown -p graphite-wasm-wrapper --no-default-features --features native" ;
36- doCheck = false ;
37- } ;
38- resources = deps . crane . lib . buildPackage (
39- resourcesCommon
40- // {
41- cargoArtifacts = deps . crane . lib . buildDepsOnly resourcesCommon ;
42-
43- npmDeps = pkgs . importNpmLock {
44- npmRoot = "${ info . src } /frontend" ;
45- } ;
46-
47- npmRoot = "frontend" ;
48- npmConfigScript = "setup" ;
49- makeCacheWritable = true ;
50-
51- nativeBuildInputs = [
52- pkgs . importNpmLock . npmConfigHook
53- pkgs . removeReferencesTo
54- ]
55- ++ resourcesCommon . nativeBuildInputs ;
56-
57- prePatch = ''
58- mkdir branding
59- cp -r ${ branding } /* branding
60- cp ${ info . src } /.branding branding/.branding
61- '' ;
62-
63- buildPhase = ''
64- export HOME="$TMPDIR"
65-
66- pushd frontend
67- npm run native:build-${ if dev then "dev" else "production" }
68- popd
69- '' ;
70-
71- installPhase = ''
72- mkdir -p $out
73- cp -r frontend/dist/* $out/
74- '' ;
75-
76- postFixup = ''
77- find "$out" -type f -exec remove-references-to -t "${ cargoVendorDir } " '{}' +
78- '' ;
79- }
80- ) ;
17+ profile = if dev then "dev" else "release" ;
8118 libs = [
8219 pkgs . wayland
8320 pkgs . vulkan-loader
8421 pkgs . libGL
8522 pkgs . openssl
8623 pkgs . libraw
87-
8824 # X11 Support
8925 pkgs . libxkbcommon
9026 pkgs . libXcursor
9127 pkgs . libxcb
9228 pkgs . libX11
9329 ] ;
30+
9431 common = {
95- inherit ( info ) pname version src ;
96- inherit cargoVendorDir ;
97- strictDeps = true ;
32+ inherit ( info ) version src ;
33+ cargoVendorDir = deps . crane . lib . vendorCargoDeps { inherit ( info ) src ; } ;
9834 buildInputs = libs ;
99- nativeBuildInputs = [
100- pkgs . pkg-config
101- pkgs . cargo-about
102- pkgs . removeReferencesTo
103- ] ;
104- env = deps . cef . env // {
105- CARGO_PROFILE = if dev then "dev" else "release" ;
106- } ;
107- cargoExtraArgs = "-p graphite-desktop" ;
35+ strictDeps = true ;
10836 doCheck = false ;
10937 } ;
38+
39+ wasmDeps = deps . crane . lib . buildDepsOnly (
40+ common
41+ // {
42+ pname = "${ info . pname } -wasm" ;
43+ nativeBuildInputs = [
44+ pkgs . pkg-config
45+ pkgs . lld
46+ ] ;
47+ buildInputs = [ pkgs . openssl ] ;
48+ env . CARGO_PROFILE = profile ;
49+ cargoExtraArgs = "--target wasm32-unknown-unknown --no-default-features --features native" ;
50+ }
51+ ) ;
52+
53+ nativeDeps = deps . crane . lib . buildDepsOnly (
54+ common
55+ // {
56+ pname = "${ info . pname } -native" ;
57+ nativeBuildInputs = [ pkgs . pkg-config ] ;
58+ env = deps . cef . env // {
59+ CARGO_PROFILE = profile ;
60+ } ;
61+ }
62+ ) ;
63+
64+ depsCombined = deps . crane . lib . combineArtifacts "${ info . pname } -deps-${ info . version } " [
65+ wasmDeps
66+ nativeDeps
67+ ] ;
11068in
11169
11270deps . crane . lib . buildPackage (
11371 common
11472 // {
115- cargoArtifacts = deps . crane . lib . buildDepsOnly common ;
73+ inherit ( info ) pname ;
11674
117- env = common . env // {
118- RASTER_NODES_SHADER_PATH = self . packages . ${ system } . graphite-raster-nodes-shaders ;
119- EMBEDDED_RESOURCES = resources ;
120- GRAPHITE_GIT_COMMIT_HASH = self . rev or "unknown" ;
121- GRAPHITE_GIT_COMMIT_DATE = self . lastModified or "unknown" ;
122- } ;
75+ cargoArtifacts = depsCombined ;
76+
77+ buildInputs = libs ;
78+ nativeBuildInputs = [
79+ pkgs . pkg-config
80+ pkgs . lld
81+ pkgs . nodejs
82+ pkgs . nodePackages . npm
83+ pkgs . binaryen
84+ pkgs . wasm-bindgen-cli_0_2_100
85+ pkgs . wasm-pack
86+ pkgs . cargo-about
87+ pkgs . removeReferencesTo
88+ pkgs . importNpmLock . npmConfigHook
89+ ] ;
12390
12491 npmDeps = pkgs . importNpmLock {
12592 npmRoot = "${ info . src } /frontend" ;
12693 } ;
12794 npmRoot = "frontend" ;
128- nativeBuildInputs = [
129- pkgs . importNpmLock . npmConfigHook
130- pkgs . nodePackages . npm
131- ]
132- ++ common . nativeBuildInputs ;
95+ npmConfigScript = "setup" ;
96+ makeCacheWritable = true ;
97+
98+ env = deps . cef . env // {
99+ CARGO_PROFILE = profile ;
100+ RASTER_NODES_SHADER_PATH = self . packages . ${ system } . graphite-raster-nodes-shaders ;
101+ GRAPHITE_GIT_COMMIT_HASH = self . rev or "unknown" ;
102+ GRAPHITE_GIT_COMMIT_DATE = self . lastModified or "unknown" ;
103+ } ;
104+
105+ postPatch = ''
106+ mkdir branding
107+ cp -r ${ branding } /* branding
108+ cp ${ info . src } /.branding branding/.branding
109+ '' ;
133110
134111 preBuild = ''
135- ${ lib . getExe self . packages . ${ system } . tools . third-party-licenses }
112+ # Prevent `package-installer.js` from trying to update npm dependencies
113+ touch -r frontend/package-lock.json -d '+1 year' frontend/node_modules/.install-timestamp
114+
115+ export HOME="$TMPDIR"
136116 ''
137117 + (
138118 if self ? rev then
@@ -143,6 +123,10 @@ deps.crane.lib.buildPackage (
143123 ""
144124 ) ;
145125
126+ buildPhaseCargoCommand = "cargo run build desktop${ if dev then " debug" else "" } " ;
127+
128+ doNotPostBuildInstallCargoBinaries = true ;
129+
146130 installPhase = ''
147131 mkdir -p $out/bin
148132 cp target/${ if dev then "debug" else "release" } /graphite $out/bin/graphite
@@ -161,12 +145,14 @@ deps.crane.lib.buildPackage (
161145 '' ;
162146
163147 postFixup = ''
164- remove-references-to -t "${ cargoVendorDir } " $out/bin/graphite
148+ remove-references-to -t "${ common . cargoVendorDir } " $out/bin/graphite
165149
166150 patchelf \
167151 --set-rpath "${ pkgs . lib . makeLibraryPath libs } :${ deps . cef . env . CEF_PATH } " \
168152 --add-needed libGL.so \
169153 $out/bin/graphite
170154 '' ;
155+
156+ passthru . deps = depsCombined ;
171157 }
172158)
0 commit comments