42 lines
1.1 KiB
Nix
42 lines
1.1 KiB
Nix
{ config, pkgs, ... }:
|
|
|
|
{
|
|
virtualisation.podman = {
|
|
enable = true;
|
|
autoPrune.enable = true;
|
|
dockerCompat = true; # optional; lets you use `docker` CLI
|
|
};
|
|
|
|
systemd.services.minecraft-container = {
|
|
description = "Minecraft Server Container (GraalVM JVM 21)";
|
|
after = [ "network-online.target" ];
|
|
wants = [ "network-online.target" ];
|
|
serviceConfig = {
|
|
ExecStart = ''
|
|
${pkgs.podman}/bin/podman run \
|
|
--rm \
|
|
--name minecraft-server \
|
|
-v /var/lib/minecraft:/data \
|
|
-p 25565:25565 \
|
|
-p 24454:24454/udp \
|
|
ghcr.io/graalvm/graalvm-community:8 \
|
|
/data/run.sh
|
|
'';
|
|
ExecStop = "${pkgs.podman}/bin/podman stop minecraft-server";
|
|
Restart = "always";
|
|
RestartSec = "10s";
|
|
};
|
|
|
|
# Ensure the directory exists
|
|
preStart = ''
|
|
mkdir -p /var/lib/minecraft
|
|
'';
|
|
wantedBy = [ "multi-user.target" ];
|
|
};
|
|
|
|
# Give Podman permission to access persistent storage
|
|
systemd.tmpfiles.rules = [
|
|
"d /var/lib/minecraft 0755 root root"
|
|
];
|
|
}
|