diff --git a/pkgs/build-support/binary-cache/default.nix b/pkgs/build-support/binary-cache/default.nix index 0ef27887820ac..c7825e03cc8d5 100644 --- a/pkgs/build-support/binary-cache/default.nix +++ b/pkgs/build-support/binary-cache/default.nix @@ -7,6 +7,9 @@ nix, xz, zstd, + + # Used in `pkgs/build-support/prefer-remote-fetch/default.nix` + preferLocalBuild ? true, }: # This function is for creating a flat-file binary cache, i.e. the kind created by @@ -34,7 +37,7 @@ stdenv.mkDerivation { exportReferencesGraph.closure = rootPaths; - preferLocalBuild = true; + inherit preferLocalBuild; nativeBuildInputs = [ coreutils diff --git a/pkgs/build-support/buildenv/default.nix b/pkgs/build-support/buildenv/default.nix index dbeb2a629f206..b0f2785d9c947 100644 --- a/pkgs/build-support/buildenv/default.nix +++ b/pkgs/build-support/buildenv/default.nix @@ -7,6 +7,9 @@ lib, replaceVars, writeClosure, + + # Used in `pkgs/build-support/prefer-remote-fetch/default.nix` + preferLocalBuild ? true, }: let @@ -104,10 +107,10 @@ lib.makeOverridable ( postBuild nativeBuildInputs buildInputs + preferLocalBuild ; pkgs = builtins.toJSON chosenOutputs; extraPathsFrom = lib.optional includeClosures (writeClosure pathsForClosure); - preferLocalBuild = true; allowSubstitutes = false; # XXX: The size is somewhat arbitrary passAsFile = if builtins.stringLength pkgs >= 128 * 1024 then [ "pkgs" ] else [ ]; diff --git a/pkgs/build-support/dotnet/make-nuget-source/default.nix b/pkgs/build-support/dotnet/make-nuget-source/default.nix index fe8814eeb2e2e..f9027258d03c3 100644 --- a/pkgs/build-support/dotnet/make-nuget-source/default.nix +++ b/pkgs/build-support/dotnet/make-nuget-source/default.nix @@ -2,6 +2,9 @@ lib, python3, stdenvNoCC, + + # Used in `pkgs/build-support/prefer-remote-fetch/default.nix` + preferLocalBuild ? true, }: { @@ -14,7 +17,7 @@ stdenvNoCC.mkDerivation ( lib.recursiveUpdate { - inherit name; + inherit name preferLocalBuild; nativeBuildInputs = [ python3 ]; diff --git a/pkgs/build-support/fetchdocker/default.nix b/pkgs/build-support/fetchdocker/default.nix index d851f982086de..74019d24df950 100644 --- a/pkgs/build-support/fetchdocker/default.nix +++ b/pkgs/build-support/fetchdocker/default.nix @@ -5,6 +5,9 @@ bash, gnutar, writeText, + + # Used in `pkgs/build-support/prefer-remote-fetch/default.nix` + preferLocalBuild ? true, }: let stripScheme = builtins.replaceStrings [ "https://" "http://" ] [ "" "" ]; @@ -59,13 +62,13 @@ in stdenv.mkDerivation { builder = ./fetchdocker-builder.sh; buildInputs = [ coreutils ]; - preferLocalBuild = true; inherit name imageName repository tag + preferLocalBuild ; inherit bash diff --git a/pkgs/build-support/fetchfossil/default.nix b/pkgs/build-support/fetchfossil/default.nix index 9499841dd3cea..49c53394a06d7 100644 --- a/pkgs/build-support/fetchfossil/default.nix +++ b/pkgs/build-support/fetchfossil/default.nix @@ -3,6 +3,9 @@ lib, fossil, cacert, + + # Used in `pkgs/build-support/prefer-remote-fetch/default.nix` + preferLocalBuild ? true, }: lib.fetchers.withNormalizedHash { } ( @@ -29,7 +32,6 @@ lib.fetchers.withNormalizedHash { } ( inherit outputHash outputHashAlgo; outputHashMode = "recursive"; - inherit url rev; - preferLocalBuild = true; + inherit url rev preferLocalBuild; } ) diff --git a/pkgs/build-support/fetchgit/default.nix b/pkgs/build-support/fetchgit/default.nix index 4ffb998ee205d..019bdd0f5aeb7 100644 --- a/pkgs/build-support/fetchgit/default.nix +++ b/pkgs/build-support/fetchgit/default.nix @@ -6,9 +6,13 @@ git, git-lfs, cacert, + + # Used in `pkgs/build-support/prefer-remote-fetch/default.nix` + preferLocalBuild ? true, }: let + preferLocalBuildDefault = preferLocalBuild; urlToName = { url, @@ -68,7 +72,7 @@ lib.makeOverridable ( # Shell code executed after the file has been fetched # successfully. This can do things like check or transform the file. postFetch ? "", - preferLocalBuild ? true, + preferLocalBuild ? preferLocalBuildDefault, fetchLFS ? false, # Shell code to build a netrc file for BASIC auth netrcPhase ? null, diff --git a/pkgs/build-support/fetchgx/default.nix b/pkgs/build-support/fetchgx/default.nix index 49211c44949cc..0e67027f8d462 100644 --- a/pkgs/build-support/fetchgx/default.nix +++ b/pkgs/build-support/fetchgx/default.nix @@ -5,6 +5,9 @@ gx-go, go, cacert, + + # Used in `pkgs/build-support/prefer-remote-fetch/default.nix` + preferLocalBuild ? true, }: lib.fetchers.withNormalizedHash { } ( @@ -17,7 +20,7 @@ lib.fetchers.withNormalizedHash { } ( stdenvNoCC.mkDerivation { name = "${name}-gxdeps"; - inherit src; + inherit src preferLocalBuild; nativeBuildInputs = [ cacert @@ -42,7 +45,5 @@ lib.fetchers.withNormalizedHash { } ( installPhase = '' mv vendor $out ''; - - preferLocalBuild = true; } ) diff --git a/pkgs/build-support/fetchhg/default.nix b/pkgs/build-support/fetchhg/default.nix index 7f4ed2ff3e8c5..f288cd21d6311 100644 --- a/pkgs/build-support/fetchhg/default.nix +++ b/pkgs/build-support/fetchhg/default.nix @@ -2,7 +2,13 @@ lib, stdenvNoCC, mercurial, + + # Used in `pkgs/build-support/prefer-remote-fetch/default.nix` + preferLocalBuild ? true, }: +let + preferLocalBuildDefault = preferLocalBuild; +in lib.extendMkDerivation { constructDrv = stdenvNoCC.mkDerivation; @@ -16,7 +22,7 @@ lib.extendMkDerivation { sha256 ? null, hash ? null, fetchSubrepos ? false, - preferLocalBuild ? true, + preferLocalBuild ? preferLocalBuildDefault, }: # TODO: statically check if mercurial has https support if the url starts with https. { diff --git a/pkgs/build-support/fetchipfs/default.nix b/pkgs/build-support/fetchipfs/default.nix index 10da9cf0a0991..6febad1678355 100644 --- a/pkgs/build-support/fetchipfs/default.nix +++ b/pkgs/build-support/fetchipfs/default.nix @@ -2,7 +2,15 @@ lib, stdenv, curl, + + # Used in `pkgs/build-support/prefer-remote-fetch/default.nix` + preferLocalBuild ? true, }: + +let + preferLocalBuildDefault = preferLocalBuild; +in + lib.fetchers.withNormalizedHash { hashTypes = [ @@ -21,7 +29,7 @@ lib.fetchers.withNormalizedHash meta ? { }, port ? "8080", postFetch ? "", - preferLocalBuild ? true, + preferLocalBuild ? preferLocalBuildDefault, }: stdenv.mkDerivation { name = ipfs; diff --git a/pkgs/build-support/fetchrepoproject/default.nix b/pkgs/build-support/fetchrepoproject/default.nix index 5f10c7eebf45c..1015925ec48f7 100644 --- a/pkgs/build-support/fetchrepoproject/default.nix +++ b/pkgs/build-support/fetchrepoproject/default.nix @@ -4,6 +4,9 @@ gitRepo, cacert, copyPathsToStore, + + # Used in `pkgs/build-support/prefer-remote-fetch/default.nix` + preferLocalBuild ? true, }: lib.fetchers.withNormalizedHash { } ( { @@ -58,6 +61,7 @@ lib.fetchers.withNormalizedHash { } ( inherit cacert manifest + preferLocalBuild rev repoRepoURL repoRepoRev @@ -67,7 +71,6 @@ lib.fetchers.withNormalizedHash { } ( inherit outputHash outputHashAlgo; outputHashMode = "recursive"; - preferLocalBuild = true; enableParallelBuilding = true; impureEnvVars = fetchers.proxyImpureEnvVars ++ [ diff --git a/pkgs/build-support/fetchs3/default.nix b/pkgs/build-support/fetchs3/default.nix index 5bebbb4f1e88d..3cbac807f01a7 100644 --- a/pkgs/build-support/fetchs3/default.nix +++ b/pkgs/build-support/fetchs3/default.nix @@ -2,6 +2,9 @@ lib, runCommand, awscli, + + # Used in `pkgs/build-support/prefer-remote-fetch/default.nix` + preferLocalBuild ? true, }: lib.fetchers.withNormalizedHash { } ( { @@ -35,11 +38,9 @@ lib.fetchers.withNormalizedHash { } ( { nativeBuildInputs = [ awscli ]; - inherit outputHash outputHashAlgo; + inherit outputHash outputHashAlgo preferLocalBuild; outputHashMode = if recursiveHash then "recursive" else "flat"; - preferLocalBuild = true; - AWS_DEFAULT_REGION = region; } // credentialAttrs diff --git a/pkgs/build-support/fetchsvn/default.nix b/pkgs/build-support/fetchsvn/default.nix index 6f07626f69c1e..fe000632bf263 100644 --- a/pkgs/build-support/fetchsvn/default.nix +++ b/pkgs/build-support/fetchsvn/default.nix @@ -7,9 +7,13 @@ glibcLocales, sshSupport ? true, openssh ? null, + + # Used in `pkgs/build-support/prefer-remote-fetch/default.nix` + preferLocalBuild ? true, }: let + preferLocalBuildDefault = preferLocalBuild; repoToName = url: rev: let @@ -48,7 +52,7 @@ in hash ? "", ignoreExternals ? false, ignoreKeywords ? false, - preferLocalBuild ? true, + preferLocalBuild ? preferLocalBuildDefault, }: assert sshSupport -> openssh != null; diff --git a/pkgs/build-support/fetchurl/default.nix b/pkgs/build-support/fetchurl/default.nix index 88e7bfaa7809b..d2dbe1e8b2ae9 100644 --- a/pkgs/build-support/fetchurl/default.nix +++ b/pkgs/build-support/fetchurl/default.nix @@ -8,9 +8,13 @@ cacert ? null, rewriteURL, hashedMirrors, + + # Used in `pkgs/build-support/prefer-remote-fetch/default.nix` + preferLocalBuild ? true, }: let + cpPreferLocalBuild = preferLocalBuild; mirrors = import ./mirrors.nix // { inherit hashedMirrors; @@ -135,7 +139,7 @@ lib.extendMkDerivation { passthru ? { }, # Doing the download on a remote machine just duplicates network # traffic, so don't do that by default - preferLocalBuild ? true, + preferLocalBuild ? cpPreferLocalBuild, # Additional packages needed as part of a fetch nativeBuildInputs ? [ ], diff --git a/pkgs/build-support/prefer-remote-fetch/default.nix b/pkgs/build-support/prefer-remote-fetch/default.nix index d686533f69e0f..2c60551f45dfa 100644 --- a/pkgs/build-support/prefer-remote-fetch/default.nix +++ b/pkgs/build-support/prefer-remote-fetch/default.nix @@ -11,23 +11,17 @@ # $ echo 'self: super: super.prefer-remote-fetch self super' > ~/.config/nixpkgs/overlays/prefer-remote-fetch.nix # self: super: { - binary-cache = args: super.binary-cache ({ preferLocalBuild = false; } // args); - buildenv = args: super.buildenv ({ preferLocalBuild = false; } // args); - fetchfossil = args: super.fetchfossil ({ preferLocalBuild = false; } // args); - fetchdocker = args: super.fetchdocker ({ preferLocalBuild = false; } // args); - fetchgit = args: super.fetchgit ({ preferLocalBuild = false; } // args); - fetchgx = args: super.fetchgx ({ preferLocalBuild = false; } // args); - fetchhg = args: super.fetchhg ({ preferLocalBuild = false; } // args); - fetchipfs = args: super.fetchipfs ({ preferLocalBuild = false; } // args); - fetchrepoproject = args: super.fetchrepoproject ({ preferLocalBuild = false; } // args); - fetchs3 = args: super.fetchs3 ({ preferLocalBuild = false; } // args); - fetchsvn = args: super.fetchsvn ({ preferLocalBuild = false; } // args); - fetchurl = - fpArgs: - super.fetchurl ( - super.lib.extends (finalAttrs: args: { preferLocalBuild = args.preferLocalBuild or false; }) ( - super.lib.toFunction fpArgs - ) - ); - mkNugetSource = args: super.mkNugetSource ({ preferLocalBuild = false; } // args); + binary-cache = super.binary-cache.override { preferLocalBuild = false; }; + buildenv = super.buildenv.override { preferLocalBuild = false; }; + fetchfossil = super.fetchfossil.override { preferLocalBuild = false; }; + fetchdocker = super.fetchdocker.override { preferLocalBuild = false; }; + fetchgit = super.fetchgit.override { preferLocalBuild = false; }; + fetchgx = super.fetchgx.override { preferLocalBuild = false; }; + fetchhg = super.fetchhg.override { preferLocalBuild = false; }; + fetchipfs = super.fetchipfs.override { preferLocalBuild = false; }; + fetchrepoproject = super.fetchrepoproject.override { preferLocalBuild = false; }; + fetchs3 = super.fetchs3.override { preferLocalBuild = false; }; + fetchsvn = super.fetchsvn.override { preferLocalBuild = false; }; + fetchurl = super.fetchurl.override { preferLocalBuild = false; }; + mkNugetSource = super.mkNugetSource.override { preferLocalBuild = false; }; }