Skip to content

Commit cabed61

Browse files
committed
Add a Minecraft server
This server now hosts a Minecraft server in the local network.
1 parent b9c75f1 commit cabed61

File tree

4 files changed

+152
-7
lines changed

4 files changed

+152
-7
lines changed

flake.lock

Lines changed: 89 additions & 3 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

flake.nix

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,15 +4,14 @@
44
inputs = {
55
nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable";
66
sops-nix.url = "github:Mic92/sops-nix";
7+
nix-minecraft.url = "github:Infinidoge/nix-minecraft";
78
};
89

9-
outputs =
10-
inputs@{ self, nixpkgs, ... }:
10+
outputs = inputs@{ self, nixpkgs, ... }:
1111
let
1212
system = "x86_64-linux";
1313
pkgs = nixpkgs.legacyPackages.${system};
14-
in
15-
{
14+
in {
1615
# The itx server hosting most of my homelab.
1716
nixosConfigurations.itxserver = nixpkgs.lib.nixosSystem {
1817
specialArgs = { inherit inputs; };

hosts/itxserver/configuration.nix

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@ in
3030
../../modules/containers/homeassistant.nix
3131
../../modules/containers/plex.nix
3232
../../modules/containers/freshrss.nix
33+
../../modules/other/minecraft-server.nix
3334
# Any other modules:
3435
inputs.sops-nix.nixosModules.sops
3536
];

modules/other/minecraft-server.nix

Lines changed: 59 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,59 @@
1+
# ███╗ ███╗██╗███╗ ██╗███████╗ ██████╗██████╗ █████╗ ███████╗████████╗
2+
# ████╗ ████║██║████╗ ██║██╔════╝██╔════╝██╔══██╗██╔══██╗██╔════╝╚══██╔══╝
3+
# ██╔████╔██║██║██╔██╗ ██║█████╗ ██║ ██████╔╝███████║█████╗ ██║
4+
# ██║╚██╔╝██║██║██║╚██╗██║██╔══╝ ██║ ██╔══██╗██╔══██║██╔══╝ ██║
5+
# ██║ ╚═╝ ██║██║██║ ╚████║███████╗╚██████╗██║ ██║██║ ██║██║ ██║
6+
# ╚═╝ ╚═╝╚═╝╚═╝ ╚═══╝╚══════╝ ╚═════╝╚═╝ ╚═╝╚═╝ ╚═╝╚═╝ ╚═╝
7+
# ═════════════════════════════════════════════════════════════════════════
8+
# A simple minecraft server module for hosting a local network server.
9+
10+
{ pkgs, lib, config, ... }@args:
11+
let
12+
inherit (args) inputs;
13+
nmx = inputs.nix-minecraft;
14+
15+
serverPack = pkgs.fetchzip {
16+
url =
17+
"https://mediafilez.forgecdn.net/files/6974/725/Prominence%20II%20Hasturian%20Era-v3.9.0.zip";
18+
sha256 = "sha256-qa6Ma1LC/BnGF9yCSMb0hit3Sgx4bcgt7UAUo9aTeKM=";
19+
stripRoot = false;
20+
};
21+
maybeCollect = dir:
22+
if builtins.pathExists "${serverPack}/${dir}" then
23+
nmx.lib.collectFilesAt serverPack dir
24+
else
25+
{ };
26+
in {
27+
imports = [ nmx.nixosModules.minecraft-servers ];
28+
29+
nixpkgs.overlays = [ nmx.overlay ];
30+
31+
nixpkgs.config.allowUnfreePredicate = pkg:
32+
builtins.elem (lib.getName pkg) [ "minecraft-server" ];
33+
34+
services.minecraft-servers = {
35+
enable = true;
36+
eula = true;
37+
openFirewall = true;
38+
39+
servers = {
40+
rpg-server = {
41+
enable = true;
42+
autoStart = true;
43+
package = pkgs.fabricServers.fabric-1_20_1;
44+
45+
jvmOpts =
46+
"-Xms8G -Xmx8G -XX:+UseG1GC -XX:MaxGCPauseMillis=100 -XX:+ParallelRefProcEnabled";
47+
48+
serverProperties = { motd = "Lukas' Epic Minecraft Server!"; };
49+
50+
files = maybeCollect "mods" // maybeCollect "overrides/mods"
51+
// maybeCollect "config" // maybeCollect "defaultconfigs"
52+
// maybeCollect "kubejs" // maybeCollect "scripts"
53+
// maybeCollect "config/ftbquests"
54+
// maybeCollect "overrides/config" # some CF packs use overrides/
55+
// maybeCollect "overrides/defaultconfigs";
56+
};
57+
};
58+
};
59+
}

0 commit comments

Comments
 (0)