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