From 2aefa0599ec965c17de3eed5718375b3e0bd3a81 Mon Sep 17 00:00:00 2001 From: zimbatm Date: Sun, 17 Feb 2019 12:09:56 +0100 Subject: [PATCH] add meta attributes to all images augment the images with meta attributes from the input packages. and then use the meta.description as dockerhub metadata. --- dockerhub-metadata | 8 +++-- lib/buildCLIImage.nix | 44 +++++++++++++------------ nix/default.nix | 75 ++++++++++++++++++++++--------------------- overlay.nix | 4 ++- 4 files changed, 72 insertions(+), 59 deletions(-) diff --git a/dockerhub-metadata b/dockerhub-metadata index d52dec9..c30ec3c 100755 --- a/dockerhub-metadata +++ b/dockerhub-metadata @@ -11,7 +11,11 @@ password=$2 org=${3:-nixpkgs} user=$username:$password -releases_json=$(nix-instantiate ./release.nix --strict --eval --json) +nix_eval() { + nix-instantiate --strict --eval --json "$@" +} + +releases_json=$(nix_eval release.nix) to_json() { local desc=$1 full_desc=$2 @@ -25,7 +29,7 @@ echo "=== Updating Docker Hub project descriptions" for attr in $(echo "$releases_json" | jq -r "keys[]") ; do echo "--- $attr" - desc="$attr is automatically built from nix-community/docker-nixpkgs" + desc=$(nix_eval ./release.nix -A "$attr.meta.description" | jq -r .) if [[ -f "$attr/README.md" ]]; then full_desc=$(< "$attr/README.md") diff --git a/lib/buildCLIImage.nix b/lib/buildCLIImage.nix index 244b369..9452496 100644 --- a/lib/buildCLIImage.nix +++ b/lib/buildCLIImage.nix @@ -5,28 +5,32 @@ { drv # derivation to build the image for # Name of the binary to run by default , binName ? (builtins.parseDrvName drv.name).name +, meta ? drv.meta }: -dockerTools.buildLayeredImage { - name = drv.name; +let + image = dockerTools.buildLayeredImage { + name = drv.name; - contents = [ - # add a /bin/sh on all images - busybox - # most program need TLS certs - cacert - drv - ]; - - config = { - Cmd = [ "/bin/${binName}" ]; - Env = [ - "PATH=/bin" - "SSL_CERT_FILE=${cacert}/etc/ssl/certs/ca-bundle.crt" + contents = [ + # add a /bin/sh on all images + busybox + # most program need TLS certs + cacert + drv ]; - Labels = { - # https://github.com/microscaling/microscaling/blob/55a2d7b91ce7513e07f8b1fd91bbed8df59aed5a/Dockerfile#L22-L33 - "org.label-schema.vcs-ref" = "master"; - "org.label-schema.vcs-url" = "https://github.com/nix-community/docker-nixpkgs"; + + config = { + Cmd = [ "/bin/${binName}" ]; + Env = [ + "PATH=/bin" + "SSL_CERT_FILE=${cacert}/etc/ssl/certs/ca-bundle.crt" + ]; + Labels = { + # https://github.com/microscaling/microscaling/blob/55a2d7b91ce7513e07f8b1fd91bbed8df59aed5a/Dockerfile#L22-L33 + "org.label-schema.vcs-ref" = "master"; + "org.label-schema.vcs-url" = "https://github.com/nix-community/docker-nixpkgs"; + }; }; }; -} +in + image // { meta = meta // image.meta; } diff --git a/nix/default.nix b/nix/default.nix index 4749fa8..1bf8485 100644 --- a/nix/default.nix +++ b/nix/default.nix @@ -10,44 +10,47 @@ , nix , xz }: -dockerTools.buildImageWithNixDb { - inherit (nix) name; +let + image = dockerTools.buildImageWithNixDb { + inherit (nix) name; - contents = [ - ./root - coreutils - # add /bin/sh - bash - nix + contents = [ + ./root + coreutils + # add /bin/sh + bash + nix - # runtime dependencies of nix - cacert - gitMinimal - gnutar - gzip - xz + # runtime dependencies of nix + cacert + gitMinimal + gnutar + gzip + xz - # for haskell binaries - iana-etc - ]; - - extraCommands = '' - # for /usr/bin/env - mkdir usr - ln -s ../bin usr/bin - - # make sure /tmp exists - mkdir -m 0777 tmp - ''; - - config = { - Cmd = [ "/bin/bash" ]; - Env = [ - "ENV=/etc/profile.d/nix.sh" - "NIX_PATH=nixpkgs=channel:nixpkgs-unstable" - "PAGER=cat" - "PATH=/usr/bin:/bin" - "SSL_CERT_FILE=${cacert}/etc/ssl/certs/ca-bundle.crt" + # for haskell binaries + iana-etc ]; + + extraCommands = '' + # for /usr/bin/env + mkdir usr + ln -s ../bin usr/bin + + # make sure /tmp exists + mkdir -m 0777 tmp + ''; + + config = { + Cmd = [ "/bin/bash" ]; + Env = [ + "ENV=/etc/profile.d/nix.sh" + "NIX_PATH=nixpkgs=channel:nixpkgs-unstable" + "PAGER=cat" + "PATH=/usr/bin:/bin" + "SSL_CERT_FILE=${cacert}/etc/ssl/certs/ca-bundle.crt" + ]; + }; }; -} +in + image // { meta = nix.meta // image.meta; } diff --git a/overlay.nix b/overlay.nix index c20f07a..f11cb9a 100644 --- a/overlay.nix +++ b/overlay.nix @@ -18,7 +18,9 @@ _: pkgs: { kubectl = pkgs.callPackage ./kubectl {}; kubernetes-helm = pkgs.callPackage ./kubernetes-helm {}; nix = pkgs.callPackage ./nix {}; - nix-unstable = nix.overrideAttrs (self: { nix = pkgs.nixUnstable; }); + nix-unstable = nix.override { + nix = pkgs.nixUnstable; + }; }; }