diff --git a/nixos/modules/misc/ids.nix b/nixos/modules/misc/ids.nix
index fc05584e2565..9c413e36d568 100644
--- a/nixos/modules/misc/ids.nix
+++ b/nixos/modules/misc/ids.nix
@@ -122,6 +122,7 @@
notbit = 111;
ngircd = 112;
btsync = 113;
+ minecraft = 114;
# When adding a uid, make sure it doesn't match an existing gid.
diff --git a/nixos/modules/module-list.nix b/nixos/modules/module-list.nix
index e59b0ff5ac2c..652a99e7c5a6 100644
--- a/nixos/modules/module-list.nix
+++ b/nixos/modules/module-list.nix
@@ -96,6 +96,7 @@
./services/databases/postgresql.nix
./services/databases/virtuoso.nix
./services/games/ghost-one.nix
+ ./services/games/minecraft-server.nix
./services/hardware/acpid.nix
./services/hardware/amd-hybrid-graphics.nix
./services/hardware/bluetooth.nix
diff --git a/nixos/modules/services/games/minecraft-server.nix b/nixos/modules/services/games/minecraft-server.nix
new file mode 100644
index 000000000000..ac70bc53473d
--- /dev/null
+++ b/nixos/modules/services/games/minecraft-server.nix
@@ -0,0 +1,51 @@
+{ config, pkgs, ... }:
+
+with pkgs.lib;
+
+let
+ cfg = config.services.minecraft-server;
+in
+{
+ options = {
+ services.minecraft-server = {
+ enable = mkOption {
+ type = types.bool;
+ default = false;
+ description = ''
+ If enabled, start a Minecraft Server. The listening port for
+ the server is always 25565. The server
+ data will be loaded from and saved to
+ /var/lib/minecraft.
+ '';
+ };
+
+ jvmOpts = mkOption {
+ type = types.str;
+ default = "-Xmx2048M -Xms2048M";
+ description = "JVM options for the Minecraft Service.";
+ };
+ };
+ };
+
+ config = mkIf cfg.enable {
+ users.extraUsers.minecraft = {
+ description = "Minecraft Server Service user";
+ home = "/var/lib/minecraft";
+ createHome = true;
+ uid = config.ids.uids.minecraft;
+ };
+
+ systemd.services.minecraft-server = {
+ description = "Minecraft Server Service";
+ wantedBy = [ "multi-user.target" ];
+ after = [ "network.target" ];
+
+ serviceConfig.Restart = "always";
+ serviceConfig.User = "minecraft";
+ script = ''
+ cd /var/lib/minecraft
+ exec ${pkgs.minecraft-server}/bin/minecraft-server ${cfg.jvmOpts}
+ '';
+ };
+ };
+}