fix(taygeta/minecraft): disable proxy and limbo for now

This commit is contained in:
Gabriel Fontes
2025-06-01 05:52:46 +02:00
parent 48d154bfa6
commit eb0f89aea2
9 changed files with 10 additions and 467 deletions
@@ -6,8 +6,6 @@
}: {
imports = [
inputs.nix-minecraft.nixosModules.minecraft-servers
./servers/proxy
./servers/limbo
./servers/gtnh
];
@@ -1,4 +1,11 @@
{pkgs, ...}: {
{pkgs, config, ...}: let
cfg = config.services.minecraft-servers.servers.gtnh;
in {
networking.firewall = {
allowedTCPPorts = [cfg.serverProperties.server-port];
allowedUDPPorts = [cfg.serverProperties.server-port];
};
services.minecraft-servers.servers.gtnh = rec {
enable = true;
package = pkgs.callPackage ./gtnh.nix { };
@@ -8,8 +15,8 @@
level-type = "rwg";
difficulty = 3;
spawn-protection = 1;
server-port = 5001;
online-mode = false;
server-port = 25565;
online-mode = true;
};
files = {
config = "${package}/lib/config";
@@ -1,50 +0,0 @@
{pkgs, config, ...}: let
cfg = config.services.minecraft-servers.servers.limbo;
in {
services.minecraft-servers.servers.limbo = {
enable = true;
serverProperties = {
server-ip = "0.0.0.0";
server-port = 25560;
};
package = pkgs.callPackage ./nano-limbo-server.nix {};
jvmOpts = "";
files."settings.yml".value = {
bind = {
ip = cfg.serverProperties.server-ip;
port = cfg.serverProperties.server-port;
};
maxPlayers = -1;
ping = {
description = "Limbo";
version = "1.5";
};
dimension = "THE_END";
playerList = {
enable = false;
username = "NanoLimbo";
};
headerAndFooter.enable = false;
gameMode = 3;
brandName.enable = false;
joinMessage.enable = false;
bossBar.enable = false;
title.enable = false;
infoForwarding = {
type = "LEGACY";
};
readTimeout = 30000;
debugLevel = 2;
netty = {
useEpoll = true;
threads = {
bossGroup = 1;
workerGroup = 4;
};
};
traffic.enable = false;
};
};
}
@@ -1,26 +0,0 @@
{
stdenv,
fetchurl,
jre_headless,
}:
stdenv.mkDerivation rec {
pname = "nano-limbo";
version = "1.8.1";
src = fetchurl {
url = "https://github.com/Nan1t/NanoLimbo/releases/download/v${version}/NanoLimbo-${version}-all.jar";
sha256 = "sha256-HA7PFV+TiJYKT9XUuI0117OJNaCskUYXuVVLi4jXVsM=";
};
preferLocalBuild = true;
dontUnpack = true;
installPhase = ''
mkdir -p $out/bin $out/lib/minecraft
cp -v $src $out/lib/minecraft/server.jar
cat > $out/bin/${pname} << EOF
#!/bin/sh
exec ${jre_headless}/bin/java \$@ -jar $out/lib/minecraft/server.jar nogui
EOF
chmod +x $out/bin/${pname}
'';
meta.mainProgram = pname;
}
@@ -1,69 +0,0 @@
{
pkgs,
config,
...
}: let
servers = config.services.minecraft-servers.servers;
cfg = servers.proxy;
proxyFlags = memory: "-Xms${memory} -Xmx${memory} -XX:+UseG1GC -XX:G1HeapRegionSize=4M -XX:+UnlockExperimentalVMOptions -XX:+ParallelRefProcEnabled -XX:+AlwaysPreTouch -XX:MaxInlineLevel=15";
in {
imports = [
./luckperms.nix
./huskchat.nix
./velocitab.nix
];
networking.firewall = {
allowedTCPPorts = [cfg.serverProperties.server-port];
allowedUDPPorts = [cfg.serverProperties.server-port];
};
services.minecraft-servers.servers.proxy = {
enable = true;
enableReload = true;
stopCommand = "end";
extraReload = ''
echo 'velocity reload' > /run/minecraft/proxy.stdin
'';
serverProperties = {
server-ip = "0.0.0.0";
server-port = 25565;
online-mode = true;
motd = "Server do Mr. GELOS";
};
package = pkgs.inputs.nix-minecraft.velocity-server; # Latest build
jvmOpts = proxyFlags "1G";
files = {
"velocity.toml".value = {
inherit (cfg.serverProperties) motd online-mode;
config-version = "2.5";
bind = "${cfg.serverProperties.server-ip}:${toString cfg.serverProperties.server-port}";
player-info-forwarding-mode = "legacy";
servers = let
mkIp = server: "localhost:${toString server.serverProperties.server-port}";
in {
limbo = mkIp servers.limbo;
gtnh = mkIp servers.gtnh;
try = ["limbo"];
};
forced-hosts = {
"gtnh.mc.m7.rs" = ["gtnh" "limbo"];
"limbo.mc.m7.rs" = ["limbo"];
"lobby.mc.m7.rs" = ["limbo"];
};
query = {
enabled = true;
port = cfg.serverProperties.server-port;
};
advanced = {
login-ratelimite = 500;
};
};
"lang/messages.properties" = ./messages.properties;
};
};
}
@@ -1,158 +0,0 @@
{pkgs, ...}: {
services.minecraft-servers.servers.proxy = {
extraReload = ''
echo 'huskchat reload' > /run/minecraft/proxy.stdin
'';
symlinks = {
"plugins/HuskChat.jar" = pkgs.fetchurl rec {
pname = "HuskChat";
version = "2.7.1";
url = "https://github.com/WiIIiam278/${pname}/releases/download/${version}/${pname}-${version}.jar";
hash = "sha256-Vg0xu2Z7WeeabK1r5qOw9STcK9kxA5ApshljyXDUy7M=";
};
"plugins/UnSignedVelocity.jar" = pkgs.fetchurl rec {
pname = "UnSignedVelocity";
version = "1.4.2";
url = "https://github.com/4drian3d/${pname}/releases/download/${version}/${pname}-${version}.jar";
hash = "sha256-i6S05M4mGxnp4tJmR4AKFOBgEQb7d5mTH95nryA7v0A=";
};
"plugins/VPacketEvents.jar" = pkgs.fetchurl rec {
pname = "VPacketEvents";
version = "1.1.0";
url = "https://github.com/4drian3d/${pname}/releases/download/${version}/${pname}-${version}.jar";
hash = "sha256-qWHR8hn56vf8csUDhuzV8WPBhZtaJE+uLNqupcJvGEI=";
};
};
files = {
"plugins/huskchat/config.yml".value = {
config-version = 2;
check_for_updates = false;
default_channel = "default";
channel_log_format = "[CHAT] [%channel%] %sender%: ";
channel_command_aliases = [
"/channel"
"/c"
];
channels = {
default = {
format = "&7[%servername%] %fullname%&r&f: ";
broadcast_scope = "GLOBAL";
log_to_console = true;
shortcut_commands = [
"/global"
"/g"
"/default"
"/d"
];
};
internal = {
format = "%fullname%&r&0: ";
broadcast_scope = "PASSTHROUGH";
shortcut_commands = [
"/i"
"/internal"
];
};
};
broadcast_command = {
enabled = true;
broadcast_aliases = [
"/broadcast"
"/alert"
];
format = "&4[SERVER]&e ";
log_to_console = true;
log_format = "[SERVER]: ";
};
message_command = {
enabled = true;
msg_aliases = [
"/msg"
"/m"
"/tell"
"/whisper"
"/w"
"/pm"
];
reply_aliases = [
"/reply"
"/r"
];
log_to_console = true;
log_format = "[MSG] [%sender% -> %receiver%]: ";
group_messages.enabled = false;
format = {
inbound = "&#00fb9a&%name% &8 &#00fb9a&Você&8: &f";
outbound = "&#00fb9a&Você &8 &#00fb9a&%name%&8: &f";
};
};
social_spy.enabled = false;
local_spy.enabled = false;
chat_filters = {
advertising_filter.enabled = false;
caps_filter.enabled = false;
spam_filter.enabled = false;
profanity_filter.enabled = false;
repeat_filter.enabled = false;
ascii_filter.enabled = false;
};
message_replacers.emoji_replacer.enabled = false;
discord.enabled = false;
join_and_quit_messages = {
join = {
enabled = true;
format = "&f%name%&e entrou no servidor";
};
quit = {
enabled = true;
format = "&f%name%&e saiu do servidor";
};
broadcast_scope = "GLOBAL";
};
};
"plugins/huskchat/messages-en-gb.yml".value = {
error_no_permission = "[Erro:](#ff3300) [Você não tem permissão para usar esse comando.](#ff7e5e)";
error_invalid_syntax = "[Erro:](#ff3300) [Sintaxe inválida. Usagem: %1%](#ff7e5e)";
channel_switched = "[Você agora está no canal](#00fb9a) [%1%](#eecc55 bold) [!](#00fb9a)";
error_no_permission_send = "[Erro:](#ff3300) [Você não tem permissão para usar esse chat.](#ff7e5e)";
error_invalid_channel = "[Erro:](#ff3300) [Especifique um canal válido.](#ff7e5e)";
error_invalid_channel_command = "[Erro:](#ff3300) [Esse canal é inválido.](#ff7e5e)";
error_no_channel = "[Erro:](#ff3300) [Você tentou falar em um canal inválido.](#ff7e5e) [Use /channel para trocar.](#ff7e5e show_text=&#ff7e5e&Click here to suggest command suggest_command=/channel )";
error_player_not_found = "[Erro:](#ff3300) [Jogador não encontrado.](#ff7e5e)";
error_cannot_message_self = "[Erro:](#ff3300) [Você não pode conversar com si mesmo, esquisito!](#ff7e5e)";
error_reply_no_messages = "[Erro:](#ff3300) [Não há nenhuma mensagem para responder.](#ff7e5e)";
error_reply_not_online = "[Erro:](#ff3300) [Essa pessoa não está mais online.](#ff7e5e)";
error_message_restricted_server = "[Erro:](#ff3300) [Você não pode enviar mensagens enquanto está nesse servidor.](#ff7e5e)";
error_message_recipient_restricted_server = "[Erro:](#ff3300) [Esse jogador está em um servidor onde mensagens não podem ser lidas.](#ff7e5e)";
error_channel_restricted_server = "[Erro:](#ff3300) [Você não pode usar o chat %1% enquanto está nesse servidor.](#ff7e5e)";
social_spy_toggled_on = "[Você agora está espionando chats privados.](#00fb9a)";
social_spy_toggled_on_color = "[Você agora está espionando chats privados em](#00fb9a) %1%%2%";
social_spy_toggled_off = "[Você não está mais espionando chats privados.](#00fb9a)";
local_spy_toggled_on = "[Você agora está espionando mensagens locais de outros servidores.](#00fb9a)";
local_spy_toggled_on_color = "[Você agora está mais espionando mensagens locais de](#00fb9a) %1%%2%";
local_spy_toggled_off = "[Você não está mais espionando mensagens locais.](#00fb9a)";
error_chat_filter_advertising = "[Você não pode fazer propagandas ou enviar links nesse chat.](#ff7e5e)";
error_chat_filter_profanity = "[Você não pode xingar nesse chat.](#ff7e5e)";
error_chat_filter_caps = "[Cuidado com o caps.](#ff7e5e)";
error_chat_filter_spam = "[Opa! Mande mensagens um pouco mais devagarinho.](#ff7e5e)";
error_chat_filter_ascii = "[Você não pode usar caracteres especiais no chat.](#ff7e5e)";
error_chat_filter_repeat = "[Você já enviou essa mensagem recentemente!](#ff7e5e)";
error_in_game_only = "Erro: Esse comando só pode ser usado dentro do jogo.";
error_console_local_scope = "Erro: Enviar mensagens do console para chats locais não é possível.";
error_console_switch_channels = "Erro: Você não pode mudar de canal pelo console.";
error_group_messages_disabled = "[Erro:](#ff3300) [Você não pode enviar mensagens para múltiplas pessoas.](#ff7e5e)";
error_group_messages_max = "[Erro:](#ff3300) [Seu chat pode ter no máximo %1% pessoas.](#ff7e5e)";
error_players_not_found = "[Erro:](#ff3300) [Jogadores não encontrados.](#ff7e5e)";
error_reply_none_online = "[Erro:](#ff3300) [Ninguém no último chat está online.](#ff7e5e)";
error_last_message_not_group = "[Erro:](#ff3300) [A última mensagem não foi um chat de grupo.](#ff7e5e)";
error_no_messages_opt_out = "[Erro:](#ff3300) [Você ainda não enviou ou recebeu mensagens em grupo.](#ff7e5e)";
removed_from_group_message = "[Você saiu do chat em grupo com:](#00fb9a) %1%";
list_conjunction = "e";
error_passthrough_shortcut_command_error = "[Erro:](#ff3300) [Enviar mensagens para canais de passthrough usando atalhos não é possível. Troque para o canal usando o comando /channel](#ff7e5e)";
up_to_date = "HuskChat: Você está na última versão (v%1%).";
update_available = "HuskChat: Uma nova versão (v%1%) está disponível (atual: v%2%).";
};
};
};
}
@@ -1,77 +0,0 @@
{
pkgs,
lib,
...
}: {
services.minecraft-servers.servers.proxy = rec {
extraStartPost = ''
echo 'lpv import initial.json.gz' > /run/minecraft/proxy.stdin
'';
extraReload = extraStartPost;
symlinks = {
"plugins/LuckPerms.jar" = let
build = "1584";
in
pkgs.fetchurl rec {
pname = "LuckPerms";
version = "5.5.0";
url = "https://download.luckperms.net/${build}/velocity/${pname}-Velocity-${version}.jar";
hash = "sha256-yMfwT/AtuJV46+QbjNot5HGFeEr1vJsE53Kx3yZPFHg=";
};
"plugins/luckperms/initial.json.gz".format = pkgs.formats.gzipJson {};
"plugins/luckperms/initial.json.gz".value = let
mkPermissions = lib.mapAttrsToList (key: value: {inherit key value;});
in {
groups = {
owner.nodes = mkPermissions {
"group.admin" = true;
"prefix.1000.&5" = true;
"weight.1000" = true;
"librelogin.*" = true;
"luckperms.*" = true;
"velocity.command.*" = true;
};
admin.nodes = mkPermissions {
"group.default" = true;
"prefix.900.&6" = true;
"weight.900" = true;
"huskchat.command.broadcast" = true;
};
default.nodes = mkPermissions {
"huskchat.command.channel" = true;
"huskchat.command.msg" = true;
"huskchat.command.msg.reply" = true;
};
};
users = {
"3fc76c64-b1b2-4a95-b3cf-0d7d94db2d75" = {
username = "misterio7x";
nodes = mkPermissions {"group.owner" = true;};
};
"10ffa557-322a-4b6c-9b3e-cdc2792163ae" = {
username = "kirao";
nodes = mkPermissions {"group.admin" = true;};
};
};
};
};
files = {
"plugins/luckperms/config.yml".value = {
server = "proxy";
storage-method = "mysql";
data = {
address = "127.0.0.1";
database = "minecraft";
username = "minecraft";
password = "@DATABASE_PASSWORD@";
table-prefix = "luckperms_";
};
messaging-service = "sql";
};
};
};
}
@@ -1,44 +0,0 @@
velocity.command.command-does-not-exist=Esse comando não existe.
velocity.command.dump-offline=Causa provável: DNS inválido ou sem conexão com a internet
velocity.command.dump-send-error=Um erro ocorreu ao comunicar-se com os servidores do Velocity. Os servidores podem estar temporariamente indisponíveis ou há um erro com sua conexão. Cheque o log ou console para mais informações.
velocity.command.dump-server-error=Um erro ocorreu nos servidores do Velocity e o upload não foi completo.
velocity.command.dump-success=Um relatório anônimo contendo informações sobre o proxy foi criado. Se um desenvolvedor pediu, você pode compartilhar o seguinte link com ele:
velocity.command.dump-uploading=Enviando informações...
velocity.command.dump-will-expire=Esse link vai expirar em alguns dias.
velocity.command.generic-error=Um erro inesperado aconteceu ao executar esse comando.
velocity.command.glist-player-plural={0} jogadores estão conectados na network.
velocity.command.glist-player-singular={0} jogador está conectado na network.
velocity.command.glist-view-all=Para ver todos os jogadores nos servidores, use /glist all.
velocity.command.no-plugins=Não há nenhum plugin instalado.
velocity.command.players-only=Apenas jogadores podem usar esse comando.
velocity.command.plugin-tooltip-author=Autor: {0}
velocity.command.plugin-tooltip-authors=Autores: {0}
velocity.command.plugin-tooltip-website=Site: {0}
velocity.command.plugins-list=Plugins: {0}
velocity.command.reload-failure=Não foi possível recarregar sua configuração do Velocity. Olhe o console para mais detalhes.
velocity.command.reload-success=Configuração do velocity recarregada.
velocity.command.server-available=Servidores disponíveis:
velocity.command.server-current-server=Conectado a {0}.
velocity.command.server-does-not-exist=O servidor {0} não existe.
velocity.command.server-too-many=Há muitos servidores disponíveis, use tab complete para escolher um.
velocity.command.server-tooltip-current-server=Seu servidor atual
velocity.command.server-tooltip-offer-connect-server=Clique para conectar
velocity.command.server-tooltip-player-online={0} jogador online
velocity.command.server-tooltip-players-online={0} jogadores online
velocity.command.version-copyright=Copyright 2018-2023 {0}. {1} is licensed under the terms of the GNU General Public License v3.
velocity.error.already-connected=Você já está conectado a esse servidor
velocity.error.already-connected-proxy=Você já está conectado a esse proxy
velocity.error.already-connecting=Ainda conectando...
velocity.error.cant-connect=Não foi possível conectar a {0}: {1}
velocity.error.connected-server-error=Ocorreu um erro com a sua conexão a {0}.
velocity.error.connecting-server-error=Não foi possível conectar a {0}. Tente novamente mais tarde.
velocity.error.illegal-chat-characters=Caracteres inválidos no chat
velocity.error.internal-server-connection-error=Um erro inesperado aconteceu.
velocity.error.logging-in-too-fast=Você está logando muito rápido, tente novamente em um momento.
velocity.error.modern-forwarding-failed=O servidor não enviou um pedido de encaminhamento ao proxy. Verifique que o servidor está configurado para usar o Velocity.
velocity.error.modern-forwarding-needs-new-client=Esse servidor só é compatível com Minecraft 1.13+.
velocity.error.moved-to-new-server=Desconectado de {0}: {1}
velocity.error.no-available-servers=Não há servidores disponíveis para conectar. Tente novamente mais tarde ou contate um admin.
velocity.error.online-mode-only=Você não está logado na sua conta do Minecraft. Se o erro persistir, tente reiniciar o client.
velocity.error.player-connection-error=Um erro inesperado aconteceu com sua conexão.
velocity.kick.shutdown=Reiniciando proxy... Aguarde uns 10 segundos e já pode entrar!
@@ -1,38 +0,0 @@
{pkgs, ...}: {
services.minecraft-servers.servers.proxy = {
extraReload = ''
echo 'velocitab reload' > /run/minecraft/proxy.stdin
'';
symlinks = {
"plugins/Velocitab.jar" = pkgs.fetchurl rec {
pname = "Velocitab";
version = "1.6.2";
url = "https://github.com/WiIIiam278/${pname}/releases/download/${version}/${pname}-${version}.jar";
hash = "sha256-BHJqF7781Lys/LAwlW89UKStPx3hlOy9vV9Tyo2teFs=";
};
};
files = {
"plugins/velocitab/config.yml".value = {
fallback_enabled = true;
fallback_group = "default";
only_list_players_in_same_group = false;
remove_spectator_effect = true;
sort_players = false;
server_display_names = {};
};
"plugins/velocitab/tab_groups.yml".value = {
groups = [
{
name = "default";
headers = [];
footers = [];
format = "&7[%server%] &r%prefix%%username%";
servers = [];
header_footer_update_rate = 1000;
placeholder_update_rate = 1000;
}
];
};
};
};
}