{ 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; }; }; 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; }; }; }