anchor.diff:      let
         nodeDependencies = stdenv.mkDerivation {
           name = "node-dependencies-${name}-${version}";
  -        
  +
           buildInputs = [ tarWrapper python nodejs ] ++ stdenv.lib.optional (stdenv.isLinux) utillinux ++ args.buildInputs or [];
  -        
  +
           includeScript = includeDependencies { inherit dependencies; };
           passAsFile = [ "includeScript" ];
  -        
  +
           buildCommand = ''
             mkdir -p $out/lib
             cd $out/lib
             source $includeScriptPath
  -          
  +
             # Create fake package.json to make the npm commands work properly
             cat > package.json <<EOF
             {
  
positive.code:     tar --no-same-owner --no-same-permissions -xf ${nodejs.src}
      mv node-* $out
    '';
    
    # Builds and composes an NPM package including all its dependencies
    buildNodePackage = { name, packageName, version, dependencies ? [], production ? true, npmFlags ? "", dontNpmInstall ? false, preRebuild ? "", ... }@args:
      
      stdenv.lib.makeOverridable stdenv.mkDerivation (builtins.removeAttrs args [ "dependencies" ] // {
        name = "node-${name}-${version}";
        buildInputs = [ tarWrapper python nodejs ] ++ stdenv.lib.optional (stdenv.isLinux) utillinux ++ 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;
        passAsFile = [ "compositionScript" ];
        
        installPhase = args.installPhase or ''
          # Create and enter a root node_modules/ folder
          mkdir -p $out/lib/node_modules
          cd $out/lib/node_modules
            
          # Compose the package and all its dependencies
          source $compositionScriptPath
          
          # Patch the shebangs of the bundled modules to prevent them from
          # calling executables outside the Nix store as much as possible
          patchShebangs .
          
          # Deploy the Node.js package by running npm install. Since the
          # dependencies have been provided already by ourselves, it should not
          # attempt to install them again, which is good, because we want to make
  
negative.code:         #
          # The other responsibilities of NPM are kept -- version checks, build
          # steps, postprocessing etc.
  
          export HOME=$TMPDIR
          cd "${packageName}"
          runHook preRebuild
          npm --registry http://www.example.com --nodedir=${nodeSources} ${npmFlags} ${stdenv.lib.optionalString production "--production"} rebuild
  
          if [ "$dontNpmInstall" != "1" ]
          then
              # NPM tries to download packages even when they already exist if npm-shrinkwrap is used.
              rm -f npm-shrinkwrap.json
  
              npm --registry http://www.example.com --nodedir=${nodeSources} ${npmFlags} ${stdenv.lib.optionalString production "--production"} install
          fi
  
          # Create symlink to the deployed executable folder, if applicable
          if [ -d "$out/lib/node_modules/.bin" ]
          then
              ln -s $out/lib/node_modules/.bin $out/bin
          fi
  
          # Create symlinks to the deployed manual page folders, if applicable
          if [ -d "$out/lib/node_modules/${packageName}/man" ]
          then
  