on nixify-ci help sign in
servant-reflex/travis.nix
77 lines 2.5 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 = do [ dontCheck doJailbreak ] super.servant;
23 servant-reflex = lib.appendConfigureFlag
24 (self.callPackage ./default.nix {}) "-fExample";
25 uri-bytestring = doJailbreak super.uri-bytestring;
26 http-api-data = dontHaddock super.http-api-data;
27 };
28 };
30 ghcPkgs = with lib; reflexPlatform.${nativeCompiler}.override {
31 overrides = self: super: {
32 heist = do [ doJailbreak dontCheck ] super.heist;
33 http-media = dontCheck super.http-media;
34 snap = doJailbreak (self.callHackage "snap" "1.1.1.0" {});
35 hspec-webdriver = lib.appendPatch super.hspec-webdriver
36 ./nix/hspec-webdriver.patch;
37 hspec-snap = doJailbreak super.hspec-snap;
38 snap-server = dontCheck super.snap-server;
39 servant-snap = do [ dontCheck doJailbreak ] (self.callHackage "servant-snap" "0.8.1" {});
40 skylighting = dontCheck super.skylighting;
41 testdriver = self.callCabal2nix "testdriver" ./testdriver {};
42 testserver = import nix/testserver.nix ghcjsPkgs.servant-reflex self super;
43 };
44 };
46 testresults = import ./nix/testresults.nix
47 { inherit reflexPlatform;
48 inherit (ghcPkgs) testserver testdriver;
49 inherit (reflexPlatform.nixpkgs) curl;
50 phantomjs = reflexPlatform.nixpkgs.phantomjs2;
51 };
53in
54 rec {
56 inherit reflexPlatform ghcPkgs ghcjsPkgs;
58 build = ghcjsPkgs.servant-reflex;
59 testserver = ghcPkgs.testserver;
60 testdriver = ghcPkgs.testdriver;
61 inherit testresults;
63 cabalBuild = reflexPlatform.${jsCompiler}.shellFor {
64 name = "servant-reflex-cabal-builder";
66 packages = p: [
67 build
68 ];
70 shellHook = ''
71 cabal configure --ghcjs -f Example
72 cabal build
73 exec/toSite.sh
74 exit $?
75 '';
76 };
77 }