anchor.diff:            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 ++ args.buildInputs or [];
  +      buildInputs = [ python nodejs ] ++ stdenv.lib.optional (stdenv.isLinux) utillinux ++ buildInputs;
         buildCommand = ''
           mkdir -p $out/bin
           cat > $out/bin/shell <<EOF
  
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:         # Run post install hook, if provided
          runHook postInstall
        '';
      } // extraArgs);
  
    # Builds a development shell
    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";
  
        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
            ++ buildInputs;
  
          inherit dontStrip; # Striping may fail a build for some package deployments
          inherit dontNpmInstall unpackPhase buildPhase;
  
          includeScript = includeDependencies { inherit dependencies; };
          pinpointDependenciesScript = pinpointDependenciesOfPackage args;
  