Loading pkgs/build-support/prefer-remote-fetch/default.nix +34 −20 Original line number Diff line number Diff line Loading @@ -10,24 +10,38 @@ # $ mkdir ~/.config/nixpkgs/overlays/ # $ 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); self: super: let preferLocal = orig: self.lib.extendMkDerivation { constructDrv = orig; extendDrvArgs = finalAttrs: { preferLocalBuild ? false, ... }: { inherit preferLocalBuild; }; }; in { binary-cache = preferLocal super.binary-cache; buildenv = preferLocal super.buildenv; fetchfossil = preferLocal super.fetchfossil; fetchdocker = preferLocal super.fetchdocker; fetchgit = (preferLocal super.fetchgit) // { inherit (super.fetchgit) getRevWithTag; }; fetchgx = preferLocal super.fetchgx; fetchhg = preferLocal super.fetchhg; fetchipfs = preferLocal super.fetchipfs; fetchrepoproject = preferLocal super.fetchrepoproject; fetchs3 = preferLocal super.fetchs3; fetchsvn = preferLocal super.fetchsvn; fetchurl = preferLocal super.fetchurl; mkNugetSource = preferLocal super.mkNugetSource; } pkgs/build-support/prefer-remote-fetch/tests.nix 0 → 100644 +49 −0 Original line number Diff line number Diff line { pkgs, ... }: let pkgs' = pkgs.extend (self: super: super.prefer-remote-fetch self super); check = fn: args: let drv = pkgs'.testers.invalidateFetcherByDrvHash fn args; in if drv.preferLocalBuild then throw "Fetcher must not prefer local builds" else drv; in pkgs'.callPackage ( { testers, fetchgit, fetchFromGitHub, fetchurl, fetchzip, ... }: { fetchgit = check fetchgit { name = "simple-nix-source"; url = "https://github.com/NixOS/nix"; rev = "9d9dbe6ed05854e03811c361a3380e09183f4f4a"; sha256 = "sha256-7DszvbCNTjpzGRmpIVAWXk20P0/XTrWZ79KSOGLrUWY="; }; fetchFromGitHub = check fetchFromGitHub { name = "simple-nix-source"; owner = "NixOS"; repo = "nix"; rev = "9d9dbe6ed05854e03811c361a3380e09183f4f4a"; hash = "sha256-7DszvbCNTjpzGRmpIVAWXk20P0/XTrWZ79KSOGLrUWY="; }; fetchurl = check fetchurl { url = "https://gist.github.com/glandium/01d54cefdb70561b5f6675e08f2990f2/archive/2f430f0c136a69b0886281d0c76708997d8878af.zip"; sha256 = "sha256-J/ZWC23GmFfew/56NQvPqKzqkWgjOaPvbMicFJnuJxI="; }; fetchzip = check fetchzip { url = "https://gist.github.com/glandium/01d54cefdb70561b5f6675e08f2990f2/archive/2f430f0c136a69b0886281d0c76708997d8878af.zip"; sha256 = "sha256-0ecwgL8qUavSj1+WkaxpmRBmu7cvj53V5eXQV71fddU="; }; } ) { } pkgs/test/default.nix +4 −0 Original line number Diff line number Diff line Loading @@ -246,4 +246,8 @@ in build-environment-info = callPackage ./build-environment-info { }; rust-hooks = recurseIntoAttrs (callPackages ../build-support/rust/hooks/test { }); prefer-remote-fetch = recurseIntoAttrs ( callPackages ../build-support/prefer-remote-fetch/tests.nix { } ); } Loading
pkgs/build-support/prefer-remote-fetch/default.nix +34 −20 Original line number Diff line number Diff line Loading @@ -10,24 +10,38 @@ # $ mkdir ~/.config/nixpkgs/overlays/ # $ 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); self: super: let preferLocal = orig: self.lib.extendMkDerivation { constructDrv = orig; extendDrvArgs = finalAttrs: { preferLocalBuild ? false, ... }: { inherit preferLocalBuild; }; }; in { binary-cache = preferLocal super.binary-cache; buildenv = preferLocal super.buildenv; fetchfossil = preferLocal super.fetchfossil; fetchdocker = preferLocal super.fetchdocker; fetchgit = (preferLocal super.fetchgit) // { inherit (super.fetchgit) getRevWithTag; }; fetchgx = preferLocal super.fetchgx; fetchhg = preferLocal super.fetchhg; fetchipfs = preferLocal super.fetchipfs; fetchrepoproject = preferLocal super.fetchrepoproject; fetchs3 = preferLocal super.fetchs3; fetchsvn = preferLocal super.fetchsvn; fetchurl = preferLocal super.fetchurl; mkNugetSource = preferLocal super.mkNugetSource; }
pkgs/build-support/prefer-remote-fetch/tests.nix 0 → 100644 +49 −0 Original line number Diff line number Diff line { pkgs, ... }: let pkgs' = pkgs.extend (self: super: super.prefer-remote-fetch self super); check = fn: args: let drv = pkgs'.testers.invalidateFetcherByDrvHash fn args; in if drv.preferLocalBuild then throw "Fetcher must not prefer local builds" else drv; in pkgs'.callPackage ( { testers, fetchgit, fetchFromGitHub, fetchurl, fetchzip, ... }: { fetchgit = check fetchgit { name = "simple-nix-source"; url = "https://github.com/NixOS/nix"; rev = "9d9dbe6ed05854e03811c361a3380e09183f4f4a"; sha256 = "sha256-7DszvbCNTjpzGRmpIVAWXk20P0/XTrWZ79KSOGLrUWY="; }; fetchFromGitHub = check fetchFromGitHub { name = "simple-nix-source"; owner = "NixOS"; repo = "nix"; rev = "9d9dbe6ed05854e03811c361a3380e09183f4f4a"; hash = "sha256-7DszvbCNTjpzGRmpIVAWXk20P0/XTrWZ79KSOGLrUWY="; }; fetchurl = check fetchurl { url = "https://gist.github.com/glandium/01d54cefdb70561b5f6675e08f2990f2/archive/2f430f0c136a69b0886281d0c76708997d8878af.zip"; sha256 = "sha256-J/ZWC23GmFfew/56NQvPqKzqkWgjOaPvbMicFJnuJxI="; }; fetchzip = check fetchzip { url = "https://gist.github.com/glandium/01d54cefdb70561b5f6675e08f2990f2/archive/2f430f0c136a69b0886281d0c76708997d8878af.zip"; sha256 = "sha256-0ecwgL8qUavSj1+WkaxpmRBmu7cvj53V5eXQV71fddU="; }; } ) { }
pkgs/test/default.nix +4 −0 Original line number Diff line number Diff line Loading @@ -246,4 +246,8 @@ in build-environment-info = callPackage ./build-environment-info { }; rust-hooks = recurseIntoAttrs (callPackages ../build-support/rust/hooks/test { }); prefer-remote-fetch = recurseIntoAttrs ( callPackages ../build-support/prefer-remote-fetch/tests.nix { } ); }