1{ stdenv, lib, docker, vmTools, utillinux, curl, kmod, dhcp, cacert, e2fsprogs }:
2let
3 nameReplace = name: builtins.replaceStrings ["/" ":"] ["-" "-"] name;
4in
5# For simplicity we only support sha256.
6{ imageName, imageTag ? "latest", imageId ? "${imageName}:${imageTag}"
7, sha256, name ? (nameReplace "docker-image-${imageName}-${imageTag}.tar") }:
8let
9 pullImage = vmTools.runInLinuxVM (
10 stdenv.mkDerivation {
11 inherit name imageId;
12
13 certs = "${cacert}/etc/ssl/certs/ca-bundle.crt";
14
15 builder = ./pull.sh;
16
17 buildInputs = [ curl utillinux docker kmod dhcp cacert e2fsprogs ];
18
19 outputHashAlgo = "sha256";
20 outputHash = sha256;
21
22 impureEnvVars = lib.fetchers.proxyImpureEnvVars;
23
24 preVM = vmTools.createEmptyImage {
25 size = 2048;
26 fullName = "${name}-disk";
27 };
28
29 QEMU_OPTS = "-netdev user,id=net0 -device virtio-net-pci,netdev=net0";
30 });
31in
32 pullImage