2490ce968c
This adds edwin, the machine running sterni.lv, as well as my idiosyncratic deployment solution. It is based on instantiating the system configuration locally (where you'd work on the configuration), copying the derivation files to the remote machine where the system derivation is realised and deployed. Unfortunately, the first step tends to be quite slow (despite gzip compression), so this may not be the definite way despite its advantages. Change-Id: I30f597692338df3981e01a1b7eee9cdad48f94cb Reviewed-on: https://cl.tvl.fyi/c/depot/+/7293 Reviewed-by: sterni <sternenseemann@systemli.org> Tested-by: BuildkiteCI
118 lines
2.9 KiB
Nix
118 lines
2.9 KiB
Nix
{ pkgs, depot, config, ... }:
|
|
|
|
let
|
|
carpet = pkgs.fetchurl {
|
|
url = "https://github.com/gnembon/fabric-carpet/releases/download/1.4.44/fabric-carpet-1.16.5-1.4.44+v210714.jar";
|
|
sha256 = "099nwspgxv7h2k3mwwmgcykmwfcb7yg1azb38fd4ravv97z4l3j8";
|
|
};
|
|
|
|
carpet-extra = pkgs.fetchurl {
|
|
url = "https://github.com/gnembon/carpet-extra/releases/download/1.4.43/carpet-extra-1.16.5-1.4.43.jar";
|
|
sha256 = "0w3gng1xyiqybm1qv4gbbsyqry3dr2ndvynx14qb59wxlw0dv5za";
|
|
};
|
|
|
|
userGroup = "minecraft";
|
|
|
|
makeJvmOpts = megs: [
|
|
"-Xms${toString megs}M"
|
|
"-Xmx${toString megs}M"
|
|
];
|
|
|
|
whitelist = {
|
|
spreadwasser = "242a66eb-2df2-4585-9a28-ac763ad0d0f9";
|
|
sternenseemann = "d8e48069-1905-4886-a5da-a4ee917ee254";
|
|
};
|
|
|
|
rconPasswordFile = config.age.secretsDir + "/minecraft-rcon";
|
|
|
|
baseProperties = {
|
|
white-list = true;
|
|
allow-flight = true;
|
|
difficulty = "hard";
|
|
function-permission-level = 4;
|
|
snooper-enabled = false;
|
|
view-distance = 12;
|
|
sync-chunk-writes = "false"; # the single biggest performance fix
|
|
max-tick-time = 6000000; # TODO(sterni): disable watchdog via carpet
|
|
};
|
|
in
|
|
|
|
{
|
|
imports = [
|
|
../../modules/minecraft-fabric.nix
|
|
];
|
|
|
|
config = {
|
|
environment.systemPackages = [
|
|
pkgs.mcrcon
|
|
pkgs.jre
|
|
];
|
|
|
|
users = {
|
|
users."${userGroup}" = {
|
|
isNormalUser = true;
|
|
openssh.authorizedKeys.keys = depot.users.sterni.keys.all;
|
|
shell = "${pkgs.fish}/bin/fish";
|
|
};
|
|
|
|
groups."${userGroup}" = { };
|
|
};
|
|
|
|
age.secrets = {
|
|
minecraft-rcon.file = depot.users.sterni.secrets."minecraft-rcon.age";
|
|
};
|
|
|
|
services.minecraft-fabric-server = {
|
|
creative = {
|
|
enable = true;
|
|
version = "1.16.5";
|
|
mods = [
|
|
carpet
|
|
carpet-extra
|
|
];
|
|
world = config.users.users.${userGroup}.home + "/worlds/creative";
|
|
|
|
jvmOpts = makeJvmOpts 2048;
|
|
user = userGroup;
|
|
group = userGroup;
|
|
|
|
inherit whitelist rconPasswordFile;
|
|
ops = whitelist;
|
|
|
|
serverProperties = baseProperties // {
|
|
server-port = 25566;
|
|
"rcon.port" = 25576;
|
|
gamemode = "creative";
|
|
enable-command-block = true;
|
|
motd = "storage design server";
|
|
spawn-protection = 2;
|
|
};
|
|
};
|
|
|
|
carpet = {
|
|
enable = true;
|
|
version = "1.16.5";
|
|
mods = [
|
|
carpet
|
|
carpet-extra
|
|
];
|
|
world = config.users.users.${userGroup}.home + "/worlds/carpet";
|
|
|
|
jvmOpts = makeJvmOpts 4096;
|
|
user = userGroup;
|
|
group = userGroup;
|
|
|
|
inherit whitelist rconPasswordFile;
|
|
ops = whitelist;
|
|
|
|
serverProperties = baseProperties // {
|
|
server-port = 25565;
|
|
"rcon.port" = 25575;
|
|
motd = "ich tu fleissig hustlen nenn mich bob der baumeister";
|
|
|
|
level-seed = 7240251176989694927; # for posterity
|
|
};
|
|
};
|
|
};
|
|
};
|
|
}
|