git.iko.soy/sawtooth-haskell-protos
on master help sign in
66 lines 2.2 kB history raw
1{ sources ? import nix/sources.nix { inherit system; }
2, nixpkgs ? import sources.nixpkgs { inherit system; }
3, system ? builtins.currentSystem
4, ghc ? "ghc8103"
5}:
6let
7 unbreak = x: x.overrideDerivation (_: {
8 broken = false;
9 });
10 overrides = (hself: hsuper: {
11 proto3-suite = nixpkgs.haskell.lib.dontCheck (
12 nixpkgs.haskell.lib.doJailbreak (
13 hsuper.callCabal2nix "proto3-suite"
14 sources.proto3-suite { }
15 )
16 );
17 proto3-wire =
18 hsuper.callHackageDirect
19 {
20 pkg = "proto3-wire";
21 ver = "1.2.0";
22 sha256 = "1jqz6zsli5zvlissy7mkgyrzkapjvgijx7kjva4fxjwdyd0hqix7";
23 } { };
24 haskell-src = nixpkgs.haskell.lib.doJailbreak (unbreak hsuper.haskell-src);
25 parameterized = nixpkgs.haskell.lib.dontCheck (nixpkgs.haskell.lib.doJailbreak (unbreak hsuper.parameterized));
26 });
27 haskell = nixpkgs.haskell.packages.${ghc}.override {
28 inherit overrides;
29 };
30 sawtooth-haskell-protos-src = nixpkgs.stdenv.mkDerivation {
31 name = "sawtooth-haskell-protos-src";
32 buildInputs = [ haskell.proto3-suite ];
33 src = sources.sawtooth-core + "/protos";
34 buildPhase = ''
35 for f in *.proto
36 do
37 sed -i -e "/syntax = \"proto3\";/a package $(basename $f .proto);" -e 's/import "/import "data\/sawtooth\//' $f
38 done
40 mkdir -p data/sawtooth
41 mv *.proto data/sawtooth
43 for f in data/sawtooth/**.proto
44 do
45 compile-proto-file --includeDir data/sawtooth --includeDir $(pwd) --proto $f --out out/src
46 done
48 cp ${./package.yaml} out/package.yaml
49 '';
50 installPhase = ''
51 mkdir $out
52 cp -a out/. $out/
53 '';
54 };
55 sawtooth-haskell-protos =
56 nixpkgs.haskellPackages.callCabal2nix "sawtooth-haskell-protos" sawtooth-haskell-protos-src { };
57 sawtooth-haskell-protos-overlay = nixpkgs.lib.composeExtensions overrides (hself: hsuper: {
58 sawtooth-haskell-protos = hsuper.callCabal2nix "sawtooth-haskell-protos" sawtooth-haskell-protos-src { };
59 });
60in
62 inherit sawtooth-haskell-protos-src sawtooth-haskell-protos-overlay;
63 build = (nixpkgs.haskell.packages.${ghc}.override {
64 overrides = sawtooth-haskell-protos-overlay;
65 }).sawtooth-haskell-protos;