diff options
Diffstat (limited to 'os/vms')
| -rw-r--r-- | os/vms/microvms.nix | 37 | ||||
| -rw-r--r-- | os/vms/net-core.nix | 30 | ||||
| -rw-r--r-- | os/vms/opnsense.nix | 95 |
3 files changed, 0 insertions, 162 deletions
diff --git a/os/vms/microvms.nix b/os/vms/microvms.nix deleted file mode 100644 index e2e1a0f..0000000 --- a/os/vms/microvms.nix +++ /dev/null @@ -1,37 +0,0 @@ -{ - config, - lib, - inputs, - ... -}: -let - cfg = config.os.vms; - sharedSecrets = [ - { - tag = "shared-secrets"; - proto = "virtiofs"; - source = "/etc/nixos/secrets"; - mountPoint = "/etc/nixos/secrets"; - } - ]; -in -{ - imports = [ inputs.microvm.nixosModules.host ]; - - options.os.vms = { - net-core.enable = lib.mkEnableOption "enables the net-core virtual machine"; - }; - - config = lib.mkMerge [ - (lib.mkIf cfg.net-core.enable { - microvm.vms.net-core = { - autostart = true; - config = { - imports = [ ../vms/net-core.nix ]; - microvm.shares = sharedSecrets; - }; - }; - }) - - ]; -} diff --git a/os/vms/net-core.nix b/os/vms/net-core.nix deleted file mode 100644 index a9a1c47..0000000 --- a/os/vms/net-core.nix +++ /dev/null @@ -1,30 +0,0 @@ -{ pkgs, inputs, ... }: -{ - system.stateVersion = "26.11"; - - imports = [ - inputs.microvm.nixosModules.microvm - ../core/default.nix - ]; - - os = { - core = { - allowUnfree.enable = true; - locale.enable = true; - }; - srv = { - ssh = { - server = { - enable = true; - microvm = true; - }; - }; - firewall.enable = true; - sops.enable = true; - }; - }; - - networking.hostName = "net-core"; - - environment.systemPackages = [ pkgs.vis ]; -} diff --git a/os/vms/opnsense.nix b/os/vms/opnsense.nix deleted file mode 100644 index b9f2978..0000000 --- a/os/vms/opnsense.nix +++ /dev/null @@ -1,95 +0,0 @@ -{ - config, - lib, - inputs, - ... -}: -let - cfg = config.os.srv.opnsense; - makePciArgs = - ids: - builtins.concatLists ( - map (id: [ - "-device" - "vfio-pci,host=${id},rombar=0" - ]) ids - ); -in -{ - imports = [ inputs.microvm.nixosModules.host ]; - - options.os.srv.opnsense = { - enable = lib.mkEnableOption "enables an opnsense microvm"; - - pciIDs = lib.mkOption { - type = lib.types.listOf lib.types.str; - default = [ ]; - example = [ - "03:00.0" - "03:00.1" - ]; - description = "List of PCI bus addresses to pass through directly to OPNsense."; - }; - - vendorIDs = lib.mkOption { - type = lib.types.listOf lib.types.str; - default = [ ]; - example = [ "8086:1563" ]; - description = "List of Vendor:Device IDs to bind explicitly to the vfio-pci driver."; - }; - - imagePath = lib.mkOption { - type = lib.types.path; - default = /var/lib/microvm/images/opnsense.qcow2; - description = "Path to the OPNsense qcow2 drive image block."; - }; - }; - - config = lib.mkIf cfg.enable { - boot = { - kernelParams = [ - "intel_iommu=on" - "iommu=pt" - ]; - kernelModules = [ - "vfio_pci" - "vfio" - "vfio_iommu_type1" - ]; - extraModprobeConfig = '' - options vfio-pci ids=${lib.concatStringsSep "," (lib.unique cfg.vendorIDs)} - ''; - }; - - microvm.vms.opnsense = { - autostart = true; - config = { - imports = [ inputs.microvm.nixosModules.microvm ]; - - networking.hostName = "opnsense"; - - microvm = { - vcpu = 4; - mem = 4096; - hypervisor = "qemu"; - - interfaces = [ - { - type = "bridge"; - id = "vtnet0"; - bridge = "br-srv"; - } - ]; - - qemu.extraArgs = [ - "-machine" - "q35,accel=kvm,kernel-irqchip=on" - "-cpu" - "host,migratable=off,+invtsc" - ] - ++ (makePciArgs cfg.pciIDs); - }; - }; - }; - }; -} |
