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.
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
/exportdirectory (Prism Launcher template + per-client state) - Persistent storage on an ext4 disk labeled
titeenit
Kiosk clients (nixosConfigurations.kiosk) — netbooted machines that:
- Auto-login a
kioskuser 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
| 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 |
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 .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.
# 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-isoflake.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)