Compare commits
57
Commits
dd896748ab
...
fd5ef2c7e0
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
fd5ef2c7e0 | ||
|
|
fe54d9896b | ||
|
|
4f4341165e | ||
|
|
a59b331bbe | ||
|
|
699c0d1f29 | ||
|
|
6b70ab5f69 | ||
|
|
15bf851f33 | ||
|
|
6cf3e58600 | ||
|
|
e564e632b3 | ||
|
|
fec251a4c3 | ||
|
|
aa29d58e9d | ||
|
|
e8fb6f383f | ||
|
|
3064a404e0 | ||
|
|
65a8654165 | ||
|
|
1876238748 | ||
|
|
13cfe73b65 | ||
|
|
56d7504a79 | ||
|
|
23170eb4fc | ||
|
|
7eb729d29a | ||
|
|
015045c56f | ||
|
|
fa1d1310c9 | ||
|
|
0d9679ae0a | ||
|
|
11b7545928 | ||
|
|
afbef1bf7d | ||
|
|
0fe813201a | ||
|
|
0bcf16b127 | ||
|
|
3a7f4de155 | ||
|
|
10f2b436f0 | ||
|
|
4bc8f56956 | ||
|
|
08a3d16a83 | ||
|
|
a8dddf8cbb | ||
|
|
16d62f5ed2 | ||
|
|
f754badc78 | ||
|
|
ac642a20b1 | ||
|
|
f9ed9ab55f | ||
|
|
9fb05656cc | ||
|
|
910b2125ae | ||
|
|
743858c6d1 | ||
|
|
f9764fb3a6 | ||
|
|
73d57f7441 | ||
|
|
f28c9ea93d | ||
|
|
85e6635bb7 | ||
|
|
8ce6cf9f89 | ||
|
|
208a21efd5 | ||
|
|
d0065f8053 | ||
|
|
877e70cd48 | ||
|
|
576c83eabd | ||
|
|
2df106c25f | ||
|
|
52d12ceb26 | ||
|
|
c080e647cc | ||
|
|
4ddb17b6d3 | ||
|
|
96e173ee29 | ||
|
|
13fb00dd10 | ||
|
|
d607de1418 | ||
|
|
8181a339ae | ||
|
|
adc334eab5 | ||
|
|
9f03fa499d |
@@ -1,6 +1,6 @@
|
||||
# flake for blakes nixos config
|
||||
# define new devices in outputs
|
||||
# generation: 203 current 2025-10-10 00:56:13 25.05.20251006.20c4598 6.12.50 *
|
||||
# generation: 240 current 2025-10-10 21:55:37 25.05.20251006.20c4598 6.12.50 *
|
||||
{
|
||||
description = "blakes nix config";
|
||||
inputs = {
|
||||
|
||||
@@ -9,8 +9,9 @@ in
|
||||
[ # Include the results of the hardware scan.
|
||||
./hardware-configuration.nix
|
||||
../../users/users.nix
|
||||
../../modules/system/default.nix
|
||||
../../modules/homelab/default.nix
|
||||
../../modules/system
|
||||
../../modules/homelab
|
||||
../../modules/homelab/gameservers/minecraft_recpro
|
||||
];
|
||||
|
||||
modules = {
|
||||
|
||||
@@ -5,10 +5,10 @@ let
|
||||
cfg = config.modules.gameservers.${service};
|
||||
sec = config.sops.secrets;
|
||||
servers = {
|
||||
velocity = { data_dir = "/var/lib/gameserver/minecraft_recpro/velocity"; ram = "2G"; };
|
||||
smp = { data_dir = "/var/lib/gameserver/minecraft_recpro/smp"; ram = "12G"; };
|
||||
superflat = { data_dir = "/var/lib/gameserver/minecraft_recpro/superflat"; ram = "4G"; };
|
||||
bento = { data_dir = "/var/lib/gameserver/minecraft_recpro"; ram = "2G"; };
|
||||
velocity = { data_dir = "/var/lib/gameservers/minecraft_recpro/velocity"; ram = "2G"; };
|
||||
smp = { data_dir = "/var/lib/gameservers/minecraft_recpro/smp"; ram = "12G"; };
|
||||
superflat = { data_dir = "/var/lib/gameservers/minecraft_recpro/superflat"; ram = "4G"; };
|
||||
bento = { data_dir = "/var/lib/gameservers/minecraft_recpro/bento"; ram = "2G"; };
|
||||
};
|
||||
in
|
||||
{
|
||||
@@ -46,12 +46,14 @@ in
|
||||
description = "minecraft server user";
|
||||
uid = lib.mkForce cfg.ids;
|
||||
isSystemUser = true;
|
||||
shell = pkgs.bash;
|
||||
group = "minecraft";
|
||||
extraGroups = [];
|
||||
};
|
||||
|
||||
systemd.tmpfiles.rules = lib.concatStringsSep "\n" (mapAttrsToList (name: cfg:
|
||||
"d ${cfg.data_dir} 0755 minecraft minecraft -") servers);
|
||||
systemd.tmpfiles.rules = lib.attrsets.mapAttrsToList (name: cfg:
|
||||
"d ${cfg.data_dir} 0770 minecraft minecraft -"
|
||||
) servers;
|
||||
|
||||
# Create a systemd service per server running in tmux
|
||||
systemd.services = lib.attrsets.mapAttrs (name: srv: {
|
||||
@@ -61,15 +63,35 @@ in
|
||||
serviceConfig = {
|
||||
User = "minecraft";
|
||||
WorkingDirectory = srv.data_dir;
|
||||
ExecStart = "${pkgs.tmux}/bin/tmux new-session -d -s ${name} '${pkgs.openjdk21}/bin/java -Xmx${srv.ram} -jar ${srv.data_dir}/server.jar nogui'";
|
||||
ExecStop = "${pkgs.tmux}/bin/tmux send-keys -t ${name} C-c"; # stop server by sending Ctrl+C to tmux session
|
||||
UMask = "0007";
|
||||
ExecStart = "${pkgs.openjdk21}/bin/java -Xmx${srv.ram} -jar ${srv.data_dir}/server.jar nogui";
|
||||
# ExecStart = "${pkgs.tmux}/bin/tmux new-session -d -s mcrp-${name} '${pkgs.openjdk21}/bin/java -Xmx${srv.ram} -jar ${srv.data_dir}/server.jar nogui'";
|
||||
# ExecStop = "${pkgs.tmux}/bin/tmux send-keys -t mcrp-${name} C-c"; # stop server by sending Ctrl+C to tmux session
|
||||
Restart = "on-failure";
|
||||
KillMode = "process";
|
||||
};
|
||||
wantedBy = [ "multi-user.target" ];
|
||||
UMask = "0007";
|
||||
}) servers;
|
||||
|
||||
environment.systemPackages = with pkgs; [ openjdk21 mcrcon ];
|
||||
|
||||
services.mysql = {
|
||||
enable = true;
|
||||
package = pkgs.mariadb;
|
||||
ensureDatabases = [ "minecraft_recpro_db" ];
|
||||
ensureUsers = [
|
||||
{
|
||||
name = "minecraft";
|
||||
ensurePermissions = { "minecraft_recpro_db.*" = "ALL PRIVILEGES"; };
|
||||
}
|
||||
];
|
||||
initialScript = pkgs.writeText "minecraft_recpro-init.sql" ''
|
||||
CREATE USER IF NOT EXISTS 'minecraft_recpro'@'localhost' IDENTIFIED BY 'IKNOWTHISISBADIJUSTNEEDTHISTOWORKRNPLS';
|
||||
GRANT ALL PRIVILEGES ON minecraft_recpro_db.* TO 'minecraft_recpro'@'localhost';
|
||||
FLUSH PRIVILEGES;
|
||||
'';
|
||||
};
|
||||
|
||||
# open firewall
|
||||
networking.firewall.allowedTCPPorts = [ 25777 25565 25566 25567 ];
|
||||
|
||||
@@ -92,12 +114,21 @@ in
|
||||
# };
|
||||
# };
|
||||
#
|
||||
# sops.secrets = {
|
||||
# "${service}_" = {
|
||||
# owner = "${service}";
|
||||
# group = "${service}";
|
||||
# };
|
||||
# };
|
||||
sops.secrets = {
|
||||
"velocity_forwarding" = {
|
||||
owner = "minecraft";
|
||||
group = "minecraft";
|
||||
path = "/var/lib/gameservers/minecraft_recpro/velocity/forwarding.secret";
|
||||
mode = "0400";
|
||||
};
|
||||
"minecraft_recpro_db_passwd" = {
|
||||
owner = "mysql";
|
||||
group = "mysql";
|
||||
};
|
||||
|
||||
};
|
||||
|
||||
|
||||
|
||||
# add to backups
|
||||
modules.system.backups.paths = lib.mkIf cfg.backup [ cfg.data_dir ];
|
||||
|
||||
@@ -24,6 +24,7 @@ gitea_database_password: ENC[AES256_GCM,data:nhFn0/G7gW5rk996OZzlcTt7T9KMbP8MNM+
|
||||
mosquitto_password_file: ENC[AES256_GCM,data:7ifs2hGnFQSgJOAKpN0usfiaqLjj7Rjb7zn1/qBDbqEi5hV0JfUncZGorBivR/+kjXHQO6nxaHcKqYvPedNdJ7Qy4/uil/xwgwSmzcbisdVYkhd2pf/N34EQFxmqohud0aTH9V47QbgTdrUPfvsiL+ljLvLu4w==,iv:z7YPIfJHHaLOJrDVnMQhgcMzYAPordFR11kHRAzZqYU=,tag:LRddczdvy01YTm2DFDgSJQ==,type:str]
|
||||
#ENC[AES256_GCM,data:HJ81OxRD2xtNZKv+8oDqiT8mYpv45JMvjxU5pdmEKzl64SK3lQ==,iv:wStoC6XaZlvRPfbqti2CUbPrOOTt4KktaUp2ecVrggU=,tag:isOwKfNdQZAM+E8YQXBSFA==,type:comment]
|
||||
velocity_forwarding: ENC[AES256_GCM,data:MUNhW3q0/klK51k3,iv:dGT5N+IrZfBxMIwa0mUrIKF2HJvx/uZ5o/ps6bgDNOE=,tag:KNY2LKwmmnCdWqRnxSKctw==,type:str]
|
||||
minecraft_recpro_db_passwd: ENC[AES256_GCM,data:dPAkdEX0hBigo/lND2r3ShxnS4Jc5wTI2ShcKnvjig==,iv:WjPugYspUvhy6TAh5UF3etvxTZjAPe3bkgFxIkh6FDw=,tag:h9LGoxp2x8PHxcP8fEkSlA==,type:str]
|
||||
sops:
|
||||
age:
|
||||
- recipient: age14gfh682a7m7jfp3qrulql03x5rs7yedwmxwksxrrmgjsunstyuksqx93pz
|
||||
@@ -35,7 +36,7 @@ sops:
|
||||
U0tmdFBuZnJES3piOTZNV0VKQmQ0eVUKCWRQ/flLzmpC64WyLoipklZBmrkpYiUg
|
||||
PRu+itNolpPTHm96pe+P93g2iP0wgekG0cX21wkiU2xaLF3dY2FEIA==
|
||||
-----END AGE ENCRYPTED FILE-----
|
||||
lastmodified: "2025-10-10T06:58:16Z"
|
||||
mac: ENC[AES256_GCM,data:esDQXPJSwUpChIVfcXJe5MVFI3ZJD2APDbOcfw5amo/PYB1QbbNS3W63heEmyVK8CW/UXSeeepfzlnk0kyneDX+v1ANP6B5+LLlpuEbjb4vKxZvo7C1xb5dGqzG7aizXjs83k/vZTwXw9/4AgQUQq9gL9ZI1Bmgk3yNvzctLU4U=,iv:IMO35FHjrhFoLu1TE1f/3PJOVGhe8Hwcr0CzsoJMHiM=,tag:L1ibIfAfYE9K+lKiTxsofQ==,type:str]
|
||||
lastmodified: "2025-10-10T08:43:27Z"
|
||||
mac: ENC[AES256_GCM,data:3mH0+EY8MFLe78x38CFyWY7CzgkRftAAy25y6lWcqeY8U6XT9CCenaL6vsbZO5j1ypXMtYMlJOO2VFgM5SmbdEKY1rzZldNOoyeMpfV/hHRI6Gm1dD9IyXFFISb12MhO3kt/stWRs84ufGkKe/BpjcurnFlbCAy064cQd9Knu1Y=,iv:KZOlNj/WkbhwgY/OvuY+emTtYftaFZWi+CFIZwFfXiw=,tag:adndDqlpqiVx6VYqKLVETQ==,type:str]
|
||||
unencrypted_suffix: _unencrypted
|
||||
version: 3.11.0
|
||||
|
||||
@@ -20,7 +20,7 @@ in
|
||||
# create blake user
|
||||
users.users.${cfg.username} = {
|
||||
isNormalUser = true;
|
||||
extraGroups = [ "wheel" "networkmanager" "docker" "media" ]; # Enable ‘sudo’ for the user.
|
||||
extraGroups = [ "wheel" "networkmanager" "docker" "media" "minecraft" ]; # Enable ‘sudo’ for the user.
|
||||
uid = 1000;
|
||||
shell = pkgs.zsh;
|
||||
group = "blake";
|
||||
|
||||
Reference in New Issue
Block a user