summary refs log tree commit diff
path: root/nixos/modules/services/games/minecraft-server.nix
diff options
context:
space:
mode:
authorAustin Seipp <aseipp@pobox.com>2014-03-29 04:48:33 -0500
committerAustin Seipp <aseipp@pobox.com>2014-03-29 05:31:27 -0500
commit1acca1c396ca97b9ef706a66e5170341c9ec33d5 (patch)
treeb71a59a80e843cfecd036bc49bf802c0444629f9 /nixos/modules/services/games/minecraft-server.nix
parentd60af7f34dfa9caae8139179e3acc5fbe68c9549 (diff)
downloadnixlib-1acca1c396ca97b9ef706a66e5170341c9ec33d5.tar
nixlib-1acca1c396ca97b9ef706a66e5170341c9ec33d5.tar.gz
nixlib-1acca1c396ca97b9ef706a66e5170341c9ec33d5.tar.bz2
nixlib-1acca1c396ca97b9ef706a66e5170341c9ec33d5.tar.lz
nixlib-1acca1c396ca97b9ef706a66e5170341c9ec33d5.tar.xz
nixlib-1acca1c396ca97b9ef706a66e5170341c9ec33d5.tar.zst
nixlib-1acca1c396ca97b9ef706a66e5170341c9ec33d5.zip
nixos: add minecraft-server service
Signed-off-by: Austin Seipp <aseipp@pobox.com>
Diffstat (limited to 'nixos/modules/services/games/minecraft-server.nix')
-rw-r--r--nixos/modules/services/games/minecraft-server.nix51
1 files changed, 51 insertions, 0 deletions
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 <literal>25565</literal>. The server
+          data will be loaded from and saved to
+          <literal>/var/lib/minecraft</literal>.
+        '';
+      };
+
+      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}
+      '';
+    };
+  };
+}