# This module runs the RIPE anchor VM in a bare qemu.
# It's expected that a storage LV is created independently and passed as blkdev.
{ config, pkgs, lib, ... }:

with lib;

let
  cfg = config.hscloud.anchorvm;

in {
  options.hscloud.anchorvm = {
    blkdev = mkOption {
      type = types.str;
      description = "Root block device";
    };
    bridge = mkOption {
      type = types.str;
      description = "bridge interface";
    };
    ram = mkOption {
      type = types.int;
      description = "memory allocated to the vm";
      default = 2048;
    };
  };

  config.systemd.services.anchorvm = {
    wantedBy = [ "multi-user.target" ];
    after = [
      "network.target"
    ];
    serviceConfig = {
      Type = "simple";
      # spawn=allow needed for bridge helper
      ExecStart = ''${pkgs.qemu}/bin/qemu-kvm \
        -nographic -m ${toString cfg.ram} -smp 2 \
        -drive file=${cfg.blkdev},if=virtio,cache=none,format=raw \
        -nic bridge,br=${cfg.bridge},model=virtio-net-pci \
        -sandbox on,obsolete=deny,elevateprivileges=deny,spawn=allow,resourcecontrol=deny
      '';
      Restart = "always";
    };
  };
}
