From 226c7993b1e1aebbba2d0b84482940908691c198 Mon Sep 17 00:00:00 2001 From: Daniel Flanagan Date: Thu, 3 Oct 2024 09:23:44 -0500 Subject: [PATCH] Add family minecraft servers --- flake.lock | 12 ++--- flake.nix | 8 ++- modules/nixos/default.nix | 9 ++++ nixos/beefcake.nix | 111 ++++++++++++++++++++++++++++++-------- 4 files changed, 112 insertions(+), 28 deletions(-) diff --git a/flake.lock b/flake.lock index 39f806b..314c2d6 100644 --- a/flake.lock +++ b/flake.lock @@ -667,11 +667,11 @@ ] }, "locked": { - "lastModified": 1721441897, - "narHash": "sha256-gYGX9/22tPNeF7dR6bWN5rsrpU4d06GnQNNgZ6ZiXz0=", + "lastModified": 1726280639, + "narHash": "sha256-YfLRPlFZWrT2oRLNAoqf7G3+NnUTDdlIJk6tmBU7kXM=", "owner": "oxalica", "repo": "rust-overlay", - "rev": "b7996075da11a2d441cfbf4e77c2939ce51506fd", + "rev": "e9f8641c92f26fd1e076e705edb12147c384171d", "type": "github" }, "original": { @@ -786,11 +786,11 @@ }, "locked": { "dir": "nix", - "lastModified": 1723525023, - "narHash": "sha256-ZsDJQSUokodwFMP4FIZm2dYojf5iC4F/EeKC5VuQlqY=", + "lastModified": 1727585736, + "narHash": "sha256-vEkcyKdFpfWbrtZlB5DCjNCmI2GudIJuHstWo3F9gL8=", "owner": "wez", "repo": "wezterm", - "rev": "30345b36d8a00fed347e4df5dadd83915a7693fb", + "rev": "a2f2c07a29f5c98f6736cde0c86b24887f9fd48a", "type": "github" }, "original": { diff --git a/flake.nix b/flake.nix index 23987fc..225aad4 100644 --- a/flake.nix +++ b/flake.nix @@ -278,6 +278,8 @@ common podman troubleshooting-tools + virtual-machines + virtual-machines-gui linux fonts @@ -298,6 +300,8 @@ password-manager wifi graphical-workstation + virtual-machines + virtual-machines-gui music-production gaming slippi.nixosModules.default @@ -393,6 +397,8 @@ kde-connect password-manager graphical-workstation + virtual-machines + virtual-machines-gui laptop gaming @@ -434,7 +440,7 @@ name = "battmode"; text = '' command -v powerprofilesctl &>/dev/null && bash -x -c 'powerprofilesctl set power-saver' - command -v swaymsg &>/dev/null && bash -x -c 'swaymsg output eDP-1 mode 2880x1920@120Hz' + command -v swaymsg &>/dev/null && bash -x -c 'swaymsg output eDP-1 mode 2880x1920@60Hz' ''; }) ]; diff --git a/modules/nixos/default.nix b/modules/nixos/default.nix index 322c682..90bee4f 100644 --- a/modules/nixos/default.nix +++ b/modules/nixos/default.nix @@ -872,6 +872,15 @@ }; }; + virtual-machines = {pkgs, ...}: { + virtualisation.libvirtd.enable = true; + users.users.daniel.extraGroups = ["libvirtd"]; + }; + + virtual-machines-gui = {pkgs, ...}: { + programs.virt-manager.enable = true; + }; + postgres = {pkgs, ...}: { # this is really just for development usage services.postgresql = { diff --git a/nixos/beefcake.nix b/nixos/beefcake.nix index 602ba7f..977b2b9 100644 --- a/nixos/beefcake.nix +++ b/nixos/beefcake.nix @@ -1108,28 +1108,91 @@ sudo nix run nixpkgs#ipmitool -- raw 0x30 0x30 0x02 0xff 0x00 ]; */ } - { + ({...}: let + port = 26969; + dir = "/storage/flanilla"; + user = "flanilla"; + uid = config.users.users.flanilla.uid; + gid = config.users.groups.flanilla.gid; + in { # flanilla family minecraft server - /* - users.groups.flanilla = {}; - users.users.flanilla = { + users.groups.${user} = {}; + users.users.${user} = { isSystemUser = true; createHome = false; - group = "flanilla"; + group = user; }; virtualisation.oci-containers.containers.minecraft-flanilla = { autoStart = true; - image = "docker.io/itzg/minecraft-server"; - user = "${toString config.users.users.flanilla.uid}:${toString config.users.groups.flanilla.gid}"; + user = "${toString uid}:${toString gid}"; extraOptions = ["--tty" "--interactive"]; environment = { EULA = "true"; - UID = toString config.users.users.flanilla.uid; - GID = toString config.users.groups.flanilla.gid; + UID = toString uid; + GID = toString gid; STOP_SERVER_ANNOUNCE_DELAY = "20"; TZ = "America/Chicago"; - VERSION = "1.20.4"; + VERSION = "1.21"; + OPS = "lytedev"; + MODE = "survival"; + DIFFICULTY = "easy"; + ONLINE_MODE = "false"; + MEMORY = "8G"; + MAX_MEMORY = "16G"; + ALLOW_FLIGHT = "true"; + ENABLE_QUERY = "true"; + ENABLE_COMMAND_BLOCK = "true"; + }; + ports = ["${toString port}:25565"]; + + volumes = [ + "${dir}/data:/data" + "${dir}/worlds:/worlds" + ]; + }; + systemd.tmpfiles.settings = { + "10-${user}-survival" = { + "${dir}" = { + "d" = { + mode = "0770"; + user = user; + group = user; + }; + }; + }; + }; + services.restic.commonPaths = [dir]; + networking.firewall.allowedTCPPorts = [ + port + ]; + }) + ({...}: let + port = 26968; + dir = "/storage/flanilla-creative"; + user = "flanilla"; + uid = config.users.users.flanilla.uid; + gid = config.users.groups.flanilla.gid; + in { + # flanilla family minecraft server + users.groups.${user} = {}; + users.users.${user} = { + isSystemUser = true; + createHome = false; + group = user; + }; + virtualisation.oci-containers.containers.minecraft-flanilla-creative = { + autoStart = true; + image = "docker.io/itzg/minecraft-server"; + user = "${toString uid}:${toString gid}"; + extraOptions = ["--tty" "--interactive"]; + environment = { + EULA = "true"; + UID = toString uid; + GID = toString gid; + STOP_SERVER_ANNOUNCE_DELAY = "20"; + TZ = "America/Chicago"; + VERSION = "1.21"; OPS = "lytedev"; MODE = "creative"; DIFFICULTY = "peaceful"; @@ -1140,23 +1203,29 @@ sudo nix run nixpkgs#ipmitool -- raw 0x30 0x30 0x02 0xff 0x00 ENABLE_QUERY = "true"; ENABLE_COMMAND_BLOCK = "true"; }; - - environmentFiles = [ - # config.sops.secrets."flanilla.env".path - ]; - - ports = ["26966:25565"]; + ports = ["${toString port}:25565"]; volumes = [ - "/storage/flanilla/data:/data" - "/storage/flanilla/worlds:/worlds" + "${dir}/data:/data" + "${dir}/worlds:/worlds" ]; }; + systemd.tmpfiles.settings = { + "10-${user}-creative" = { + "${dir}" = { + "d" = { + mode = "0770"; + user = user; + group = user; + }; + }; + }; + }; + services.restic.commonPaths = [dir]; networking.firewall.allowedTCPPorts = [ - 26966 + port ]; - */ - } + }) ({options, ...}: let /* toml = pkgs.formats.toml {};