@@ -0,0 +1,163 @@
1+let
2+ nixpkgsPath_21_11 =
3+ "https://github.com/NixOS/nixpkgs/archive/refs/tags/21.11.tar.gz";
4+ nixpkgsDefault = import (builtins.fetchTarball nixpkgsPath_21_11) { };
5+in
6+{
7+ nixpkgs ? nixpkgsDefault
8+, compiler ? "default"
9+}:
10+let haskellPackages =
11+ if compiler == "default"
12+ then nixpkgs.haskellPackages
13+ else nixpkgs.haskell.packages.${compiler};
14+
15+ mkPackage = super: pkg: path: opts: inShell:
16+ let orig = super.callCabal2nixWithOptions pkg path opts {};
17+ in if inShell
18+ # Avoid copying the source directory to nix store by using
19+ # src = null.
20+ then orig.overrideAttrs (oldAttrs: { src = null; })
21+ else orig;
22+
23+ mkPkgGit = super: gitSrc: rev: name:
24+ let
25+ src = builtins.fetchGit {
26+ url = gitSrc;
27+ rev = rev;
28+ };
29+ in super.callCabal2nix name src { };
30+
31+ mkPkgGitRef = super: gitSrc: rev: ref: name:
32+ let
33+ src = builtins.fetchGit {
34+ url = gitSrc;
35+ rev = rev;
36+ ref = ref;
37+ };
38+ in super.callCabal2nix name src { };
39+
40+ mkHaskellPackages = inShell:
41+ haskellPackages.override {
42+ overrides = self: super:
43+ with nixpkgs.haskell.lib;
44+ {
45+ report = mkPackage super "streamly-targets" ./. "" inShell;
46+
47+ bench-report =
48+ nixpkgs.haskell.lib.overrideCabal
49+ (let src = fetchGit {
50+ url = "git@github.com:composewell/bench-report.git";
51+ rev = "57d0ad221c74cdb2ce81646ab18300e8bb8e716b";
52+ }; in super.callCabal2nix "bench-report" src {})
53+ (old:
54+ { enableLibraryProfiling = false;
55+ doHaddock = false;
56+ });
57+
58+ bench-show = super.callHackageDirect {
59+ pkg = "bench-show";
60+ ver = "0.3.2";
61+ sha256 = "16b8vyzdp9b5bh34kqmbfwjsyv8wgnxxwl8kjcpgxjsh52xzyaa0";
62+ } { };
63+
64+# streamly-coreutils = let
65+# src = "git@github.com:composewell/streamly-coreutils.git";
66+# rev = "a12756efe24bbf303f2f6d66a95426c7657d297b";
67+# in mkPkgGit super src rev "streamly-coreutils";
68+
69+ streamly-coreutils =
70+ nixpkgs.haskell.lib.overrideCabal
71+ (let src = fetchGit {
72+ url = "git@github.com:composewell/streamly-coreutils.git";
73+ rev = "8fa4a3ebedb3f970f64b7d78d8ab340b0f771abe";
74+ }; in super.callCabal2nix "streamly-coreutils" src {})
75+ (old:
76+ { librarySystemDepends =
77+ if builtins.currentSystem == "x86_64-darwin"
78+ then [nixpkgs.darwin.apple_sdk.frameworks.Cocoa]
79+ else [];
80+ #enableLibraryProfiling = false;
81+ doHaddock = false;
82+ doCheck = false;
83+ });
84+
85+ streamly-shell = let
86+ src = "https://github.com/composewell/streamly-shell.git";
87+ rev = "7d77ddc0c06aec21fbbfd1b920ec4f58da654a1b";
88+ in mkPkgGit super src rev "streamly-shell";
89+
90+ streamly-process = let
91+ src = "https://github.com/composewell/streamly-process.git";
92+ rev = "a56ef61c1208c2d564a526eba315d903c0b4af2c";
93+ in nixpkgs.haskell.lib.dontCheck
94+ (mkPkgGit super src rev "streamly-process");
95+
96+ #streamly-process = nixpkgs.haskell.lib.dontCheck
97+ # (super.callHackageDirect {
98+ # pkg = "streamly-process";
99+ # ver = "0.1.0";
100+ # sha256 = "01nxisqfmn29fbirdsx71sfjp2rdqwrf469qyjcql2d11i1bxn94";
101+ # } { });
102+
103+ # streamly = super.callHackageDirect {
104+ # pkg = "streamly";
105+ # ver = "0.8.0";
106+ # sha256 = "0vy2lkljizlhpbpbybmg9jcmj2g4s1aaqd2dzy5c0y0n4rgwxask";
107+ # } { };
108+ streamly =
109+ nixpkgs.haskell.lib.overrideCabal
110+ #(super.callHackageDirect
111+ # { pkg = "streamly";
112+ # ver = "0.8.2";
113+ # sha256 = "sha256-CjFq9SCdbgLZa7NqOE4OtC8OaFg4vK8VmIDjGU5rGko=";
114+ # } {})
115+ (let src = fetchGit {
116+ url = "git@github.com:composewell/streamly.git";
117+ rev = "a849812d9960d5b7868e770156ab774ee8f70157";
118+ }; in super.callCabal2nix "streamly" src {})
119+ (old:
120+ { librarySystemDepends =
121+ if builtins.currentSystem == "x86_64-darwin"
122+ then [nixpkgs.darwin.apple_sdk.frameworks.Cocoa]
123+ else [];
124+ #enableLibraryProfiling = false;
125+ doHaddock = false;
126+ });
127+
128+ streamly-core =
129+ nixpkgs.haskell.lib.overrideCabal
130+ (let src = fetchGit {
131+ url = "git@github.com:composewell/streamly.git";
132+ rev = "a849812d9960d5b7868e770156ab774ee8f70157";
133+ }; in super.callCabal2nix "streamly-core" "${src}/core" {})
134+ (old:
135+ { librarySystemDepends =
136+ if builtins.currentSystem == "x86_64-darwin"
137+ then [nixpkgs.darwin.apple_sdk.frameworks.Cocoa]
138+ else [];
139+ #enableLibraryProfiling = false;
140+ doHaddock = false;
141+ });
142+
143+ };
144+ };
145+
146+ drv = mkHaskellPackages true;
147+
148+ shell = drv.shellFor {
149+ packages = p:
150+ [ p.report
151+ ];
152+ # Use a better prompt
153+ shellHook = ''
154+ export CABAL_DIR="$(pwd)/.cabal.nix"
155+ if test -n "$PS_SHELL"
156+ then
157+ export PS1="$PS_SHELL\[$bldred\](nix)\[$txtrst\] "
158+ fi
159+ '';
160+ };
161+in if nixpkgs.lib.inNixShell
162+ then shell
163+ else (mkHaskellPackages false).streamly-targets