diff options
Diffstat (limited to 'os/srv/virtualization.nix')
| -rw-r--r-- | os/srv/virtualization.nix | 47 |
1 files changed, 35 insertions, 12 deletions
diff --git a/os/srv/virtualization.nix b/os/srv/virtualization.nix index f32737b..143e9da 100644 --- a/os/srv/virtualization.nix +++ b/os/srv/virtualization.nix @@ -2,23 +2,46 @@ config, lib, pkgs, + username, ... }: let cfg = config.os.srv.virtualization; in { - options.os.srv.virtualization.enable = - lib.mkEnableOption "KVM/QEMU virtualization with Virt-Manager"; - config = lib.mkIf cfg.enable { - virtualisation.libvirtd = { - enable = true; - qemu.package = pkgs.qemu_kvm; - qemu.swtpm.enable = true; - }; - systemd.services.libvirt-guests.enable = false; - programs.virt-manager.enable = true; - - boot.initrd.kernelModules = lib.optional (config.os.core.drivers.amd.enable or false) "kvm-amd"; + options.os.srv.virtualization = { + kvm.enable = lib.mkEnableOption "KVM/QEMU virtualization with Virt-Manager"; + docker.enable = lib.mkEnableOption "Docker Container Virtualization"; + waydroid.enable = lib.mkEnableOption "Waydroid Container Virtualization"; }; + config = lib.mkMerge [ + (lib.mkIf cfg.kvm.enable { + virtualisation.libvirtd = { + enable = true; + qemu.package = pkgs.qemu_kvm; + qemu.swtpm.enable = true; + }; + systemd.services.libvirt-guests.enable = false; + programs.virt-manager.enable = true; + + boot.initrd.kernelModules = + (lib.optional (config.os.core.drivers.cpu == "amd") "kvm-amd") + ++ (lib.optional (config.os.core.drivers.cpu == "intel") "kvm-intel"); + }) + (lib.mkIf cfg.docker.enable { + virtualisation.docker.enable = true; + environment.systemPackages = [ pkgs.docker-compose ]; + users.users.${username}.extraGroups = [ "docker" ]; + }) + (lib.mkIf cfg.waydroid.enable { + virtualisation.waydroid = { + enable = true; + package = pkgs.waydroid-nftables; + }; + + environment.systemPackages = with pkgs; [ + waydroid-helper + ]; + }) + ]; } |
