git.iko.soy/rowtype-yoga/purescript-protobuf
on v1.7.0 help sign in
57 lines 1.5 kB history raw
1# Derivation which provides `protoc-gen-purescript` on the PATH
2#
3{ pkgs ? import ./nix/pkgs.nix {} }:
5let
6 node2NixFiles = srcPath:
7 pkgs.stdenv.mkDerivation {
8 name = "node2NixFiles";
9 nativeBuildInputs = with pkgs; [ nodejs node2nix.package ];
10 src = srcPath;
11 unpackPhase = ''
12 cp $src/package.json $src/package-lock.json .
13 '';
14 buildPhase = ''
15 node2nix -l package-lock.json
16 '';
17 installPhase = ''
18 mkdir $out
19 cp node-env.nix node-packages.nix default.nix $out/
20 cp package.json package-lock.json $out/
21 '';
22 };
24 protobufNixNode = import (node2NixFiles ./.) { inherit pkgs; };
25 spagoPkgs = import ./nix/spago-packages.nix { inherit pkgs; };
26in
28pkgs.stdenv.mkDerivation {
29 name = "purescript-protobuf-generator";
30 buildInputs = [
31 spagoPkgs.installSpagoStyle
32 spagoPkgs.buildSpagoStyle
33 ];
34 nativeBuildInputs = with pkgs; [
35 easy-ps.purs-0_13_8
36 easy-ps.spago
37 ];
38 src = ./.;
39 unpackPhase = ''
40 cp $src/spago.dhall .
41 cp $src/packages.dhall .
42 cp -r $src/src .
43 cp -r ${protobufNixNode.nodeDependencies}/lib/node_modules .
44 install-spago-style
45 '';
46 buildPhase = ''
47 build-spago-style "./src/**/*.purs"
48 '';
49 installPhase = ''
50 mkdir -p $out/bin
51 mv output $out/
52 cp -r node_modules $out/
53 echo "node -e \"require('$out/output/ProtocPlugin.Main/index.js').main()\"" >> $out/bin/protoc-gen-purescript
54 chmod +x $out/bin/protoc-gen-purescript
55 '';
56 LC_ALL = "C.UTF-8";