summary refs log blame commit diff
path: root/pkgs/build-support/docker/pull.nix
blob: 0e1b147f6e18f35206abf614f3d02c971ff6aaff (plain) (tree)
1
2
3
4
5
6
7
8
9
10









                                                                      


                        

                               

                                         
                                            









                                      
                                                      

                                                                      
    
 







                                                                  
{ stdenv, lib, curl, jshon, python, runCommand }:

# Inspired and simplified version of fetchurl.
# For simplicity we only support sha256.

# Currently only registry v1 is supported, compatible with Docker Hub.

{ imageName, imageTag ? "latest", imageId ? null
, sha256, name ? "${imageName}-${imageTag}"
, indexUrl ? "https://index.docker.io"
, registryVersion ? "v1"
, curlOpts ? "" }:

assert registryVersion == "v1";

let layer = stdenv.mkDerivation {
  inherit name imageName imageTag imageId
          indexUrl registryVersion curlOpts;

  builder = ./pull.sh;
  detjson = ./detjson.py;

  buildInputs = [ curl jshon python ];

  outputHashAlgo = "sha256";
  outputHash = sha256;
  outputHashMode = "recursive";

  impureEnvVars = lib.fetchers.proxyImpureEnvVars ++ [
    # This variable allows the user to pass additional options to curl
    "NIX_CURL_FLAGS"
  ];

  # Doing the download on a remote machine just duplicates network
  # traffic, so don't do that.
  preferLocalBuild = true;
};

in runCommand "${name}.tar.gz" {} ''
  tar -C ${layer} -czf $out .
''