{ stdenv, lib, mkYarnPackage, nodejs, python2, ligo-bin, coreutils , writeShellScriptBin, makeFontsConf, buildEnv, rsync, sources , chromium ? null }: let yarnLock = ../tools/webide/yarn.lock; installPhase = "mkdir $out; cp -Lr node_modules $out/node_modules"; server = mkYarnPackage { name = "webide-server"; src = ../tools/webide/packages/server; buildPhase = '' cp ${../tools/webide/tsconfig.json} tsconfig.json yarn --offline run build rm node_modules/server/server ''; doCheck = true; checkPhase = "DATA_DIR=/tmp LIGO_CMD=${ligo-bin}/bin/ligo yarn --offline jest"; distPhase = "true"; inherit yarnLock installPhase; }; client = mkYarnPackage rec { name = "webide-client"; src = ../tools/webide/packages/client; buildPhase = '' export EXAMPLES_DIR=${../src/test/examples} yarn --offline run build rm node_modules/client/client find deps/client/build -type f -exec sed -r "s,/nix/store/[a-z0-9]{32}-[^/]*,$out,g" -i '{}' \; ''; distPhase = "true"; installPhase = "mkdir $out; cp -Lr deps/client/build $out"; inherit yarnLock; # Downloads node-sass from the official github repo # Uncomment the commented lines if you wish to build it from source yarnPreBuild = "export SASS_BINARY_PATH=${sources.node-sass-bin}"; /* '' mkdir -p "$HOME/.node-gyp/${nodejs.version}" echo 9 > "$HOME/.node-gyp/${nodejs.version}/installVersion" ln -sfv "${nodejs}/include" "$HOME/.node-gyp/${nodejs.version}" ''; */ }; e2e = mkYarnPackage rec { name = "webide-e2e"; src = ../tools/webide/packages/e2e; # Provide puppeteer with chromium, since it can't download it inside the nix sandbox. # Also, since we override nodejs in our overlays, import chromium from pure nixpkgs to avoid a rebuild buildPhase = '' export HOME="$(pwd)" export PUPPETEER_SKIP_CHROMIUM_DOWNLOAD=1 export PUPPETEER_EXECUTABLE_PATH=${(import (import ./sources.nix).nixpkgs {}).chromium.outPath}/bin/chromium ${ligo-editor}/bin/ligo-editor & export API_HOST=http://localhost:8080 export FONTCONFIG_FILE=${makeFontsConf { fontDirectories = [ ]; }} yarn --offline jest ''; distPhase = "true"; installPhase = "touch $out"; inherit yarnLock; }; ligo-editor = writeShellScriptBin "ligo-editor" '' set -e LIGO_CMD=${ligo-bin}/bin/ligo \ STATIC_ASSETS=${client} \ DATA_DIR=/tmp \ ${nodejs}/bin/node ${server}/node_modules/server/dist/src/index.js ''; in ligo-editor // { inherit e2e; }