diff --git a/pkgs/build-support/fetchurl/default.nix b/pkgs/build-support/fetchurl/default.nix index 4d0f525a15c59..082776e9b58fa 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; @@ -243,18 +241,22 @@ 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 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. @@ -288,18 +290,19 @@ 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" 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 - 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 = @@ -318,25 +321,28 @@ lib.extendMkDerivation { curlOptsList = lib.escapeShellArgs curlOptsList; inherit - showURLs - mirrorsFile - postFetch downloadToTemp executable + mirrorsFile + netrcImpureEnvVars + netrcPhase + postFetch + recursiveHash + showURLs ; - impureEnvVars = impureEnvVars ++ netrcImpureEnvVars; + impureEnvVars = impureEnvVars ++ finalAttrs.netrcImpureEnvVars; nixpkgsVersion = lib.trivial.release; inherit preferLocalBuild; postHook = - if netrcPhase == null then + if finalAttrs.netrcPhase == null then null else '' - ${netrcPhase} + ${finalAttrs.netrcPhase} curlOpts="$curlOpts --netrc-file $PWD/netrc" '';