Build tooling around nix-snapshotter

This commit is contained in:
Pim Kunis 2024-08-29 06:53:05 +02:00
parent e9899c0d0f
commit 04439a9ee5
6 changed files with 39 additions and 43 deletions

View file

@ -1,4 +1,4 @@
{ flake-utils, pkgs, ... }: flake-utils.lib.eachDefaultSystem (system:
{ myLib, flake-utils, pkgs, ... }: flake-utils.lib.eachDefaultSystem (system:
let
createScript = { name, runtimeInputs, scriptPath, extraWrapperFlags ? "", ... }:
let
@ -28,21 +28,9 @@ in
packages.prefetch-container-images =
let
images = {
cyberchef = {
name = "mpepping/cyberchef";
tag = "latest";
};
radicale = {
name = "tomsquest/docker-radicale";
tag = "3.2.2.0";
};
};
imagesJSON = builtins.toFile "images.json" (builtins.toJSON images);
imagesJSON = builtins.toFile "images.json" (builtins.toJSON myLib.globals.images);
in
pkgs.writers.writePython3Bin "prefetch-container-images"
pkgs.writers.writePython3Bin "prefetch-container-images.py"
{ } ''
import json
import subprocess
@ -59,11 +47,13 @@ in
with open(images_file_name, 'r') as file:
data = json.load(file)
for image_name, image in data.items():
name = image["name"]
tag = image["tag"]
for image_name, image_ref in data.items():
[name, tag] = image_ref.split(":", maxsplit=1)
print(f"Prefetching image {image_ref}", file=sys.stderr)
print(f"Prefetching image {name}:{tag}", file=sys.stderr)
digest = ""
if "@" in tag:
[tag, digest] = tag.split("@", maxsplit=1)
prefetch_args = [
prefetch_docker_cmd,
@ -74,6 +64,10 @@ in
"--json",
"--quiet"
]
if digest:
prefetch_args.extend(["--image-digest", digest])
result = subprocess.run(prefetch_args,
check=True,
capture_output=True,