{ config, lib, ... }:
{
  options.services.minecraft-servers.common = lib.mkOption {
    type = lib.types.attrs;
  };

  config.services.minecraft-servers.common = {
    # Common properties
    serverProperties = {
      enforce-secure-profile = false;
      max-players = 20;
      online-mode = false;
      spawn-protection = 0;
      view-distance = 10;
      simulation-distance = 10;
      white-list = true;
    };

    # Common whitelist
    whitelist = {
      K5G = "8656dc10-6050-4a17-b29e-88c4babbc54c";
      JimmJam = "2f7affee-e10b-450f-a5e2-44c79a14a109";
      Viceebun = "f583f591-ad9b-4a30-8d91-514881b31394";
      DewDemolisher = "9205524f-3886-483d-b471-82bb9905671a";
      Freecorn1854 = "8299cd8d-3cd4-4779-8180-0d9db6dc12a9";
      Freemid1854 = "cf430607-3c2e-4c8b-8183-28299e801fa5";
      Tinyattack09 = "aaa8e9e2-4e51-4925-b9df-8a9504aec5d5";
      Ankha3000 = "dd65a277-f618-411e-812c-900c9c7e82d9";
      catoiico = "01f10cdf-c146-437e-99b1-2278b5dbe420";
      Sp0ok7 = "016c3daa-3dd5-4631-ae79-3a6f48d7cbe6";
      PooxterMooxter = "c973f4b5-ab50-45e3-b3eb-36286a6f66aa";
    };

    # Common plugins
    paperSymlinks = {
      "plugins/BungeeGuard.jar" = builtins.fetchurl {
        url = "https://github.com/lucko/BungeeGuard/releases/download/v1.3.3/BungeeGuard.jar";
        sha256 = "0cackavwk7kl71hn1i78hcvkdp7q81srq35nranpvysbmm8v34vk";
      };
      "plugins/ProtocolLib.jar" = builtins.fetchurl {
        url = "https://ci.dmulloy2.net/job/ProtocolLib/733/artifact/build/libs/ProtocolLib.jar";
        sha256 = "1gslh24kk7dcqiqxphzy8x2nrqa58f8gl5ah0iyg1ndx3pvr4z9m";
      };
      "plugins/VoiceChat.jar" = builtins.fetchurl {
        url = "https://cdn.modrinth.com/data/9eGKb6K1/versions/Il6UOBoH/voicechat-bukkit-2.5.27.jar";
        sha256 = "1k95sy0hf74y80fzk7960ww8wk210phyaiqkn4q7wlagdq48mxqm";
      };
      "plugins/ViaVersion.jar" = builtins.fetchurl {
        url = "https://cdn.modrinth.com/data/P1OZGk5p/versions/cdC9vQSF/ViaVersion-5.3.2.jar";
        sha256 = "0q1jrd3n6pyki8pyvckhm0d2jgh3lhzkq99cngskj3mlfb9pr57l";
      };
    };

    # Config files
    configFiles = {
      "plugins/Essentials/config.yml" = ./essentialsconfig.yml;
      "plugins/voicechat/voicechat-server.properties" = ./vcserver.properties;
    };
  };
}
