{ pkgs }: let removeLibraryHaskellDepends = pnames: depends: builtins.filter (e: !(builtins.elem (e.pname or "") pnames)) depends; in with import ./lib.nix { inherit pkgs; }; self: super: # The stage 2 packages. Regenerate with ./ghcjs/gen-stage2.rb let stage2 = (import ./ghcjs/stage2.nix { inherit (self) callPackage; inherit (self.ghc) ghcjsBoot; }); in stage2 // { old-time = overrideCabal stage2.old-time (drv: { postPatch = '' ${pkgs.autoconf}/bin/autoreconf --install --force --verbose ''; buildTools = pkgs.lib.optional pkgs.stdenv.isDarwin pkgs.darwin.libiconv; }); network = addBuildTools super.network (pkgs.lib.optional pkgs.stdenv.isDarwin pkgs.darwin.libiconv); zlib = addBuildTools super.zlib (pkgs.lib.optional pkgs.stdenv.isDarwin pkgs.darwin.libiconv); # LLVM is not supported on this GHC; use the latest one. inherit (pkgs) llvmPackages; inherit (pkgs.haskell.packages.ghc7103) jailbreak-cabal alex happy gtk2hs-buildtools rehoo hoogle; # This is the list of the Stage 1 packages that are built into a booted ghcjs installation # It can be generated with the command: # nix-shell -p haskell.packages.ghcjs.ghc --command "ghcjs-pkg list | sed -n 's/^ \(.*\)-\([0-9.]*\)$/\1_\2/ p' | sed 's/\./_/g' | sed 's/-\(.\)/\U\1/' | sed 's/^\([^_]*\)\(.*\)$/\1 = null;/'" array = null; base = null; binary = null; rts = null; bytestring = null; containers = null; deepseq = null; directory = null; filepath = null; ghc-prim = null; ghcjs-prim = null; integer-gmp = null; old-locale = null; pretty = null; primitive = null; process = null; template-haskell = null; time = null; transformers = null; unix = null; # Don't set integer-simple to null! # GHCJS uses integer-gmp, so any package expression that depends on # integer-simple is wrong. #integer-simple = null; # These packages are core libraries in GHC 7.10.x, but not here. bin-package-db = null; haskeline = self.haskeline_0_7_2_1; hoopl = self.hoopl_3_10_2_1; hpc = self.hpc_0_6_0_2; terminfo = self.terminfo_0_4_0_1; xhtml = self.xhtml_3000_2_1; pqueue = overrideCabal super.pqueue (drv: { postPatch = '' sed -i -e '12s|null|Data.PQueue.Internals.null|' Data/PQueue/Internals.hs sed -i -e '64s|null|Data.PQueue.Internals.null|' Data/PQueue/Internals.hs sed -i -e '32s|null|Data.PQueue.Internals.null|' Data/PQueue/Min.hs sed -i -e '32s|null|Data.PQueue.Max.null|' Data/PQueue/Max.hs sed -i -e '42s|null|Data.PQueue.Prio.Internals.null|' Data/PQueue/Prio/Min.hs sed -i -e '42s|null|Data.PQueue.Prio.Max.null|' Data/PQueue/Prio/Max.hs ''; }); transformers-compat = overrideCabal super.transformers-compat (drv: { configureFlags = []; }); profunctors = overrideCabal super.profunctors (drv: { preConfigure = '' sed -i 's/^{-# ANN .* #-}//' src/Data/Profunctor/Unsafe.hs ''; }); ghcjs-ffiqq = self.callPackage ({ mkDerivation, base, template-haskell, ghcjs-base, split, containers, text, ghc-prim }: mkDerivation { pname = "ghcjs-ffiqq"; version = "0.1.0.0"; src = pkgs.fetchFromGitHub { owner = "ghcjs"; repo = "ghcjs-ffiqq"; rev = "da31b18582542fcfceade5ef6b2aca66662b9e20"; sha256 = "1mkp8p9hispyzvkb5v607ihjp912jfip61id8d42i19k554ssp8y"; }; libraryHaskellDepends = [ base template-haskell ghcjs-base split containers text ghc-prim ]; description = "FFI QuasiQuoter for GHCJS"; license = stdenv.lib.licenses.mit; }) {}; ghcjs-dom = overrideCabal super.ghcjs-dom (drv: { libraryHaskellDepends = [ self.ghcjs-base ] ++ removeLibraryHaskellDepends [ "glib" "gtk" "gtk3" "webkitgtk" "webkitgtk3" ] drv.libraryHaskellDepends; }); ghc-paths = overrideCabal super.ghc-paths (drv: { patches = [ ./patches/ghc-paths-nix-ghcjs.patch ]; }); # reflex 0.3, made compatible with the newest GHCJS. reflex = overrideCabal super.reflex (drv: { src = pkgs.fetchFromGitHub { owner = "ryantrinkle"; repo = "reflex"; rev = "cc62c11a6cde31412582758c236919d4bb766ada"; sha256 = "1j4vw0636bkl46lj8ry16i04vgpivjc6bs3ls54ppp1wfp63q7w4"; }; }); # reflex-dom 0.2, made compatible with the newest GHCJS. reflex-dom = overrideCabal super.reflex-dom (drv: { src = pkgs.fetchFromGitHub { owner = "ryantrinkle"; repo = "reflex-dom"; rev = "639d9ca13c2def075e83344c9afca6eafaf24219"; sha256 = "0166ihbh3dbfjiym9w561svpgvj0x4i8i8ws70xaafi0cmpsxrar"; }; libraryHaskellDepends = removeLibraryHaskellDepends [ "glib" "gtk3" "webkitgtk3" "webkitgtk3-javascriptcore" "raw-strings-qq" "unix" ] drv.libraryHaskellDepends; }); }