nix-config/nixosModules/dev/containers.nix

54 lines
1.2 KiB
Nix

{
config,
lib,
...
}:
let
cfg = config.krop;
docker-cfg = {
enable = lib.mkEnableOption "Whether to enable Docker.";
addUserToGroup = lib.mkOption {
type = lib.types.bool;
default = true;
example = false;
description = "Whether to add the user to the Docker group.";
};
changeDefaultNetwork = lib.mkOption {
type = lib.types.bool;
default = false;
example = true;
description = "Whether to change docker daemon to use different networks.";
};
};
podman-cfg = {
enable = lib.mkEnableOption "Whether to enable Podman.";
};
in
{
options.krop = {
docker = docker-cfg;
podman = podman-cfg;
};
config = {
virtualisation.docker = lib.mkIf cfg.docker.enable {
enable = true;
daemon.settings = lib.mkIf cfg.docker.changeDefaultNetwork {
default-address-pools = [
{
base = "10.250.0.0/16";
size = 24;
}
];
};
};
virtualisation.podman = lib.mkIf cfg.podman.enable {
enable = true;
};
users.users.krop = lib.mkIf (cfg.docker.addUserToGroup && cfg.docker.enable) {
extraGroups = [ "docker" ];
};
};
}