46 lines
1.2 KiB
Nix
46 lines
1.2 KiB
Nix
# Module: Virtualization
|
|
# Description: Docker and VirtualBox virtualization support
|
|
# Services: Docker daemon, VirtualBox
|
|
{
|
|
config,
|
|
lib,
|
|
pkgs,
|
|
customConfig,
|
|
...
|
|
}: {
|
|
options.custom.virtualization = {
|
|
docker = {
|
|
enable = lib.mkEnableOption "Docker container runtime";
|
|
|
|
dnsServers = lib.mkOption {
|
|
type = lib.types.listOf lib.types.str;
|
|
default = ["172.17.0.1"];
|
|
description = "DNS servers for Docker containers (points to dnscrypt-proxy)";
|
|
};
|
|
};
|
|
|
|
virtualbox = {
|
|
enable = lib.mkEnableOption "VirtualBox virtualization";
|
|
};
|
|
};
|
|
|
|
config = lib.mkMerge [
|
|
(lib.mkIf config.custom.virtualization.docker.enable {
|
|
virtualisation.docker = {
|
|
enable = true;
|
|
daemon.settings = {
|
|
# Docker DNS points to dnscrypt-proxy configured in net.nix
|
|
dns = config.custom.virtualization.docker.dnsServers;
|
|
};
|
|
};
|
|
|
|
users.users."${customConfig.username}".extraGroups = ["docker"];
|
|
})
|
|
|
|
(lib.mkIf config.custom.virtualization.virtualbox.enable {
|
|
virtualisation.virtualbox.host.enable = true;
|
|
users.users."${customConfig.username}".extraGroups = ["vboxusers"];
|
|
})
|
|
];
|
|
}
|