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

@ -26,7 +26,7 @@ in
macUser = "02:00:00:00:00:41";
ip = "192.168.50.141";
gate = "192.168.50.1";
ssh = 2401;
ssh = 2410;
port = 43000;
};
paths = {
@ -53,7 +53,7 @@ in
macUser = "02:00:00:00:00:42";
ip = "192.168.50.142";
gate = "192.168.50.1";
ssh = 2402;
ssh = 2411;
port = 43001;
};
paths = {

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";
};

View file

@ -1,105 +1,11 @@
{
flake,
pkgs,
...
}:
let
inherit (import ../../../helpers.nix { inherit flake; }) labHelpers;
inherit (labHelpers) mntPath;
inherit (import ../config { inherit flake pkgs; }) minecraftVM;
inherit (flake.config.services) instances;
inherit (flake.config.people) user0;
minecraftNick01 =
importList =
let
interfaceCfg = instances.minecraft.interfaces.interface0;
content = builtins.readDir ./.;
dirContent = builtins.filter (n: content.${n} == "directory") (builtins.attrNames content);
in
minecraftVM {
user = user0;
ip = interfaceCfg.microvm.ip;
mac = interfaceCfg.microvm.mac;
userMac = interfaceCfg.microvm.macUser;
ssh = interfaceCfg.microvm.ssh;
port = interfaceCfg.microvm.port;
mnt = mntPath;
worldNumber = "01";
config = {
allow-flight = false;
allow-nether = true;
difficulty = 2;
enable-command-block = false;
enable-rcon = true;
enable-status = true;
force-gamemode = true;
gamemode = 0;
generate-structures = true;
hardcore = false;
hide-online-players = false;
level-name = "Brix on Nix";
level-seed = "9064150133272194";
max-players = 10;
max-world-size = 64000000;
motd = "A cool Minecraft server powered by NixOS";
online-mode = true;
pvp = true;
spawn-animals = true;
spawn-monsters = true;
spawn-npcs = true;
spawn-protection = 16;
view-distance = 32;
white-list = true;
};
whitelist = {
Hefty_Chungus = "b75a9816-d408-4c54-b226-385b59ea1cb3";
Hefty_Chungus_Jr = "c3bf8cac-e953-4ea4-ae5f-7acb92a51a85";
EclipseMoon01 = "adef4af7-d8c6-4627-b492-e990ea1bb993";
Fallaryn = "d8baa117-ab58-4b07-92a5-48fb1978eb49";
};
};
minecraftNick02 =
let
interfaceCfg = instances.minecraft.interfaces.interface1;
in
minecraftVM {
user = user0;
ip = interfaceCfg.microvm.ip;
mac = interfaceCfg.microvm.mac;
userMac = interfaceCfg.microvm.macUser;
ssh = interfaceCfg.microvm.ssh;
port = interfaceCfg.microvm.port;
mnt = mntPath;
worldNumber = "02";
config = {
allow-flight = false;
allow-nether = true;
difficulty = 2;
enable-command-block = false;
enable-rcon = true;
enable-status = true;
force-gamemode = true;
gamemode = 0;
generate-structures = true;
hardcore = false;
hide-online-players = false;
level-name = "Cuddle Cubes";
level-seed = "-2332803749585407299";
max-players = 10;
max-world-size = 64000000;
motd = "A cool Minecraft server powered by NixOS";
online-mode = true;
pvp = true;
spawn-animals = true;
spawn-monsters = true;
spawn-npcs = true;
spawn-protection = 16;
view-distance = 32;
white-list = true;
};
whitelist = {
Hefty_Chungus = "b75a9816-d408-4c54-b226-385b59ea1cb3";
Fallaryn = "d8baa117-ab58-4b07-92a5-48fb1978eb49";
};
};
map (name: ./. + "/${name}") dirContent;
in
minecraftNick01 // minecraftNick02
{
imports = importList;
}

View file

@ -0,0 +1,62 @@
{
flake,
pkgs,
lib,
...
}:
let
inherit (import ../../../../helpers.nix { inherit flake; }) labHelpers;
inherit (labHelpers) mntPath;
inherit (import ../../config { inherit flake pkgs; }) minecraftVM;
inherit (flake.config.services) instances;
inherit (flake.config.people) user0;
minecraftNick01 =
let
interfaceCfg = instances.minecraft.interfaces.interface0;
in
minecraftVM {
user = user0;
ip = interfaceCfg.microvm.ip;
mac = interfaceCfg.microvm.mac;
userMac = interfaceCfg.microvm.macUser;
ssh = interfaceCfg.microvm.ssh;
port = interfaceCfg.microvm.port;
mnt = mntPath;
worldNumber = "01";
config = {
allow-flight = false;
allow-nether = true;
difficulty = 2;
enable-command-block = false;
enable-rcon = true;
enable-status = true;
force-gamemode = true;
gamemode = 0;
generate-structures = true;
hardcore = false;
hide-online-players = false;
level-name = "Brix on Nix";
level-seed = "9064150133272194";
max-players = 10;
max-world-size = 64000000;
motd = "A cool Minecraft server powered by NixOS";
online-mode = true;
pvp = true;
spawn-animals = true;
spawn-monsters = true;
spawn-npcs = true;
spawn-protection = 16;
view-distance = 32;
white-list = true;
};
whitelist = {
Hefty_Chungus = "b75a9816-d408-4c54-b226-385b59ea1cb3";
Hefty_Chungus_Jr = "c3bf8cac-e953-4ea4-ae5f-7acb92a51a85";
EclipseMoon01 = "adef4af7-d8c6-4627-b492-e990ea1bb993";
Fallaryn = "d8baa117-ab58-4b07-92a5-48fb1978eb49";
};
};
in
minecraftNick01

View file

@ -0,0 +1,59 @@
{
flake,
pkgs,
lib,
...
}:
let
inherit (import ../../../../helpers.nix { inherit flake; }) labHelpers;
inherit (labHelpers) mntPath;
inherit (import ../../config { inherit flake pkgs; }) minecraftVM;
inherit (flake.config.services) instances;
inherit (flake.config.people) user0;
minecraftNick02 =
let
interfaceCfg = instances.minecraft.interfaces.interface1;
in
minecraftVM {
user = user0;
ip = interfaceCfg.microvm.ip;
mac = interfaceCfg.microvm.mac;
userMac = interfaceCfg.microvm.macUser;
ssh = interfaceCfg.microvm.ssh;
port = interfaceCfg.microvm.port;
mnt = mntPath;
worldNumber = "02";
config = {
allow-flight = false;
allow-nether = true;
difficulty = 2;
enable-command-block = false;
enable-rcon = true;
enable-status = true;
force-gamemode = true;
gamemode = 0;
generate-structures = true;
hardcore = false;
hide-online-players = false;
level-name = "Cuddle Cubes";
level-seed = "-2332803749585407299";
max-players = 10;
max-world-size = 64000000;
motd = "A cool Minecraft server powered by NixOS";
online-mode = true;
pvp = true;
spawn-animals = true;
spawn-monsters = true;
spawn-npcs = true;
spawn-protection = 16;
view-distance = 32;
white-list = true;
};
whitelist = {
Hefty_Chungus = "b75a9816-d408-4c54-b226-385b59ea1cb3";
Fallaryn = "d8baa117-ab58-4b07-92a5-48fb1978eb49";
};
};
in
minecraftNick02