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