diff options
author | Benno Fünfstück <benno.fuenfstueck@gmail.com> | 2017-02-02 16:49:28 +0100 |
---|---|---|
committer | Peter Simons <simons@cryp.to> | 2017-02-07 15:13:23 +0100 |
commit | 57507f08e8f297d700c4c508b495490ad86263d5 (patch) | |
tree | e2ff77fe7686f5081842560ecafcfabf98187471 | |
parent | 5a0368b87cc353d46226fc91329036d6c16a5c10 (diff) | |
download | nixlib-57507f08e8f297d700c4c508b495490ad86263d5.tar nixlib-57507f08e8f297d700c4c508b495490ad86263d5.tar.gz nixlib-57507f08e8f297d700c4c508b495490ad86263d5.tar.bz2 nixlib-57507f08e8f297d700c4c508b495490ad86263d5.tar.lz nixlib-57507f08e8f297d700c4c508b495490ad86263d5.tar.xz nixlib-57507f08e8f297d700c4c508b495490ad86263d5.tar.zst nixlib-57507f08e8f297d700c4c508b495490ad86263d5.zip |
haskell-modules: split off nix-specific overrides and common ones
This allows the nix-specific overrides to be reused for other purposes, with different haskell package sets, etc.
-rw-r--r-- | pkgs/development/haskell-modules/configuration-common.nix | 346 | ||||
-rw-r--r-- | pkgs/development/haskell-modules/configuration-nix.nix | 386 | ||||
-rw-r--r-- | pkgs/development/haskell-modules/default.nix | 4 |
3 files changed, 403 insertions, 333 deletions
diff --git a/pkgs/development/haskell-modules/configuration-common.nix b/pkgs/development/haskell-modules/configuration-common.nix index 047bfa33cbbe..81eff1d42507 100644 --- a/pkgs/development/haskell-modules/configuration-common.nix +++ b/pkgs/development/haskell-modules/configuration-common.nix @@ -1,3 +1,14 @@ +# COMMON OVERRIDES FOR THE HASKELL PACKAGE SET IN NIXPKGS +# +# This file contains haskell package overrides that are shared by all +# haskell package sets provided by nixpkgs and distributed via the official +# NixOS hydra instance. +# +# Overrides that would also make sense for custom haskell package sets not provided +# as part of nixpkgs and that are specific to Nix should go in configuration-nix.nix +# +# See comment at the top of configuration-nix.nix for more information about this +# distinction. { pkgs }: with import ./lib.nix { inherit pkgs; }; @@ -15,9 +26,6 @@ self: super: { # Link statically to avoid runtime dependency on GHC. jailbreak-cabal = (disableSharedExecutables super.jailbreak-cabal).override { Cabal = self.Cabal_1_20_0_4; }; - # Apply NixOS-specific patches. - ghc-paths = appendPatch super.ghc-paths ./patches/ghc-paths-nix.patch; - # enable using a local hoogle with extra packagages in the database # nix-shell -p "haskellPackages.hoogleLocal (with haskellPackages; [ mtl lens ])" # $ hoogle server @@ -35,9 +43,6 @@ self: super: { statistics = dontCheck super.statistics; c2hs = dontCheck super.c2hs; - # fix errors caused by hardening flags - epanet-haskell = disableHardening super.epanet-haskell ["format"]; - # This test keeps being aborted because it runs too quietly for too long Lazy-Pbkdf2 = if pkgs.stdenv.isi686 then dontCheck super.Lazy-Pbkdf2 else super.Lazy-Pbkdf2; @@ -66,49 +71,11 @@ self: super: { hinotify = if pkgs.stdenv.isLinux then self.hinotify else self.fsnotify; }; - # CUDA needs help finding the SDK headers and libraries. - cuda = overrideCabal super.cuda (drv: { - extraLibraries = (drv.extraLibraries or []) ++ [pkgs.linuxPackages.nvidia_x11]; - configureFlags = (drv.configureFlags or []) ++ - pkgs.lib.optional pkgs.stdenv.is64bit "--extra-lib-dirs=${pkgs.cudatoolkit}/lib64" ++ [ - "--extra-lib-dirs=${pkgs.cudatoolkit}/lib" - "--extra-include-dirs=${pkgs.cudatoolkit}/include" - ]; - preConfigure = '' - unset CC # unconfuse the haskell-cuda configure script - sed -i -e 's|/usr/local/cuda|${pkgs.cudatoolkit}|g' configure - ''; - }); - - # jni needs help finding libjvm.so because it's in a weird location. - jni = overrideCabal super.jni (drv: { - preConfigure = '' - local libdir=( "${pkgs.jdk}/lib/openjdk/jre/lib/"*"/server" ) - configureFlags+=" --extra-lib-dir=''${libdir[0]}" - ''; - }); - - # The package doesn't know about the AL include hierarchy. - # https://github.com/phaazon/al/issues/1 - al = appendConfigureFlag super.al "--extra-include-dirs=${pkgs.openal}/include/AL"; - # https://github.com/froozen/kademlia/issues/2 kademlia = dontCheck super.kademlia; - # Won't find it's header files without help. - sfml-audio = appendConfigureFlag super.sfml-audio "--extra-include-dirs=${pkgs.openal}/include/AL"; - - hzk = overrideCabal super.hzk (drv: { - preConfigure = "sed -i -e /include-dirs/d hzk.cabal"; - configureFlags = "--extra-include-dirs=${pkgs.zookeeper_mt}/include/zookeeper"; - doCheck = false; - }); - - haskakafka = overrideCabal super.haskakafka (drv: { - preConfigure = "sed -i -e /extra-lib-dirs/d -e /include-dirs/d haskakafka.cabal"; - configureFlags = "--extra-include-dirs=${pkgs.rdkafka}/include/librdkafka"; - doCheck = false; - }); + hzk = dontCheck super.hzk; + haskakafka = dontCheck super.haskakafka; # Depends on broken "lss" package. snaplet-lss = dontDistribute super.snaplet-lss; @@ -127,9 +94,6 @@ self: super: { # Depends on broken "hails" package. hails-bin = dontDistribute super.hails-bin; - # Foreign dependency name clashes with another Haskell package. - libarchive-conduit = super.libarchive-conduit.override { archive = pkgs.libarchive; }; - # Switch levmar build to openblas. bindings-levmar = overrideCabal super.bindings-levmar (drv: { preConfigure = '' @@ -192,11 +156,6 @@ self: super: { # https://github.com/jaspervdj/hakyll/issues/491 else dontCheck super.hakyll; - # Heist's test suite requires system pandoc - heist = overrideCabal super.heist (drv: { - testToolDepends = [pkgs.pandoc]; - }); - # cabal2nix likes to generate dependencies on hinotify when hfsevents is really required # on darwin: https://github.com/NixOS/cabal2nix/issues/146. hinotify = if pkgs.stdenv.isDarwin then self.hfsevents else super.hinotify; @@ -208,20 +167,6 @@ self: super: { then addBuildDepend (dontCheck super.fsnotify) pkgs.darwin.apple_sdk.frameworks.Cocoa else dontCheck super.fsnotify; - # the system-fileio tests use canonicalizePath, which fails in the sandbox - system-fileio = if pkgs.stdenv.isDarwin then dontCheck super.system-fileio else super.system-fileio; - - # Prevents needing to add security_tool as a build tool to all of x509-system's - # dependencies. - x509-system = if pkgs.stdenv.isDarwin && !pkgs.stdenv.cc.nativeLibc - then let inherit (pkgs.darwin) security_tool; - in pkgs.lib.overrideDerivation (addBuildDepend super.x509-system security_tool) (drv: { - postPatch = (drv.postPatch or "") + '' - substituteInPlace System/X509/MacOS.hs --replace security ${security_tool}/bin/security - ''; - }) - else super.x509-system; - double-conversion = if !pkgs.stdenv.isDarwin then addExtraLibrary super.double-conversion pkgs.stdenv.cc.cc.lib else addExtraLibrary (overrideCabal super.double-conversion (drv: @@ -243,29 +188,9 @@ self: super: { # tests don't compile for some odd reason jwt = dontCheck super.jwt; - # https://github.com/NixOS/cabal2nix/issues/136 and https://github.com/NixOS/cabal2nix/issues/216 - gio = disableHardening (addPkgconfigDepend (addBuildTool super.gio self.gtk2hs-buildtools) pkgs.glib) ["fortify"]; - glib = disableHardening (addPkgconfigDepend (addBuildTool super.glib self.gtk2hs-buildtools) pkgs.glib) ["fortify"]; - gtk3 = disableHardening (super.gtk3.override { inherit (pkgs) gtk3; }) ["fortify"]; - gtk = disableHardening (addPkgconfigDepend (addBuildTool super.gtk self.gtk2hs-buildtools) pkgs.gtk2) ["fortify"]; - gtksourceview2 = (addPkgconfigDepend super.gtksourceview2 pkgs.gtk2).override { inherit (pkgs.gnome2) gtksourceview; }; - gtksourceview3 = super.gtksourceview3.override { inherit (pkgs.gnome3) gtksourceview; }; - - # Need WebkitGTK, not just webkit. - webkit = super.webkit.override { webkit = pkgs.webkitgtk2; }; - webkitgtk3 = super.webkitgtk3.override { webkit = pkgs.webkitgtk24x; }; - webkitgtk3-javascriptcore = super.webkitgtk3-javascriptcore.override { webkit = pkgs.webkitgtk24x; }; - websnap = super.websnap.override { webkit = pkgs.webkitgtk24x; }; - # https://github.com/mvoidex/hsdev/issues/11 hsdev = dontHaddock super.hsdev; - hs-mesos = overrideCabal super.hs-mesos (drv: { - # Pass _only_ mesos; the correct protobuf is propagated. - extraLibraries = [ pkgs.mesos ]; - preConfigure = "sed -i -e /extra-lib-dirs/d -e 's|, /usr/include, /usr/local/include/mesos||' hs-mesos.cabal"; - }); - # Upstream notified by e-mail. permutation = dontCheck super.permutation; @@ -307,38 +232,6 @@ self: super: { HerbiePlugin = dontCheck super.HerbiePlugin; wai-cors = dontCheck super.wai-cors; - # These packages try to access the network. - amqp = dontCheck super.amqp; - amqp-conduit = dontCheck super.amqp-conduit; - bitcoin-api = dontCheck super.bitcoin-api; - bitcoin-api-extra = dontCheck super.bitcoin-api-extra; - bitx-bitcoin = dontCheck super.bitx-bitcoin; # http://hydra.cryp.to/build/926187/log/raw - concurrent-dns-cache = dontCheck super.concurrent-dns-cache; - digitalocean-kzs = dontCheck super.digitalocean-kzs; # https://github.com/KazumaSATO/digitalocean-kzs/issues/1 - github-types = dontCheck super.github-types; # http://hydra.cryp.to/build/1114046/nixlog/1/raw - hadoop-rpc = dontCheck super.hadoop-rpc; # http://hydra.cryp.to/build/527461/nixlog/2/raw - hasql = dontCheck super.hasql; # http://hydra.cryp.to/build/502489/nixlog/4/raw - hasql-transaction = dontCheck super.hasql-transaction; # wants to connect to postgresql - hjsonschema = overrideCabal super.hjsonschema (drv: { testTarget = "local"; }); - marmalade-upload = dontCheck super.marmalade-upload; # http://hydra.cryp.to/build/501904/nixlog/1/raw - mongoDB = dontCheck super.mongoDB; - network-transport-tcp = dontCheck super.network-transport-tcp; - network-transport-zeromq = dontCheck super.network-transport-zeromq; # https://github.com/tweag/network-transport-zeromq/issues/30 - pipes-mongodb = dontCheck super.pipes-mongodb; # http://hydra.cryp.to/build/926195/log/raw - raven-haskell = dontCheck super.raven-haskell; # http://hydra.cryp.to/build/502053/log/raw - riak = dontCheck super.riak; # http://hydra.cryp.to/build/498763/log/raw - scotty-binding-play = dontCheck super.scotty-binding-play; - servant-router = dontCheck super.servant-router; - serversession-backend-redis = dontCheck super.serversession-backend-redis; - slack-api = dontCheck super.slack-api; # https://github.com/mpickering/slack-api/issues/5 - socket = dontCheck super.socket; - stackage = dontCheck super.stackage; # http://hydra.cryp.to/build/501867/nixlog/1/raw - textocat-api = dontCheck super.textocat-api; # http://hydra.cryp.to/build/887011/log/raw - warp = dontCheck super.warp; # http://hydra.cryp.to/build/501073/nixlog/5/raw - wreq = dontCheck super.wreq; # http://hydra.cryp.to/build/501895/nixlog/1/raw - wreq-sb = dontCheck super.wreq-sb; # http://hydra.cryp.to/build/783948/log/raw - wuss = dontCheck super.wuss; # http://hydra.cryp.to/build/875964/nixlog/2/raw - # https://github.com/NICTA/digit/issues/3 digit = dontCheck super.digit; @@ -348,9 +241,6 @@ self: super: { # https://github.com/ekmett/structures/issues/3 structures = dontCheck super.structures; - # Tries to mess with extended POSIX attributes, but can't in our chroot environment. - xattr = dontCheck super.xattr; - # Disable test suites to fix the build. acme-year = dontCheck super.acme-year; # http://hydra.cryp.to/build/497858/log/raw aeson-lens = dontCheck super.aeson-lens; # http://hydra.cryp.to/build/496769/log/raw @@ -426,8 +316,6 @@ self: super: { HTF = dontCheck super.HTF; htsn = dontCheck super.htsn; htsn-import = dontCheck super.htsn-import; - http-client-openssl = dontCheck super.http-client-openssl; - http-client-tls = dontCheck super.http-client-tls; ihaskell = dontCheck super.ihaskell; influxdb = dontCheck super.influxdb; itanium-abi = dontCheck super.itanium-abi; @@ -492,9 +380,6 @@ self: super: { snap-core = dontCheck super.snap-core; sourcemap = dontCheck super.sourcemap; - # Needs access to locale data, but looks for it in the wrong place. - scholdoc-citeproc = dontCheck super.scholdoc-citeproc; - # These test suites run for ages, even on a fast machine. This is nuts. Random123 = dontCheck super.Random123; systemd = dontCheck super.systemd; @@ -505,12 +390,6 @@ self: super: { # https://github.com/bos/snappy/issues/1 snappy = dontCheck super.snappy; - # Expect to find sendmail(1) in $PATH. - mime-mail = appendConfigureFlag super.mime-mail "--ghc-option=-DMIME_MAIL_SENDMAIL_PATH=\"sendmail\""; - - # Help the test suite find system timezone data. - tz = overrideCabal super.tz (drv: { preConfigure = "export TZDIR=${pkgs.tzdata}/share/zoneinfo"; }); - # https://ghc.haskell.org/trac/ghc/ticket/9625 vty = dontCheck super.vty; vty_5_15 = dontCheck super.vty_5_15; @@ -530,18 +409,12 @@ self: super: { # https://github.com/pixbi/duplo/issues/25 duplo = dontCheck super.duplo; - # Nix-specific workaround - xmonad = appendPatch (dontCheck super.xmonad) ./patches/xmonad-nix.patch; - # https://github.com/evanrinehart/mikmod/issues/1 mikmod = addExtraLibrary super.mikmod pkgs.libmikmod; # https://github.com/basvandijk/threads/issues/10 threads = dontCheck super.threads; - # https://github.com/ucsd-progsys/liquid-fixpoint/issues/44 - liquid-fixpoint = overrideCabal super.liquid-fixpoint (drv: { preConfigure = "patchShebangs ."; }); - # Missing module. rematch = dontCheck super.rematch; # https://github.com/tcrayford/rematch/issues/5 rematch-text = dontCheck super.rematch-text; # https://github.com/tcrayford/rematch/issues/6 @@ -561,11 +434,6 @@ self: super: { # https://github.com/vincenthz/hs-asn1/issues/12 asn1-encoding = dontCheck super.asn1-encoding; - # wxc supports wxGTX >= 3.0, but our current default version points to 2.8. - # http://hydra.cryp.to/build/1331287/log/raw - wxc = (addBuildDepend super.wxc self.split).override { wxGTK = pkgs.wxGTK30; }; - wxcore = super.wxcore.override { wxGTK = pkgs.wxGTK30; }; - # Depends on QuickCheck 1.x. HaVSA = super.HaVSA.override { QuickCheck = self.QuickCheck_1_2_0_1; }; test-framework-quickcheck = super.test-framework-quickcheck.override { QuickCheck = self.QuickCheck_1_2_0_1; }; @@ -587,9 +455,6 @@ self: super: { # https://github.com/alephcloud/hs-configuration-tools/issues/40 configuration-tools = dontCheck super.configuration-tools; - # Test suite wants to connect to $DISPLAY. - hsqml = dontCheck (addExtraLibrary (super.hsqml.override { qt5 = pkgs.qt5Full; }) pkgs.mesa); - # HsColour: Language/Unlambda.hs: hGetContents: invalid argument (invalid byte sequence) unlambda = dontHyperlinkSource super.unlambda; @@ -607,10 +472,6 @@ self: super: { preConfigure = "sed -i -e 's,time .* < 1.6,time >= 1.5,' -e 's,haddock-library >= 1.1 && < 1.3,haddock-library >= 1.1,' pandoc.cabal"; }); - # Tests attempt to use NPM to install from the network into - # /homeless-shelter. Disabled. - purescript = dontCheck super.purescript; - # Requires bower-json >= 1.0.0.1 && < 1.1 purescript_0_10_5 = super.purescript_0_10_5.overrideScope (self: super: { bower-json = self.bower-json_1_0_0_1; @@ -636,50 +497,6 @@ self: super: { # https://github.com/anton-k/csound-expression-dynamic/issues/1 csound-expression-dynamic = dontHaddock super.csound-expression-dynamic; - # Hardcoded include path - poppler = overrideCabal super.poppler (drv: { - postPatch = '' - sed -i -e 's,glib/poppler.h,poppler.h,' poppler.cabal - sed -i -e 's,glib/poppler.h,poppler.h,' Graphics/UI/Gtk/Poppler/Structs.hsc - ''; - }); - - # Uses OpenGL in testing - caramia = dontCheck super.caramia; - - llvm-general-darwin = overrideCabal (super.llvm-general.override { llvm-config = pkgs.llvm_35; }) (drv: { - preConfigure = '' - sed -i llvm-general.cabal \ - -e 's,extra-libraries: stdc++,extra-libraries: c++,' - ''; - configureFlags = (drv.configureFlags or []) ++ ["--extra-include-dirs=${pkgs.libcxx}/include/c++/v1"]; - librarySystemDepends = [ pkgs.libcxx ] ++ drv.librarySystemDepends or []; - }); - - # Supports only 3.5 for now, https://github.com/bscarlet/llvm-general/issues/142 - llvm-general = - if pkgs.stdenv.isDarwin - then self.llvm-general-darwin - else super.llvm-general.override { llvm-config = pkgs.llvm_35; }; - - # Needs help finding LLVM. - spaceprobe = addBuildTool super.spaceprobe self.llvmPackages.llvm; - - # Tries to run GUI in tests - leksah = dontCheck (overrideCabal super.leksah (drv: { - executableSystemDepends = (drv.executableSystemDepends or []) ++ (with pkgs; [ - gnome3.defaultIconTheme # Fix error: Icon 'window-close' not present in theme ... - wrapGAppsHook # Fix error: GLib-GIO-ERROR **: No GSettings schemas are installed on the system - gtk3 # Fix error: GLib-GIO-ERROR **: Settings schema 'org.gtk.Settings.FileChooser' is not installed - ]); - postPatch = (drv.postPatch or "") + '' - for f in src/IDE/Leksah.hs src/IDE/Utils/ServerConnection.hs - do - substituteInPlace "$f" --replace "\"leksah-server\"" "\"${self.leksah-server}/bin/leksah-server\"" - done - ''; - })); - # Packages of the diagrams ecosystem that require: # diagrams-core ==1.4.* # diagrams-lib ==1.4.* @@ -715,9 +532,6 @@ self: super: { optparse-applicative = self.optparse-applicative_0_13_0_0; }); - # Patch to consider NIX_GHC just like xmonad does - dyre = appendPatch super.dyre ./patches/dyre-nix.patch; - # Test suite won't compile against tasty-hunit 0.9.x. zlib = dontCheck super.zlib; @@ -770,14 +584,6 @@ self: super: { # https://github.com/yesodweb/serversession/issues/1 serversession = dontCheck super.serversession; - yesod-bin = if pkgs.stdenv.isDarwin - then addBuildDepend super.yesod-bin pkgs.darwin.apple_sdk.frameworks.Cocoa - else super.yesod-bin; - - hmatrix = if pkgs.stdenv.isDarwin - then addBuildDepend super.hmatrix pkgs.darwin.apple_sdk.frameworks.Accelerate - else super.hmatrix; - # Hydra no longer allows building texlive packages. lhs2tex = dontDistribute super.lhs2tex; @@ -793,16 +599,6 @@ self: super: { # https://github.com/kazu-yamamoto/logger/issues/42 logger = dontCheck super.logger; - # https://github.com/edwinb/EpiVM/issues/13 - # https://github.com/edwinb/EpiVM/issues/14 - epic = addExtraLibraries (addBuildTool super.epic self.happy) [pkgs.boehmgc pkgs.gmp]; - - # https://github.com/ekmett/wl-pprint-terminfo/issues/7 - wl-pprint-terminfo = addExtraLibrary super.wl-pprint-terminfo pkgs.ncurses; - - # https://github.com/bos/pcap/issues/5 - pcap = addExtraLibrary super.pcap pkgs.libpcap; - # https://github.com/qnikst/imagemagick/issues/34 imagemagick = dontCheck super.imagemagick; @@ -892,40 +688,6 @@ self: super: { # https://github.com/bos/configurator/issues/22 configurator = dontCheck super.configurator; - # The cabal files for these libraries do not list the required system dependencies. - miniball = overrideCabal super.miniball (drv: { - librarySystemDepends = [ pkgs.miniball ]; - }); - SDL-image = overrideCabal super.SDL-image (drv: { - librarySystemDepends = [ pkgs.SDL pkgs.SDL_image ] ++ drv.librarySystemDepends or []; - }); - SDL-ttf = overrideCabal super.SDL-ttf (drv: { - librarySystemDepends = [ pkgs.SDL pkgs.SDL_ttf ]; - }); - SDL-mixer = overrideCabal super.SDL-mixer (drv: { - librarySystemDepends = [ pkgs.SDL pkgs.SDL_mixer ]; - }); - SDL-gfx = overrideCabal super.SDL-gfx (drv: { - librarySystemDepends = [ pkgs.SDL pkgs.SDL_gfx ]; - }); - SDL-mpeg = overrideCabal super.SDL-mpeg (drv: { - configureFlags = (drv.configureFlags or []) ++ [ - "--extra-lib-dirs=${pkgs.smpeg}/lib" - "--extra-include-dirs=${pkgs.smpeg}/include/smpeg" - ]; - }); - - # https://github.com/ivanperez-keera/hcwiid/pull/4 - hcwiid = overrideCabal super.hcwiid (drv: { - configureFlags = (drv.configureFlags or []) ++ [ - "--extra-lib-dirs=${pkgs.bluez.out}/lib" - "--extra-lib-dirs=${pkgs.cwiid}/lib" - "--extra-include-dirs=${pkgs.cwiid}/include" - "--extra-include-dirs=${pkgs.bluez.dev}/include" - ]; - prePatch = '' sed -i -e "/Extra-Lib-Dirs/d" -e "/Include-Dirs/d" "hcwiid.cabal" ''; - }); - # https://github.com/basvandijk/concurrent-extra/issues/12 concurrent-extra = dontCheck super.concurrent-extra; @@ -941,16 +703,6 @@ self: super: { # https://github.com/goldfirere/singletons/issues/122 singletons = dontCheck super.singletons; - # cabal2nix doesn't pick up some of the dependencies. - ginsu = let - g = addBuildDepend super.ginsu pkgs.perl; - g' = overrideCabal g (drv: { - executableSystemDepends = (drv.executableSystemDepends or []) ++ [ - pkgs.ncurses - ]; - }); - in g'; - # https://github.com/guillaume-nargeot/hpc-coveralls/issues/52 hpc-coveralls = disableSharedExecutables super.hpc-coveralls; @@ -963,72 +715,20 @@ self: super: { # https://github.com/sol/hpack/issues/53 hpack = dontCheck super.hpack; - # Tests require `docker` command in PATH - # Tests require running docker service :on localhost - docker = dontCheck super.docker; - # https://github.com/deech/fltkhs/issues/16 fltkhs = overrideCabal super.fltkhs (drv: { - libraryToolDepends = (drv.libraryToolDepends or []) ++ [pkgs.autoconf]; - librarySystemDepends = (drv.librarySystemDepends or []) ++ [pkgs.fltk13 pkgs.mesa_noglu pkgs.libjpeg]; broken = true; # linking fails because the build doesn't pull in the mesa libraries }); fltkhs-fluid-examples = dontDistribute super.fltkhs-fluid-examples; - # https://github.com/skogsbaer/hscurses/pull/26 - hscurses = overrideCabal super.hscurses (drv: { - librarySystemDepends = (drv.librarySystemDepends or []) ++ [ pkgs.ncurses ]; - }); - # We get lots of strange compiler errors during the test suite run. jsaddle = dontCheck super.jsaddle; - # Looks like Avahi provides the missing library - dnssd = super.dnssd.override { dns_sd = pkgs.avahi.override { withLibdnssdCompat = true; }; }; - # Haste stuff haste-Cabal = markBroken (self.callPackage ../tools/haskell/haste/haste-Cabal.nix {}); haste-cabal-install = markBroken (self.callPackage ../tools/haskell/haste/haste-cabal-install.nix { Cabal = self.haste-Cabal; }); haste-compiler = markBroken (self.callPackage ../tools/haskell/haste/haste-compiler.nix { inherit overrideCabal; super-haste-compiler = super.haste-compiler; }); - # Ensure the necessary frameworks are propagatedBuildInputs on darwin - OpenGLRaw = overrideCabal super.OpenGLRaw (drv: { - librarySystemDepends = - pkgs.lib.optionals (!pkgs.stdenv.isDarwin) drv.librarySystemDepends; - libraryHaskellDepends = drv.libraryHaskellDepends - ++ pkgs.lib.optionals pkgs.stdenv.isDarwin - [ pkgs.darwin.apple_sdk.frameworks.OpenGL ]; - preConfigure = pkgs.lib.optionalString pkgs.stdenv.isDarwin '' - frameworkPaths=($(for i in $nativeBuildInputs; do if [ -d "$i"/Library/Frameworks ]; then echo "-F$i/Library/Frameworks"; fi done)) - frameworkPaths=$(IFS=, ; echo "''${frameworkPaths[@]}") - configureFlags+=$(if [ -n "$frameworkPaths" ]; then echo -n "--ghc-options=-optl=$frameworkPaths"; fi) - ''; - }); - GLURaw = overrideCabal super.GLURaw (drv: { - librarySystemDepends = - pkgs.lib.optionals (!pkgs.stdenv.isDarwin) drv.librarySystemDepends; - libraryHaskellDepends = drv.libraryHaskellDepends - ++ pkgs.lib.optionals pkgs.stdenv.isDarwin - [ pkgs.darwin.apple_sdk.frameworks.OpenGL ]; - }); - bindings-GLFW = overrideCabal super.bindings-GLFW (drv: { - doCheck = false; # requires an active X11 display - librarySystemDepends = - pkgs.lib.optionals (!pkgs.stdenv.isDarwin) drv.librarySystemDepends; - libraryHaskellDepends = drv.libraryHaskellDepends - ++ pkgs.lib.optionals pkgs.stdenv.isDarwin - (with pkgs.darwin.apple_sdk.frameworks; - [ AGL Cocoa OpenGL IOKit Kernel CoreVideo - pkgs.darwin.CF ]); - }); - OpenCL = overrideCabal super.OpenCL (drv: { - librarySystemDepends = - pkgs.lib.optionals (!pkgs.stdenv.isDarwin) drv.librarySystemDepends; - libraryHaskellDepends = drv.libraryHaskellDepends - ++ pkgs.lib.optionals pkgs.stdenv.isDarwin - [ pkgs.darwin.apple_sdk.frameworks.OpenCL ]; - }); - # tinc is a new build driver a la Stack that's not yet available from Hackage. tinc = self.callPackage ../tools/haskell/tinc {}; @@ -1079,18 +779,6 @@ self: super: { # Test suite fails a QuickCheck property. optparse-applicative_0_13_0_0 = dontCheck super.optparse-applicative_0_13_0_0; - # GLUT uses `dlopen` to link to freeglut, so we need to set the RUNPATH correctly for - # it to find `libglut.so` from the nix store. We do this by patching GLUT.cabal to pkg-config - # depend on freeglut, which provides GHC to necessary information to generate a correct RPATH. - # - # Note: Simply patching the dynamic library (.so) of the GLUT build will *not* work, since the - # RPATH also needs to be propagated when using static linking. GHC automatically handles this for - # us when we patch the cabal file (Link options will be recored in the ghc package registry). - # - # Additional note: nixpkgs' freeglut and macOS's OpenGL implementation do not cooperate, - # so disable this on Darwin only - ${if pkgs.stdenv.isDarwin then null else "GLUT"} = addPkgconfigDepend (appendPatch super.GLUT ./patches/GLUT.patch) pkgs.freeglut; - # https://github.com/Philonous/hs-stun/pull/1 # Remove if a version > 0.1.0.1 ever gets released. stunclient = overrideCabal super.stunclient (drv: { @@ -1099,15 +787,13 @@ self: super: { ''; }); + # test suite cannot find its own "idris" binary idris = overrideCabal super.idris (drv: { # "idris" binary cannot find Idris library otherwise while building. After # installing it's completely fine though. This seems like a bug in Idris # that's related to builds with shared libraries enabled. It would be great # if someone who knows a thing or two about Idris could look into this. preBuild = "export LD_LIBRARY_PATH=$PWD/dist/build:$LD_LIBRARY_PATH"; - # https://github.com/idris-lang/Idris-dev/issues/2499 - librarySystemDepends = (drv.librarySystemDepends or []) ++ [pkgs.gmp]; - # test suite cannot find its own "idris" binary doCheck = false; }); @@ -1183,10 +869,6 @@ self: super: { # note: the library is unmaintained, no upstream issue dataenc = doJailbreak super.dataenc; - libsystemd-journal = overrideCabal super.libsystemd-journal (old: { - librarySystemDepends = old.librarySystemDepends or [] ++ [ pkgs.systemd ]; - }); - # horribly outdated (X11 interface changed a lot) sindre = markBroken super.sindre; diff --git a/pkgs/development/haskell-modules/configuration-nix.nix b/pkgs/development/haskell-modules/configuration-nix.nix new file mode 100644 index 000000000000..ba3c7ef67460 --- /dev/null +++ b/pkgs/development/haskell-modules/configuration-nix.nix @@ -0,0 +1,386 @@ +# NIX-SPECIFIC OVERRIDES/PATCHES FOR HASKELL PACKAGES +# +# This file contains overrides which are needed because of Nix. For example, +# some packages may need help finding the location of native libraries. In +# general, overrides in this file are (mostly) due to one of the following reasons: +# +# * packages that hard code the location of native libraries, so they need to be patched/ +# supplied the patch explicitly +# * passing native libraries that are not detected correctly by cabal2nix +# * test suites that fail due to some features not available in the nix sandbox +# (networking being a common one) +# +# In general, this file should *not* contain overrides that fix build failures that could +# also occur on standard, FHS-compliant non-Nix systems. For example, if tests have a compile +# error, that is a bug in the package, and that failure has nothing to do with Nix. +# +# Common examples which should *not* be a part of this file: +# +# * overriding a specific version of a haskell library because some package fails +# to build with a newer version. Such overrides have nothing to do with Nix itself, +# and they would also be neccessary outside of Nix if you use the same set of +# package versions. +# * disabling tests that fail due to missing files in the tarball or compile errors +# * disabling tests that require too much memory +# * enabling/disabling certain features in packages +# +# If you have an override of this kind, see configuration-common.nix instead. +{ pkgs }: + +with import ./lib.nix { inherit pkgs; }; + +self: super: builtins.intersectAttrs super { + + # Apply NixOS-specific patches. + ghc-paths = appendPatch super.ghc-paths ./patches/ghc-paths-nix.patch; + + # fix errors caused by hardening flags + epanet-haskell = disableHardening super.epanet-haskell ["format"]; + + # Link the proper version. + zeromq4-haskell = super.zeromq4-haskell.override { zeromq = pkgs.zeromq4; }; + + # Use the default version of mysql to build this package (which is actually mariadb). + # test phase requires networking + mysql = dontCheck (super.mysql.override { mysql = pkgs.mysql.lib; }); + + # CUDA needs help finding the SDK headers and libraries. + cuda = overrideCabal super.cuda (drv: { + extraLibraries = (drv.extraLibraries or []) ++ [pkgs.linuxPackages.nvidia_x11]; + configureFlags = (drv.configureFlags or []) ++ + pkgs.lib.optional pkgs.stdenv.is64bit "--extra-lib-dirs=${pkgs.cudatoolkit}/lib64" ++ [ + "--extra-lib-dirs=${pkgs.cudatoolkit}/lib" + "--extra-include-dirs=${pkgs.cudatoolkit}/include" + ]; + preConfigure = '' + unset CC # unconfuse the haskell-cuda configure script + sed -i -e 's|/usr/local/cuda|${pkgs.cudatoolkit}|g' configure + ''; + }); + + # jni needs help finding libjvm.so because it's in a weird location. + jni = overrideCabal super.jni (drv: { + preConfigure = '' + local libdir=( "${pkgs.jdk}/lib/openjdk/jre/lib/"*"/server" ) + configureFlags+=" --extra-lib-dir=''${libdir[0]}" + ''; + }); + + # The package doesn't know about the AL include hierarchy. + # https://github.com/phaazon/al/issues/1 + al = appendConfigureFlag super.al "--extra-include-dirs=${pkgs.openal}/include/AL"; + + # Won't find it's header files without help. + sfml-audio = appendConfigureFlag super.sfml-audio "--extra-include-dirs=${pkgs.openal}/include/AL"; + + hzk = overrideCabal super.hzk (drv: { + preConfigure = "sed -i -e /include-dirs/d hzk.cabal"; + configureFlags = "--extra-include-dirs=${pkgs.zookeeper_mt}/include/zookeeper"; + }); + + haskakafka = overrideCabal super.haskakafka (drv: { + preConfigure = "sed -i -e /extra-lib-dirs/d -e /include-dirs/d haskakafka.cabal"; + configureFlags = "--extra-include-dirs=${pkgs.rdkafka}/include/librdkafka"; + }); + + # Foreign dependency name clashes with another Haskell package. + libarchive-conduit = super.libarchive-conduit.override { archive = pkgs.libarchive; }; + + # Fix Darwin build. + halive = if pkgs.stdenv.isDarwin + then addBuildDepend super.halive pkgs.darwin.apple_sdk.frameworks.AppKit + else super.halive; + + # Heist's test suite requires system pandoc + heist = overrideCabal super.heist (drv: { + testToolDepends = [pkgs.pandoc]; + }); + + # the system-fileio tests use canonicalizePath, which fails in the sandbox + system-fileio = if pkgs.stdenv.isDarwin then dontCheck super.system-fileio else super.system-fileio; + + # Prevents needing to add security_tool as a build tool to all of x509-system's + # dependencies. + x509-system = if pkgs.stdenv.isDarwin && !pkgs.stdenv.cc.nativeLibc + then let inherit (pkgs.darwin) security_tool; + in pkgs.lib.overrideDerivation (addBuildDepend super.x509-system security_tool) (drv: { + postPatch = (drv.postPatch or "") + '' + substituteInPlace System/X509/MacOS.hs --replace security ${security_tool}/bin/security + ''; + }) + else super.x509-system; + + # https://github.com/NixOS/cabal2nix/issues/136 and https://github.com/NixOS/cabal2nix/issues/216 + gio = disableHardening (addPkgconfigDepend (addBuildTool super.gio self.gtk2hs-buildtools) pkgs.glib) ["fortify"]; + glib = disableHardening (addPkgconfigDepend (addBuildTool super.glib self.gtk2hs-buildtools) pkgs.glib) ["fortify"]; + gtk3 = disableHardening (super.gtk3.override { inherit (pkgs) gtk3; }) ["fortify"]; + gtk = disableHardening (addPkgconfigDepend (addBuildTool super.gtk self.gtk2hs-buildtools) pkgs.gtk2) ["fortify"]; + gtksourceview2 = (addPkgconfigDepend super.gtksourceview2 pkgs.gtk2).override { inherit (pkgs.gnome2) gtksourceview; }; + gtksourceview3 = super.gtksourceview3.override { inherit (pkgs.gnome3) gtksourceview; }; + + # Need WebkitGTK, not just webkit. + webkit = super.webkit.override { webkit = pkgs.webkitgtk2; }; + webkitgtk3 = super.webkitgtk3.override { webkit = pkgs.webkitgtk24x; }; + webkitgtk3-javascriptcore = super.webkitgtk3-javascriptcore.override { webkit = pkgs.webkitgtk24x; }; + websnap = super.websnap.override { webkit = pkgs.webkitgtk24x; }; + + hs-mesos = overrideCabal super.hs-mesos (drv: { + # Pass _only_ mesos; the correct protobuf is propagated. + extraLibraries = [ pkgs.mesos ]; + preConfigure = "sed -i -e /extra-lib-dirs/d -e 's|, /usr/include, /usr/local/include/mesos||' hs-mesos.cabal"; + }); + + # These packages try to access the network. + amqp = dontCheck super.amqp; + amqp-conduit = dontCheck super.amqp-conduit; + bitcoin-api = dontCheck super.bitcoin-api; + bitcoin-api-extra = dontCheck super.bitcoin-api-extra; + bitx-bitcoin = dontCheck super.bitx-bitcoin; # http://hydra.cryp.to/build/926187/log/raw + concurrent-dns-cache = dontCheck super.concurrent-dns-cache; + digitalocean-kzs = dontCheck super.digitalocean-kzs; # https://github.com/KazumaSATO/digitalocean-kzs/issues/1 + github-types = dontCheck super.github-types; # http://hydra.cryp.to/build/1114046/nixlog/1/raw + hadoop-rpc = dontCheck super.hadoop-rpc; # http://hydra.cryp.to/build/527461/nixlog/2/raw + hasql = dontCheck super.hasql; # http://hydra.cryp.to/build/502489/nixlog/4/raw + hasql-transaction = dontCheck super.hasql-transaction; # wants to connect to postgresql + hjsonschema = overrideCabal super.hjsonschema (drv: { testTarget = "local"; }); + marmalade-upload = dontCheck super.marmalade-upload; # http://hydra.cryp.to/build/501904/nixlog/1/raw + mongoDB = dontCheck super.mongoDB; + network-transport-tcp = dontCheck super.network-transport-tcp; + network-transport-zeromq = dontCheck super.network-transport-zeromq; # https://github.com/tweag/network-transport-zeromq/issues/30 + pipes-mongodb = dontCheck super.pipes-mongodb; # http://hydra.cryp.to/build/926195/log/raw + raven-haskell = dontCheck super.raven-haskell; # http://hydra.cryp.to/build/502053/log/raw + riak = dontCheck super.riak; # http://hydra.cryp.to/build/498763/log/raw + scotty-binding-play = dontCheck super.scotty-binding-play; + servant-router = dontCheck super.servant-router; + serversession-backend-redis = dontCheck super.serversession-backend-redis; + slack-api = dontCheck super.slack-api; # https://github.com/mpickering/slack-api/issues/5 + socket = dontCheck super.socket; + stackage = dontCheck super.stackage; # http://hydra.cryp.to/build/501867/nixlog/1/raw + textocat-api = dontCheck super.textocat-api; # http://hydra.cryp.to/build/887011/log/raw + warp = dontCheck super.warp; # http://hydra.cryp.to/build/501073/nixlog/5/raw + wreq = dontCheck super.wreq; # http://hydra.cryp.to/build/501895/nixlog/1/raw + wreq-sb = dontCheck super.wreq-sb; # http://hydra.cryp.to/build/783948/log/raw + wuss = dontCheck super.wuss; # http://hydra.cryp.to/build/875964/nixlog/2/raw + http-client = dontCheck super.http-client; + http-client-openssl = dontCheck super.http-client-openssl; + http-client-tls = dontCheck super.http-client-tls; + http-conduit = dontCheck super.http-conduit; + transient-universe = dontCheck super.transient-universe; + + # Tries to mess with extended POSIX attributes, but can't in our chroot environment. + xattr = dontCheck super.xattr; + + # Needs access to locale data, but looks for it in the wrong place. + scholdoc-citeproc = dontCheck super.scholdoc-citeproc; + + # Expect to find sendmail(1) in $PATH. + mime-mail = appendConfigureFlag super.mime-mail "--ghc-option=-DMIME_MAIL_SENDMAIL_PATH=\"sendmail\""; + + # Help the test suite find system timezone data. + tz = overrideCabal super.tz (drv: { preConfigure = "export TZDIR=${pkgs.tzdata}/share/zoneinfo"; }); + + # Nix-specific workaround + xmonad = appendPatch (dontCheck super.xmonad) ./patches/xmonad-nix.patch; + + # https://github.com/ucsd-progsys/liquid-fixpoint/issues/44 + liquid-fixpoint = overrideCabal super.liquid-fixpoint (drv: { preConfigure = "patchShebangs ."; }); + + # wxc supports wxGTX >= 3.0, but our current default version points to 2.8. + # http://hydra.cryp.to/build/1331287/log/raw + wxc = (addBuildDepend super.wxc self.split).override { wxGTK = pkgs.wxGTK30; }; + wxcore = super.wxcore.override { wxGTK = pkgs.wxGTK30; }; + + # Test suite wants to connect to $DISPLAY. + hsqml = dontCheck (addExtraLibrary (super.hsqml.override { qt5 = pkgs.qt5Full; }) pkgs.mesa); + + # Tests attempt to use NPM to install from the network into + # /homeless-shelter. Disabled. + purescript = dontCheck super.purescript; + + # Hardcoded include path + poppler = overrideCabal super.poppler (drv: { + postPatch = '' + sed -i -e 's,glib/poppler.h,poppler.h,' poppler.cabal + sed -i -e 's,glib/poppler.h,poppler.h,' Graphics/UI/Gtk/Poppler/Structs.hsc + ''; + }); + + # Uses OpenGL in testing + caramia = dontCheck super.caramia; + + llvm-general-darwin = overrideCabal (super.llvm-general.override { llvm-config = pkgs.llvm_35; }) (drv: { + preConfigure = '' + sed -i llvm-general.cabal \ + -e 's,extra-libraries: stdc++,extra-libraries: c++,' + ''; + configureFlags = (drv.configureFlags or []) ++ ["--extra-include-dirs=${pkgs.libcxx}/include/c++/v1"]; + librarySystemDepends = [ pkgs.libcxx ] ++ drv.librarySystemDepends or []; + }); + + # Supports only 3.5 for now, https://github.com/bscarlet/llvm-general/issues/142 + llvm-general = + if pkgs.stdenv.isDarwin + then self.llvm-general-darwin + else super.llvm-general.override { llvm-config = pkgs.llvm_35; }; + + # Needs help finding LLVM. + spaceprobe = addBuildTool super.spaceprobe self.llvmPackages.llvm; + + # Tries to run GUI in tests + leksah = dontCheck (overrideCabal super.leksah (drv: { + executableSystemDepends = (drv.executableSystemDepends or []) ++ (with pkgs; [ + gnome3.defaultIconTheme # Fix error: Icon 'window-close' not present in theme ... + wrapGAppsHook # Fix error: GLib-GIO-ERROR **: No GSettings schemas are installed on the system + gtk3 # Fix error: GLib-GIO-ERROR **: Settings schema 'org.gtk.Settings.FileChooser' is not installed + ]); + postPatch = (drv.postPatch or "") + '' + for f in src/IDE/Leksah.hs src/IDE/Utils/ServerConnection.hs + do + substituteInPlace "$f" --replace "\"leksah-server\"" "\"${self.leksah-server}/bin/leksah-server\"" + done + ''; + })); + + # Patch to consider NIX_GHC just like xmonad does + dyre = appendPatch super.dyre ./patches/dyre-nix.patch; + + yesod-bin = if pkgs.stdenv.isDarwin + then addBuildDepend super.yesod-bin pkgs.darwin.apple_sdk.frameworks.Cocoa + else super.yesod-bin; + + hmatrix = if pkgs.stdenv.isDarwin + then addBuildDepend super.hmatrix pkgs.darwin.apple_sdk.frameworks.Accelerate + else super.hmatrix; + + # https://github.com/edwinb/EpiVM/issues/13 + # https://github.com/edwinb/EpiVM/issues/14 + epic = addExtraLibraries (addBuildTool super.epic self.happy) [pkgs.boehmgc pkgs.gmp]; + + # https://github.com/ekmett/wl-pprint-terminfo/issues/7 + wl-pprint-terminfo = addExtraLibrary super.wl-pprint-terminfo pkgs.ncurses; + + # https://github.com/bos/pcap/issues/5 + pcap = addExtraLibrary super.pcap pkgs.libpcap; + + # The cabal files for these libraries do not list the required system dependencies. + miniball = overrideCabal super.miniball (drv: { + librarySystemDepends = [ pkgs.miniball ]; + }); + SDL-image = overrideCabal super.SDL-image (drv: { + librarySystemDepends = [ pkgs.SDL pkgs.SDL_image ] ++ drv.librarySystemDepends or []; + }); + SDL-ttf = overrideCabal super.SDL-ttf (drv: { + librarySystemDepends = [ pkgs.SDL pkgs.SDL_ttf ]; + }); + SDL-mixer = overrideCabal super.SDL-mixer (drv: { + librarySystemDepends = [ pkgs.SDL pkgs.SDL_mixer ]; + }); + SDL-gfx = overrideCabal super.SDL-gfx (drv: { + librarySystemDepends = [ pkgs.SDL pkgs.SDL_gfx ]; + }); + SDL-mpeg = overrideCabal super.SDL-mpeg (drv: { + configureFlags = (drv.configureFlags or []) ++ [ + "--extra-lib-dirs=${pkgs.smpeg}/lib" + "--extra-include-dirs=${pkgs.smpeg}/include/smpeg" + ]; + }); + + # https://github.com/ivanperez-keera/hcwiid/pull/4 + hcwiid = overrideCabal super.hcwiid (drv: { + configureFlags = (drv.configureFlags or []) ++ [ + "--extra-lib-dirs=${pkgs.bluez.out}/lib" + "--extra-lib-dirs=${pkgs.cwiid}/lib" + "--extra-include-dirs=${pkgs.cwiid}/include" + "--extra-include-dirs=${pkgs.bluez.dev}/include" + ]; + prePatch = '' sed -i -e "/Extra-Lib-Dirs/d" -e "/Include-Dirs/d" "hcwiid.cabal" ''; + }); + + # cabal2nix doesn't pick up some of the dependencies. + ginsu = let + g = addBuildDepend super.ginsu pkgs.perl; + g' = overrideCabal g (drv: { + executableSystemDepends = (drv.executableSystemDepends or []) ++ [ + pkgs.ncurses + ]; + }); + in g'; + + # Tests require `docker` command in PATH + # Tests require running docker service :on localhost + docker = dontCheck super.docker; + + # https://github.com/deech/fltkhs/issues/16 + fltkhs = overrideCabal super.fltkhs (drv: { + libraryToolDepends = (drv.libraryToolDepends or []) ++ [pkgs.autoconf]; + librarySystemDepends = (drv.librarySystemDepends or []) ++ [pkgs.fltk13 pkgs.mesa_noglu pkgs.libjpeg]; + }); + + # https://github.com/skogsbaer/hscurses/pull/26 + hscurses = overrideCabal super.hscurses (drv: { + librarySystemDepends = (drv.librarySystemDepends or []) ++ [ pkgs.ncurses ]; + }); + + # Looks like Avahi provides the missing library + dnssd = super.dnssd.override { dns_sd = pkgs.avahi.override { withLibdnssdCompat = true; }; }; + + # Ensure the necessary frameworks are propagatedBuildInputs on darwin + OpenGLRaw = overrideCabal super.OpenGLRaw (drv: { + librarySystemDepends = + pkgs.lib.optionals (!pkgs.stdenv.isDarwin) drv.librarySystemDepends; + libraryHaskellDepends = drv.libraryHaskellDepends + ++ pkgs.lib.optionals pkgs.stdenv.isDarwin + [ pkgs.darwin.apple_sdk.frameworks.OpenGL ]; + preConfigure = pkgs.lib.optionalString pkgs.stdenv.isDarwin '' + frameworkPaths=($(for i in $nativeBuildInputs; do if [ -d "$i"/Library/Frameworks ]; then echo "-F$i/Library/Frameworks"; fi done)) + frameworkPaths=$(IFS=, ; echo "''${frameworkPaths[@]}") + configureFlags+=$(if [ -n "$frameworkPaths" ]; then echo -n "--ghc-options=-optl=$frameworkPaths"; fi) + ''; + }); + GLURaw = overrideCabal super.GLURaw (drv: { + librarySystemDepends = + pkgs.lib.optionals (!pkgs.stdenv.isDarwin) drv.librarySystemDepends; + libraryHaskellDepends = drv.libraryHaskellDepends + ++ pkgs.lib.optionals pkgs.stdenv.isDarwin + [ pkgs.darwin.apple_sdk.frameworks.OpenGL ]; + }); + bindings-GLFW = overrideCabal super.bindings-GLFW (drv: { + doCheck = false; # requires an active X11 display + librarySystemDepends = + pkgs.lib.optionals (!pkgs.stdenv.isDarwin) drv.librarySystemDepends; + libraryHaskellDepends = drv.libraryHaskellDepends + ++ pkgs.lib.optionals pkgs.stdenv.isDarwin + (with pkgs.darwin.apple_sdk.frameworks; + [ AGL Cocoa OpenGL IOKit Kernel CoreVideo + pkgs.darwin.CF ]); + }); + OpenCL = overrideCabal super.OpenCL (drv: { + librarySystemDepends = + pkgs.lib.optionals (!pkgs.stdenv.isDarwin) drv.librarySystemDepends; + libraryHaskellDepends = drv.libraryHaskellDepends + ++ pkgs.lib.optionals pkgs.stdenv.isDarwin + [ pkgs.darwin.apple_sdk.frameworks.OpenCL ]; + }); + + # GLUT uses `dlopen` to link to freeglut, so we need to set the RUNPATH correctly for + # it to find `libglut.so` from the nix store. We do this by patching GLUT.cabal to pkg-config + # depend on freeglut, which provides GHC to necessary information to generate a correct RPATH. + # + # Note: Simply patching the dynamic library (.so) of the GLUT build will *not* work, since the + # RPATH also needs to be propagated when using static linking. GHC automatically handles this for + # us when we patch the cabal file (Link options will be recored in the ghc package registry). + # + # Additional note: nixpkgs' freeglut and macOS's OpenGL implementation do not cooperate, + # so disable this on Darwin only + ${if pkgs.stdenv.isDarwin then null else "GLUT"} = addPkgconfigDepend (appendPatch super.GLUT ./patches/GLUT.patch) pkgs.freeglut; + + idris = overrideCabal super.idris (drv: { + # https://github.com/idris-lang/Idris-dev/issues/2499 + librarySystemDepends = (drv.librarySystemDepends or []) ++ [pkgs.gmp]; + }); + + libsystemd-journal = overrideCabal super.libsystemd-journal (old: { + librarySystemDepends = old.librarySystemDepends or [] ++ [ pkgs.systemd ]; + }); + +} diff --git a/pkgs/development/haskell-modules/default.nix b/pkgs/development/haskell-modules/default.nix index b42f94a36352..d2ecc3381287 100644 --- a/pkgs/development/haskell-modules/default.nix +++ b/pkgs/development/haskell-modules/default.nix @@ -105,6 +105,7 @@ let }; commonConfiguration = import ./configuration-common.nix { inherit pkgs; }; + nixConfiguration = import ./configuration-nix.nix { inherit pkgs; }; in @@ -112,4 +113,5 @@ in (extends overrides (extends packageSetConfig (extends compilerConfig - (extends commonConfiguration haskellPackages)))) + (extends commonConfiguration + (extends nixConfiguration haskellPackages))))) |