git.iko.soy/typeable/servant-reflex
on no-hasclientmulti help sign in
70 lines 2.0 kB history raw
1{
2 nativeCompiler ? "ghc",
3 # ^ Choose a GHC for compiling backend components (web server, selenium)
4 # (ghc, ghc8_0, ghc8_2, ghc8_4 or ghcHEAD)
6 jsCompiler ? "ghcjs"
7 # ^ Choose a GHCJS for compiling the frontend
8 # (ghcjs, ghcjs8_0, ghcjs8_2 or ghcjs8_4)
10}:
12let
14 reflexPlatform = import ./nix/reflex-platform.nix;
16 lib = reflexPlatform.nixpkgs.haskell.lib;
17 do = funs: pkg: builtins.foldl' (a: b: b a) pkg funs;
19 ghcjsPkgs = with lib; reflexPlatform.${jsCompiler}.override {
20 overrides = self: super: {
21 http-media = dontCheck super.http-media;
22 servant = dontCheck super.servant;
23 lens-aeson = dontCheck super.lens-aeson;
24 servant-reflex = lib.appendConfigureFlag
25 (self.callPackage ./default.nix {}) "-fExample";
26 };
27 };
29 ghcPkgs = with lib; reflexPlatform.${nativeCompiler}.override {
30 overrides = self: super: {
31 servant-snap = dontCheck ((import ./nix/servant-snap.nix {}) self super);
32 testdriver = self.callCabal2nix "testdriver" ./testdriver {};
33 testserver = import nix/testserver.nix ghcjsPkgs.servant-reflex self super;
34 servant-reflex = self.callPackage ./default.nix {};
35 };
36 };
38 testresults = import ./nix/testresults.nix
39 { inherit reflexPlatform;
40 inherit (ghcPkgs) testserver testdriver;
41 inherit (reflexPlatform.nixpkgs) curl;
42 phantomjs = reflexPlatform.nixpkgs.phantomjs2;
43 };
45in
46 rec {
48 inherit reflexPlatform ghcPkgs ghcjsPkgs;
50 build = ghcjsPkgs.servant-reflex;
51 buildGhc = ghcPkgs.servant-reflex;
52 testserver = ghcPkgs.testserver;
53 testdriver = ghcPkgs.testdriver;
54 inherit testresults;
56 cabalBuild = reflexPlatform.${jsCompiler}.shellFor {
57 name = "servant-reflex-cabal-builder";
59 packages = p: [
60 build
61 ];
63 shellHook = ''
64 cabal configure --ghcjs -f Example
65 cabal build
66 exec/toSite.sh
67 exit $?
68 '';
69 };
70 }