anchor.diff:          # Run post install hook, if provided
           runHook postInstall
         '';
  -    });
  +    } // extraArgs);
   
     # Builds a development shell
  -  buildNodeShell = { name, packageName, version, src, dependencies ? [], production ? true, npmFlags ? "", dontNpmInstall ? false, bypassCache ? false, ... }@args:
  +  buildNodeShell =
  +    { name
  +    , packageName
  +    , version
  +    , src
  +    , dependencies ? []
  +    , buildInputs ? []
  +    , production ? true
  +    , npmFlags ? ""
  +    , dontNpmInstall ? false
  +    , bypassCache ? false
  +    , dontStrip ? true
  +    , unpackPhase ? "true"
  +    , buildPhase ? "true"
  +    , ... }@args:
  +
       let
         forceOfflineFlag = if bypassCache then "--offline" else "--registry http://www.example.com";
   
  -      nodeDependencies = stdenv.mkDerivation {
  +      extraArgs = removeAttrs args [ "name" "dependencies" "buildInputs" ];
  +
  +      nodeDependencies = stdenv.mkDerivation ({
           name = "node-dependencies-${name}-${version}";
   
           buildInputs = [ tarWrapper python nodejs ]
             ++ stdenv.lib.optional (stdenv.isLinux) utillinux
             ++ stdenv.lib.optional (stdenv.isDarwin) libtool
  -          ++ args.buildInputs or [];
  +          ++ buildInputs;
  +
  +        inherit dontStrip; # Striping may fail a build for some package deployments
  +        inherit dontNpmInstall unpackPhase buildPhase;
   
           includeScript = includeDependencies { inherit dependencies; };
           pinpointDependenciesScript = pinpointDependenciesOfPackage args;
  
positive.code:   };
  
    # Builds and composes an NPM package including all its dependencies
    buildNodePackage = { name, packageName, version, dependencies ? [], production ? true, npmFlags ? "", dontNpmInstall ? false, bypassCache ? false, preRebuild ? "", ... }@args:
  
      let
        forceOfflineFlag = if bypassCache then "--offline" else "--registry http://www.example.com";
      in
      stdenv.lib.makeOverridable stdenv.mkDerivation (builtins.removeAttrs args [ "dependencies" ] // {
        name = "node-${name}-${version}";
        buildInputs = [ tarWrapper python nodejs ]
          ++ stdenv.lib.optional (stdenv.isLinux) utillinux
          ++ stdenv.lib.optional (stdenv.isDarwin) libtool
          ++ args.buildInputs or [];
        dontStrip = args.dontStrip or true; # Striping may fail a build for some package deployments
  
        inherit dontNpmInstall preRebuild;
  
        unpackPhase = args.unpackPhase or "true";
  
        buildPhase = args.buildPhase or "true";
  
        compositionScript = composePackage args;
        pinpointDependenciesScript = pinpointDependenciesOfPackage args;
  
        passAsFile = [ "compositionScript" "pinpointDependenciesScript" ];
  
        installPhase = args.installPhase or ''
          # Create and enter a root node_modules/ folder
          mkdir -p $out/lib/node_modules
          cd $out/lib/node_modules
  
negative.code:           mv ${packageName} lib
            ln -s $out/lib/node_modules/.bin $out/bin
          '';
        } // extraArgs);
      in
      stdenv.lib.makeOverridable stdenv.mkDerivation {
        name = "node-shell-${name}-${version}";
  
        buildInputs = [ python nodejs ] ++ stdenv.lib.optional (stdenv.isLinux) utillinux ++ buildInputs;
        buildCommand = ''
          mkdir -p $out/bin
          cat > $out/bin/shell <<EOF
  