Skip to content

Commit 816d9e6

Browse files
Integrate cabal-multi-repl
This change pulls cabal HEAD for haskell/cabal#8726 through `pkgs.cabal-multi-repl` instead of `pkgs.cabal-install`.
1 parent 30b0954 commit 816d9e6

File tree

2 files changed

+155
-119
lines changed

2 files changed

+155
-119
lines changed

README.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ Packages:
1313
- calligraphy
1414
- apply-refact
1515
- kubernetes-client
16+
- cabal-multi-repl (just the next cabal release)
1617

1718
Helpers:
1819

flake.nix

Lines changed: 154 additions & 119 deletions
Original file line numberDiff line numberDiff line change
@@ -50,131 +50,164 @@
5050
sha256 = "sha256-W6Xh6aVOsx9rgM6IVin6w7Z3e9yUESSaxfejkyU0ekY=";
5151
};
5252

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+
5361
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+
});
16787
};
16888

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+
169201
overlay = final: prev:
170202
let
171203
mk-exe = prev.haskell.lib.justStaticExecutables;
172-
hspkgs = prev.haskell.packages.${compiler}.override haskellOverrides;
204+
hspkgs = prev.haskell.packages.${compiler}.extend haskellExtend;
173205
hls = prev.haskell-language-server.override {
174206
supportedGhcVersions = [ "962" ];
175207
};
176208
nixGL = import nixGLSrc { pkgs = prev; };
177209
in {
210+
haskellExtend = haskellExtend;
178211
hspkgs = hspkgs;
179212
haskell-language-server = hls;
180213
hlint = mk-exe hspkgs.hlint;
@@ -191,8 +224,11 @@
191224
cabal-install = prev.haskell.packages.${compiler}.cabal-install;
192225
# cabal-plan = mk-exe hspkgs.cabal-plan;
193226

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;
196232

197233
roboto_font =
198234
"${prev.roboto}/share/fonts/truetype/Roboto-Regular.ttf";
@@ -243,7 +279,6 @@
243279
p.dhall
244280
p.turtle
245281
p.insert-ordered-containers
246-
p.proto3-suite
247282
p.json-syntax
248283
p.cgroup-rts-threads
249284
p.prometheus-client
@@ -262,7 +297,7 @@
262297
# ghc-static
263298
# pkgs.nixGLIntel
264299
pkgs.weeder
265-
pkgs.cabal-install
300+
pkgs.cabal-multi-repl
266301
# pkgs.cabal-plan
267302
# pkgs.ormolu
268303
pkgs.fourmolu
@@ -314,7 +349,7 @@
314349
devShell.x86_64-linux = pkgs.mkShell { buildInputs = all-pkgs; };
315350

316351
devShells.x86_64-linux.test = pkgs.hspkgs.shellFor {
317-
packages = p: [ p.proto3-suite ];
352+
packages = p: [ p.gerrit ];
318353
buildInputs = [ pkgs.ghcid pkgs.cabal-install ];
319354
};
320355
};

0 commit comments

Comments
 (0)