mirror of
https://github.com/NixOS/nixpkgs.git
synced 2025-06-12 12:45:27 +03:00
69 lines
2.3 KiB
Nix
69 lines
2.3 KiB
Nix
![]() |
{ lib, pkgs, ... }:
|
||
|
{
|
||
|
name = "velocity";
|
||
|
meta = {
|
||
|
platforms = [
|
||
|
"x86_64-linux"
|
||
|
"aarch64-linux"
|
||
|
];
|
||
|
maintainers = [ lib.maintainers.Tert0 ];
|
||
|
};
|
||
|
|
||
|
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)
|
||
|
'';
|
||
|
}
|