2020-04-24 23:36:52 +00:00
|
|
|
|
{ pkgs, haskellLib }:
|
|
|
|
|
|
|
|
|
|
with haskellLib;
|
|
|
|
|
|
2022-04-15 01:41:22 +00:00
|
|
|
|
let
|
|
|
|
|
inherit (pkgs.stdenv.hostPlatform) isDarwin;
|
|
|
|
|
in
|
|
|
|
|
|
2020-04-24 23:36:52 +00:00
|
|
|
|
self: super: {
|
|
|
|
|
|
2021-12-06 16:07:01 +00:00
|
|
|
|
llvmPackages = pkgs.lib.dontRecurseIntoAttrs self.ghc.llvmPackages;
|
2020-04-24 23:36:52 +00:00
|
|
|
|
|
|
|
|
|
# Disable GHC 8.8.x core libraries.
|
|
|
|
|
array = null;
|
|
|
|
|
base = null;
|
|
|
|
|
binary = null;
|
|
|
|
|
bytestring = null;
|
|
|
|
|
Cabal = null;
|
|
|
|
|
containers = null;
|
|
|
|
|
deepseq = null;
|
|
|
|
|
directory = null;
|
|
|
|
|
filepath = null;
|
|
|
|
|
ghc-boot = null;
|
|
|
|
|
ghc-boot-th = null;
|
|
|
|
|
ghc-compact = null;
|
|
|
|
|
ghc-heap = null;
|
|
|
|
|
ghc-prim = null;
|
|
|
|
|
ghci = null;
|
|
|
|
|
haskeline = null;
|
|
|
|
|
hpc = null;
|
|
|
|
|
integer-gmp = null;
|
|
|
|
|
libiserv = null;
|
|
|
|
|
mtl = null;
|
|
|
|
|
parsec = null;
|
|
|
|
|
pretty = null;
|
|
|
|
|
process = null;
|
|
|
|
|
rts = null;
|
|
|
|
|
stm = null;
|
|
|
|
|
template-haskell = null;
|
2022-08-12 12:06:08 +00:00
|
|
|
|
# GHC only builds terminfo if it is a native compiler
|
|
|
|
|
terminfo = if pkgs.stdenv.hostPlatform == pkgs.stdenv.buildPlatform then null else self.terminfo_0_4_1_5;
|
2020-04-24 23:36:52 +00:00
|
|
|
|
text = null;
|
|
|
|
|
time = null;
|
|
|
|
|
transformers = null;
|
|
|
|
|
unix = null;
|
2022-05-18 14:49:53 +00:00
|
|
|
|
# GHC only bundles the xhtml library if haddock is enabled, check if this is
|
|
|
|
|
# still the case when updating: https://gitlab.haskell.org/ghc/ghc/-/blob/0198841877f6f04269d6050892b98b5c3807ce4c/ghc.mk#L463
|
|
|
|
|
xhtml = if self.ghc.hasHaddock or true then null else self.xhtml_3000_2_2_1;
|
2020-04-24 23:36:52 +00:00
|
|
|
|
|
|
|
|
|
# GHC 8.8.x can build haddock version 2.23.*
|
|
|
|
|
haddock = self.haddock_2_23_1;
|
|
|
|
|
haddock-api = self.haddock-api_2_23_1;
|
|
|
|
|
|
2021-03-23 19:22:30 +00:00
|
|
|
|
# This build needs a newer version of Cabal.
|
2020-11-03 02:18:15 +00:00
|
|
|
|
cabal2spec = super.cabal2spec.override { Cabal = self.Cabal_3_2_1_0; };
|
2021-03-23 19:22:30 +00:00
|
|
|
|
|
2022-09-09 14:08:57 +00:00
|
|
|
|
# cabal-install needs most recent versions of Cabal and Cabal-syntax
|
2021-03-23 19:22:30 +00:00
|
|
|
|
cabal-install = super.cabal-install.overrideScope (self: super: {
|
2022-09-09 14:08:57 +00:00
|
|
|
|
Cabal = self.Cabal_3_8_1_0;
|
|
|
|
|
Cabal-syntax = self.Cabal-syntax_3_8_1_0;
|
2022-11-02 22:02:43 +00:00
|
|
|
|
process = self.process_1_6_16_0;
|
2022-09-09 14:08:57 +00:00
|
|
|
|
});
|
|
|
|
|
cabal-install-solver = super.cabal-install-solver.overrideScope (self: super: {
|
|
|
|
|
Cabal = self.Cabal_3_8_1_0;
|
|
|
|
|
Cabal-syntax = self.Cabal-syntax_3_8_1_0;
|
2022-11-02 22:02:43 +00:00
|
|
|
|
process = self.process_1_6_16_0;
|
2021-03-23 19:22:30 +00:00
|
|
|
|
});
|
2020-04-24 23:36:52 +00:00
|
|
|
|
|
2022-12-28 21:21:41 +00:00
|
|
|
|
# Additionally depends on OneTuple for GHC < 9.0
|
|
|
|
|
base-compat-batteries = addBuildDepend self.OneTuple super.base-compat-batteries;
|
|
|
|
|
|
2020-04-24 23:36:52 +00:00
|
|
|
|
# Ignore overly restrictive upper version bounds.
|
|
|
|
|
aeson-diff = doJailbreak super.aeson-diff;
|
|
|
|
|
async = doJailbreak super.async;
|
|
|
|
|
ChasingBottoms = doJailbreak super.ChasingBottoms;
|
|
|
|
|
chell = doJailbreak super.chell;
|
|
|
|
|
Diff = dontCheck super.Diff;
|
|
|
|
|
doctest = doJailbreak super.doctest;
|
2022-12-28 21:21:41 +00:00
|
|
|
|
hashable = addBuildDepend self.base-orphans super.hashable;
|
2020-04-24 23:36:52 +00:00
|
|
|
|
hashable-time = doJailbreak super.hashable-time;
|
|
|
|
|
hledger-lib = doJailbreak super.hledger-lib; # base >=4.8 && <4.13, easytest >=0.2.1 && <0.3
|
|
|
|
|
integer-logarithms = doJailbreak super.integer-logarithms;
|
|
|
|
|
lucid = doJailbreak super.lucid;
|
|
|
|
|
parallel = doJailbreak super.parallel;
|
|
|
|
|
setlocale = doJailbreak super.setlocale;
|
|
|
|
|
split = doJailbreak super.split;
|
|
|
|
|
system-fileio = doJailbreak super.system-fileio;
|
|
|
|
|
tasty-expected-failure = doJailbreak super.tasty-expected-failure;
|
|
|
|
|
tasty-hedgehog = doJailbreak super.tasty-hedgehog;
|
|
|
|
|
test-framework = doJailbreak super.test-framework;
|
|
|
|
|
th-expand-syns = doJailbreak super.th-expand-syns;
|
|
|
|
|
# TODO: remove when upstream accepts https://github.com/snapframework/io-streams-haproxy/pull/17
|
|
|
|
|
io-streams-haproxy = doJailbreak super.io-streams-haproxy; # base >=4.5 && <4.13
|
|
|
|
|
snap-server = doJailbreak super.snap-server;
|
|
|
|
|
exact-pi = doJailbreak super.exact-pi;
|
|
|
|
|
time-compat = doJailbreak super.time-compat;
|
2020-11-21 19:51:51 +00:00
|
|
|
|
http-media = unmarkBroken (doJailbreak super.http-media);
|
|
|
|
|
servant-server = unmarkBroken (doJailbreak super.servant-server);
|
2022-09-11 15:47:08 +00:00
|
|
|
|
basement = doDistribute self.basement_0_0_14;
|
|
|
|
|
foundation = doDistribute (dontCheck self.foundation_0_0_28);
|
2020-04-24 23:36:52 +00:00
|
|
|
|
vault = dontHaddock super.vault;
|
|
|
|
|
|
|
|
|
|
# https://github.com/snapframework/snap-core/issues/288
|
2021-12-06 16:07:01 +00:00
|
|
|
|
snap-core = overrideCabal (drv: { prePatch = "substituteInPlace src/Snap/Internal/Core.hs --replace 'fail = Fail.fail' ''"; }) super.snap-core;
|
2020-04-24 23:36:52 +00:00
|
|
|
|
|
|
|
|
|
# Upstream ships a broken Setup.hs file.
|
2021-12-06 16:07:01 +00:00
|
|
|
|
csv = overrideCabal (drv: { prePatch = "rm Setup.hs"; }) super.csv;
|
2020-04-24 23:36:52 +00:00
|
|
|
|
|
|
|
|
|
# https://github.com/kowainik/relude/issues/241
|
|
|
|
|
relude = dontCheck super.relude;
|
|
|
|
|
|
|
|
|
|
# The current version 2.14.2 does not compile with ghc-8.8.x or newer because
|
|
|
|
|
# of issues with Cabal 3.x.
|
|
|
|
|
darcs = dontDistribute super.darcs;
|
|
|
|
|
|
2020-09-25 04:45:31 +00:00
|
|
|
|
# liquidhaskell does not support ghc version 8.8.x.
|
|
|
|
|
liquid = markBroken super.liquid;
|
|
|
|
|
liquid-base = markBroken super.liquid-base;
|
|
|
|
|
liquid-bytestring = markBroken super.liquid-bytestring;
|
|
|
|
|
liquid-containers = markBroken super.liquid-containers;
|
|
|
|
|
liquid-ghc-prim = markBroken super.liquid-ghc-prim;
|
|
|
|
|
liquid-parallel = markBroken super.liquid-parallel;
|
|
|
|
|
liquid-platform = markBroken super.liquid-platform;
|
|
|
|
|
liquid-prelude = markBroken super.liquid-prelude;
|
|
|
|
|
liquid-vector = markBroken super.liquid-vector;
|
|
|
|
|
liquidhaskell = markBroken super.liquidhaskell;
|
|
|
|
|
|
2020-11-21 19:51:51 +00:00
|
|
|
|
# This became a core library in ghc 8.10., so we don‘t have an "exception" attribute anymore.
|
2022-12-28 21:21:41 +00:00
|
|
|
|
exceptions = super.exceptions_0_10_7;
|
2021-02-13 14:23:35 +00:00
|
|
|
|
|
2022-04-03 18:54:34 +00:00
|
|
|
|
ormolu = super.ormolu_0_2_0_0;
|
2021-02-13 14:23:35 +00:00
|
|
|
|
|
|
|
|
|
# vector 0.12.2 indroduced doctest checks that don‘t work on older compilers
|
|
|
|
|
vector = dontCheck super.vector;
|
2021-06-28 23:13:55 +00:00
|
|
|
|
|
2022-12-28 21:21:41 +00:00
|
|
|
|
ghc-api-compat = doDistribute (unmarkBroken super.ghc-api-compat_8_6);
|
2021-12-06 16:07:01 +00:00
|
|
|
|
|
|
|
|
|
mime-string = disableOptimization super.mime-string;
|
2022-04-03 18:54:34 +00:00
|
|
|
|
|
2022-12-28 21:21:41 +00:00
|
|
|
|
haskell-language-server = let
|
|
|
|
|
# These aren't included in hackage-packages.nix because hackage2nix is configured for GHC 9.2, under which these plugins aren't supported.
|
|
|
|
|
# See https://github.com/NixOS/nixpkgs/pull/205902 for why we use `self.<package>.scope`
|
|
|
|
|
additionalDeps = with self.haskell-language-server.scope; [
|
|
|
|
|
hls-brittany-plugin
|
|
|
|
|
hls-haddock-comments-plugin
|
|
|
|
|
(unmarkBroken hls-splice-plugin)
|
|
|
|
|
(unmarkBroken hls-tactics-plugin)
|
|
|
|
|
];
|
|
|
|
|
in addBuildDepends additionalDeps (super.haskell-language-server.overrideScope (lself: lsuper: {
|
2022-09-22 12:36:57 +00:00
|
|
|
|
# Pick old ormolu and fourmolu because ghc-lib-parser is not compatible
|
|
|
|
|
ormolu = doJailbreak lself.ormolu_0_1_4_1;
|
|
|
|
|
fourmolu = doJailbreak lself.fourmolu_0_3_0_0;
|
|
|
|
|
aeson = lself.aeson_1_5_6_0;
|
2022-12-28 21:21:41 +00:00
|
|
|
|
lens-aeson = lself.lens-aeson_1_1_3;
|
|
|
|
|
stylish-haskell = doJailbreak lself.stylish-haskell_0_13_0_0;
|
2022-09-22 12:36:57 +00:00
|
|
|
|
lsp-types = doJailbreak lsuper.lsp-types;
|
|
|
|
|
}));
|
|
|
|
|
|
2022-12-28 21:21:41 +00:00
|
|
|
|
hlint = self.hlint_3_2_8;
|
|
|
|
|
|
|
|
|
|
ghc-lib-parser = self.ghc-lib-parser_8_10_7_20220219;
|
2022-09-22 12:36:57 +00:00
|
|
|
|
|
2022-12-28 21:21:41 +00:00
|
|
|
|
# ghc versions which don‘t match the ghc-lib-parser-ex version need the
|
|
|
|
|
# additional dependency to compile successfully.
|
|
|
|
|
ghc-lib-parser-ex = addBuildDepend self.ghc-lib-parser self.ghc-lib-parser-ex_8_10_0_24;
|
|
|
|
|
|
|
|
|
|
hls-brittany-plugin = unmarkBroken (addBuildDepends (with self.hls-brittany-plugin.scope; [
|
|
|
|
|
brittany czipwith extra ghc-exactprint ghcide hls-plugin-api hls-test-utils lens lsp-types
|
|
|
|
|
]) (super.hls-brittany-plugin.overrideScope (lself: lsuper: {
|
2022-09-22 12:36:57 +00:00
|
|
|
|
brittany = doJailbreak lself.brittany_0_13_1_2;
|
2022-12-28 21:21:41 +00:00
|
|
|
|
multistate = unmarkBroken (dontCheck lsuper.multistate);
|
|
|
|
|
lsp-types = doJailbreak lsuper.lsp-types; # Checks require aeson >= 2.0
|
|
|
|
|
})));
|
|
|
|
|
|
|
|
|
|
# This package is marked as unbuildable on GHC 9.2, so hackage2nix doesn't include any dependencies.
|
|
|
|
|
# See https://github.com/NixOS/nixpkgs/pull/205902 for why we use `self.<package>.scope`
|
|
|
|
|
hls-haddock-comments-plugin = unmarkBroken (addBuildDepends (with self.hls-haddock-comments-plugin.scope; [
|
|
|
|
|
ghc-exactprint ghcide hls-plugin-api hls-refactor-plugin lsp-types unordered-containers
|
|
|
|
|
]) super.hls-haddock-comments-plugin);
|
2022-04-27 09:35:20 +00:00
|
|
|
|
|
|
|
|
|
# has a restrictive lower bound on Cabal
|
|
|
|
|
fourmolu = doJailbreak super.fourmolu;
|
2022-04-03 18:54:34 +00:00
|
|
|
|
|
|
|
|
|
# OneTuple needs hashable instead of ghc-prim for GHC < 9
|
|
|
|
|
OneTuple = super.OneTuple.override {
|
|
|
|
|
ghc-prim = self.hashable;
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
# Temporarily disabled blaze-textual for GHC >= 9.0 causing hackage2nix ignoring it
|
|
|
|
|
# https://github.com/paul-rouse/mysql-simple/blob/872604f87044ff6d1a240d9819a16c2bdf4ed8f5/Database/MySQL/Internal/Blaze.hs#L4-L10
|
|
|
|
|
mysql-simple = addBuildDepends [
|
|
|
|
|
self.blaze-textual
|
|
|
|
|
] super.mysql-simple;
|
2022-04-15 01:41:22 +00:00
|
|
|
|
|
|
|
|
|
# https://github.com/fpco/inline-c/issues/127 (recommend to upgrade to Nixpkgs GHC >=9.0)
|
|
|
|
|
inline-c-cpp = (if isDarwin then dontCheck else x: x) super.inline-c-cpp;
|
2022-04-27 09:35:20 +00:00
|
|
|
|
|
|
|
|
|
# Depends on OneTuple for GHC < 9.0
|
|
|
|
|
universe-base = addBuildDepends [ self.OneTuple ] super.universe-base;
|
2022-08-12 12:06:08 +00:00
|
|
|
|
|
|
|
|
|
# doctest-parallel dependency requires newer Cabal
|
|
|
|
|
regex-tdfa = dontCheck super.regex-tdfa;
|
2022-09-22 12:36:57 +00:00
|
|
|
|
|
|
|
|
|
# Unnecessarily strict lower bound on base
|
|
|
|
|
# https://github.com/mrkkrp/megaparsec/pull/485#issuecomment-1250051823
|
|
|
|
|
megaparsec = doJailbreak super.megaparsec;
|
2022-12-28 21:21:41 +00:00
|
|
|
|
|
|
|
|
|
# Needs OneTuple for ghc < 9.2
|
|
|
|
|
binary-orphans = addBuildDepends [ self.OneTuple ] super.binary-orphans;
|
|
|
|
|
|
|
|
|
|
# Later versions only support GHC >= 9.2
|
|
|
|
|
ghc-exactprint = self.ghc-exactprint_0_6_4;
|
|
|
|
|
apply-refact = self.apply-refact_0_9_3_0;
|
2020-04-24 23:36:52 +00:00
|
|
|
|
}
|