2025-02-22 00:08:42 +01:00
|
|
|
{ lib, pkgs, ... }:
|
|
|
|
{
|
|
|
|
name = "velocity";
|
2025-05-19 01:55:26 -04:00
|
|
|
meta.maintainers = [ lib.maintainers.Tert0 ];
|
2025-02-22 00:08:42 +01:00
|
|
|
|
|
|
|
nodes.server =
|
|
|
|
{ ... }:
|
|
|
|
{
|
|
|
|
imports =
|
|
|
|
let
|
|
|
|
mkVelocityService = name: pkg: {
|
|
|
|
systemd.sockets.${name} = {
|
|
|
|
socketConfig = {
|
|
|
|
ListenFIFO = "/run/${name}.stdin";
|
|
|
|
Service = "${name}";
|
|
|
|
};
|
|
|
|
};
|
|
|
|
systemd.services.${name} = {
|
|
|
|
serviceConfig = {
|
|
|
|
ExecStart = "${pkg}/bin/velocity";
|
|
|
|
DynamicUser = true;
|
|
|
|
StateDirectory = "${name}";
|
|
|
|
WorkingDirectory = "/var/lib/${name}";
|
|
|
|
|
|
|
|
Sockets = "${name}.socket";
|
|
|
|
StandardInput = "socket";
|
|
|
|
StandardOutput = "journal";
|
|
|
|
StandardError = "journal";
|
|
|
|
};
|
|
|
|
};
|
|
|
|
};
|
|
|
|
in
|
|
|
|
[
|
|
|
|
(mkVelocityService "velocity-without-native" (
|
|
|
|
pkgs.velocity.override { withVelocityNative = false; }
|
|
|
|
))
|
|
|
|
(mkVelocityService "velocity-with-native" (pkgs.velocity.override { withVelocityNative = true; }))
|
|
|
|
];
|
|
|
|
|
|
|
|
environment.systemPackages = [ pkgs.mcstatus ];
|
|
|
|
};
|
|
|
|
|
|
|
|
testScript = ''
|
|
|
|
def test_velocity(name: str, native: bool):
|
|
|
|
server.start_job(name)
|
|
|
|
server.wait_for_unit(name);
|
|
|
|
server.wait_for_open_port(25565)
|
|
|
|
server.wait_until_succeeds(f"journalctl -b -u {name} | grep -q 'Booting up Velocity nixpkgs-${pkgs.velocity.version}...'")
|
|
|
|
connections_startup_query = "Connections will use epoll channels, libdeflate (.+) compression, OpenSSL 3.x.x (.+) ciphers" if native else "Connections will use epoll channels, Java compression, Java ciphers"
|
|
|
|
server.wait_until_succeeds(f"journalctl -b -u {name} | grep -q -E '{connections_startup_query}'")
|
|
|
|
server.wait_until_succeeds(f"journalctl -b -u {name} | grep -q 'Done ([0-9]*.[0-9]*s)!'");
|
|
|
|
|
|
|
|
_, status_result = server.execute("mcstatus localhost:25565 status")
|
|
|
|
assert "A Velocity Server" in status_result
|
|
|
|
|
|
|
|
server.execute(f"echo stop > /run/{name}.stdin")
|
|
|
|
server.wait_for_closed_port(25565);
|
|
|
|
|
|
|
|
test_velocity("velocity-without-native", False)
|
|
|
|
test_velocity("velocity-with-native", True)
|
|
|
|
'';
|
|
|
|
}
|