@@ -0,0 +1,112 @@
1+{ compiler ? "ghc865"
2+, pkgs ? import ./pkgs.nix
3+}:
4+
5+let
6+ inherit (pkgs.lib.trivial) flip pipe;
7+ inherit (pkgs.haskell.lib) appendPatch appendConfigureFlags;
8+ doJailbreak = pkgs.haskell.lib.doJailbreak;
9+ dontHaddock = pkgs.haskell.lib.dontHaddock;
10+ dontCheck = pkgs.haskell.lib.dontCheck;
11+ #distributed-process packages are no longer maintained- until we replace it entirely, add some hacks to build on newer GHC and packages
12+ distProcessPkg = pkg : dontHaddock (doJailbreak (dontCheck pkg));
13+ callHackageDirectWithOptions = {pkg,ver, sha256, options}:
14+ let pkgver = "${pkg}-${ver}";
15+ in
16+ haskellPackages.callCabal2nixWithOptions pkg (pkgs.fetchzip {
17+ url = "mirror://hackage/${pkgver}/${pkgver}.tar.gz";
18+ inherit sha256;
19+ }) options;
20+
21+ haskellPackages = pkgs.haskell.packages.${compiler}.override {
22+ overrides = self: super: {
23+ distributed-process-extras =
24+ distProcessPkg (self.callHackageDirect {
25+ pkg = "distributed-process-extras";
26+ ver = "0.3.5";
27+ sha256 = "13clq3alymcvknp7q8gz0i1hzx8im855lzmyrfffl8gglnlbi2w9";
28+ }{});
29+
30+ distributed-process-client-server =
31+ distProcessPkg (self.callHackageDirect {
32+ pkg = "distributed-process-client-server";
33+ ver = "0.2.5.1";
34+ sha256 = "0gkd8awapq7vy14vpnzawnwb67jvvcjaqg7imm0bp1wb6rw6x5x4";
35+ }{});
36+
37+ distributed-process-async =
38+ distProcessPkg (callHackageDirectWithOptions {
39+ pkg = "distributed-process-async";
40+ ver = "0.2.6";
41+ sha256 = "15wyfq115r6xjaz1h00sjh1v0fv498kkxr3xx6w84d8wdp2gxbn1";
42+ options = "--no-check";
43+ }{});
44+
45+ distributed-process =
46+ dontHaddock (self.callCabal2nix "distributed-process" (pkgs.fetchFromGitHub {
47+ owner = "agentm";
48+ repo = "distributed-process";
49+ rev = "f352e097fbe494ad648b4e09249f865893ae90a3";
50+ sha256 = "0xa2v77c9idmi89bky2wq1fykrn8grpk4rk7gcd5bkicxvdbcrym";}){});
51+
52+ distributed-static =
53+ self.callHackageDirect {
54+ pkg = "distributed-static";
55+ ver = "0.3.9";
56+ sha256 = "0hibpzqwklnq335m7fwgk1bghz0lgxnd7ym10pbvxlcf7ly3nr6v";
57+}{};
58+ rank1dynamic =
59+ distProcessPkg (self.callHackageDirect {
60+ pkg = "rank1dynamic";
61+ ver = "0.4.0";
62+ sha256 = "1x6p9z53s7xwp93jp4n1lq6m5xspcn6w62p461v8vqnp9600328b";
63+}{});
64+ stm-hamt =
65+ self.callHackageDirect {
66+ pkg = "stm-hamt";
67+ ver = "1.2.0.3";
68+ sha256 = "1i8j7q8nhx3l7gydrjlsyhkvllr6bppgrjf0hp38zpm7p6xcv2bb";
69+ }{};
70+
71+ stm-containers =
72+ self.callHackageDirect {
73+ pkg = "stm-containers";
74+ ver = "1.1.0.4";
75+ sha256 = "0h9z6lawdm44minx9spvdb7sp645l36ri5cnxvhrcxwzr64s7qb5";
76+ }{};
77+
78+ network-transport-tcp =
79+ dontCheck (self.callHackageDirect {
80+ pkg = "network-transport-tcp";
81+ ver = "0.7.0";
82+ sha256 = "0kfzrcynf34xsxx4rccg4qfy7jvinwqd8baian8ifqad9lfcapsb";
83+ }{});
84+
85+ data-interval =
86+ self.callHackageDirect {
87+ pkg = "data-interval";
88+ ver = "2.0.1";
89+ sha256 = "085j4yjr8wimxampxqdrg47p577whwg2mjxgfdl44yfck52fb6an";
90+ }{};
91+
92+ project-m36 = self.callCabal2nixWithOptions "project-m36" ./. "-f-haskell-scripting" { };
93+
94+ };
95+ };
96+
97+ project = haskellPackages.project-m36;
98+in
99+{
100+ project = project;
101+
102+ shell = haskellPackages.shellFor {
103+ packages = p: with p; [
104+ project
105+ ];
106+ buildInputs = with haskellPackages; [
107+ ghcid
108+ hlint # or ormolu
109+ ];
110+ withHoogle = true;
111+ };
112+}