From 4dca730684a1af360e7f153f0159c505288974f6 Mon Sep 17 00:00:00 2001 From: Nick Date: Thu, 11 Dec 2025 02:12:55 -0600 Subject: [PATCH] feat: fixed minecraft worlds --- modules/config/instances/config/minecraft.nix | 4 +- .../guests/minecraft/config/default.nix | 18 +-- .../minecraft/minecraftCeres/default.nix | 108 ++---------------- .../minecraftCeres/world01/default.nix | 62 ++++++++++ .../minecraftCeres/world02/default.nix | 59 ++++++++++ secrets/secrets.yaml | 8 +- 6 files changed, 144 insertions(+), 115 deletions(-) create mode 100755 modules/nixos/homelab/guests/minecraft/minecraftCeres/world01/default.nix create mode 100755 modules/nixos/homelab/guests/minecraft/minecraftCeres/world02/default.nix diff --git a/modules/config/instances/config/minecraft.nix b/modules/config/instances/config/minecraft.nix index 9b7553b..6440332 100755 --- a/modules/config/instances/config/minecraft.nix +++ b/modules/config/instances/config/minecraft.nix @@ -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 = { diff --git a/modules/nixos/homelab/guests/minecraft/config/default.nix b/modules/nixos/homelab/guests/minecraft/config/default.nix index 9d516b4..791f5e3 100755 --- a/modules/nixos/homelab/guests/minecraft/config/default.nix +++ b/modules/nixos/homelab/guests/minecraft/config/default.nix @@ -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"; }; diff --git a/modules/nixos/homelab/guests/minecraft/minecraftCeres/default.nix b/modules/nixos/homelab/guests/minecraft/minecraftCeres/default.nix index 6d3fcca..da65bd2 100755 --- a/modules/nixos/homelab/guests/minecraft/minecraftCeres/default.nix +++ b/modules/nixos/homelab/guests/minecraft/minecraftCeres/default.nix @@ -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; +} diff --git a/modules/nixos/homelab/guests/minecraft/minecraftCeres/world01/default.nix b/modules/nixos/homelab/guests/minecraft/minecraftCeres/world01/default.nix new file mode 100755 index 0000000..f6f7a50 --- /dev/null +++ b/modules/nixos/homelab/guests/minecraft/minecraftCeres/world01/default.nix @@ -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 diff --git a/modules/nixos/homelab/guests/minecraft/minecraftCeres/world02/default.nix b/modules/nixos/homelab/guests/minecraft/minecraftCeres/world02/default.nix new file mode 100755 index 0000000..1988bfc --- /dev/null +++ b/modules/nixos/homelab/guests/minecraft/minecraftCeres/world02/default.nix @@ -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 diff --git a/secrets/secrets.yaml b/secrets/secrets.yaml index 91a8cd7..b4d4268 100755 --- a/secrets/secrets.yaml +++ b/secrets/secrets.yaml @@ -24,8 +24,8 @@ forgejo: zookeeper: boon-env: ENC[AES256_GCM,data:3aOlOkYHxpao4/+Ubud4LfyZ3yQonN0FtHEYvQHEPNjTcqJiltuXrRr0ZaJ7RwY+A/IunuZVhrjngCBRj+TWBZZ2i+uaf0BEuA==,iv:53H5+rcRIui2d71K3QTj5LYg/ae4TGOFe96t2zxQh2o=,tag:vR3IOm2XFmODLQZDTlY1zw==,type:str] minecraft: - nick-world01: ENC[AES256_GCM,data:skiM+L/uEEnst0pCDzB5XaHnLpWrLQBXuQ==,iv:CnlXwpB4paDQSaC2W9uQRTc2rgqCo6QTGC4SsYAMw6Y=,tag:D2r2X6flowP7tjuX74KzRg==,type:str] - nick-world02: ENC[AES256_GCM,data:tEh+uThkn8VczSjviU58/vBUmyKBfiA7tnYiBsIlgjSb,iv:yfQvffZ3AlT4lpfEkBT5gVacogaQoIZSim+gpoD7LkU=,tag:E7matzOY08rapIxaW9lOdg==,type:str] + world01: ENC[AES256_GCM,data:duQDeBUaPup97c/hKMhjP2kj8EJRPNGQfTyUHoeNJ6sQ,iv:sBKY7y5TCrYjikWJfOZREMDmVWNCPqe4x5urpdP5UvA=,tag:ZzT5o5DnLjBSiCB8VHHCbg==,type:str] + world02: ENC[AES256_GCM,data:3t3TDnUD6wpAJonMZ16umnHY67srbEpLAvNaIW29reE7,iv:1SnL/e+NO+mSxQbtRjjTS81Mpcr4+psiw+2hKoXxeVE=,tag:NlnqySPD3CAUI2rFAo1mbA==,type:str] vaultwarden: nick-env: ENC[AES256_GCM,data:lG7pqpLJ7OsFZhWCJcPnvDxkR4Ob78buazUeLWlRSAPYEv8KarymYduecJNWCZUjUlysoU5YrHaat8tny+Vl2rYdef8oPfqlf7fITofsdmjHhAGUBJEEVQWLyEXqrEebEyeNKZwI+u8=,iv:SNptt0CPcSCTs6AAWLcC+U0/94oQapqmT1K8ZN/bIfM=,tag:2/1A+DwuWOIr0eoJmZTnwA==,type:str] project-env: ENC[AES256_GCM,data:WPn7jfCTsG67AIz4wawJeThK4kzMRaq6aPQ2W1Pcc2afNXtCWe0f9JuzH9ld6zgiO2wDu1SHQBT2Aagdt4vop/mBDq15YnpzEL30afiRtFjKJPu5BxMU9mEjerE=,iv:vVVmN6Tx1tNUODdb+6lz2L1cnLHwUwsETb3WMCKb2rY=,tag:twOhJmx/B+k4Zqb566KKCw==,type:str] @@ -89,7 +89,7 @@ sops: bXBOa1VSakoyaWxpODJEOU11QUZCaUEK8Ch9Ten3DdrPHF1DTH2qei85AlHUOaLD aNfzakake7ej+MxJYdKEU0bcWofNMKzIlZa2uM10KZSENDP8d8qlig== -----END AGE ENCRYPTED FILE----- - lastmodified: "2025-12-11T06:23:26Z" - mac: ENC[AES256_GCM,data:VrgQfX3d83bU2pF5XCj/el8wKa/9rYTWEDy2ALFOc6dmMpV9zFNlnld4lJAyms9MfkXXxG2oLv5flT8NN+JAy0Wr8tEFyS2hUOJ8Q/l1GEwuf8pqdafzKuG4VaeViBC7oIcPM3kiQHEHiNg3GUKynEUl9/eiKzU7Y20qLvUQDcc=,iv:phTXlKjFryRwUnZARtsdoTrK5bfmI3NC7qPvFXezfpc=,tag:3I3/QvdREv+1ZLOhMOJV1A==,type:str] + lastmodified: "2025-12-11T06:59:23Z" + mac: ENC[AES256_GCM,data:xGDaLeNV+YTJmX/v8WgRDPn683a8gfxSmE/Le+c9AB8VQfq+mKbqjz4DdtQ9TSdNz65BIjV1GCQJ1jsSxfqmJJaQJkVCgWCI+sKby/Qkpbjn+3xhMxWCbgI5kxasDGYHOXlcz5L4IXUg1pRIHQwuZjlA4q7H7fKUHim6UnUZzQ8=,iv:zywKqa6OWVb4TFhMAoHNasbkJdb9fLttGXCwGS+NzOE=,tag:7Vs8K3XeiFM6lNOTUDY67g==,type:str] unencrypted_suffix: _unencrypted version: 3.11.0