{
  lib,
  config,
  modulesPath,
  ...
}:

let
  inherit (lib) mkVMOverride mapAttrs' filterAttrs;

  cfg = config.services.garage;

  fedicfg = config.fediversity.internal.garage;

in
{
  imports = [ (modulesPath + "/virtualisation/qemu-vm.nix") ];

  services.nginx.virtualHosts =
    let
      value = {
        forceSSL = mkVMOverride false;
        enableACME = mkVMOverride false;
      };
    in
    mapAttrs' (bucket: _: {
      name = fedicfg.web.domainForBucket bucket;
      inherit value;
    }) (filterAttrs (_: { website, ... }: website) cfg.ensureBuckets);

  virtualisation.diskSize = 2048;
  virtualisation.forwardPorts = [
    {
      from = "host";
      host.port = fedicfg.rpc.port;
      guest.port = fedicfg.rpc.port;
    }
    {
      from = "host";
      host.port = fedicfg.web.internalPort;
      guest.port = fedicfg.web.internalPort;
    }
  ];
}
