11{ info , pkgs , inputs , deps , libs , tools , ... } :
22
3+ {
4+ embeddedResources ? true ,
5+ } :
6+
37let
4- cargoDeps = deps . crane . lib . buildDepsOnly {
5- inherit ( info ) pname version src ;
6- strictDeps = true ;
7- buildInputs = libs . desktop-all ;
8- nativeBuildInputs = tools . desktop ;
9- } ;
10- resources = deps . crane . lib . buildPackage {
8+ resourcesCommon = {
119 pname = "${ info . pname } -resources" ;
1210 inherit ( info ) version src ;
13-
14- cargoArtifacts = cargoDeps ;
15-
1611 strictDeps = true ;
12+ doCheck = false ;
13+ nativeBuildInputs = tools . frontend ;
14+ cargoExtraArgs = "--target wasm32-unknown-unknown -p graphite-wasm --no-default-features --features native" ;
15+ } ;
16+ resources = deps . crane . lib . buildPackage ( resourcesCommon // {
17+ cargoArtifacts = deps . crane . lib . buildDepsOnly resourcesCommon ;
1718
1819 # TODO: Remove the need for this hash by using individual package resolutions and hashes from package-lock.json
1920 npmDeps = pkgs . fetchNpmDeps {
2627 npmConfigScript = "setup" ;
2728 makeCacheWritable = true ;
2829
29- buildInputs = libs . desktop-all ;
3030 nativeBuildInputs = tools . frontend ++ [ pkgs . npmHooks . npmConfigHook ] ;
3131
3232 buildPhase = ''
4141 mkdir -p $out
4242 cp -r frontend/dist/* $out/
4343 '' ;
44-
44+ } ) ;
45+ common = {
46+ inherit ( info ) pname version src ;
47+ strictDeps = true ;
48+ buildInputs = libs . desktop-all ;
49+ nativeBuildInputs = tools . desktop ++ [ pkgs . makeWrapper ] ;
50+ env = deps . cef . env ;
4551 doCheck = false ;
52+ cargoExtraArgs = "-p graphite-desktop${ if embeddedResources then "" else " --no-default-features --features recommended" } " ;
4653 } ;
4754in
4855
49- deps . crane . lib . buildPackage {
50- inherit ( info ) pname version src ;
51-
52- cargoArtifacts = cargoDeps ;
53-
54- strictDeps = true ;
56+ deps . crane . lib . buildPackage ( common // {
57+ cargoArtifacts = deps . crane . lib . buildDepsOnly common ;
5558
56- buildInputs = libs . desktop-all ;
57- nativeBuildInputs = tools . desktop ;
58-
59- env = deps . cef . env // {
60- EMBEDDED_RESOURCES = resources ;
59+ env = common . env // {
6160 GRAPHENE_RASTER_NODES_SHADER_PATH = pkgs . graphene-raster-nodes-shaders ;
62- } ;
61+ } // ( if embeddedResources then {
62+ EMBEDDED_RESOURCES = resources ;
63+ } else { } ) ;
6364
6465 buildPhase = ''
65- cargo build -r -p graphite-desktop
66+ cargo build -r ${ common . cargoExtraArgs }
6667 '' ;
6768
6869 installPhase = ''
@@ -76,11 +77,9 @@ deps.crane.lib.buildPackage {
7677 cp $src/desktop/assets/graphite-icon-color.svg $out/share/icons/hicolor/scalable/apps/
7778 '' ;
7879
79- doCheck = false ;
80-
8180 postFixup = ''
8281 wrapProgram "$out/bin/graphite" \
8382 --prefix LD_LIBRARY_PATH : "${ pkgs . lib . makeLibraryPath libs . desktop-all } :${ deps . cef . env . CEF_PATH } " \
8483 --set CEF_PATH "${ deps . cef . env . CEF_PATH } "
8584 '' ;
86- }
85+ } )
0 commit comments