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/docker-compose/default.nix b/docker-compose/default.nix deleted file mode 100644 index 6751321..0000000 --- a/docker-compose/default.nix +++ /dev/null @@ -1,6 +0,0 @@ -{ buildCLIImage -, docker-compose -}: -buildCLIImage { - drv = docker-compose; -} diff --git a/bash/default.nix b/images/bash/default.nix similarity index 100% rename from bash/default.nix rename to images/bash/default.nix diff --git a/busybox/default.nix b/images/busybox/default.nix similarity index 100% rename from busybox/default.nix rename to images/busybox/default.nix diff --git a/curl/default.nix b/images/curl/default.nix similarity index 100% rename from curl/default.nix rename to images/curl/default.nix diff --git a/images/docker-compose/default.nix b/images/docker-compose/default.nix new file mode 100644 index 0000000..1ca1665 --- /dev/null +++ b/images/docker-compose/default.nix @@ -0,0 +1,11 @@ +{ buildCLIImage +, docker-compose ? null +, python3Packages +}: +buildCLIImage { + drv = + if docker-compose == null + then python3Packages.docker_compose + else docker-compose # nixos 19.03+ + ; +} diff --git a/kubectl/default.nix b/images/kubectl/default.nix similarity index 100% rename from kubectl/default.nix rename to images/kubectl/default.nix diff --git a/kubernetes-helm/default.nix b/images/kubernetes-helm/default.nix similarity index 100% rename from kubernetes-helm/default.nix rename to images/kubernetes-helm/default.nix diff --git a/images/nix-unstable/default.nix b/images/nix-unstable/default.nix new file mode 100644 index 0000000..4d74e9d --- /dev/null +++ b/images/nix-unstable/default.nix @@ -0,0 +1,6 @@ +{ docker-nixpkgs +, nixUnstable +}: +docker-nixpkgs.nix.override { + nix = nixUnstable; +} diff --git a/nix/default.nix b/images/nix/default.nix similarity index 100% rename from nix/default.nix rename to images/nix/default.nix diff --git a/nix/root/etc/group b/images/nix/root/etc/group similarity index 100% rename from nix/root/etc/group rename to images/nix/root/etc/group diff --git a/nix/root/etc/nsswitch.conf b/images/nix/root/etc/nsswitch.conf similarity index 100% rename from nix/root/etc/nsswitch.conf rename to images/nix/root/etc/nsswitch.conf diff --git a/nix/root/etc/passwd b/images/nix/root/etc/passwd similarity index 100% rename from nix/root/etc/passwd rename to images/nix/root/etc/passwd 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 49ad27d..69dec46 100644 --- a/overlay.nix +++ b/overlay.nix @@ -1,26 +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 = rec { - - bash = pkgs.callPackage ./bash {}; - busybox = pkgs.callPackage ./busybox {}; - curl = pkgs.callPackage ./curl {}; - docker-compose = pkgs.callPackage ./docker-compose { - docker-compose = - # master - pkgs.docker-compose or - # 18.09 or later - pkgs.python3Packages.docker_compose; - }; - kubectl = pkgs.callPackage ./kubectl {}; - kubernetes-helm = pkgs.callPackage ./kubernetes-helm {}; - nix = pkgs.callPackage ./nix {}; - nix-unstable = nix.override { - nix = pkgs.nixUnstable; - }; - - }; + docker-nixpkgs = importDir (path: pkgs.callPackage path {}) ./images; }