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 "debug" 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 = {
9532 inherit ( info ) pname version src ;
96- inherit cargoVendorDir ;
97- strictDeps = true ;
33+ cargoVendorDir = deps . crane . lib . vendorCargoDepsFlatten (
34+ deps . crane . lib . vendorMultipleCargoDeps {
35+ inherit ( deps . crane . lib . findCargoFiles ( deps . crane . lib . cleanCargoSource info . src ) ) cargoConfigs ;
36+ cargoLockList = [
37+ "${ info . src } /Cargo.lock"
38+ "${ deps . rustGPU . toolchain . availableComponents . rust-src } /lib/rustlib/src/rust/library/Cargo.lock"
39+ ] ;
40+ }
41+ ) ;
9842 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" ;
43+ strictDeps = true ;
10844 doCheck = false ;
10945 } ;
46+
47+ cargoArtifacts = deps . crane . lib . buildDepsOnly (
48+ common
49+ // {
50+ nativeBuildInputs = [
51+ pkgs . pkg-config
52+ pkgs . lld
53+ ] ;
54+ env = deps . cef . env ;
55+ extraCargoArgs = [
56+ "-p"
57+ "graphite-desktop-platform-linux"
58+ ] ;
59+ buildPhase =
60+ let
61+ profile = if dev then "dev" else "release" ;
62+ in
63+ ''
64+ cargo check --profile ${ profile } --locked -p graphite-desktop-platform-linux
65+ cargo build --profile ${ profile } --locked -p graphite-desktop-platform-linux
66+
67+ cargo check --profile ${ profile } --target wasm32-unknown-unknown --locked -p graphite-wasm-wrapper --no-default-features --features native
68+ cargo build --profile ${ profile } --target wasm32-unknown-unknown --locked -p graphite-wasm-wrapper --no-default-features --features native
69+ '' ;
70+ }
71+ ) ;
11072in
11173
11274deps . crane . lib . buildPackage (
11375 common
11476 // {
115- cargoArtifacts = deps . crane . lib . buildDepsOnly common ;
77+ inherit cargoArtifacts ;
11678
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- } ;
79+ buildInputs = libs ;
80+ nativeBuildInputs = [
81+ pkgs . pkg-config
82+ pkgs . lld
83+ pkgs . nodejs
84+ pkgs . nodePackages . npm
85+ pkgs . binaryen
86+ pkgs . wasm-bindgen-cli_0_2_100
87+ pkgs . wasm-pack
88+ pkgs . cargo-about
89+ pkgs . removeReferencesTo
90+ pkgs . importNpmLock . npmConfigHook
91+ ] ;
12392
12493 npmDeps = pkgs . importNpmLock {
12594 npmRoot = "${ info . src } /frontend" ;
12695 } ;
12796 npmRoot = "frontend" ;
128- nativeBuildInputs = [
129- pkgs . importNpmLock . npmConfigHook
130- pkgs . nodePackages . npm
131- ]
132- ++ common . nativeBuildInputs ;
97+ npmConfigScript = "setup" ;
98+ makeCacheWritable = true ;
99+
100+ env = deps . cef . env // {
101+ RASTER_NODES_SHADER_PATH = self . packages . ${ system } . graphite-raster-nodes-shaders ;
102+ GRAPHITE_GIT_COMMIT_HASH = self . rev or "unknown" ;
103+ GRAPHITE_GIT_COMMIT_DATE = self . lastModified or "unknown" ;
104+ } ;
105+
106+ postPatch = ''
107+ mkdir branding
108+ cp -r ${ branding } /* branding
109+ cp ${ info . src } /.branding branding/.branding
110+ '' ;
133111
134112 preBuild = ''
135- ${ lib . getExe self . packages . ${ system } . tools . third-party-licenses }
113+ # Prevent `package-installer.js` from trying to update npm dependencies
114+ touch -r frontend/package-lock.json -d '+1 year' frontend/node_modules/.install-timestamp
115+
116+ export HOME="$TMPDIR"
136117 ''
137118 + (
138119 if self ? rev then
@@ -143,6 +124,10 @@ deps.crane.lib.buildPackage (
143124 ""
144125 ) ;
145126
127+ buildPhaseCargoCommand = "cargo run build desktop${ if dev then " debug" else "" } " ;
128+
129+ doNotPostBuildInstallCargoBinaries = true ;
130+
146131 installPhase = ''
147132 mkdir -p $out/bin
148133 cp target/${ if dev then "debug" else "release" } /graphite $out/bin/graphite
@@ -161,12 +146,14 @@ deps.crane.lib.buildPackage (
161146 '' ;
162147
163148 postFixup = ''
164- remove-references-to -t "${ cargoVendorDir } " $out/bin/graphite
149+ remove-references-to -t "${ common . cargoVendorDir } " $out/bin/graphite
165150
166151 patchelf \
167152 --set-rpath "${ pkgs . lib . makeLibraryPath libs } :${ deps . cef . env . CEF_PATH } " \
168153 --add-needed libGL.so \
169154 $out/bin/graphite
170155 '' ;
156+
157+ passthru . deps = cargoArtifacts ;
171158 }
172159)
0 commit comments