Compare commits

...

57 Commits

Author SHA1 Message Date
fd5ef2c7e0 240 current 2025-10-10 21:55:37 25.05.20251006.20c4598 6.12.50 * 2025-10-10 21:57:42 -05:00
fe54d9896b 239 current 2025-10-10 21:53:16 25.05.20251006.20c4598 6.12.50 * 2025-10-10 21:55:39 -05:00
4f4341165e 238 current 2025-10-10 21:51:26 25.05.20251006.20c4598 6.12.50 * 2025-10-10 21:53:21 -05:00
a59b331bbe 237 current 2025-10-10 21:49:29 25.05.20251006.20c4598 6.12.50 * 2025-10-10 21:51:31 -05:00
699c0d1f29 236 current 2025-10-10 21:46:09 25.05.20251006.20c4598 6.12.50 * 2025-10-10 21:49:34 -05:00
6b70ab5f69 235 current 2025-10-10 21:42:12 25.05.20251006.20c4598 6.12.50 * 2025-10-10 21:46:14 -05:00
15bf851f33 234 current 2025-10-10 21:36:10 25.05.20251006.20c4598 6.12.50 * 2025-10-10 21:42:18 -05:00
6cf3e58600 234 current 2025-10-10 21:36:10 25.05.20251006.20c4598 6.12.50 * 2025-10-10 21:38:27 -05:00
e564e632b3 233 current 2025-10-10 21:35:34 25.05.20251006.20c4598 6.12.50 * 2025-10-10 21:36:12 -05:00
fec251a4c3 232 current 2025-10-10 21:34:31 25.05.20251006.20c4598 6.12.50 * 2025-10-10 21:35:43 -05:00
aa29d58e9d 231 current 2025-10-10 21:32:35 25.05.20251006.20c4598 6.12.50 * 2025-10-10 21:34:33 -05:00
e8fb6f383f 230 current 2025-10-10 21:30:12 25.05.20251006.20c4598 6.12.50 * 2025-10-10 21:32:37 -05:00
3064a404e0 229 current 2025-10-10 21:25:49 25.05.20251006.20c4598 6.12.50 * 2025-10-10 21:30:15 -05:00
65a8654165 228 current 2025-10-10 21:22:38 25.05.20251006.20c4598 6.12.50 * 2025-10-10 21:25:51 -05:00
1876238748 227 current 2025-10-10 21:18:19 25.05.20251006.20c4598 6.12.50 * 2025-10-10 21:22:41 -05:00
13cfe73b65 226 current 2025-10-10 21:05:33 25.05.20251006.20c4598 6.12.50 * 2025-10-10 21:18:21 -05:00
56d7504a79 225 current 2025-10-10 21:01:34 25.05.20251006.20c4598 6.12.50 * 2025-10-10 21:05:35 -05:00
23170eb4fc 224 current 2025-10-10 20:58:53 25.05.20251006.20c4598 6.12.50 * 2025-10-10 21:01:37 -05:00
7eb729d29a 223 current 2025-10-10 20:52:33 25.05.20251006.20c4598 6.12.50 * 2025-10-10 20:58:55 -05:00
015045c56f 223 current 2025-10-10 20:52:33 25.05.20251006.20c4598 6.12.50 * 2025-10-10 20:53:11 -05:00
fa1d1310c9 222 current 2025-10-10 20:51:09 25.05.20251006.20c4598 6.12.50 * 2025-10-10 20:52:40 -05:00
0d9679ae0a 221 current 2025-10-10 20:48:25 25.05.20251006.20c4598 6.12.50 * 2025-10-10 20:51:14 -05:00
11b7545928 220 current 2025-10-10 20:46:18 25.05.20251006.20c4598 6.12.50 * 2025-10-10 20:48:28 -05:00
afbef1bf7d 219 current 2025-10-10 20:44:06 25.05.20251006.20c4598 6.12.50 * 2025-10-10 20:46:20 -05:00
0fe813201a 218 current 2025-10-10 20:40:59 25.05.20251006.20c4598 6.12.50 * 2025-10-10 20:44:08 -05:00
0bcf16b127 217 current 2025-10-10 20:18:09 25.05.20251006.20c4598 6.12.50 * 2025-10-10 20:41:01 -05:00
3a7f4de155 216 current 2025-10-10 04:43:06 25.05.20251006.20c4598 6.12.50 * 2025-10-10 20:18:11 -05:00
10f2b436f0 216 current 2025-10-10 04:43:06 25.05.20251006.20c4598 6.12.50 * 2025-10-10 20:11:16 -05:00
4bc8f56956 216 current 2025-10-10 04:43:06 25.05.20251006.20c4598 6.12.50 * 2025-10-10 20:10:21 -05:00
08a3d16a83 216 current 2025-10-10 04:43:06 25.05.20251006.20c4598 6.12.50 * 2025-10-10 20:08:42 -05:00
a8dddf8cbb 216 current 2025-10-10 04:43:06 25.05.20251006.20c4598 6.12.50 * 2025-10-10 20:08:13 -05:00
16d62f5ed2 216 current 2025-10-10 04:43:06 25.05.20251006.20c4598 6.12.50 * 2025-10-10 20:06:54 -05:00
f754badc78 216 current 2025-10-10 04:43:06 25.05.20251006.20c4598 6.12.50 * 2025-10-10 20:05:43 -05:00
ac642a20b1 216 current 2025-10-10 04:43:06 25.05.20251006.20c4598 6.12.50 * 2025-10-10 04:59:12 -05:00
f9ed9ab55f 215 current 2025-10-10 04:30:17 25.05.20251006.20c4598 6.12.50 * 2025-10-10 04:43:08 -05:00
9fb05656cc 214 current 2025-10-10 04:13:05 25.05.20251006.20c4598 6.12.50 * 2025-10-10 04:30:20 -05:00
910b2125ae 214 current 2025-10-10 04:13:05 25.05.20251006.20c4598 6.12.50 * 2025-10-10 04:29:35 -05:00
743858c6d1 214 current 2025-10-10 04:13:05 25.05.20251006.20c4598 6.12.50 * 2025-10-10 04:21:23 -05:00
f9764fb3a6 213 current 2025-10-10 04:10:50 25.05.20251006.20c4598 6.12.50 * 2025-10-10 04:13:07 -05:00
73d57f7441 213 current 2025-10-10 04:10:50 25.05.20251006.20c4598 6.12.50 * 2025-10-10 04:11:25 -05:00
f28c9ea93d 212 current 2025-10-10 03:46:48 25.05.20251006.20c4598 6.12.50 * 2025-10-10 04:10:56 -05:00
85e6635bb7 212 current 2025-10-10 03:46:48 25.05.20251006.20c4598 6.12.50 * 2025-10-10 04:00:23 -05:00
8ce6cf9f89 212 current 2025-10-10 03:46:48 25.05.20251006.20c4598 6.12.50 * 2025-10-10 03:47:38 -05:00
208a21efd5 211 current 2025-10-10 03:14:57 25.05.20251006.20c4598 6.12.50 * 2025-10-10 03:46:50 -05:00
d0065f8053 210 current 2025-10-10 02:55:45 25.05.20251006.20c4598 6.12.50 * 2025-10-10 03:15:01 -05:00
877e70cd48 210 current 2025-10-10 02:55:45 25.05.20251006.20c4598 6.12.50 * 2025-10-10 02:56:37 -05:00
576c83eabd 209 current 2025-10-10 02:45:03 25.05.20251006.20c4598 6.12.50 * 2025-10-10 02:55:47 -05:00
2df106c25f 209 current 2025-10-10 02:45:03 25.05.20251006.20c4598 6.12.50 * 2025-10-10 02:48:44 -05:00
52d12ceb26 208 current 2025-10-10 02:29:51 25.05.20251006.20c4598 6.12.50 * 2025-10-10 02:45:06 -05:00
c080e647cc 207 current 2025-10-10 02:23:15 25.05.20251006.20c4598 6.12.50 * 2025-10-10 02:29:54 -05:00
4ddb17b6d3 206 current 2025-10-10 02:17:13 25.05.20251006.20c4598 6.12.50 * 2025-10-10 02:23:17 -05:00
96e173ee29 205 current 2025-10-10 02:16:29 25.05.20251006.20c4598 6.12.50 * 2025-10-10 02:17:15 -05:00
13fb00dd10 204 current 2025-10-10 00:57:52 25.05.20251006.20c4598 6.12.50 * 2025-10-10 02:16:32 -05:00
d607de1418 204 current 2025-10-10 00:57:52 25.05.20251006.20c4598 6.12.50 * 2025-10-10 02:14:50 -05:00
8181a339ae 204 current 2025-10-10 00:57:52 25.05.20251006.20c4598 6.12.50 * 2025-10-10 02:11:11 -05:00
adc334eab5 204 current 2025-10-10 00:57:52 25.05.20251006.20c4598 6.12.50 * 2025-10-10 02:08:55 -05:00
9f03fa499d 204 current 2025-10-10 00:57:52 25.05.20251006.20c4598 6.12.50 * 2025-10-10 02:07:12 -05:00
5 changed files with 54 additions and 21 deletions

