config/roles/podman.nix

49 lines
1.2 KiB
Nix
Raw Normal View History

2025-02-07 19:32:06 +01:00
{
name = "Podman";
description = ''
Provide support for running docker containers on the system
'';
nixosModule =
2025-02-14 21:28:54 +01:00
{
pkgs,
lib,
config,
...
}:
2025-02-07 19:32:06 +01:00
{
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";
2025-02-14 21:28:54 +01:00
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;
2025-02-07 19:32:06 +01:00
};
};
}