{ pkgs, lib, system, commons, ... }: let # upstream distro images upstreamImagesJSON = lib.importJSON ./upstream.json; upstreamImages = lib.mapAttrs (name: src: pkgs.fetchurl src) upstreamImagesJSON.${system}; customs = (import ./customs.nix) { inherit pkgs lib system commons; }; templates = (import ./templates.nix) { inherit pkgs lib system commons upstreamImages customs; }; mergeUpstreamImageAndTemplates = name: image: let imageTemplates = lib.optionalAttrs (lib.hasAttr "${name}" templates) templates.${name}; in imageTemplates // { upstream = image; }; images = lib.mapAttrs mergeUpstreamImageAndTemplates upstreamImages; in images // { inherit customs; }