feat: fixed minecraft worlds

This commit is contained in:
Nick 2025-12-11 02:12:55 -06:00
parent 2b1a44d591
commit 4dca730684
6 changed files with 144 additions and 115 deletions

View file

@ -4,9 +4,8 @@
}:
let
inherit (flake.config.people) user0;
serviceCfg = {
name = "minecraft";
};
inherit (flake.config.services) instances;
serviceCfg = instances.minecraft;
in
{
minecraftVM =
@ -38,7 +37,7 @@ in
openFirewall = true;
declarative = true;
serverProperties = {
"rcon.password" = "/etc/${serviceCfg.name}-secrets/${user}-world${worldNumber}";
"rcon.password" = "/etc/${serviceCfg.name}-secrets/world${worldNumber}";
server-port = port;
}
// config;
@ -69,7 +68,7 @@ in
};
script = ''
mkdir -p /etc/${serviceCfg.name}-secrets
cp /run/secrets/${user}-world${worldNumber} /etc/${serviceCfg.name}-secrets/${user}-world${worldNumber}
cp /run/secrets/world${worldNumber} /etc/${serviceCfg.name}-secrets/world${worldNumber}
chmod 755 /etc/${serviceCfg.name}-secrets
chmod 644 /etc/${serviceCfg.name}-secrets/*
'';
@ -97,6 +96,7 @@ in
};
tmpfiles.rules = [
"d /var/lib/${serviceCfg.name} 0755 ${serviceCfg.name} ${serviceCfg.name} -"
"Z /var/lib/${serviceCfg.name} 0755 ${serviceCfg.name} ${serviceCfg.name} -"
];
};
microvm = {
@ -106,7 +106,7 @@ in
interfaces = [
{
type = "tap";
id = "vm-mc${worldNumber}-${user}";
id = "vm-mc-${worldNumber}";
mac = mac;
}
{
@ -133,7 +133,7 @@ in
mountPoint = "/var/lib/${serviceCfg.name}";
proto = "virtiofs";
source = "${mnt}/${serviceCfg.name}/world${worldNumber}";
tag = "${serviceCfg.name}_${user}_data";
tag = "${serviceCfg.name}_mc${worldNumber}_data";
}
{
mountPoint = "/run/secrets";
@ -150,10 +150,12 @@ in
systemd.tmpfiles.rules = [
"d ${mnt}/${serviceCfg.name} 0751 microvm wheel - -"
"d ${mnt}/${serviceCfg.name}/world${worldNumber} 0751 microvm wheel - -"
"Z ${mnt}/${serviceCfg.name}/world${worldNumber} 0755 microvm wheel - -"
];
sops.secrets = {
"${serviceCfg.name}/${user}-world${worldNumber}" = {
"${serviceCfg.name}/world${worldNumber}" = {
owner = "root";
mode = "0600";
};