Compare commits

...

5 commits

Author SHA1 Message Date
ff604fa02d cobblemon public 2026-03-07 18:26:38 -05:00
5e8cb90b83 cobblemon server init 2026-03-07 18:26:38 -05:00
31576bbfa0 bikeability2 2026-03-07 18:26:38 -05:00
3f477a3fde finish umami 2026-03-07 18:26:38 -05:00
0996300740 cloudflared for nixnas 2026-03-07 18:26:38 -05:00
6 changed files with 115 additions and 20 deletions

34
bikeability2.nix Normal file
View file

@ -0,0 +1,34 @@
{ pkgs, config, lib, ... }:
let
wordpressPort = 5781;
in
{
config = lib.mkMerge [
(lib.mkIf (config.networking.hostName == "nixnas") {
services.wordpress.sites."bikeability.net" = {
virtualHost.listen = [{
port = wordpressPort;
ip = "127.0.0.1";
}];
settings = {
FORCE_SSL_ADMIN = true;
};
extraConfig = ''
$_SERVER['HTTPS']='on';
'';
plugins = {
wpcode = pkgs.stdenv.mkDerivation rec {
name = "wpcode";
version = "2.3.3";
src = pkgs.fetchzip {
url = "https://downloads.wordpress.org/plugins/insert-headers-and-footers.${version}.zip";
hash = "sha256-BjQ62ZvWck/e0kcP6Ny1pOGAfsPVUDQLrvGnvkeq6FY=";
};
installPhase = "mkdir -p $out; cp -R * $out/";
};
};
};
services.cloudflared.tunnels.mine.ingress."bikeability.net" = "http://127.0.0.1:${builtins.toString wordpressPort}";
})
];
}

15
cloudflared.nix Normal file
View file

@ -0,0 +1,15 @@
{ config, lib, ... }:
{
config = lib.mkMerge [
(lib.mkIf (config.networking.hostName == "nixnas") {
services.cloudflared = {
enable = true;
certificateFile = "/Block/cloudflare/cert.pem";
tunnels.mine = {
credentialsFile = "/Block/cloudflare/2d530440-2db8-491a-bb61-7941315d4cb9.json";
default = "http_status:404";
};
};
})
];
}

View file

@ -11,8 +11,10 @@
./emacs.nix
./minecraft/minecraft-servers.nix
./mastodon.nix
./cloudflared.nix
./umami.nix
./bikeability2.nix
"${inputs.home-manager}/nixos"
inputs.nix-minecraft.nixosModules.minecraft-servers
];
options.cos = {

View file

@ -123,17 +123,6 @@ in
};
};
services.nginx.streamConfig = ''
server {
listen 25565 reuseport;
proxy_pass 10.100.0.2:25565;
}
server {
listen 25566 reuseport;
proxy_pass 10.100.0.2:25566;
}
'';
services.dnsmasq = {
enable = true;
settings = {
@ -158,10 +147,6 @@ in
usePredictableInterfaceNames = false;
useDHCP = false;
firewall = {
allowedTCPPorts = [
25565 # minecraft survival
25566 # minecraft creative
];
allowedUDPPorts = [
51820 # wireguard
];

View file

@ -1,7 +1,8 @@
{ config, lib, pkgs, ... }:
{ config, lib, pkgs, inputs, ... }:
let
survivalPort = 25565;
creativePort = 25566;
cobblemonPort = 25567;
users = {
clay53_clayton = "bc2653cd-6cb1-4d15-9d24-cce0d1e8811c";
fire_chase = "c2b1a7ff-abff-41cb-af2a-4a89e942d288";
@ -23,8 +24,15 @@ let
maxRam = "1G";
in
{
imports = [
inputs.nix-minecraft.nixosModules.minecraft-servers
];
config = lib.mkMerge [
(lib.mkIf (config.networking.hostName == "nixnas") {
nixpkgs.overlays = [
inputs.nix-minecraft.overlay
];
services.minecraft-servers = {
enable = true;
eula = true;
@ -46,7 +54,7 @@ in
motd = "Clayton Hickey's Survival";
white-list = true;
};
package = pkgs.minecraftServers.vanilla-1_21_11;
package = pkgs.vanillaServers.vanilla-1_21_11;
jvmOpts = "-Xms${minRam} -Xmx${maxRam}";
};
@ -64,13 +72,63 @@ in
motd = "Clayton Hickey's Creative";
white-list = true;
};
package = pkgs.minecraftServers.vanilla-1_21_11;
package = pkgs.vanillaServers.vanilla-1_21_11;
jvmOpts = "-Xms${minRam} -Xmx${maxRam}";
};
services.minecraft-servers.servers.cobblemon =
let
inherit (inputs.nix-minecraft.lib) collectFilesAt;
modpack = pkgs.fetchPackwizModpack {
url = "https://forgejo.claytonhickey.me/clay53/cobblemon-modpack/raw/branch/master/pack.toml";
packHash = "sha256-rz51hV1kgju7+6OyeEzSwO4+fmoS4/bi0Fo9iCYBOnI=";
};
in
{
enable = true;
autoStart = true;
restart = "always";
enableReload = false;
whitelist = defaultWhitelist;
operators = defaultOperators;
serverProperties = {
server-port = cobblemonPort;
difficulty = 3;
gamemode = 0;
motd = "Clayton Hickey's Cobblemon";
white-list = true;
};
package = pkgs.fabricServers.fabric-1_21_1;
symlinks = collectFilesAt modpack "mods";
};
networking.firewall.interfaces.${config.cos.wireguard.interface}.allowedTCPPorts = [
survivalPort
creativePort
cobblemonPort
];
})
(lib.mkIf (config.networking.hostName == "loadedskypotato") {
services.nginx.streamConfig = ''
server {
listen ${survivalPort} reuseport;
proxy_pass 10.100.0.2:${survivalPort};
}
server {
listen ${creativePort} reuseport;
proxy_pass 10.100.0.2:${creativePort};
}
server {
listen ${cobblemonPort} reuseport;
proxy_pass 10.100.0.2:${cobblemonPort};
}
'';
networking.firewall.allowedTCPPorts = [
survivalPort
creativePort
cobblemonPort
];
})
];

View file

@ -9,10 +9,11 @@ in
enable = true;
settings = {
APP_SECRET_FILE = "/Block/umami/app_secret.txt";
HOSTNAME = config.cos.wireguard.clientInternalIP;
HOSTNAME = "127.0.0.1";
PORT = umamiPort;
};
};
services.cloudflared.tunnels.mine.ingress."umami.claytonhickey.me" = "http://127.0.0.1:${builtins.toString umamiPort}";
})
];
}