/
default.nix
49 lines (44 loc) · 1.96 KB
/
default.nix
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
{ pkgs, gitignore-nix, haskell, webCommon, webCommonMarlowe, buildPursPackage, buildNodeModules, filterNpm, plutus-pab }:
let
marlowe-invoker = haskell.packages.marlowe.components.exes.marlowe-pab;
generated-purescript = pkgs.runCommand "marlowe-pab-purescript" { } ''
mkdir $out
ln -s ${haskell.packages.plutus-pab.src}/plutus-pab.yaml.sample plutus-pab.yaml
${marlowe-invoker}/bin/marlowe-pab psapigenerator $out
'';
generate-purescript = pkgs.writeShellScriptBin "marlowe-pab-generate-purs" ''
generatedDir=./generated
rm -rf $generatedDir
# There might be local modifications so only copy when missing
! test -f ./plutus-pab.yaml && cp ../plutus-pab/plutus-pab.yaml.sample plutus-pab.yaml
$(nix-build ../default.nix --quiet --no-build-output -A plutus-pab.server-setup-invoker)/bin/plutus-pab-setup psgenerator $generatedDir
$(nix-build ../default.nix --quiet --no-build-output -A plutus-pab.test-generator)/bin/plutus-pab-test-psgenerator $generatedDir
$(nix-build ../default.nix --quiet --no-build-output -A marlowe-dashboard.marlowe-invoker)/bin/marlowe-pab --config plutus-pab.yaml psapigenerator $generatedDir
'';
cleanSrc = gitignore-nix.gitignoreSource ./.;
nodeModules = buildNodeModules {
projectDir = filterNpm cleanSrc;
packageJson = ./package.json;
packageLockJson = ./package-lock.json;
githubSourceHashMap = { };
};
client = buildPursPackage {
inherit pkgs nodeModules;
src = cleanSrc;
checkPhase = ''
node -e 'require("./output/Test.Main").main()'
'';
name = "marlowe-dashboard-client";
extraSrcs = {
web-common = webCommon;
web-common-marlowe = webCommonMarlowe;
generated = generated-purescript;
};
packages = pkgs.callPackage ./packages.nix { };
spagoPackages = pkgs.callPackage ./spago-packages.nix { };
};
in
{
inherit (plutus-pab) server-setup-invoker start-backend;
inherit client marlowe-invoker generate-purescript generated-purescript;
}