121 lines
4.2 KiB
Nix
Executable File
121 lines
4.2 KiB
Nix
Executable File
{
|
|
|
|
description = "Declarative MC config";
|
|
|
|
inputs = {
|
|
nixpkgs.url = "github:NixOS/nixpkgs/nixos-26.05";
|
|
nix-minecraft.url = "github:Infinidoge/nix-minecraft";
|
|
};
|
|
|
|
outputs = { nixpkgs, nix-minecraft, ... }: {
|
|
nixosModules.mc-service =
|
|
{
|
|
config,
|
|
lib,
|
|
...
|
|
}:
|
|
let
|
|
system = "x86_64-linux";
|
|
pkgs = import nixpkgs {
|
|
inherit system;
|
|
overlays = [ nix-minecraft.overlay ];
|
|
config = {
|
|
allowUnfree = true;
|
|
};
|
|
};
|
|
opts = config.services.mc-service;
|
|
in
|
|
{
|
|
|
|
imports = [ nix-minecraft.nixosModules.minecraft-servers ];
|
|
|
|
options.services.mc-service = {
|
|
enable = lib.mkEnableOption "Enable Minecraft Server";
|
|
|
|
storeDir = lib.mkOption {
|
|
type = lib.types.path;
|
|
default = "/persist/srv/minecraft";
|
|
description = "Minecraft files locations";
|
|
|
|
};
|
|
|
|
rconSecrets = lib.mkOption {
|
|
type = lib.types.path;
|
|
description = "minecraft rcon secret";
|
|
};
|
|
};
|
|
|
|
config = lib.mkIf opts.enable {
|
|
users.groups.mc-service = { };
|
|
users.users.mc-service = {
|
|
isSystemUser = true;
|
|
createHome = true;
|
|
home = "${opts.storeDir}";
|
|
group = "mc-service";
|
|
};
|
|
|
|
services.minecraft-servers = {
|
|
enable = true;
|
|
eula = true;
|
|
openFirewall = true;
|
|
dataDir = "${opts.storeDir}";
|
|
user = "mc-service";
|
|
group = "mc-service";
|
|
|
|
servers.homeServer = {
|
|
enable = true;
|
|
restart = "always";
|
|
jvmOpts = "-Xmx16G -Xms16G";
|
|
whitelist = {
|
|
SquidMcJiggles = "7ae4f5a9-dc2b-4b42-ab30-f8d10d38fa83";
|
|
Baloneyjohn = "aa33ea9c-05ce-46d4-9ae3-715c80f618da";
|
|
Beankurd = "4bdd135f-e9a6-4830-9755-6282ec71e338";
|
|
couchdomination = "6272ebe9-6191-43fa-adbd-9d1a9ca36a8c";
|
|
Grutkoek = "bb1b7067-18d8-4d63-92fa-49b003d39826";
|
|
};
|
|
serverProperties = {
|
|
server-port = 25565;
|
|
difficulty = 3;
|
|
gamemode = 0;
|
|
force-gamemode = true;
|
|
max-players = 10;
|
|
motd = "Home MC Server";
|
|
white-list = true;
|
|
spawn-protection = 0;
|
|
enable-rcon = true;
|
|
"rcon.password" = "CHANGE_THIS_SECRET";
|
|
};
|
|
|
|
package = pkgs.fabricServers.fabric-26_2.override {
|
|
jre_headless = pkgs.openjdk25_headless;
|
|
};
|
|
|
|
symlinks = {
|
|
mods = pkgs.linkFarmFromDrvs "mods" (
|
|
builtins.attrValues {
|
|
Sleep = pkgs.fetchurl {
|
|
url = "https://cdn.modrinth.com/data/WTzuSu8P/versions/epDz3qzS/sleep-v4.3.18.jar";
|
|
sha512 = "f4bfd7bf8c9dc64640a3f1353993341cccb9d76f5b0aed8f746ed7159689a336b2ddc1bcc3ec2ea5cb70d0ecee9072a325c33d4a56179a22e98d4c2849bc6971";
|
|
};
|
|
Lithium = pkgs.fetchurl {
|
|
url = "https://cdn.modrinth.com/data/gvQqBUqZ/versions/UPNexAfy/lithium-fabric-0.25.2%2Bmc26.2.jar";
|
|
sha512 = "db676376c05b7e912cdae5aad9e51f125adc1554ae2b204599ccb598751921aedbac98e97b9cba0333b6b52488c6b75c915a7dbd50436f97800387fe1aad1c50";
|
|
};
|
|
FabricAPI = pkgs.fetchurl {
|
|
url = "https://cdn.modrinth.com/data/P7dR8mSH/versions/lVXlbH4w/fabric-api-0.155.2%2B26.2.jar";
|
|
sha512 = "cc56984378a27c5bcd56374d6ffbb27a45c6bf3355add2ac6be9817ccac5854362249bf9d0147eb271a70fda2716129204e240d53c9aa876a2a7861f4c7f880f";
|
|
};
|
|
Chunky = pkgs.fetchurl {
|
|
url = "https://cdn.modrinth.com/data/fALzjamp/versions/4Eotm6ov/Chunky-Fabric-1.5.3.jar";
|
|
sha512 = "b83bfe7b218d0aa6232af977ae741dc1f82b10e50cd12bb759f65cf416b8b62beccb543e587ef0b9670abe03815660f8e091bc6823624d65cf07300571573516";
|
|
};
|
|
}
|
|
);
|
|
};
|
|
};
|
|
};
|
|
};
|
|
};
|
|
};
|
|
}
|