{
  inputs,
  config,
  lib,
  pkgs,
  system,
  ...
}:
let
  cfg = config.services.minecraft;
in
{
  config = lib.mkIf (cfg.enable && cfg.servers.survival.enable) {
    services.minecraft-servers.servers."survival" = {
      enable = true;
      autoStart = true;
      enableReload = true;
      package = pkgs.paperServers.paper-1_21_4;
      serverProperties = {
        online-mode = false;
        server-ip = "127.0.0.1";
        server-port = 49333;
        difficulty = 3;
        gamemode = 1;
        max-players = 5;
      };
      openFirewall = false; # Should use Velocity Player Proxy

      # Add Plugins
      symlinks = {
        "plugins/LuckPerms.jar" = pkgs.fetchurl {
          url = "https://download.luckperms.net/1567/bukkit/loader/LuckPerms-Bukkit-5.4.150.jar"; 
          sha512 = "39cr9nd68afrrvn80kvdgaml37xkj3mzhv50y3app5j1199hg12kls29r49x06p9rxm6dk7i0j8aww2hw4ahm18andb69a5kp97vf94"; 
        };
      };

      # Configure Velocity Modern forwarding https://docs.papermc.io/velocity/player-information-forwarding#configuring-modern-forwarding-for-paper
      files."spigot.yml".value = {
        settings.bungeecord = false;
      };
      files."config/paper-global.yml".value = {
        proxies.velocity.enabled = true;
        proxies.velocity.online-mode = "online-mode";
        forwarding.secret = ""; # TODO: Add Forewarding Secret using Sops
      };
    };
  };
}