View File

@@ -1,6 +1,6 @@
# flake for blakes nixos config # flake for blakes nixos config
# define new devices in outputs # 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"; description = "blakes nix config";
inputs = { inputs = {

View File

@@ -9,8 +9,9 @@ in
[ # Include the results of the hardware scan. [ # Include the results of the hardware scan.
./hardware-configuration.nix ./hardware-configuration.nix
../../users/users.nix ../../users/users.nix
../../modules/system/default.nix ../../modules/system
../../modules/homelab/default.nix ../../modules/homelab
../../modules/homelab/gameservers/minecraft_recpro
]; ];
modules = { modules = {

View File

@@ -5,10 +5,10 @@ let
cfg = config.modules.gameservers.${service}; cfg = config.modules.gameservers.${service};
sec = config.sops.secrets; sec = config.sops.secrets;
servers = { servers = {
velocity = { data_dir = "/var/lib/gameserver/minecraft_recpro/velocity"; ram = "2G"; }; velocity = { data_dir = "/var/lib/gameservers/minecraft_recpro/velocity"; ram = "2G"; };
smp = { data_dir = "/var/lib/gameserver/minecraft_recpro/smp"; ram = "12G"; }; smp = { data_dir = "/var/lib/gameservers/minecraft_recpro/smp"; ram = "12G"; };
superflat = { data_dir = "/var/lib/gameserver/minecraft_recpro/superflat"; ram = "4G"; }; superflat = { data_dir = "/var/lib/gameservers/minecraft_recpro/superflat"; ram = "4G"; };
bento = { data_dir = "/var/lib/gameserver/minecraft_recpro"; ram = "2G"; }; bento = { data_dir = "/var/lib/gameservers/minecraft_recpro/bento"; ram = "2G"; };
}; };
in in
{ {
@@ -46,12 +46,14 @@ in
description = "minecraft server user"; description = "minecraft server user";
uid = lib.mkForce cfg.ids; uid = lib.mkForce cfg.ids;
isSystemUser = true; isSystemUser = true;
shell = pkgs.bash;
group = "minecraft"; group = "minecraft";
extraGroups = []; extraGroups = [];
}; };
systemd.tmpfiles.rules = lib.concatStringsSep "\n" (mapAttrsToList (name: cfg: systemd.tmpfiles.rules = lib.attrsets.mapAttrsToList (name: cfg:
"d ${cfg.data_dir} 0755 minecraft minecraft -") servers); "d ${cfg.data_dir} 0770 minecraft minecraft -"
) servers;
# Create a systemd service per server running in tmux # Create a systemd service per server running in tmux
systemd.services = lib.attrsets.mapAttrs (name: srv: { systemd.services = lib.attrsets.mapAttrs (name: srv: {
@@ -61,15 +63,35 @@ in
serviceConfig = { serviceConfig = {
User = "minecraft"; User = "minecraft";
WorkingDirectory = srv.data_dir; 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'"; UMask = "0007";
ExecStop = "${pkgs.tmux}/bin/tmux send-keys -t ${name} C-c"; # stop server by sending Ctrl+C to tmux session 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"; Restart = "on-failure";
KillMode = "process"; KillMode = "process";
}; };
wantedBy = [ "multi-user.target" ]; wantedBy = [ "multi-user.target" ];
UMask = "0007";
}) servers; }) 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 # open firewall
networking.firewall.allowedTCPPorts = [ 25777 25565 25566 25567 ]; networking.firewall.allowedTCPPorts = [ 25777 25565 25566 25567 ];
@@ -92,12 +114,21 @@ in
# }; # };
# }; # };
# #
# sops.secrets = { sops.secrets = {
# "${service}_" = { "velocity_forwarding" = {
# owner = "${service}"; owner = "minecraft";
# group = "${service}"; group = "minecraft";
# }; path = "/var/lib/gameservers/minecraft_recpro/velocity/forwarding.secret";
# }; mode = "0400";
};
"minecraft_recpro_db_passwd" = {
owner = "mysql";
group = "mysql";
};
};
# add to backups # add to backups
modules.system.backups.paths = lib.mkIf cfg.backup [ cfg.data_dir ]; modules.system.backups.paths = lib.mkIf cfg.backup [ cfg.data_dir ];

View File

@@ -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] 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] #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] 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: sops:
age: age:
- recipient: age14gfh682a7m7jfp3qrulql03x5rs7yedwmxwksxrrmgjsunstyuksqx93pz - recipient: age14gfh682a7m7jfp3qrulql03x5rs7yedwmxwksxrrmgjsunstyuksqx93pz
@@ -35,7 +36,7 @@ sops:
U0tmdFBuZnJES3piOTZNV0VKQmQ0eVUKCWRQ/flLzmpC64WyLoipklZBmrkpYiUg U0tmdFBuZnJES3piOTZNV0VKQmQ0eVUKCWRQ/flLzmpC64WyLoipklZBmrkpYiUg
PRu+itNolpPTHm96pe+P93g2iP0wgekG0cX21wkiU2xaLF3dY2FEIA== PRu+itNolpPTHm96pe+P93g2iP0wgekG0cX21wkiU2xaLF3dY2FEIA==
-----END AGE ENCRYPTED FILE----- -----END AGE ENCRYPTED FILE-----
lastmodified: "2025-10-10T06:58:16Z" lastmodified: "2025-10-10T08:43:27Z"
mac: ENC[AES256_GCM,data:esDQXPJSwUpChIVfcXJe5MVFI3ZJD2APDbOcfw5amo/PYB1QbbNS3W63heEmyVK8CW/UXSeeepfzlnk0kyneDX+v1ANP6B5+LLlpuEbjb4vKxZvo7C1xb5dGqzG7aizXjs83k/vZTwXw9/4AgQUQq9gL9ZI1Bmgk3yNvzctLU4U=,iv:IMO35FHjrhFoLu1TE1f/3PJOVGhe8Hwcr0CzsoJMHiM=,tag:L1ibIfAfYE9K+lKiTxsofQ==,type:str] mac: ENC[AES256_GCM,data:3mH0+EY8MFLe78x38CFyWY7CzgkRftAAy25y6lWcqeY8U6XT9CCenaL6vsbZO5j1ypXMtYMlJOO2VFgM5SmbdEKY1rzZldNOoyeMpfV/hHRI6Gm1dD9IyXFFISb12MhO3kt/stWRs84ufGkKe/BpjcurnFlbCAy064cQd9Knu1Y=,iv:KZOlNj/WkbhwgY/OvuY+emTtYftaFZWi+CFIZwFfXiw=,tag:adndDqlpqiVx6VYqKLVETQ==,type:str]
unencrypted_suffix: _unencrypted unencrypted_suffix: _unencrypted
version: 3.11.0 version: 3.11.0

View File

@@ -20,7 +20,7 @@ in
# create blake user # create blake user
users.users.${cfg.username} = { users.users.${cfg.username} = {
isNormalUser = true; 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; uid = 1000;
shell = pkgs.zsh; shell = pkgs.zsh;
group = "blake"; group = "blake";