summary refs log tree commit diff
path: root/pkgs/development/tools/yarn2nix/default.nix
diff options
context:
space:
mode:
Diffstat (limited to 'pkgs/development/tools/yarn2nix/default.nix')
-rw-r--r--pkgs/development/tools/yarn2nix/default.nix199
1 files changed, 0 insertions, 199 deletions
diff --git a/pkgs/development/tools/yarn2nix/default.nix b/pkgs/development/tools/yarn2nix/default.nix
deleted file mode 100644
index e86c0aac2c9..00000000000
--- a/pkgs/development/tools/yarn2nix/default.nix
+++ /dev/null
@@ -1,199 +0,0 @@
-{ stdenv, lib, fetchurl, linkFarm, runCommand, nodejs, yarn }:
-
-let
-  unlessNull = item: alt:
-    if item == null then alt else item;
-
-  yarn2nix = mkYarnPackage {
-    src = ./.;
-    yarnNix = ./yarn.nix;
-
-    passthru = {
-      inherit
-        defaultYarnFlags
-        linkNodeModulesHook
-        mkYarnModules
-        mkYarnNix
-        mkYarnPackage
-        # Export yarn again to make it easier to find out which yarn was used.
-        yarn
-        ;
-    };
-
-    meta = with lib; {
-      description = "generate nix expressions from a yarn.lock file";
-      homepage = "https://github.com/moretea/yarn2nix";
-      license = licenses.gpl3;
-      maintainers = with maintainers; [ manveru zimbatm ];
-    };
-  };
-
-  # Generates the yarn.nix from the yarn.lock file
-  mkYarnNix = yarnLock:
-    runCommand "yarn.nix" {}
-      "${yarn2nix}/bin/yarn2nix --lockfile ${yarnLock} --no-patch > $out";
-
-  # Loads the generated offline cache. This will be used by yarn as
-  # the package source.
-  importOfflineCache = yarnNix:
-    let
-      pkg = import yarnNix { inherit fetchurl linkFarm; };
-    in
-      pkg.offline_cache;
-
-  defaultYarnFlags = [
-    "--offline"
-    "--frozen-lockfile"
-    "--ignore-engines"
-    "--ignore-scripts"
-  ];
-
-  mkYarnModules = {
-    name,
-    packageJSON,
-    yarnLock,
-    yarnNix ? mkYarnNix yarnLock,
-    yarnFlags ? defaultYarnFlags,
-    pkgConfig ? {},
-    preBuild ? "",
-  }:
-    let
-      offlineCache = importOfflineCache yarnNix;
-      extraBuildInputs = (lib.flatten (builtins.map (key:
-        pkgConfig.${key} . buildInputs or []
-      ) (builtins.attrNames pkgConfig)));
-      postInstall = (builtins.map (key:
-        if (pkgConfig.${key} ? postInstall) then
-          ''
-            for f in $(find -L -path '*/node_modules/${key}' -type d); do
-              (cd "$f" && (${pkgConfig.${key}.postInstall}))
-            done
-          ''
-        else
-          ""
-      ) (builtins.attrNames pkgConfig));
-    in
-    stdenv.mkDerivation {
-      inherit name preBuild;
-      phases = ["configurePhase" "buildPhase"];
-      buildInputs = [ yarn nodejs ] ++ extraBuildInputs;
-
-      configurePhase = ''
-        # Yarn writes cache directories etc to $HOME.
-        export HOME=$PWD/yarn_home
-      '';
-
-      buildPhase = ''
-        runHook preBuild
-
-        cp ${packageJSON} ./package.json
-        cp ${yarnLock} ./yarn.lock
-        chmod +w ./yarn.lock
-
-        yarn config --offline set yarn-offline-mirror ${offlineCache}
-
-        # Do not look up in the registry, but in the offline cache.
-        # TODO: Ask upstream to fix this mess.
-        sed -i -E 's|^(\s*resolved\s*")https?://.*/|\1|' yarn.lock
-        yarn install ${lib.escapeShellArgs yarnFlags}
-
-        ${lib.concatStringsSep "\n" postInstall}
-
-        mkdir $out
-        mv node_modules $out/
-        patchShebangs $out
-      '';
-    };
-
-  # This can be used as a shellHook in mkYarnPackage. It brings the built node_modules into
-  # the shell-hook environment.
-  linkNodeModulesHook = ''
-    if [[ -d node_modules || -L node_modules ]]; then
-      echo "./node_modules is present. Replacing."
-      rm -rf node_modules
-    fi
-
-    ln -s "$node_modules" node_modules
-  '';
-
-  mkYarnPackage = {
-    name ? null,
-    src,
-    packageJSON ? src + "/package.json",
-    yarnLock ? src + "/yarn.lock",
-    yarnNix ? mkYarnNix yarnLock,
-    yarnFlags ? defaultYarnFlags,
-    yarnPreBuild ? "",
-    pkgConfig ? {},
-    extraBuildInputs ? [],
-    publishBinsFor ? null,
-    ...
-  }@attrs:
-    let
-      package = lib.importJSON packageJSON;
-      pname = package.name;
-      version = package.version;
-      deps = mkYarnModules {
-        name = "${pname}-modules-${version}";
-        preBuild = yarnPreBuild;
-        inherit packageJSON yarnLock yarnNix yarnFlags pkgConfig;
-      };
-      publishBinsFor_ = unlessNull publishBinsFor [pname];
-    in stdenv.mkDerivation (builtins.removeAttrs attrs ["pkgConfig"] // {
-      inherit src;
-
-      name = unlessNull name "${pname}-${version}";
-
-      buildInputs = [ yarn nodejs ] ++ extraBuildInputs;
-
-      node_modules = deps + "/node_modules";
-
-      configurePhase = attrs.configurePhase or ''
-        runHook preConfigure
-
-        if [ -d npm-packages-offline-cache ]; then
-          echo "npm-pacakges-offline-cache dir present. Removing."
-          rm -rf npm-packages-offline-cache
-        fi
-
-        if [[ -d node_modules || -L node_modules ]]; then
-          echo "./node_modules is present. Removing."
-          rm -rf node_modules
-        fi
-
-        mkdir -p node_modules
-        ln -s $node_modules/* node_modules/
-        ln -s $node_modules/.bin node_modules/
-
-        if [ -d node_modules/${pname} ]; then
-          echo "Error! There is already an ${pname} package in the top level node_modules dir!"
-          exit 1
-        fi
-
-        runHook postConfigure
-      '';
-
-      # Replace this phase on frontend packages where only the generated
-      # files are an interesting output.
-      installPhase = attrs.installPhase or ''
-        runHook preInstall
-
-        mkdir -p $out
-        cp -r node_modules $out/node_modules
-        cp -r . $out/node_modules/${pname}
-        rm -rf $out/node_modules/${pname}/node_modules
-
-        mkdir $out/bin
-        node ${./fixup_bin.js} $out ${lib.concatStringsSep " " publishBinsFor_}
-
-        runHook postInstall
-      '';
-
-      passthru = {
-        inherit package deps;
-      } // (attrs.passthru or {});
-
-      # TODO: populate meta automatically
-    });
-in
-  yarn2nix