1let
2 seed = "2151901553968352745";
3 rcon-pass = "foobar";
4 rcon-port = 43000;
5in import ./make-test-python.nix ({ pkgs, ... }: {
6 name = "minecraft-server";
7 meta = with pkgs.lib.maintainers; { maintainers = [ nequissimus ]; };
8
9 nodes.server = { ... }: {
10 environment.systemPackages = [ pkgs.mcrcon ];
11
12 nixpkgs.config.allowUnfree = true;
13
14 services.minecraft-server = {
15 declarative = true;
16 enable = true;
17 eula = true;
18 serverProperties = {
19 enable-rcon = true;
20 level-seed = seed;
21 level-type = "flat";
22 generate-structures = false;
23 online-mode = false;
24 "rcon.password" = rcon-pass;
25 "rcon.port" = rcon-port;
26 };
27 };
28
29 virtualisation.memorySize = 2047;
30 };
31
32 testScript = ''
33 server.wait_for_unit("minecraft-server")
34 server.wait_for_open_port(${toString rcon-port})
35 assert "${seed}" in server.succeed(
36 "mcrcon -H localhost -P ${toString rcon-port} -p '${rcon-pass}' -c 'seed'"
37 )
38 server.succeed("systemctl stop minecraft-server")
39 '';
40})