anchor.diff:  
     buildStackProject = pkgs.callPackage ./generic-stack-builder.nix { };
   
  +  /* Add a dummy command to trigger a build despite an equivalent
  +     earlier build that is present in the store or cache.
  +   */
     triggerRebuild = drv: i: overrideCabal drv (drv: { postUnpack = ": trigger rebuild ${toString i}"; });
   
  +  /* Override the sources for the package and optionaly the version.
  +     This also takes of removing editedCabalFile.
  +   */
     overrideSrc = drv: { src, version ? drv.version }:
       overrideCabal drv (_: { inherit src version; editedCabalFile = null; });
   
  
positive.code:     '';
    });
  
    buildStrictly = pkg: buildFromSdist (failOnAllWarnings pkg);
  
    failOnAllWarnings = drv: appendConfigureFlag drv "--ghc-option=-Wall --ghc-option=-Werror";
  
    checkUnusedPackages =
      { ignoreEmptyImports ? false
      , ignoreMainModule   ? false
  
negative.code: 
    disableHardening = drv: flags: overrideCabal drv (drv: { hardeningDisable = flags; });
  
    /* Let Nix strip the binary files.
     * This removes debugging symbols.
     */
    doStrip = drv: overrideCabal drv (drv: { dontStrip = false; });
  
    /* Stop Nix from stripping the binary files.
     * This keeps debugging symbols.
     */
    dontStrip = drv: overrideCabal drv (drv: { dontStrip = true; });
  
    /* Useful for debugging segfaults with gdb.
     * This includes dontStrip.
     */
    enableDWARFDebugging = drv:
     # -g: enables debugging symbols
     # --disable-*-stripping: tell GHC not to strip resulting binaries
     # dontStrip: see above
     appendConfigureFlag (dontStrip drv) "--ghc-options=-g --disable-executable-stripping --disable-library-stripping";
  
    /* Create a source distribution tarball like those found on hackage,
       instead of building the package.
     */
    sdistTarball = pkg: lib.overrideDerivation pkg (drv: {
      name = "${drv.pname}-source-${drv.version}";
      # Since we disable the haddock phase, we also need to override the
  