From 841f2ca4fb26b6e32afe3b19a2218dea9fdcf13a Mon Sep 17 00:00:00 2001 From: tux Date: Thu, 7 May 2026 18:25:59 +0530 Subject: [PATCH] feat(virtualisation): setup modules --- modules/hosts/sirius/config.nix | 12 ++++++- modules/nixos/virtualisation/docker.nix | 32 +++++++++++++++++++ modules/nixos/virtualisation/qemu.nix | 38 +++++++++++++++++++++++ modules/nixos/virtualisation/waydroid.nix | 20 ++++++++++++ 4 files changed, 101 insertions(+), 1 deletion(-) create mode 100644 modules/nixos/virtualisation/docker.nix create mode 100644 modules/nixos/virtualisation/qemu.nix create mode 100644 modules/nixos/virtualisation/waydroid.nix diff --git a/modules/hosts/sirius/config.nix b/modules/hosts/sirius/config.nix index 0fb1355..b592439 100644 --- a/modules/hosts/sirius/config.nix +++ b/modules/hosts/sirius/config.nix @@ -11,9 +11,19 @@ imports = with config.flake.modules.nixos; [ networking desktop + virtualisation ]; - tnix.services.openssh.enable = true; + tnix = { + services.openssh.enable = true; + + virtualisation = { + docker.enable = true; + docker.nvidia.enable = true; + qemu.enable = true; + waydroid.enable = true; + }; + }; sops.secrets.tux-password = { sopsFile = ./secrets.yaml; diff --git a/modules/nixos/virtualisation/docker.nix b/modules/nixos/virtualisation/docker.nix new file mode 100644 index 0000000..dfcdb6e --- /dev/null +++ b/modules/nixos/virtualisation/docker.nix @@ -0,0 +1,32 @@ +{ + flake.modules.nixos.virtualisation = + { + config, + lib, + pkgs, + userName, + ... + }: + let + cfg = config.tnix.virtualisation; + in + { + options.tnix.virtualisation.docker = { + enable = lib.mkEnableOption "Docker container runtime"; + nvidia = { + enable = lib.mkEnableOption "NVIDIA Container Toolkit for Docker"; + }; + }; + + config = lib.mkIf cfg.docker.enable { + virtualisation = { + oci-containers.backend = "docker"; + docker.enable = true; + }; + + hardware.nvidia-container-toolkit.enable = lib.mkIf cfg.docker.nvidia.enable true; + environment.systemPackages = with pkgs; [ lazydocker ]; + users.users.${userName}.extraGroups = [ "docker" ]; + }; + }; +} diff --git a/modules/nixos/virtualisation/qemu.nix b/modules/nixos/virtualisation/qemu.nix new file mode 100644 index 0000000..793c2b0 --- /dev/null +++ b/modules/nixos/virtualisation/qemu.nix @@ -0,0 +1,38 @@ +{ + flake.modules.nixos.virtualisation = + { + config, + lib, + pkgs, + userName, + ... + }: + let + cfg = config.tnix.virtualisation; + in + { + options.tnix.virtualisation.qemu = { + enable = lib.mkEnableOption "QEMU/KVM virtualization with libvirtd"; + }; + + config = lib.mkIf cfg.qemu.enable { + virtualisation = { + libvirtd = { + enable = true; + qemu = { + swtpm.enable = true; + }; + }; + spiceUSBRedirection.enable = true; + }; + + users.users.${userName}.extraGroups = [ "libvirtd" ]; + + environment.systemPackages = with pkgs; [ + virt-manager + virt-viewer + ]; + }; + }; + +} diff --git a/modules/nixos/virtualisation/waydroid.nix b/modules/nixos/virtualisation/waydroid.nix new file mode 100644 index 0000000..933e2d2 --- /dev/null +++ b/modules/nixos/virtualisation/waydroid.nix @@ -0,0 +1,20 @@ +{ + flake.modules.nixos.virtualisation = + { + config, + lib, + ... + }: + let + cfg = config.tnix.virtualisation; + in + { + options.tnix.virtualisation.waydroid = { + enable = lib.mkEnableOption "Waydroid Android container"; + }; + + config = lib.mkIf cfg.waydroid.enable { + virtualisation.waydroid.enable = true; + }; + }; +}