Added DB to Minecraft-Server, Added Plugins, Added Config-Files
Some checks failed
/ Check Nix Flake (push) Has been cancelled

This commit is contained in:
Kaybee 2024-12-14 02:29:16 +01:00
parent 6ef2d877db
commit d6db44884c
Signed by: kb01
SSH key fingerprint: SHA256:kF6CmkcOkKRzXK9JFMTQPK6b5gf5tHcJR1n2IS/Bj7M
4 changed files with 102 additions and 16 deletions

View file

@ -0,0 +1,20 @@
{
inputs,
config,
lib,
pkgs,
system,
...
}:
let
cfg = config.services.minecraft;
in
{
config = lib.mkIf (cfg.enable && (cfg.servers.velocity.enable || cfg.servers.survival.enable)) {
services.mysql = {
package = pkgs.mariadb;
enable = true;
settings.mysqld.port = 3459;
};
};
}

View file

@ -8,13 +8,14 @@ in
./vanilla-test.nix ./vanilla-test.nix
./survival.nix ./survival.nix
./velocity.nix ./velocity.nix
./database.nix
]; ];
options.services.minecraft = { options.services.minecraft = {
enable = lib.mkOption { enable = lib.mkOption {
type = with lib.types; uniq bool; type = with lib.types; uniq bool;
default = false; default = false;
description = "Enable minecraft server"; description = "Enable kBs Minecraft Servers";
}; };
servers.vanilla.enable = lib.mkOption { servers.vanilla.enable = lib.mkOption {
type = with lib.types; uniq bool; type = with lib.types; uniq bool;
@ -34,6 +35,9 @@ in
}; };
config = lib.mkIf cfg.enable { config = lib.mkIf cfg.enable {
nixpkgs.config.allowUnfreePredicate = pkg: builtins.elem (lib.getName pkg) [
"minecraft-server"
];
services.minecraft-servers = { services.minecraft-servers = {
enable = true; enable = true;
eula = true; eula = true;

View file

@ -11,27 +11,37 @@ let
in in
{ {
config = lib.mkIf (cfg.enable && cfg.servers.survival.enable) { config = lib.mkIf (cfg.enable && cfg.servers.survival.enable) {
nixpkgs.config.allowUnfreePredicate = pkg: builtins.elem (lib.getName pkg) [
"minecraft-server"
];
services.minecraft-servers.servers."survival" = { services.minecraft-servers.servers."survival" = {
enable = true; enable = true;
autoStart = true; autoStart = true;
enableReload = true; enableReload = true;
package = pkgs.paperServers.paper-1_21_3-build_25; package = pkgs.paperServers.paper-1_21_4;
whitelist = {
kB01guy = "1ff88b66-beda-4386-85b9-a00a5c27437a";
};
serverProperties = { serverProperties = {
online-mode = false;
server-ip = "127.0.0.1";
server-port = 49333;
difficulty = 3; difficulty = 3;
gamemode = 1; gamemode = 1;
max-players = 5; max-players = 5;
}; };
openFirewall = false; # Should use Velocity Player Proxy openFirewall = false; # Should use Velocity Player Proxy
serverProperties.server-port = 41000;
# Add Plugins
symlinks = { symlinks = {
"plugins/LuckPerms.jar" = pkgs.fetchurl { url = "https://download.luckperms.net/1561/bukkit/loader/LuckPerms-Bukkit-5.4.146.jar"; sha512 = "3yx163xas6g30crj41ad8j9gh55ygfh7vbaq12hlm4rxf1npnxh95rhn2nx0qcjd4nl1rz8f8pbvmlh6ka32ahvn6x9rxsc8g6v24jz"; }; "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
}; };
}; };
}; };

View file

@ -11,20 +11,72 @@ let
in in
{ {
config = lib.mkIf (cfg.enable && cfg.servers.velocity.enable) { config = lib.mkIf (cfg.enable && cfg.servers.velocity.enable) {
nixpkgs.config.allowUnfreePredicate = pkg: builtins.elem (lib.getName pkg) [
"minecraft-server"
];
# Configure Server
services.minecraft-servers.servers."velocity" = { services.minecraft-servers.servers."velocity" = {
enable = true; enable = true;
autoStart = true; autoStart = true;
enableReload = true; enableReload = true;
stopCommand = "end";
package = pkgs.velocityServers.velocity; package = pkgs.velocityServers.velocity;
openFirewall = true;
symlinks = { symlinks = {
"plugins/LuckPerms.jar" = pkgs.fetchurl { url = "https://download.luckperms.net/1561/velocity/LuckPerms-Velocity-5.4.146.jar"; sha512 = "1xk7fwb5z3bz0x3hpmnyg7cldzrf9anpp4aavq5s69lz2idzxvkjn9b5iv2yy22p17k26lqwfn8n9ivi59srz2hvgdb1jibqg5d5hj5"; }; "plugins/LuckPerms.jar" = pkgs.fetchurl {
url = "https://download.luckperms.net/1567/velocity/LuckPerms-Velocity-5.4.150.jar";
sha512 = "3dr69g2fbav3if44nmifgz7hn86gdf62hcks92kkvwxf4xa3z7x615j426kgljyhgy84hf75wzpai258mg7dj9x17vpkn634kkzwmw6";
};
"plugins/Geyser-Velocity.jar" = pkgs.fetchurl {
url = "https://download.geysermc.org/v2/projects/geyser/versions/2.6.0/builds/730/downloads/velocity";
sha512 = "3shnm8q8vq8j44xxg4qwqwalw6ml9nkzfrzvv8pkblkjp25nfk3h14b4y9vdim1sa2a18mkf8hmhb16g1mka2rh7l0z0yg4kh3lj2i0";
};
"plugins/floodgate-velocity.jar" = pkgs.fetchurl {
url = "https://download.geysermc.org/v2/projects/floodgate/versions/2.2.3/builds/114/downloads/velocity";
sha512 = "1k7qban3gar0fxxi5kp5i8d72k6ck65cvsfbg4nh8bz40jwqn35fx9gj3zbb06x5l8sg6qxl7w2nsn3jan4hjq7m5lwf2c1l1mjaw81";
};
"plugins/LibreLogin.jar" = pkgs.fetchurl {
url = "https://modrinth.com/plugin/libre-login/version/0.23.0";
sha512 = "1wrnp82vv47hhvjp1lxdndmngndykshi7iindnpg61j0v7i8bdgr9rk5qvanvw95gcj59cnhxdmjynq8fm127n4gv53acdidlxz39sd";
};
};
files = {
"velocity.toml".value = {
config-version = "2.7"; # NEVER change this!
bind = "0.0.0.0:25565";
online-mode = false;
player-info-forwarding-mode = "modern";
enable-player-address-logging = false;
servers.lobby = "";
servers.survival = "localhost:${toString config.services.minecraft-servers.servers."survival".serverProperties.server-port}";
servers.try = [
"lobby"
"survival"
];
advanced.tcp-fast-open = true;
};
}; };
}; };
networking.firewall.allowedTCPPorts = [ 25565 ];
# Configure Plugin Luckperms
services.minecraft-servers.servers."velocity".files."plugins/luckperms/config.yml".value = {
storage-method = "mariadb";
data.address = "localhost:${toString config.services.mysql.settings.mysqld.port}";
data.database = "luckperms";
data.username = "luckperms";
data.password = "";
};
services.mysql = {
ensureDatabases = [ "luckperms" ];
ensureUsers = [
{
name = "luckperms";
ensurePermissions = {
"luckperms.*" = "ALL PRIVILEGES";
};
}
];
};
# services.mysqlBackup.databases = [ "luckperms" ]; # Add Luckperms Database to Backups
}; };
} }