git.iko.soy/typeable/servant-reflex
on mniip/uverb-stuff help sign in
71 lines 2.1 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.callHackage "servant" "0.18.2" {}) ;
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 = doJailbreak ( dontCheck ((import ./nix/servant-snap.nix {}) self super)) ;
32 servant = dontCheck (super.callHackage "servant" "0.18.2" {}) ;
33 testdriver = self.callCabal2nix "testdriver" ./testdriver {};
34 testserver = import nix/testserver.nix ghcjsPkgs.servant-reflex self super;
35 servant-reflex = self.callPackage ./default.nix {};
36 };
37 };
39 testresults = import ./nix/testresults.nix
40 { inherit reflexPlatform;
41 inherit (ghcPkgs) testserver testdriver;
42 inherit (reflexPlatform.nixpkgs) curl;
43 phantomjs = reflexPlatform.nixpkgs.phantomjs2;
44 };
46in
47 rec {
49 inherit reflexPlatform ghcPkgs ghcjsPkgs;
51 build = ghcjsPkgs.servant-reflex;
52 buildGhc = ghcPkgs.servant-reflex;
53 testserver = ghcPkgs.testserver;
54 testdriver = ghcPkgs.testdriver;
55 inherit testresults;
57 cabalBuild = reflexPlatform.${jsCompiler}.shellFor {
58 name = "servant-reflex-cabal-builder";
60 packages = p: [
61 build
62 ];
64 shellHook = ''
65 cabal configure --ghcjs -f Example
66 cabal build
67 exec/toSite.sh
68 exit $?
69 '';
70 };
71 }