78 lines
2.8 KiB
Nix
78 lines
2.8 KiB
Nix
{ stdenv, lib, mkYarnPackage, nodejs, python2, ligo-bin, coreutils
|
|
, writeShellScriptBin, makeFontsConf, buildEnv, rsync, sources
|
|
, chromium ? null }:
|
|
let
|
|
# Use a common yarn.lock for everything
|
|
yarnLock = ../tools/webide/yarn.lock;
|
|
|
|
installPhase = "mkdir $out; cp -Lr node_modules $out/node_modules";
|
|
|
|
# node_modules of the server
|
|
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;
|
|
};
|
|
|
|
# node_modules of the client
|
|
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}"
|
|
'';
|
|
*/
|
|
};
|
|
|
|
# Perform the e2e tests; output is empty on purpose
|
|
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;
|
|
};
|
|
|
|
# Run the WebIDE server with all the needed env variables
|
|
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; }
|