about summary refs log tree commit diff
path: root/pkgs/build-support/docker/pull.nix
blob: 5611c7785862421fe7d582a32f1823cb5e5d6324 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
{ stdenv, lib, docker, vmTools, utillinux, curl, kmod, dhcp, cacert, e2fsprogs }:
let
  nameReplace = name: builtins.replaceStrings ["/" ":"] ["-" "-"] name;
in
# For simplicity we only support sha256.
{ imageName, imageTag ? "latest", imageId ? "${imageName}:${imageTag}"
, sha256, name ? (nameReplace "docker-image-${imageName}-${imageTag}.tar") }:
let
  pullImage = vmTools.runInLinuxVM (
    stdenv.mkDerivation {
      inherit name imageId;

      certs = "${cacert}/etc/ssl/certs/ca-bundle.crt";

      builder = ./pull.sh;

      nativeBuildInputs = [ curl utillinux docker kmod dhcp cacert e2fsprogs ];

      outputHashAlgo = "sha256";
      outputHash = sha256;

      impureEnvVars = lib.fetchers.proxyImpureEnvVars;

      preVM = vmTools.createEmptyImage {
        size = 2048;
        fullName = "${name}-disk";
      };

      QEMU_OPTS = "-netdev user,id=net0 -device virtio-net-pci,netdev=net0";
    });
in
  pullImage