release: yet another Nix Minecraft Module

This commit is contained in:
Peritia 2025-09-26 11:42:25 +02:00
parent 9fdb947c2a
commit 839bb7de43
13 changed files with 1621 additions and 1 deletions

119
README.md
View file

@ -1 +1,118 @@
# Nyx-Minecraft
# Yet another Nix Minecraft module
This NixOS module extends [Infinidoge/nix-minecraft](https://github.com/Infinidoge/nix-minecraft) with additional features for managing multiple Minecraft servers declaratively.
## Features
- Declarative configuration of multiple Minecraft servers
- Control over memory, operators, whitelist, symlinks, and server properties
- Automatic **systemd services** and **timers** for scheduled jobs
- Prebuilt helper scripts for administration:
- `rcon`
- `query`
- `backup`
- `say`
- `backup-routine`
- Support for:
- Backups
- Logging
- Scheduled maintenance tasks
## Helper Scripts
For each server defined, helper scripts are generated into your system `$PATH`.
They follow the naming convention:
```bash
minecraft-<SERVERNAME>-<TASK>
# Example:
minecraft-myserver-say "yellow" "hello"
```
You can inspect the generated scripts under: `minecraft/Scripts`
## Configuration Options
```nix
nyx-minecraft.service = {
enable = true; # Enable the enhanced servers (boolean)
eula = true; # I can't accept this for you
user = "minecraft"; # System user that owns/runs servers - DON'T CHANGE THIS
group = "minecraft"; # System group that owns/runs servers - DON'T CHANGE THIS
dataDir = "/srv/minecraft"; # Directory for Minecraft server data
servers = {
myserver = {
enable = true;
memory.min = "2G"; # JVM minimum memory
memory.max = "4G"; # JVM maximum memory
# This will be directly exposed to [Nix-Minecraft](https://github.com/Infinidoge/nix-minecraft/tree/master?tab=readme-ov-file#packages)
# Check their documentation for available options.
package = pkgs.minecraftServers.vanilla-1_20_4;
autoStart = true; # Start server on boot
whitelist = { # Declarative whitelist (UUIDs per user)
alice = "aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee";
bob = "ffffffff-1111-2222-3333-444444444444";
};
operators = { # Declarative operator list
alice = {
uuid = "aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee";
level = 4;
};
};
properties = { # Declarative `server.properties`
serverPort = 25565;
motd = "Welcome to my NixOS server!";
maxPlayers = 10;
};
schedules.backup = { # Systemd timer + service job
timer = "daily";
code = "minecraft-myserver-backup";
};
};
};
};
```
For more details, refer to the [official nix-minecraft documentation](https://github.com/Infinidoge/nix-minecraft), since most arguments are passed through.
### Server Options
- **memory.min / memory.max** — JVM memory allocation (e.g. `"2G"`)
- **package** — Minecraft server package (default: `pkgs.minecraft-server`)
- **autoStart** — Start on boot (`true` / `false`)
- **whitelist** — Declarative whitelist keyed by username with UUID
- **operators** — Operator list with permission levels (`04`)
- **symlinks** — Files/packages symlinked into server data directory
- **properties** — Declarative `server.properties` values (ports, motd, difficulty, etc.)
- **schedules** — Declarative scheduled jobs (with systemd timers and services)
## Examples
See the examples in:
- `./example/full`
- `./example/small`
## Warnings
- **Use at your own risk** — verify backups and test schedules before relying on them
- Pin a known working version for stable usage
- Perform **manual backups before updates**
## Contributing
I am happy to help with issues and welcome pull requests for improvements.
Since I use this module personally, you can expect frequent updates.