summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLily Foster <lily@lily.flowers>2023-09-11 16:49:36 -0400
committerLily Foster <lily@lily.flowers>2023-10-12 14:15:57 -0400
commit189e071d230729248bc3742e3ca9a1dc03710d60 (patch)
treeaeba1be2b21162b241fcd4466a4f165ed51ddbd2
parentprefetch-npm-deps: fix error typo and unnecessary name qualifier (diff)
downloadnixpkgs-189e071d230729248bc3742e3ca9a1dc03710d60.tar.gz
prefetch-npm-deps: add support for NIX_NPM_TOKENS env var
(cherry picked from commit e2712661790665b4aa4223652ca8a182490a04ed)
-rw-r--r--pkgs/build-support/node/fetch-npm-deps/src/util.rs13
1 files changed, 13 insertions, 0 deletions
diff --git a/pkgs/build-support/node/fetch-npm-deps/src/util.rs b/pkgs/build-support/node/fetch-npm-deps/src/util.rs
index a165461fa71a..7a220f681c0d 100644
--- a/pkgs/build-support/node/fetch-npm-deps/src/util.rs
+++ b/pkgs/build-support/node/fetch-npm-deps/src/util.rs
@@ -3,6 +3,7 @@ use isahc::{
config::{CaCertificate, Configurable, RedirectPolicy, SslOption},
Body, Request, RequestExt,
};
+use serde_json::{Map, Value};
use std::{env, path::Path};
use url::Url;
@@ -22,6 +23,18 @@ pub fn get_url(url: &Url) -> Result<Body, isahc::Error> {
}
}
+ // Respect NIX_NPM_TOKENS environment variable, which should be a JSON mapping in the shape of:
+ // `{ "registry.example.com": "example-registry-bearer-token", ... }`
+ if let Some(host) = url.host_str() {
+ if let Ok(npm_tokens) = env::var("NIX_NPM_TOKENS") {
+ if let Ok(tokens) = serde_json::from_str::<Map<String, Value>>(&npm_tokens) {
+ if let Some(token) = tokens.get(host).and_then(|val| val.as_str()) {
+ request = request.header("Authorization", format!("Bearer {token}"));
+ }
+ }
+ }
+ }
+
Ok(request.body(())?.send()?.into_body())
}