49 lines
1.2 KiB
Nix
49 lines
1.2 KiB
Nix
{
|
|
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;
|
|
};
|
|
};
|
|
}
|