From 0bfc0de52cc15e1609d81170aa7b43557550aa66 Mon Sep 17 00:00:00 2001 From: Yueh-Shun Li Date: Mon, 24 Nov 2025 04:54:58 +0800 Subject: [PATCH 1/6] fetchurl: make urls overridable via .overrideAttrs --- pkgs/build-support/fetchurl/default.nix | 26 +++++++++++++------------ 1 file changed, 14 insertions(+), 12 deletions(-) diff --git a/pkgs/build-support/fetchurl/default.nix b/pkgs/build-support/fetchurl/default.nix index 4d0f525a15c59..c043028b47f5e 100644 --- a/pkgs/build-support/fetchurl/default.nix +++ b/pkgs/build-support/fetchurl/default.nix @@ -164,12 +164,6 @@ lib.extendMkDerivation { else throw "fetchurl requires either `url` or `urls` to be set: ${lib.generators.toPretty { } args}"; - urls_ = - let - u = lib.lists.filter (url: lib.isString url) (map rewriteURL preRewriteUrls); - in - if u == [ ] then throw "urls is empty after rewriteURL (was ${toString preRewriteUrls})" else u; - hash_ = if with lib.lists; @@ -183,7 +177,7 @@ lib.extendMkDerivation { ] ) > 1 then - throw "multiple hashes passed to fetchurl: ${lib.generators.toPretty { } urls_}" + throw "multiple hashes passed to fetchurl: ${lib.generators.toPretty { } finalAttrs.urls}" else if hash != "" then @@ -195,7 +189,9 @@ lib.extendMkDerivation { if outputHashAlgo != "" then { inherit outputHashAlgo outputHash; } else - throw "fetchurl was passed outputHash without outputHashAlgo: ${lib.generators.toPretty { } urls_}" + throw "fetchurl was passed outputHash without outputHashAlgo: ${ + lib.generators.toPretty { } finalAttrs.urls + }" else if sha512 != "" then { outputHashAlgo = "sha512"; @@ -217,7 +213,9 @@ lib.extendMkDerivation { outputHash = lib.fakeHash; } else - throw "fetchurl requires a hash for fixed-output derivation: ${lib.generators.toPretty { } urls_}"; + throw "fetchurl requires a hash for fixed-output derivation: ${ + lib.generators.toPretty { } finalAttrs.urls + }"; finalHashHasColon = lib.hasInfix ":" finalAttrs.hash; finalHashColonMatch = lib.match "([^:]+)[:](.*)" finalAttrs.hash; @@ -248,13 +246,17 @@ lib.extendMkDerivation { else if name != null then name else - baseNameOf (toString (lib.head urls_)); + baseNameOf (toString (lib.head finalAttrs.urls)); builder = ./builder.sh; nativeBuildInputs = [ curl ] ++ nativeBuildInputs; - urls = urls_; + urls = + let + u = lib.lists.filter (url: lib.isString url) (map rewriteURL preRewriteUrls); + in + if u == [ ] then throw "urls is empty after rewriteURL (was ${toString preRewriteUrls})" else u; # If set, prefer the content-addressable mirrors # (http://tarballs.nixos.org) over the original URLs. @@ -299,7 +301,7 @@ lib.extendMkDerivation { curlOpts = lib.warnIf (lib.isList curlOpts) ( let - url = toString (builtins.head urls_); + url = toString (builtins.head finalAttrs.urls); curlOptsRepresentation = lib.generators.toPretty { multiline = false; } curlOpts; curlOptsAsStringRepresentation = lib.strings.escapeNixString (toString curlOpts); curlOptsListElementsRepresentation = From 0a7e0fd3594fca6f60b088682d223d7e00b29530 Mon Sep 17 00:00:00 2001 From: Yueh-Shun Li Date: Mon, 24 Nov 2025 05:11:05 +0800 Subject: [PATCH 2/6] fetchurl: sort inherited variables --- pkgs/build-support/fetchurl/default.nix | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/pkgs/build-support/fetchurl/default.nix b/pkgs/build-support/fetchurl/default.nix index c043028b47f5e..f6734c9a0abd1 100644 --- a/pkgs/build-support/fetchurl/default.nix +++ b/pkgs/build-support/fetchurl/default.nix @@ -320,11 +320,11 @@ lib.extendMkDerivation { curlOptsList = lib.escapeShellArgs curlOptsList; inherit - showURLs - mirrorsFile - postFetch downloadToTemp executable + mirrorsFile + postFetch + showURLs ; impureEnvVars = impureEnvVars ++ netrcImpureEnvVars; From 648c60d89ce04f19a61c40bca15cbbd65af56380 Mon Sep 17 00:00:00 2001 From: Yueh-Shun Li Date: Mon, 24 Nov 2025 04:58:11 +0800 Subject: [PATCH 3/6] fetchurl: make executable and recursiveHash overridable via .overrideAttrs --- pkgs/build-support/fetchurl/default.nix | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/pkgs/build-support/fetchurl/default.nix b/pkgs/build-support/fetchurl/default.nix index f6734c9a0abd1..1d55a0ba1a5a3 100644 --- a/pkgs/build-support/fetchurl/default.nix +++ b/pkgs/build-support/fetchurl/default.nix @@ -297,7 +297,8 @@ lib.extendMkDerivation { else "/no-cert-file.crt"; - outputHashMode = if (recursiveHash || executable) then "recursive" else "flat"; + outputHashMode = + if (finalAttrs.recursiveHash || finalAttrs.executable) then "recursive" else "flat"; curlOpts = lib.warnIf (lib.isList curlOpts) ( let @@ -324,6 +325,7 @@ lib.extendMkDerivation { executable mirrorsFile postFetch + recursiveHash showURLs ; From 10dee50797fa39a4e4231b73c83ff01277ad0528 Mon Sep 17 00:00:00 2001 From: Yueh-Shun Li Date: Mon, 24 Nov 2025 05:00:33 +0800 Subject: [PATCH 4/6] fetchurl: make netrcPhase overridable via .overrideAttrs --- pkgs/build-support/fetchurl/default.nix | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/pkgs/build-support/fetchurl/default.nix b/pkgs/build-support/fetchurl/default.nix index 1d55a0ba1a5a3..03021b6301816 100644 --- a/pkgs/build-support/fetchurl/default.nix +++ b/pkgs/build-support/fetchurl/default.nix @@ -290,7 +290,7 @@ lib.extendMkDerivation { || hash_.outputHash == lib.fakeSha256 || hash_.outputHash == lib.fakeSha512 || hash_.outputHash == lib.fakeHash - || netrcPhase != null + || finalAttrs.netrcPhase != null ) then "${cacert}/etc/ssl/certs/ca-bundle.crt" @@ -324,6 +324,7 @@ lib.extendMkDerivation { downloadToTemp executable mirrorsFile + netrcPhase postFetch recursiveHash showURLs @@ -336,11 +337,11 @@ lib.extendMkDerivation { inherit preferLocalBuild; postHook = - if netrcPhase == null then + if finalAttrs.netrcPhase == null then null else '' - ${netrcPhase} + ${finalAttrs.netrcPhase} curlOpts="$curlOpts --netrc-file $PWD/netrc" ''; From 8189a6f571ab28b57fcfc533a57634420b64ee9a Mon Sep 17 00:00:00 2001 From: Yueh-Shun Li Date: Mon, 24 Nov 2025 05:16:39 +0800 Subject: [PATCH 5/6] fetchurl: make netrcImpureEnvVars overridable via .overrideAttrs --- pkgs/build-support/fetchurl/default.nix | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/pkgs/build-support/fetchurl/default.nix b/pkgs/build-support/fetchurl/default.nix index 03021b6301816..fe3ec32477138 100644 --- a/pkgs/build-support/fetchurl/default.nix +++ b/pkgs/build-support/fetchurl/default.nix @@ -324,13 +324,14 @@ lib.extendMkDerivation { downloadToTemp executable mirrorsFile + netrcImpureEnvVars netrcPhase postFetch recursiveHash showURLs ; - impureEnvVars = impureEnvVars ++ netrcImpureEnvVars; + impureEnvVars = impureEnvVars ++ finalAttrs.netrcImpureEnvVars; nixpkgsVersion = lib.trivial.release; From ec38a43e020b3e1052831c8f362c1ef24d66a354 Mon Sep 17 00:00:00 2001 From: Yueh-Shun Li Date: Mon, 24 Nov 2025 05:19:13 +0800 Subject: [PATCH 6/6] fetchurl: make showURLs overridable via .overrideAttrs --- pkgs/build-support/fetchurl/default.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkgs/build-support/fetchurl/default.nix b/pkgs/build-support/fetchurl/default.nix index fe3ec32477138..082776e9b58fa 100644 --- a/pkgs/build-support/fetchurl/default.nix +++ b/pkgs/build-support/fetchurl/default.nix @@ -241,7 +241,7 @@ lib.extendMkDerivation { name = if finalAttrs.pname or null != null && finalAttrs.version or null != null then "${finalAttrs.pname}-${finalAttrs.version}" - else if showURLs then + else if finalAttrs.showURLs then "urls" else if name != null then name