100 lines
2.7 KiB
Nix
100 lines
2.7 KiB
Nix
{
|
|
config,
|
|
lib,
|
|
pkgs,
|
|
inputs,
|
|
...
|
|
}:
|
|
let
|
|
# Create pkgs with nix-minecraft overlay and unfree packages allowed
|
|
testPkgs = import inputs.nixpkgs {
|
|
system = pkgs.system;
|
|
config.allowUnfreePredicate = pkg: builtins.elem (lib.getName pkg) [ "minecraft-server" ];
|
|
overlays = [
|
|
inputs.nix-minecraft.overlay
|
|
(import ../overlays.nix)
|
|
];
|
|
};
|
|
|
|
# Create a wrapper module that imports the actual minecraft service
|
|
minecraftService =
|
|
{ config, ... }:
|
|
{
|
|
imports = [
|
|
(import ../services/minecraft.nix {
|
|
inherit lib config;
|
|
pkgs = testPkgs;
|
|
service_configs = {
|
|
minecraft = {
|
|
server_name = "main";
|
|
parent_dir = "/var/lib/minecraft";
|
|
};
|
|
https = {
|
|
domain = "test.local";
|
|
};
|
|
};
|
|
username = "testuser";
|
|
})
|
|
];
|
|
# Override nixpkgs config to prevent conflicts in test environment
|
|
nixpkgs.config = lib.mkForce {
|
|
allowUnfreePredicate = pkg: builtins.elem (lib.getName pkg) [ "minecraft-server" ];
|
|
};
|
|
};
|
|
in
|
|
testPkgs.testers.runNixOSTest {
|
|
name = "minecraft server startup test";
|
|
|
|
nodes.machine =
|
|
{ ... }:
|
|
{
|
|
imports = [
|
|
inputs.nix-minecraft.nixosModules.minecraft-servers
|
|
minecraftService
|
|
];
|
|
|
|
# Enable caddy service (required by minecraft service)
|
|
services.caddy.enable = true;
|
|
|
|
# Disable the ZFS mount dependency service in test environment
|
|
systemd.services."minecraft-server-main_mounts".enable = lib.mkForce false;
|
|
|
|
# Remove service dependencies that require ZFS
|
|
systemd.services.minecraft-server-main = {
|
|
wants = lib.mkForce [ ];
|
|
after = lib.mkForce [ ];
|
|
requires = lib.mkForce [ ];
|
|
};
|
|
|
|
# Test-specific overrides only - reduce memory for testing
|
|
services.minecraft-servers.servers.main.jvmOpts = lib.mkForce "-Xmx1G -Xms1G";
|
|
|
|
# Create test user
|
|
users.users.testuser = {
|
|
isNormalUser = true;
|
|
uid = 1000;
|
|
extraGroups = [ "minecraft" ];
|
|
};
|
|
};
|
|
|
|
testScript = ''
|
|
start_all()
|
|
machine.wait_for_unit("multi-user.target")
|
|
|
|
# Wait for minecraft service to be available
|
|
machine.wait_for_unit("minecraft-server-main.service")
|
|
|
|
# Check that the service is active and not failed
|
|
machine.succeed("systemctl is-active minecraft-server-main.service")
|
|
|
|
# Wait for the server to fully start up - minecraft with mods can take longer
|
|
machine.sleep(60)
|
|
|
|
# Verify the service hasn't crashed after startup
|
|
machine.succeed("systemctl is-active minecraft-server-main.service")
|
|
|
|
# Verify the server port is listening
|
|
machine.wait_for_open_port(25565)
|
|
'';
|
|
}
|