diff options
Diffstat (limited to 'pkgs/development/haskell-modules/configuration-arm.nix')
| -rw-r--r-- | pkgs/development/haskell-modules/configuration-arm.nix | 96 |
1 files changed, 96 insertions, 0 deletions
diff --git a/pkgs/development/haskell-modules/configuration-arm.nix b/pkgs/development/haskell-modules/configuration-arm.nix new file mode 100644 index 000000000000..57e71f0e00e9 --- /dev/null +++ b/pkgs/development/haskell-modules/configuration-arm.nix @@ -0,0 +1,96 @@ +# ARM-SPECIFIC OVERRIDES FOR THE HASKELL PACKAGE SET IN NIXPKGS +# +# This extension is applied to all haskell package sets in nixpkgs +# if `stdenv.hostPlatform.isAarch32 || stdenv.hostPlatform.isAarch64` +# to apply arm specific workarounds or fixes. +# +# The file is split into three parts: +# +# * Overrides that are applied for all arm platforms +# * Overrides for aarch32 platforms +# * Overrides for aarch64 platforms +# +# This may be extended in the future to also include compiler- +# specific sections as compiler and linker related bugs may +# get fixed subsequently. +# +# When adding new overrides, try to research which section they +# belong into. Most likely we'll be favouring aarch64 overrides +# in practice since that is the only platform we can test on +# Hydra. Also take care to group overrides by the issue they +# solve, so refactors and updates to this file are less tedious. +{ pkgs, haskellLib }: + +let + inherit (pkgs) lib; +in + +with haskellLib; + +self: super: { + # COMMON ARM OVERRIDES + + # moved here from configuration-common.nix, no reason given. + servant-docs = dontCheck super.servant-docs; + swagger2 = dontHaddock (dontCheck super.swagger2); + + # Similar to https://ghc.haskell.org/trac/ghc/ticket/13062 + happy = dontCheck super.happy; + +} // lib.optionalAttrs pkgs.stdenv.hostPlatform.isAarch64 { + # AARCH64-SPECIFIC OVERRIDES + + # Doctests fail on aarch64 due to a GHCi linking bug + # https://gitlab.haskell.org/ghc/ghc/-/issues/15275#note_295437 + # TODO: figure out if needed on aarch32 as well + language-nix = dontCheck super.language-nix; + trifecta = dontCheck super.trifecta; + ad = dontCheck super.ad; + vinyl = dontCheck super.vinyl; + BNFC = dontCheck super.BNFC; + C-structs = dontCheck super.C-structs; + accelerate = dontCheck super.accelerate; + focuslist = dontCheck super.focuslist; + flight-kml = dontCheck super.flight-kml; + exact-real = dontCheck super.exact-real; + autoapply = dontCheck super.autoapply; + hint = dontCheck super.hint; + hgeometry = dontCheck super.hgeometry; + headroom = dontCheck super.headroom; + haskell-time-range = dontCheck super.haskell-time-range; + hsakamai = dontCheck super.hsakamai; + hsemail-ns = dontCheck super.hsemail-ns; + openapi3 = dontCheck super.openapi3; + strict-writer = dontCheck super.strict-writer; + xml-html-qq = dontCheck super.xml-html-qq; + static = dontCheck super.static; + hhp = dontCheck super.hhp; + groupBy = dontCheck super.groupBy; + greskell = dontCheck super.greskell; + html-validator-cli = dontCheck super.html-validator-cli; + hw-fingertree-strict = dontCheck super.hw-fingertree-strict; + hw-prim = dontCheck super.hw-prim; + hw-packed-vector = dontCheck super.hw-packed-vector; + hw-xml = dontCheck super.hw-xml; + lens-regex = dontCheck super.lens-regex; + meep = dontCheck super.meep; + ranged-list = dontCheck super.ranged-list; + rank2classes = dontCheck super.rank2classes; + schedule = dontCheck super.schedule; + twiml = dontCheck super.twiml; + twitter-conduit = dontCheck super.twitter-conduit; + validationt = dontCheck super.validationt; + vgrep = dontCheck super.vgrep; + vulkan-utils = dontCheck super.vulkan-utils; + yaml-combinators = dontCheck super.yaml-combinators; + yesod-paginator = dontCheck super.yesod-paginator; + grammatical-parsers = dontCheck super.grammatical-parsers; + construct = dontCheck super.construct; + + # https://github.com/ekmett/half/issues/35 + half = dontCheck super.half; + +} // lib.optionalAttrs pkgs.stdenv.hostPlatform.isAarch32 { + # AARCH32-SPECIFIC OVERRIDES + +} |
