46 lines
781 B
Nix
46 lines
781 B
Nix
{ 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;
|
||
|
|
};
|
||
|
|
};
|
||
|
|
}
|
||
|
|
)
|