diff --git a/README.md b/README.md index b496330..e7d5df0 100644 --- a/README.md +++ b/README.md @@ -88,6 +88,15 @@ All images are automatically built and pushed to Docker Hub. | [nixpkgs/nix](https://hub.docker.com/r/nixpkgs/nix) | ![](https://images.microbadger.com/badges/image/nixpkgs/nix.svg) | ![](https://images.microbadger.com/badges/image/nixpkgs/nix:nixos-18.09.svg) | | [nixpkgs/nix-unstable](https://hub.docker.com/r/nixpkgs/nix-unstable) | ![](https://images.microbadger.com/badges/image/nixpkgs/nix-unstable.svg) | ![](https://images.microbadger.com/badges/image/nixpkgs/nix-unstable:nixos-18.09.svg) | +## Adding new images + +To add a new image to the project, create a new folder under +`./images/` with a default.nix that returns the docker image. + +Then run `nix-build release.nix -A ` to test that it builds, and +then use +`docker load -i /nix/store/....tar.gz` to load and test the image. + ## Related projects The [docker-library](https://github.com/docker-library/official-images#readme) diff --git a/lib/importDir.nix b/lib/importDir.nix new file mode 100644 index 0000000..0038a0a --- /dev/null +++ b/lib/importDir.nix @@ -0,0 +1,21 @@ +{ lib }: + +importFn: baseDir: +let + dirEntries = + builtins.attrNames + (lib.filterAttrs + (k: v: v == "directory") + (builtins.readDir baseDir)); + + absDirs = + builtins.map + (dir: "${toString baseDir}/${dir}") + dirEntries; + + imports = + builtins.map + (dir: { name = builtins.baseNameOf dir; value = importFn dir; }) + absDirs; +in + builtins.listToAttrs imports diff --git a/overlay.nix b/overlay.nix index 1497acd..69dec46 100644 --- a/overlay.nix +++ b/overlay.nix @@ -1,18 +1,11 @@ -_: pkgs: { - # lib stuff can be in the top-level +_: pkgs: let + importDir = import ./lib/importDir.nix { + inherit (pkgs) lib; + }; +in { + # builder stuff can be in the top-level buildCLIImage = pkgs.callPackage ./lib/buildCLIImage.nix {}; # docker images must be lower-cased - docker-nixpkgs = { - - bash = pkgs.callPackage ./images/bash {}; - busybox = pkgs.callPackage ./images/busybox {}; - curl = pkgs.callPackage ./images/curl {}; - docker-compose = pkgs.callPackage ./images/docker-compose {}; - kubectl = pkgs.callPackage ./images/kubectl {}; - kubernetes-helm = pkgs.callPackage ./images/kubernetes-helm {}; - nix = pkgs.callPackage ./images/nix {}; - nix-unstable = pkgs.callPackage ./images/nix-unstable {}; - - }; + docker-nixpkgs = importDir (path: pkgs.callPackage path {}) ./images; }