Skip to content

Tietokilta/titeeni-minecraft-infra

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Minecraft LAN Party Infrastructure

NixOS configurations for a Minecraft LAN party setup: a central server running a Spigot Minecraft server that also PXE-boots diskless kiosk clients over the network.

The setup was used to run the Minecraft Partybattle event at Titeenien Taistot 2026.

Architecture

Server (nixosConfigurations.server) — a single machine that runs:

  • A Minecraft Spigot server (Java 21, 2–4 GB heap)
  • Pixiecore for PXE network booting the kiosk clients
  • NFS server exporting a shared /export directory (Prism Launcher template + per-client state)
  • Persistent storage on an ext4 disk labeled titeenit

Kiosk clients (nixosConfigurations.kiosk) — netbooted machines that:

  • Auto-login a kiosk user and start an X session
  • Launch Prism Launcher in kiosk mode
  • Mount the server's NFS share for client data (each client gets an isolated directory keyed by MAC address)
  • Support NVIDIA and AMD GPUs, with PipeWire audio

Flake outputs

Output Description
nixosConfigurations.server Production server (install to disk)
nixosConfigurations.server-iso Server as a bootable ISO
nixosConfigurations.server-vm Server in a QEMU VM for testing
nixosConfigurations.kiosk Kiosk netboot image
nixosConfigurations.kiosk-vm Kiosk in a QEMU VM for testing

Setup

Server archive

The server expects a mineserver.tar.gz in the repo root containing a pre-configured Spigot server directory (with server.jar, configs, plugins, world data, etc.). On first boot, this archive is extracted to the state directory if server.jar is not already present.

The repository ships a dummy placeholder archive. Replace it with your actual server archive before deploying:

tar czf mineserver.tar.gz -C /path/to/your/server-directory .

Client template

The minecraft-client/ directory contains a Prism Launcher template that gets copied to each kiosk client on first launch via NFS. To create this template, run the kiosk VM, log into a real Microsoft/Minecraft account in Prism Launcher, set up the desired instance(s), and then copy the resulting Prism Launcher data directory back into minecraft-client/:

# 1. Build and run the kiosk VM (needs graphics)
nix build .#vm && result/bin/run-*-vm

# 2. Inside the VM: open Prism Launcher, sign in, create/configure an instance

# 3. Copy the configured Prism Launcher directory out of the VM into the repo
cp -a /path/to/vm/prism-data/ minecraft-client/

This is necessary because Prism Launcher requires an authenticated Microsoft account to launch Minecraft, and the account session must be set up interactively.

Building and testing

# Build and run the server VM
nix build .#server-vm && result/bin/run-*-vm

# Build and run the kiosk VM
nix build .#vm && result/bin/run-*-vm

# Build the server ISO
nix build .#server-iso

File structure

flake.nix          — Flake definition with all NixOS configurations
server.nix         — Server: Minecraft, Pixiecore, NFS, SSH
configuration.nix  — Kiosk client: X11, Prism Launcher, GPU, audio
disk.nix           — Persistent disk layout and state initialization
minecraft-server/  — Spigot server data (plugins, world, configs)
minecraft-client/  — Prism Launcher template for kiosk clients
mineserver.tar.gz  — Server archive (dummy placeholder in repo)

About

Infrastructure used for the Minecraft event at Titeenien Taistot 2026

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages