From 3ed5055f0f5b147a73e38d0ddc35f5fa267aa63b Mon Sep 17 00:00:00 2001 From: Johannes Kirschbauer <hsjobeki@gmail.com> Date: Mon, 12 Aug 2024 15:35:09 +0200 Subject: [PATCH] importNpmLock: init fetcherOps per package --- .../node/import-npm-lock/default.nix | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/pkgs/build-support/node/import-npm-lock/default.nix b/pkgs/build-support/node/import-npm-lock/default.nix index d530b8ee30ff..b63e5237dc3e 100644 --- a/pkgs/build-support/node/import-npm-lock/default.nix +++ b/pkgs/build-support/node/import-npm-lock/default.nix @@ -17,6 +17,7 @@ let fetchModule = { module , npmRoot ? null + , fetcherOpts }: ( if module ? "resolved" then ( @@ -34,16 +35,16 @@ let ) else if (scheme == "http" || scheme == "https") then ( - fetchurl { + fetchurl ({ url = module.resolved; hash = module.integrity; - } + } // fetcherOpts ) ) else if lib.hasPrefix "git" module.resolved then ( - builtins.fetchGit { + builtins.fetchGit ({ url = module.resolved; - } + } // fetcherOpts ) ) else throw "Unsupported URL scheme: ${scheme}" ) @@ -62,6 +63,10 @@ in , packageLock ? importJSON (npmRoot + "/package-lock.json") , pname ? getName package , version ? getVersion package + # A map of additional fetcher options forwarded to the fetcher used to download the package. + # Example: { "node_modules/axios" = { curlOptsList = [ "--verbose" ]; }; } + # This will download the axios package with curl's verbose option. + , fetcherOpts ? {} }: let mapLockDependencies = @@ -82,10 +87,11 @@ in packageLock' = packageLock // { packages = mapAttrs - (_: module: + (modulePath: module: let src = fetchModule { inherit module npmRoot; + fetcherOpts = fetcherOpts.${modulePath} or {}; }; in (removeAttrs module [