|
50 | 50 | sha256 = "sha256-W6Xh6aVOsx9rgM6IVin6w7Z3e9yUESSaxfejkyU0ekY=";
|
51 | 51 | };
|
52 | 52 |
|
| 53 | + # Pull cabal master for https://github.com/haskell/cabal/pull/8726 available through the pkgs.cabal-multi-repl package |
| 54 | + cabal-head = pkgs.fetchFromGitHub { |
| 55 | + owner = "haskell"; |
| 56 | + repo = "cabal"; |
| 57 | + rev = "f775857310e3af7e9ca508c735f1b9387ba56c01"; |
| 58 | + sha256 = "sha256-2FYljBTk8C1YZOYMAGClrEniUN8naimhqohzRMEWGMQ="; |
| 59 | + }; |
| 60 | + |
53 | 61 | compiler = "ghc962";
|
54 |
| - haskellOverrides = { |
55 |
| - overrides = hpFinal: hpPrev: |
56 |
| - let |
57 |
| - mk-xstatic-lib = name: |
58 |
| - hpPrev.callCabal2nix "${name}" "${xstatic}/${name}" { }; |
59 |
| - mk-large-rec = name: |
60 |
| - pkgs.haskell.lib.doJailbreak |
61 |
| - (hpPrev.callCabal2nix "${name}" "${large-records}/${name}" { }); |
62 |
| - in { |
63 |
| - # Gerrit needs HEAD |
64 |
| - gerrit = let |
65 |
| - src = pkgs.fetchFromGitHub { |
66 |
| - owner = "softwarefactory-project"; |
67 |
| - repo = "gerrit-haskell"; |
68 |
| - rev = "daa44c450f819f3af2879099ec065c1efb973ef8"; |
69 |
| - sha256 = "sha256-g+nMToAq1J8756Yres6xKraQq3QU3FcMjyLvaqVnrKc="; |
70 |
| - }; |
71 |
| - in hpPrev.callCabal2nix "gerrit" src { }; |
72 |
| - |
73 |
| - hlint = hpPrev.hlint_3_6_1; |
74 |
| - |
75 |
| - # lucid-svg needs https://github.com/jeffreyrosenbluth/lucid-svg/pull/17 |
76 |
| - lucid-svg = pkgs.haskell.lib.doJailbreak hpPrev.lucid-svg; |
77 |
| - |
78 |
| - # https://github.com/typeclasses/one-line-aeson-text/pull/1 |
79 |
| - one-line-aeson-text = |
80 |
| - pkgs.haskell.lib.doJailbreak hpPrev.one-line-aeson-text; |
81 |
| - |
82 |
| - # relax req bound for http-data |
83 |
| - req = pkgs.haskell.lib.doJailbreak hpPrev.req; |
84 |
| - |
85 |
| - # relax bound for base |
86 |
| - zigzag = pkgs.haskell.lib.doJailbreak hpPrev.zigzag; |
87 |
| - bytebuild = pkgs.haskell.lib.doJailbreak hpPrev.bytebuild; |
88 |
| - nixfmt = pkgs.haskell.lib.doJailbreak hpPrev.nixfmt; |
89 |
| - |
90 |
| - # data-diverse is presently marked as broken because the test don't pass. |
91 |
| - data-diverse = pkgs.haskell.lib.dontCheck |
92 |
| - (pkgs.haskell.lib.overrideCabal hpPrev.data-diverse { |
93 |
| - broken = false; |
94 |
| - }); |
95 |
| - |
96 |
| - # https://github.com/ndmitchell/record-dot-preprocessor/pull/59 |
97 |
| - record-dot-preprocessor = let |
98 |
| - src = pkgs.fetchFromGitHub { |
99 |
| - owner = "TristanCacqueray"; |
100 |
| - repo = "record-dot-preprocessor"; |
101 |
| - rev = "b33a0a443d746d7a1745b1c5f50e0ccfb686cf71"; |
102 |
| - sha256 = "sha256-EkSuUjYoUO2WTBseO981VrYZTuuFls2Q+bxovtgq5WI="; |
103 |
| - }; |
104 |
| - in hpPrev.callCabal2nix "record-dot-processor" src { }; |
105 |
| - |
106 |
| - large-generics = mk-large-rec "large-generics"; |
107 |
| - large-records = mk-large-rec "large-records"; |
108 |
| - |
109 |
| - # https://github.com/fakedata-haskell/fakedata/issues/51 |
110 |
| - fakedata = pkgs.haskell.lib.dontCheck hpPrev.fakedata; |
111 |
| - |
112 |
| - # prometheus-client needs latest version |
113 |
| - prometheus-client = |
114 |
| - pkgs.haskell.lib.overrideCabal hpPrev.prometheus-client { |
115 |
| - version = "1.1.1"; |
116 |
| - sha256 = "sha256-anCex0llHYbh46EYkZPT1qdEier48QKXwxzIY/xGRMg="; |
117 |
| - revision = null; |
118 |
| - editedCabalFile = null; |
119 |
| - }; |
120 |
| - |
121 |
| - # json-syntax test needs old tasty |
122 |
| - json-syntax = pkgs.haskell.lib.doJailbreak |
123 |
| - (pkgs.haskell.lib.dontCheck |
124 |
| - (pkgs.haskell.lib.overrideCabal hpPrev.json-syntax { |
125 |
| - broken = false; |
126 |
| - })); |
127 |
| - |
128 |
| - fourmolu = hpPrev.fourmolu_0_13_1_0; |
129 |
| - |
130 |
| - xstatic = mk-xstatic-lib "xstatic"; |
131 |
| - xstatic-th = mk-xstatic-lib "xstatic-th"; |
132 |
| - lucid-xstatic = mk-xstatic-lib "lucid-xstatic"; |
133 |
| - lucid2-xstatic = mk-xstatic-lib "lucid2-xstatic"; |
134 |
| - servant-xstatic = mk-xstatic-lib "servant-xstatic"; |
135 |
| - xstatic-ace = mk-xstatic-lib "xstatic-ace"; |
136 |
| - xstatic-pdfjs = mk-xstatic-lib "xstatic-pdfjs"; |
137 |
| - xstatic-htmx = mk-xstatic-lib "xstatic-htmx"; |
138 |
| - xstatic-tailwind = mk-xstatic-lib "xstatic-tailwind"; |
139 |
| - xstatic-sakura = mk-xstatic-lib "xstatic-sakura"; |
140 |
| - xstatic-sweetalert2 = mk-xstatic-lib "xstatic-sweetalert2"; |
141 |
| - xstatic-hyperscript = mk-xstatic-lib "xstatic-hyperscript"; |
142 |
| - xstatic-remixicon = mk-xstatic-lib "xstatic-remixicon"; |
143 |
| - xstatic-sortable = mk-xstatic-lib "xstatic-sortable"; |
144 |
| - xstatic-xterm = mk-xstatic-lib "xstatic-xterm"; |
145 |
| - xstatic-novnc = mk-xstatic-lib "xstatic-novnc"; |
146 |
| - xstatic-winbox = mk-xstatic-lib "xstatic-winbox"; |
147 |
| - xstatic-pcm-player = mk-xstatic-lib "xstatic-pcm-player"; |
148 |
| - |
149 |
| - # extra effectful package |
150 |
| - servant-effectful = |
151 |
| - hpPrev.callCabal2nix "servant-effectful" servant-effectful { }; |
152 |
| - |
153 |
| - # there is a test failure: resolveGroupController should resolve a direct mount root |
154 |
| - cgroup-rts-threads = pkgs.haskell.lib.dontCheck |
155 |
| - (pkgs.haskell.lib.overrideCabal hpPrev.cgroup-rts-threads { |
156 |
| - broken = false; |
157 |
| - }); |
158 |
| - |
159 |
| - kubernetes-client-core = pkgs.haskell.lib.dontCheck |
160 |
| - (hpPrev.callCabal2nix "kubernetes-client-core" |
161 |
| - "${kubernetes-client}/kubernetes" { }); |
162 |
| - |
163 |
| - kubernetes-client = pkgs.haskell.lib.dontCheck |
164 |
| - (hpPrev.callCabal2nix "kubernetes-client" |
165 |
| - "${kubernetes-client}/kubernetes-client" { }); |
166 |
| - }; |
| 62 | + multiCabalExtend = hpFinal: hpPrev: { |
| 63 | + cabal-install = pkgs.haskell.lib.dontCheck |
| 64 | + (hpPrev.callCabal2nix "cabal-install" "${cabal-head}/cabal-install" |
| 65 | + { }); |
| 66 | + cabal-install-solver = pkgs.haskell.lib.dontCheck |
| 67 | + (hpPrev.callCabal2nix "cabal-install-solver" |
| 68 | + "${cabal-head}/cabal-install-solver" { }); |
| 69 | + Cabal-described = pkgs.haskell.lib.dontCheck |
| 70 | + (hpPrev.callCabal2nix "Cabal-described" |
| 71 | + "${cabal-head}/Cabal-described" { }); |
| 72 | + Cabal-QuickCheck = pkgs.haskell.lib.dontCheck |
| 73 | + (hpPrev.callCabal2nix "Cabal-QuickCheck" |
| 74 | + "${cabal-head}/Cabal-QuickCheck" { }); |
| 75 | + Cabal-tree-diff = pkgs.haskell.lib.dontCheck |
| 76 | + (hpPrev.callCabal2nix "Cabal-tree-diff" |
| 77 | + "${cabal-head}/Cabal-tree-diff" { }); |
| 78 | + Cabal-syntax = pkgs.haskell.lib.dontCheck |
| 79 | + (hpPrev.callCabal2nix "Cabal-syntax" "${cabal-head}/Cabal-syntax" |
| 80 | + { }); |
| 81 | + Cabal = pkgs.haskell.lib.dontCheck |
| 82 | + (hpPrev.callCabal2nix "Cabal" "${cabal-head}/Cabal" { }); |
| 83 | + semaphore-compat = pkgs.haskell.lib.dontCheck |
| 84 | + (pkgs.haskell.lib.overrideCabal hpPrev.semaphore-compat { |
| 85 | + broken = false; |
| 86 | + }); |
167 | 87 | };
|
168 | 88 |
|
| 89 | + haskellExtend = hpFinal: hpPrev: |
| 90 | + let |
| 91 | + mk-xstatic-lib = name: |
| 92 | + hpPrev.callCabal2nix "${name}" "${xstatic}/${name}" { }; |
| 93 | + mk-large-rec = name: |
| 94 | + pkgs.haskell.lib.doJailbreak |
| 95 | + (hpPrev.callCabal2nix "${name}" "${large-records}/${name}" { }); |
| 96 | + in { |
| 97 | + # Gerrit needs HEAD |
| 98 | + gerrit = let |
| 99 | + src = pkgs.fetchFromGitHub { |
| 100 | + owner = "softwarefactory-project"; |
| 101 | + repo = "gerrit-haskell"; |
| 102 | + rev = "daa44c450f819f3af2879099ec065c1efb973ef8"; |
| 103 | + sha256 = "sha256-g+nMToAq1J8756Yres6xKraQq3QU3FcMjyLvaqVnrKc="; |
| 104 | + }; |
| 105 | + in hpPrev.callCabal2nix "gerrit" src { }; |
| 106 | + |
| 107 | + hlint = hpPrev.hlint_3_6_1; |
| 108 | + |
| 109 | + # lucid-svg needs https://github.com/jeffreyrosenbluth/lucid-svg/pull/17 |
| 110 | + lucid-svg = pkgs.haskell.lib.doJailbreak hpPrev.lucid-svg; |
| 111 | + |
| 112 | + # https://github.com/typeclasses/one-line-aeson-text/pull/1 |
| 113 | + one-line-aeson-text = |
| 114 | + pkgs.haskell.lib.doJailbreak hpPrev.one-line-aeson-text; |
| 115 | + |
| 116 | + # relax req bound for http-data |
| 117 | + req = pkgs.haskell.lib.doJailbreak hpPrev.req; |
| 118 | + |
| 119 | + # relax bound for base |
| 120 | + zigzag = pkgs.haskell.lib.doJailbreak hpPrev.zigzag; |
| 121 | + bytebuild = pkgs.haskell.lib.doJailbreak hpPrev.bytebuild; |
| 122 | + nixfmt = pkgs.haskell.lib.doJailbreak hpPrev.nixfmt; |
| 123 | + |
| 124 | + # data-diverse is presently marked as broken because the test don't pass. |
| 125 | + data-diverse = pkgs.haskell.lib.dontCheck |
| 126 | + (pkgs.haskell.lib.overrideCabal hpPrev.data-diverse { |
| 127 | + broken = false; |
| 128 | + }); |
| 129 | + |
| 130 | + # https://github.com/ndmitchell/record-dot-preprocessor/pull/59 |
| 131 | + record-dot-preprocessor = let |
| 132 | + src = pkgs.fetchFromGitHub { |
| 133 | + owner = "TristanCacqueray"; |
| 134 | + repo = "record-dot-preprocessor"; |
| 135 | + rev = "b33a0a443d746d7a1745b1c5f50e0ccfb686cf71"; |
| 136 | + sha256 = "sha256-EkSuUjYoUO2WTBseO981VrYZTuuFls2Q+bxovtgq5WI="; |
| 137 | + }; |
| 138 | + in hpPrev.callCabal2nix "record-dot-processor" src { }; |
| 139 | + |
| 140 | + large-generics = mk-large-rec "large-generics"; |
| 141 | + large-records = mk-large-rec "large-records"; |
| 142 | + |
| 143 | + # https://github.com/fakedata-haskell/fakedata/issues/51 |
| 144 | + fakedata = pkgs.haskell.lib.dontCheck hpPrev.fakedata; |
| 145 | + |
| 146 | + # prometheus-client needs latest version |
| 147 | + prometheus-client = |
| 148 | + pkgs.haskell.lib.overrideCabal hpPrev.prometheus-client { |
| 149 | + version = "1.1.1"; |
| 150 | + sha256 = "sha256-anCex0llHYbh46EYkZPT1qdEier48QKXwxzIY/xGRMg="; |
| 151 | + revision = null; |
| 152 | + editedCabalFile = null; |
| 153 | + }; |
| 154 | + |
| 155 | + # json-syntax test needs old tasty |
| 156 | + json-syntax = pkgs.haskell.lib.doJailbreak (pkgs.haskell.lib.dontCheck |
| 157 | + (pkgs.haskell.lib.overrideCabal hpPrev.json-syntax { |
| 158 | + broken = false; |
| 159 | + })); |
| 160 | + |
| 161 | + fourmolu = hpPrev.fourmolu_0_13_1_0; |
| 162 | + |
| 163 | + xstatic = mk-xstatic-lib "xstatic"; |
| 164 | + xstatic-th = mk-xstatic-lib "xstatic-th"; |
| 165 | + lucid-xstatic = mk-xstatic-lib "lucid-xstatic"; |
| 166 | + lucid2-xstatic = mk-xstatic-lib "lucid2-xstatic"; |
| 167 | + servant-xstatic = mk-xstatic-lib "servant-xstatic"; |
| 168 | + xstatic-ace = mk-xstatic-lib "xstatic-ace"; |
| 169 | + xstatic-pdfjs = mk-xstatic-lib "xstatic-pdfjs"; |
| 170 | + xstatic-htmx = mk-xstatic-lib "xstatic-htmx"; |
| 171 | + xstatic-tailwind = mk-xstatic-lib "xstatic-tailwind"; |
| 172 | + xstatic-sakura = mk-xstatic-lib "xstatic-sakura"; |
| 173 | + xstatic-sweetalert2 = mk-xstatic-lib "xstatic-sweetalert2"; |
| 174 | + xstatic-hyperscript = mk-xstatic-lib "xstatic-hyperscript"; |
| 175 | + xstatic-remixicon = mk-xstatic-lib "xstatic-remixicon"; |
| 176 | + xstatic-sortable = mk-xstatic-lib "xstatic-sortable"; |
| 177 | + xstatic-xterm = mk-xstatic-lib "xstatic-xterm"; |
| 178 | + xstatic-novnc = mk-xstatic-lib "xstatic-novnc"; |
| 179 | + xstatic-winbox = mk-xstatic-lib "xstatic-winbox"; |
| 180 | + xstatic-pcm-player = mk-xstatic-lib "xstatic-pcm-player"; |
| 181 | + |
| 182 | + # extra effectful package |
| 183 | + servant-effectful = |
| 184 | + hpPrev.callCabal2nix "servant-effectful" servant-effectful { }; |
| 185 | + |
| 186 | + # there is a test failure: resolveGroupController should resolve a direct mount root |
| 187 | + cgroup-rts-threads = pkgs.haskell.lib.dontCheck |
| 188 | + (pkgs.haskell.lib.overrideCabal hpPrev.cgroup-rts-threads { |
| 189 | + broken = false; |
| 190 | + }); |
| 191 | + |
| 192 | + kubernetes-client-core = pkgs.haskell.lib.dontCheck |
| 193 | + (hpPrev.callCabal2nix "kubernetes-client-core" |
| 194 | + "${kubernetes-client}/kubernetes" { }); |
| 195 | + |
| 196 | + kubernetes-client = pkgs.haskell.lib.dontCheck |
| 197 | + (hpPrev.callCabal2nix "kubernetes-client" |
| 198 | + "${kubernetes-client}/kubernetes-client" { }); |
| 199 | + }; |
| 200 | + |
169 | 201 | overlay = final: prev:
|
170 | 202 | let
|
171 | 203 | mk-exe = prev.haskell.lib.justStaticExecutables;
|
172 |
| - hspkgs = prev.haskell.packages.${compiler}.override haskellOverrides; |
| 204 | + hspkgs = prev.haskell.packages.${compiler}.extend haskellExtend; |
173 | 205 | hls = prev.haskell-language-server.override {
|
174 | 206 | supportedGhcVersions = [ "962" ];
|
175 | 207 | };
|
176 | 208 | nixGL = import nixGLSrc { pkgs = prev; };
|
177 | 209 | in {
|
| 210 | + haskellExtend = haskellExtend; |
178 | 211 | hspkgs = hspkgs;
|
179 | 212 | haskell-language-server = hls;
|
180 | 213 | hlint = mk-exe hspkgs.hlint;
|
|
191 | 224 | cabal-install = prev.haskell.packages.${compiler}.cabal-install;
|
192 | 225 | # cabal-plan = mk-exe hspkgs.cabal-plan;
|
193 | 226 |
|
194 |
| - hspkgsMusl = prev.pkgsMusl.haskell.packages.${compiler}.override |
195 |
| - haskellOverrides; |
| 227 | + cabal-multi-repl = |
| 228 | + mk-exe (hspkgs.extend multiCabalExtend).cabal-install; |
| 229 | + |
| 230 | + hspkgsMusl = |
| 231 | + prev.pkgsMusl.haskell.packages.${compiler}.extend haskellExtend; |
196 | 232 |
|
197 | 233 | roboto_font =
|
198 | 234 | "${prev.roboto}/share/fonts/truetype/Roboto-Regular.ttf";
|
|
243 | 279 | p.dhall
|
244 | 280 | p.turtle
|
245 | 281 | p.insert-ordered-containers
|
246 |
| - p.proto3-suite |
247 | 282 | p.json-syntax
|
248 | 283 | p.cgroup-rts-threads
|
249 | 284 | p.prometheus-client
|
|
262 | 297 | # ghc-static
|
263 | 298 | # pkgs.nixGLIntel
|
264 | 299 | pkgs.weeder
|
265 |
| - pkgs.cabal-install |
| 300 | + pkgs.cabal-multi-repl |
266 | 301 | # pkgs.cabal-plan
|
267 | 302 | # pkgs.ormolu
|
268 | 303 | pkgs.fourmolu
|
|
314 | 349 | devShell.x86_64-linux = pkgs.mkShell { buildInputs = all-pkgs; };
|
315 | 350 |
|
316 | 351 | devShells.x86_64-linux.test = pkgs.hspkgs.shellFor {
|
317 |
| - packages = p: [ p.proto3-suite ]; |
| 352 | + packages = p: [ p.gerrit ]; |
318 | 353 | buildInputs = [ pkgs.ghcid pkgs.cabal-install ];
|
319 | 354 | };
|
320 | 355 | };
|
|
0 commit comments