{
  name = "Podman";
  description = ''
    Provide support for running docker containers on the system
  '';

  nixosModule =
    {
      pkgs,
      lib,
      config,
      ...
    }:
    {
      options.podman = {
        containers = lib.mkOption {
          type = lib.types.attrs;
          default = { };
        };
      };

      config =
        let
          cfg = config.podman;
        in
        {
          virtualisation.containers.enable = true;
          virtualisation.podman.enable = true;
          virtualisation.podman.defaultNetwork.settings.dns_enabled = true;
          virtualisation.oci-containers.backend = "podman";

          virtualisation.oci-containers.containers = lib.mapAttrs (
            _: container:
            lib.mkMerge [
              (lib.mkIf (lib.hasAttr "imageMetadata" container) (
                let
                  metadata = container.imageMetadata;
                in
                {
                  image = "${metadata.imageName}:latest";
                  imageFile = pkgs.dockerTools.pullImage metadata;
                }
              ))
              (builtins.removeAttrs container [ "imageMetadata" ])
            ]
          ) cfg.containers;
        };
    };
}