# 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"]; }) ]; }