nix-config/nixosModules/dev/containers.nix

61 lines
1.4 KiB
Nix
Raw Normal View History

2024-09-26 21:05:27 +02:00
{
config,
lib,
...
}:
let
2025-01-27 15:57:36 +01:00
cfg = config.krop;
docker-cfg = {
enable = lib.mkEnableOption "Whether to enable Docker.";
2024-09-26 21:05:27 +02:00
addUserToGroup = lib.mkOption {
type = lib.types.bool;
default = true;
example = false;
description = "Whether to add the user to the Docker group.";
};
2024-10-25 12:15:44 +02:00
changeDefaultNetwork = lib.mkOption {
type = lib.types.bool;
default = false;
example = true;
description = "Whether to change docker daemon to use different networks.";
};
2024-09-26 21:05:27 +02:00
};
2025-01-27 15:57:36 +01:00
podman-cfg = {
enable = lib.mkEnableOption "Whether to enable Podman.";
};
2025-02-03 08:37:24 +01:00
waydroid-cfg = {
enable = lib.mkEnableOption "Whence to enable Waydroid.";
};
2025-01-27 15:57:36 +01:00
in
{
options.krop = {
docker = docker-cfg;
podman = podman-cfg;
2025-02-03 08:37:24 +01:00
waydroid = waydroid-cfg;
2025-01-27 15:57:36 +01:00
};
2024-09-26 21:05:27 +02:00
2025-01-27 15:57:36 +01:00
config = {
virtualisation.docker = lib.mkIf cfg.docker.enable {
2024-09-26 21:05:27 +02:00
enable = true;
2025-01-27 15:57:36 +01:00
daemon.settings = lib.mkIf cfg.docker.changeDefaultNetwork {
2024-10-25 12:15:44 +02:00
default-address-pools = [
{
base = "10.250.0.0/16";
size = 24;
}
];
};
2024-09-26 21:05:27 +02:00
};
2025-01-27 15:57:36 +01:00
virtualisation.podman = lib.mkIf cfg.podman.enable {
enable = true;
};
2025-02-03 08:37:24 +01:00
virtualisation.waydroid.enable = cfg.waydroid.enable;
2025-01-27 15:57:36 +01:00
users.users.krop = lib.mkIf (cfg.docker.addUserToGroup && cfg.docker.enable) {
2024-09-27 09:10:23 +02:00
extraGroups = [ "docker" ];
2024-09-26 21:05:27 +02:00
};
};
}