diff --git a/lib.nix b/lib.nix new file mode 100644 index 0000000..d017eb3 --- /dev/null +++ b/lib.nix @@ -0,0 +1,45 @@ +{ lib, nix2container, pkgs, ... }: + +lib.extend ( + final: prev: { + img = { + baseImage = final.img.mkImage { + name = "base"; + layers = [ + (final.img.baseLayer pkgs) + ]; + }; + + baseLayer = pkgs: with pkgs; { + deps = [ + bashInteractive + coreutils + dockerTools.binSh + dockerTools.caCertificates + dockerTools.usrBinEnv + findutils + gnugrep + gnused + ]; + }; + + foldLayers = let + merge = parents: current: let + layer = nix2container.buildlayer( current // { + layers = parents; + }); + in + parents ++ [ layer ]; + in + layers: final.foldl merge [] layers; + + mkImage = { + name, + layers ? [], + }: nix2container.buildImage { + inherit name; + layers = final.img.foldLayers layers; + }; + }; + } +)