summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--pkgs/development/compilers/ghc/7.10.2.nix2
-rw-r--r--pkgs/development/compilers/ghc/7.10.3.nix2
-rw-r--r--pkgs/development/compilers/ghc/8.0.2.nix2
-rw-r--r--pkgs/development/compilers/ghc/8.2.1.nix2
-rw-r--r--pkgs/development/compilers/ghc/head.nix2
-rw-r--r--pkgs/development/compilers/ghcjs/base.nix2
-rw-r--r--pkgs/development/compilers/halvm/2.4.0.nix4
-rw-r--r--pkgs/development/haskell-modules/configuration-common.nix1
-rw-r--r--pkgs/development/haskell-modules/configuration-nix.nix53
-rw-r--r--pkgs/development/haskell-modules/generic-builder.nix122
-rw-r--r--pkgs/development/haskell-modules/lib.nix4
-rw-r--r--pkgs/development/haskell-modules/make-package-set.nix1
-rw-r--r--pkgs/development/haskell-modules/with-packages-wrapper.nix2
-rw-r--r--pkgs/top-level/all-packages.nix10
14 files changed, 37 insertions, 172 deletions
diff --git a/pkgs/development/compilers/ghc/7.10.2.nix b/pkgs/development/compilers/ghc/7.10.2.nix
index af1db1e6dccf..51274dd60598 100644
--- a/pkgs/development/compilers/ghc/7.10.2.nix
+++ b/pkgs/development/compilers/ghc/7.10.2.nix
@@ -34,7 +34,7 @@ stdenv.mkDerivation rec {
     sha256 = "1x8m4rp2v7ydnrz6z9g8x7z3x3d3pxhv2pixy7i7hkbqbdsp7kal";
   };
 
-  buildInputs = [ ghc perl libxml2 libxslt docbook_xsl docbook_xml_dtd_45 docbook_xml_dtd_42 (stdenv.lib.getBin hscolour) ];
+  buildInputs = [ ghc perl libxml2 libxslt docbook_xsl docbook_xml_dtd_45 docbook_xml_dtd_42 hscolour ];
 
   patches = [ ./relocation.patch ];
 
diff --git a/pkgs/development/compilers/ghc/7.10.3.nix b/pkgs/development/compilers/ghc/7.10.3.nix
index 22a1016776ee..d573a22e0ae8 100644
--- a/pkgs/development/compilers/ghc/7.10.3.nix
+++ b/pkgs/development/compilers/ghc/7.10.3.nix
@@ -30,7 +30,7 @@ stdenv.mkDerivation rec {
     ./relocation.patch
   ];
 
-  buildInputs = [ ghc perl libxml2 libxslt docbook_xsl docbook_xml_dtd_45 docbook_xml_dtd_42 (stdenv.lib.getBin hscolour) ];
+  buildInputs = [ ghc perl libxml2 libxslt docbook_xsl docbook_xml_dtd_45 docbook_xml_dtd_42 hscolour ];
 
   enableParallelBuilding = true;
 
diff --git a/pkgs/development/compilers/ghc/8.0.2.nix b/pkgs/development/compilers/ghc/8.0.2.nix
index 55193f2f3c31..d475e3438b4b 100644
--- a/pkgs/development/compilers/ghc/8.0.2.nix
+++ b/pkgs/development/compilers/ghc/8.0.2.nix
@@ -23,7 +23,7 @@ stdenv.mkDerivation rec {
     ++ stdenv.lib.optional stdenv.isLinux ./ghc-no-madv-free.patch
     ++ stdenv.lib.optional stdenv.isDarwin ./ghc-8.0.2-no-cpp-warnings.patch;
 
-  buildInputs = [ ghc perl (stdenv.lib.getBin hscolour) sphinx ];
+  buildInputs = [ ghc perl hscolour sphinx ];
 
   enableParallelBuilding = true;
 
diff --git a/pkgs/development/compilers/ghc/8.2.1.nix b/pkgs/development/compilers/ghc/8.2.1.nix
index 7c3b21f33c25..bcc801c98ea5 100644
--- a/pkgs/development/compilers/ghc/8.2.1.nix
+++ b/pkgs/development/compilers/ghc/8.2.1.nix
@@ -10,7 +10,7 @@
 let
   inherit (bootPkgs) ghc;
   version = "8.2.1";
-  preReleaseName = "ghc-8.2.1";
+
   commonBuildInputs = [ alex autoconf automake ghc happy hscolour perl python3 sphinx ];
   commonPreConfigure =  ''
     sed -i -e 's|-isysroot /Developer/SDKs/MacOSX10.5.sdk||' configure
diff --git a/pkgs/development/compilers/ghc/head.nix b/pkgs/development/compilers/ghc/head.nix
index 27f706fc1c67..92ba3f6a46ed 100644
--- a/pkgs/development/compilers/ghc/head.nix
+++ b/pkgs/development/compilers/ghc/head.nix
@@ -11,7 +11,7 @@
 let
   inherit (bootPkgs) ghc;
 
-  commonBuildInputs = [ ghc perl autoconf automake (stdenv.lib.getBin happy) (stdenv.lib.getBin alex) python3 ];
+  commonBuildInputs = [ ghc perl autoconf automake happy alex python3 ];
 
   rev = "14457cf6a50f708eecece8f286f08687791d51f7";
 
diff --git a/pkgs/development/compilers/ghcjs/base.nix b/pkgs/development/compilers/ghcjs/base.nix
index c7d5b7a742b4..d4418b058d92 100644
--- a/pkgs/development/compilers/ghcjs/base.nix
+++ b/pkgs/development/compilers/ghcjs/base.nix
@@ -113,7 +113,7 @@ in mkDerivation (rec {
     lens optparse-applicative parallel safe shelly split
     stringsearch syb system-fileio system-filepath tar terminfo text-binary
     unordered-containers vector wl-pprint-text yaml
-    (stdenv.lib.getBin alex) (stdenv.lib.getBin happy) git gnumake autoconf automake libtool patch gmp
+    alex happy git gnumake autoconf automake libtool patch gmp
     base16-bytestring cryptohash executable-path haddock-api
     transformers-compat QuickCheck haddock hspec xhtml
     regex-posix libiconv
diff --git a/pkgs/development/compilers/halvm/2.4.0.nix b/pkgs/development/compilers/halvm/2.4.0.nix
index 7547a8ebbc66..0c4cef653d86 100644
--- a/pkgs/development/compilers/halvm/2.4.0.nix
+++ b/pkgs/development/compilers/halvm/2.4.0.nix
@@ -20,9 +20,9 @@ stdenv.mkDerivation rec {
     sed -ie 's|ld |${targetPackages.stdenv.cc.bintools}/bin/ld |g' src/scripts/ldkernel.in
   '';
   configureFlags = stdenv.lib.optional (!enableIntegerSimple) [ "--enable-gmp" ];
-  propagatedNativeBuildInputs = [ (stdenv.lib.getBin alex) (stdenv.lib.getBin happy) ];
+  propagatedNativeBuildInputs = [ alex happy ];
   buildInputs =
-   let haskellPkgs = [ (stdenv.lib.getBin alex) (stdenv.lib.getBin happy) (stdenv.lib.getBin bootPkgs.hscolour) bootPkgs.cabal-install bootPkgs.haddock bootPkgs.hpc
+   let haskellPkgs = [ alex happy bootPkgs.hscolour bootPkgs.cabal-install bootPkgs.haddock bootPkgs.hpc
     ]; in [ bootPkgs.ghc
             automake perl git targetPackages.stdenv.cc.bintools
             autoconf xen zlib ncurses.dev
diff --git a/pkgs/development/haskell-modules/configuration-common.nix b/pkgs/development/haskell-modules/configuration-common.nix
index 8c9cea0579f4..84df4d1f0c4d 100644
--- a/pkgs/development/haskell-modules/configuration-common.nix
+++ b/pkgs/development/haskell-modules/configuration-common.nix
@@ -897,7 +897,6 @@ self: super: {
   # Don't install internal mkReadme tool.
   hastache = overrideCabal super.hastache (drv: {
     doCheck = false;
-    enableSeparateBinOutput = false;
     postInstall = "rm $out/bin/mkReadme && rmdir $out/bin";
   });
 
diff --git a/pkgs/development/haskell-modules/configuration-nix.nix b/pkgs/development/haskell-modules/configuration-nix.nix
index d5a2652a4b78..8146674a9435 100644
--- a/pkgs/development/haskell-modules/configuration-nix.nix
+++ b/pkgs/development/haskell-modules/configuration-nix.nix
@@ -217,10 +217,7 @@ self: super: builtins.intersectAttrs super {
 
   # wxc supports wxGTX >= 3.0, but our current default version points to 2.8.
   # http://hydra.cryp.to/build/1331287/log/raw
-  wxc = (overrideCabal super.wxc (drv: {
-      buildDepends = (drv.buildDepends or []) ++ [self.split];
-      postInstall = "cp -v dist/build/libwxc.so.0.92.3.0 $lib/lib/libwxc.so";
-    })).override { wxGTK = pkgs.wxGTK30; };
+  wxc = (addBuildDepend super.wxc self.split).override { wxGTK = pkgs.wxGTK30; };
   wxcore = super.wxcore.override { wxGTK = pkgs.wxGTK30; };
 
   # Test suite wants to connect to $DISPLAY.
@@ -510,52 +507,4 @@ self: super: builtins.intersectAttrs super {
   # Break cyclic reference that results in an infinite recursion.
   partial-semigroup = dontCheck super.partial-semigroup;
 
-  # Alex has some weird files in /usr/share that create a cyclic ref with
-  # its bin dir.
-  alex = hasNoBinOutput super.alex;
-
-  # Disable separate bin outputs for these specific packages that break with it.
-  H = hasNoBinOutput super.H;
-  cryptol = hasNoBinOutput super.cryptol;
-  hscolour = hasNoBinOutput super.hscolour;
-  sproxy = hasNoBinOutput super.sproxy;
-  sproxy2 = hasNoBinOutput super.sproxy2;
-  sproxy-web = hasNoBinOutput super.sproxy-web;
-  juandelacosa = hasNoBinOutput super.juandelacosa;
-  mywatch = hasNoBinOutput super.mywatch;
-  sugarhaskell = hasNoBinOutput super.sugarhaskell;
-  zerobin = hasNoBinOutput super.zerobin;
-
-  git-annex = overrideCabal super.git-annex (drv: {
-    enableSeparateBinOutput = false;
-    enableSeparateEtcOutput = false;
-  });
-
-  # Has extra data files which are referred to from the binary output,
-  # creating a store reference cycle. Putting data in separate output
-  # solves the problem.
-  happy = overrideCabal super.happy (drv: { enableSeparateDataOutput = true; });
-
-  # Override a number of packages with specific references to $out in their
-  # derivations
-  stack = overrideCabal super.stack (drv: {
-    postInstall = ''
-      exe=$bin/bin/stack
-      mkdir -p $bin/share/bash-completion/completions
-      $exe --bash-completion-script $exe >$bin/share/bash-completion/completions/stack
-    '';
-  });
-  Agda = overrideCabal super.Agda (drv: {
-    postInstall = ''
-      files=("$out/share/"*"-ghc-"*"/Agda-"*"/lib/prim/Agda/"{Primitive.agda,Builtin"/"*.agda})
-      for f in "''${files[@]}" ; do
-        $bin/bin/agda $f
-      done
-      for f in "''${files[@]}" ; do
-        $bin/bin/agda -c --no-main $f
-      done
-      $bin/bin/agda-mode compile
-    '';
-  });
-
 }
diff --git a/pkgs/development/haskell-modules/generic-builder.nix b/pkgs/development/haskell-modules/generic-builder.nix
index aafc1b63530b..3e82003be43c 100644
--- a/pkgs/development/haskell-modules/generic-builder.nix
+++ b/pkgs/development/haskell-modules/generic-builder.nix
@@ -56,10 +56,6 @@ let isCross = (ghc.cross or null) != null; in
 , hardeningDisable ? lib.optional (ghc.isHaLVM or false) "all"
 , enableSeparateDataOutput ? false
 , enableSeparateDocOutput ? doHaddock
-, enableSeparateBinOutput ? isExecutable
-, outputsToInstall ? []
-, enableSeparateLibOutput ? true
-, enableSeparateEtcOutput ? (stdenv.lib.versionOlder "7.7" ghc.version)
 } @ args:
 
 assert editedCabalFile != null -> revision != null;
@@ -83,6 +79,9 @@ let
                         then "package-db"
                         else "package-conf";
 
+  # the target dir for haddock documentation
+  docdir = docoutput: docoutput + "/share/doc";
+
   newCabalFileUrl = "http://hackage.haskell.org/package/${pname}-${version}/revision/${revision}.cabal";
   newCabalFile = fetchurl {
     url = newCabalFileUrl;
@@ -96,13 +95,6 @@ let
                    '';
 
   hasActiveLibrary = isLibrary && (enableStaticLibraries || enableSharedLibraries || enableLibraryProfiling);
-  hasLibOutput = enableSeparateLibOutput && hasActiveLibrary;
-  libDir = if hasLibOutput then "$lib/lib/${ghc.name}" else "$out/lib/${ghc.name}";
-  binDir = if enableSeparateBinOutput then "$bin/bin" else "$out/bin";
-  libexecDir = if enableSeparateBinOutput then "$libexec/bin" else "$out/libexec";
-  etcDir = if enableSeparateEtcOutput then "$etc/etc" else "$out/etc";
-  docDir = if enableSeparateDocOutput then "$doc/share/doc" else "$out/share/doc";
-  dataDir = if enableSeparateDataOutput then "$data/share/${ghc.name}" else "$out/share/${ghc.name}";
 
   # We cannot enable -j<n> parallelism for libraries because GHC is far more
   # likely to generate a non-determistic library ID in that case. Further
@@ -121,20 +113,12 @@ let
     stdenv.lib.optionalString isCross (" " + stdenv.lib.concatStringsSep " " crossCabalFlags);
 
   defaultConfigureFlags = [
-    "--verbose" "--prefix=$out"
-    # Binary directory has to be $bin/bin instead of just $bin: this
-    # is so that the package is added to the PATH when it's used as a
-    # build input. Sadly mkDerivation won't add inputs that don't have
-    # bin subdirectory.
-    "--bindir=${binDir}"
-    "--libdir=${libDir}" "--libsubdir=\\$pkgid"
-    "--libexecdir=${libexecDir}"
-    (optionalString (enableSeparateEtcOutput) "--sysconfdir=${etcDir}") # Old versions of cabal don't support this flag.
-    "--datadir=${dataDir}"
-    "--docdir=${docDir}"
+    "--verbose" "--prefix=$out" "--libdir=\\$prefix/lib/\\$compiler" "--libsubdir=\\$pkgid"
+    (optionalString enableSeparateDataOutput "--datadir=$data/share/${ghc.name}")
+    (optionalString enableSeparateDocOutput "--docdir=${docdir "$doc"}")
     "--with-gcc=$CC" # Clang won't work without that extra information.
     "--package-db=$packageConfDir"
-    (optionalString (enableSharedExecutables && stdenv.isLinux) "--ghc-option=-optl=-Wl,-rpath=${libDir}/${pname}-${version}")
+    (optionalString (enableSharedExecutables && stdenv.isLinux) "--ghc-option=-optl=-Wl,-rpath=$out/lib/${ghc.name}/${pname}-${version}")
     (optionalString (enableSharedExecutables && stdenv.isDarwin) "--ghc-option=-optl=-Wl,-headerpad_max_install_names")
     (optionalString enableParallelBuilding "--ghc-option=-j$NIX_BUILD_CORES")
     (optionalString useCpphs "--with-cpphs=${cpphs}/bin/cpphs --ghc-options=-cpp --ghc-options=-pgmP${cpphs}/bin/cpphs --ghc-options=-optP--cpp")
@@ -168,11 +152,8 @@ let
   allPkgconfigDepends = pkgconfigDepends ++ libraryPkgconfigDepends ++ executablePkgconfigDepends ++
                         optionals doCheck testPkgconfigDepends ++ optionals doBenchmark benchmarkPkgconfigDepends;
 
-  nativeBuildInputs = map stdenv.lib.getBin
-    ( optional (allPkgconfigDepends != []) pkgconfig
-      ++ buildTools ++ libraryToolDepends ++ executableToolDepends
-      ++ [ removeReferencesTo ]
-    );
+  nativeBuildInputs = optional (allPkgconfigDepends != []) pkgconfig ++
+                      buildTools ++ libraryToolDepends ++ executableToolDepends ++ [ removeReferencesTo ];
   propagatedBuildInputs = buildDepends ++ libraryHaskellDepends ++ executableHaskellDepends;
   otherBuildInputs = setupHaskellDepends ++ extraLibraries ++ librarySystemDepends ++ executableSystemDepends ++
                      optionals (allPkgconfigDepends != []) allPkgconfigDepends ++
@@ -201,15 +182,7 @@ assert allPkgconfigDepends != [] -> pkgconfig != null;
 stdenv.mkDerivation ({
   name = "${pname}-${version}";
 
-  outputs = if (args ? outputs) then args.outputs else
-    (  (optional enableSeparateBinOutput "bin")
-    ++ (optional enableSeparateBinOutput "libexec")
-    ++ [ "out" ]
-    ++ (optional enableSeparateDataOutput "data")
-    ++ (optional enableSeparateDocOutput "doc")
-    ++ (optional enableSeparateEtcOutput "etc")
-    ++ (optional hasLibOutput "lib")
-    );
+  outputs = if (args ? outputs) then args.outputs else ([ "out" ] ++ (optional enableSeparateDataOutput "data") ++ (optional enableSeparateDocOutput "doc"));
   setOutputFlags = false;
 
   pos = builtins.unsafeGetAttrPos "pname" args;
@@ -233,7 +206,7 @@ stdenv.mkDerivation ({
 
   postPatch = optionalString jailbreak ''
     echo "Run jailbreak-cabal to lift version restrictions on build inputs."
-    ${stdenv.lib.getBin jailbreak-cabal}/bin/jailbreak-cabal ${pname}.cabal
+    ${jailbreak-cabal}/bin/jailbreak-cabal ${pname}.cabal
   '' + postPatch;
 
   setupCompilerEnvironmentPhase = ''
@@ -241,7 +214,7 @@ stdenv.mkDerivation ({
 
     echo "Build with ${ghc}."
     export PATH="${ghc}/bin:$PATH"
-    ${optionalString (hasActiveLibrary && hyperlinkSource) "export PATH=${stdenv.lib.getBin hscolour}/bin:$PATH"}
+    ${optionalString (hasActiveLibrary && hyperlinkSource) "export PATH=${hscolour}/bin:$PATH"}
 
     packageConfDir="$TMPDIR/package.conf.d"
     mkdir -p $packageConfDir
@@ -268,7 +241,7 @@ stdenv.mkDerivation ({
     #
     # Create a local directory with symlinks of the *.dylib (macOS shared
     # libraries) from all the dependencies.
-    local dynamicLinksDir="${libDir}/links"
+    local dynamicLinksDir="$out/lib/links"
     mkdir -p $dynamicLinksDir
     for d in $(grep dynamic-library-dirs "$packageConfDir/"*|awk '{print $2}'); do
       ln -s "$d/"*.dylib $dynamicLinksDir
@@ -340,7 +313,7 @@ stdenv.mkDerivation ({
 
     ${if !hasActiveLibrary then "${setupCommand} install" else ''
       ${setupCommand} copy
-      local packageConfDir="${libDir}/package.conf.d"
+      local packageConfDir="$out/lib/${ghc.name}/package.conf.d"
       local packageConfFile="$packageConfDir/${pname}-${version}.conf"
       mkdir -p "$packageConfDir"
       ${setupCommand} register --gen-pkg-config=$packageConfFile
@@ -348,7 +321,7 @@ stdenv.mkDerivation ({
       mv $packageConfFile $packageConfDir/$pkgId.conf
     ''}
     ${optionalString isGhcjs ''
-      for exeDir in "${binDir}/"*.jsexe; do
+      for exeDir in "$out/bin/"*.jsexe; do
         exe="''${exeDir%.jsexe}"
         printWords '#!${nodejs}/bin/node' > "$exe"
         cat "$exeDir/all.js" >> "$exe"
@@ -357,68 +330,18 @@ stdenv.mkDerivation ({
     ''}
     ${optionalString doCoverage "mkdir -p $out/share && cp -r dist/hpc $out/share"}
     ${optionalString (enableSharedExecutables && isExecutable && !isGhcjs && stdenv.isDarwin && stdenv.lib.versionOlder ghc.version "7.10") ''
-      for exe in "${binDir}/"* ; do
-        install_name_tool -add_rpath "${libDir}/${pname}-${version}" "$exe"
+      for exe in "$out/bin/"* ; do
+        install_name_tool -add_rpath "$out/lib/ghc-${ghc.version}/${pname}-${version}" "$exe"
       done
     ''}
 
     ${optionalString enableSeparateDocOutput ''
-    # Remove references back to $out but also back to $lib if we have
-    # docs. $lib is needed as it stores path to haddock interfaces in the
-    # conf file which creates a cycle if docs refer back to library
-    # path.
-    mkdir -p ${docDir}
-
-    for x in ${docDir}/html/src/*.html; do
-      remove-references-to -t $out -t ${libDir} -t ${binDir} ${optionalString enableSeparateDataOutput "-t $data"} $x
+    for x in ${docdir "$doc"}/html/src/*.html; do
+      remove-references-to -t $out $x
     done
+    mkdir -p $doc
     ''}
-
-    ${optionalString hasLibOutput ''
-    # Even if we don't have binary output for the package, things like
-    # Paths files will embed paths to bin/libexec directories in themselves
-    # which results in .lib <-> $out cyclic store reference. We
-    # therefore patch out the paths from separate library if we don't have
-    # separate bin output too.
-    #
-    # If we _do_ have separate bin and lib outputs, we may still be in
-    # trouble in case of shared executables: executable contains path to
-    # .lib, .lib contains path (through Paths) to .bin and we have a
-    # cycle.
-    #
-    # Lastly we have to deal with references from .lib back into
-    # $out/share if we're not splitting out data directory.
-    #
-    # It may happen that we have hasLibOutput set but the library
-    # directory was not created: this happens in the case that library
-    # section is not exposing any modules. See "fail" package for an
-    # example where no modules are exposed for GHC >= 8.0.
-    if [ -d ${libDir} ]; then
-      find ${libDir} -type f -exec \
-        remove-references-to -t ${binDir} -t ${libexecDir} "{}" \;
-    fi
-    ''}
-
-    ${optionalString (hasLibOutput && ! enableSeparateDocOutput) ''
-    # If we don't have separate docs, we have to patch out the ref to
-    # docs in package conf. This will likely break Haddock
-    # cross-package links but is necessary to break store cycle…
-    find ${libDir}/ -type f -name '*.conf' -exec \
-      remove-references-to -t ${docDir} "{}" \;
-    ''}
-
-    ${optionalString (hasLibOutput && ! enableSeparateDataOutput) ''
-    # Just like for doc output path in $out potentially landing in
-    # *.conf, we have to also remove the data directory so that it
-    # doesn't appear under data-dir field creating a cycle.
-    find ${libDir}/ -type f -exec echo Removing ${dataDir} refs from "{}" \;
-    find ${libDir}/ -type f -exec \
-      remove-references-to -t ${dataDir} "{}" \;
-    ''}
-
-    ${optionalString enableSeparateDataOutput "mkdir -p ${dataDir}"}
-    ${optionalString enableSeparateBinOutput "mkdir -p ${binDir} ${libexecDir}"}
-    ${optionalString enableSeparateEtcOutput "mkdir -p ${etcDir}"}
+    ${optionalString enableSeparateDataOutput "mkdir -p $data"}
 
     runHook postInstall
   '';
@@ -435,7 +358,7 @@ stdenv.mkDerivation ({
     # the directory containing the haddock documentation.
     # `null' if no haddock documentation was built.
     # TODO: fetch the self from the fixpoint instead
-    haddockDir = self: if doHaddock then "${docDir}/html" else null;
+    haddockDir = self: if doHaddock then "${docdir self.doc}/html" else null;
 
     env = stdenv.mkDerivation {
       name = "interactive-${pname}-${version}-environment";
@@ -463,7 +386,6 @@ stdenv.mkDerivation ({
          // optionalAttrs (description != "")  { inherit description; }
          // optionalAttrs (maintainers != [])  { inherit maintainers; }
          // optionalAttrs (hydraPlatforms != platforms) { inherit hydraPlatforms; }
-         // optionalAttrs (outputsToInstall != []) { inherit outputsToInstall; }
          ;
 
 }
diff --git a/pkgs/development/haskell-modules/lib.nix b/pkgs/development/haskell-modules/lib.nix
index b542a29c8299..96520dce2b2d 100644
--- a/pkgs/development/haskell-modules/lib.nix
+++ b/pkgs/development/haskell-modules/lib.nix
@@ -147,8 +147,4 @@ rec {
   overrideSrc = drv: { src, version ? drv.version }:
     overrideCabal drv (_: { inherit src version; editedCabalFile = null; });
 
-  hasNoBinOutput = drv: overrideCabal drv (drv: { enableSeparateBinOutput = false; });
-
-  installOutputs = drv: outputs: overrideCabal drv
-    (drv: { outputsToInstall = outputs; });
 }
diff --git a/pkgs/development/haskell-modules/make-package-set.nix b/pkgs/development/haskell-modules/make-package-set.nix
index cceaa360105c..61043252155e 100644
--- a/pkgs/development/haskell-modules/make-package-set.nix
+++ b/pkgs/development/haskell-modules/make-package-set.nix
@@ -44,7 +44,6 @@ let
       isLibrary = false;
       doHaddock = false;
       hyperlinkSource = false;      # Avoid depending on hscolour for this build.
-      enableSeparateEtcOutput = false; # The flag to support this is missing in old versions of cabal.
       postFixup = "rm -rf $out/lib $out/share $out/nix-support";
     });
     cpphs = overrideCabal (self.cpphs.overrideScope (self: super: {
diff --git a/pkgs/development/haskell-modules/with-packages-wrapper.nix b/pkgs/development/haskell-modules/with-packages-wrapper.nix
index 1a12b2a65cd4..ac484b3c1124 100644
--- a/pkgs/development/haskell-modules/with-packages-wrapper.nix
+++ b/pkgs/development/haskell-modules/with-packages-wrapper.nix
@@ -43,7 +43,7 @@ let
   libDir        = if isHaLVM then "$out/lib/HaLVM-${ghc.version}" else "$out/lib/${ghcCommand}-${ghc.version}";
   docDir        = "$out/share/doc/ghc/html";
   packageCfgDir = "${libDir}/package.conf.d";
-  paths         = map lib.getLib (lib.filter (x: x ? isHaskellLibrary) (lib.closePropagation packages));
+  paths         = lib.filter (x: x ? isHaskellLibrary) (lib.closePropagation packages);
   hasLibraries  = lib.any (x: x.isHaskellLibrary) paths;
   # CLang is needed on Darwin for -fllvm to work:
   # https://downloads.haskell.org/~ghc/latest/docs/html/users_guide/code-generators.html
diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix
index 8439f4237a35..7b29f4f9fc1d 100644
--- a/pkgs/top-level/all-packages.nix
+++ b/pkgs/top-level/all-packages.nix
@@ -830,10 +830,10 @@ with pkgs;
     enableSharedExecutables = false;
     executableToolDepends = [ makeWrapper ];
     postInstall = ''
-      exe=$libexec/bin/${drv.pname}-${drv.version}/${drv.pname}
-      install -D $bin/bin/${drv.pname} $exe
-      rm -rf $bin/bin $out/lib $out/share
-      makeWrapper $exe $bin/bin/${drv.pname} \
+      exe=$out/libexec/${drv.pname}-${drv.version}/${drv.pname}
+      install -D $out/bin/${drv.pname} $exe
+      rm -rf $out/{bin,lib,share}
+      makeWrapper $exe $out/bin/${drv.pname} \
         --prefix PATH ":" "${nix}/bin" \
         --prefix PATH ":" "${nix-prefetch-scripts}/bin"
       mkdir -p $out/share/{bash-completion/completions,zsh/vendor-completions,fish/completions}
@@ -847,7 +847,7 @@ with pkgs;
     executableToolDepends = [ makeWrapper ];
     postInstall = ''
       wrapProgram $out/bin/stack2nix \
-        ${lib.makeBinPath [ git cabal2nix cabal-install stack ]}
+        --prefix PATH ":" "${git}/bin:${cabal2nix}/bin:${cabal-install}/bin:${stack}/bin"
     '';
   });