homelab/vm-homelab.nix

91 lines
2.2 KiB
Nix

{ inputs, pkgs, ... }:
{
imports = [
./vm-base.nix
];
config = {
my.vm = {
name = "lab01";
ip4 = "192.168.0.5";
};
# environment.systemPackages = with pkgs; [
#
# ];
networking.firewall.allowedTCPPorts = [
80
443
];
services.caddy = {
enable = true;
virtualHosts = {
"feed.rperce.net".extraConfig = ''
reverse_proxy http://192.168.0.5:8080
'';
"barkeep.dukeceph.xyz".extraConfig = ''
reverse_proxy http://192.168.0.2:8000
'';
"barkeep.rperce.net".extraConfig = ''
reverse_proxy http://192.168.0.2:8000
'';
"minecraft.dukeceph.xyz".extraConfig = ''
reverse_proxy http://192.168.0.4:8080
'';
"immich.rperce.net".extraConfig = ''
reverse_proxy http://192.168.0.2:2283
'';
"metrics.rperce.net".extraConfig = ''
reverse_proxy http://192.168.0.6:3000
'';
"metrics.dukeceph.xyz".extraConfig = ''
reverse_proxy http://192.168.0.6:3000
'';
"jellyfin.rperce.net".extraConfig = ''
reverse_proxy http://192.168.0.2:8096
'';
"forge.rperce.net".extraConfig = ''
reverse_proxy http://192.168.0.5:3333
'';
"unifi.rperce.net".extraConfig = ''
reverse_proxy 192.168.0.100:8443 {
transport http {
tls_insecure_skip_verify
}
header_up - Authorization
}
'';
};
};
services.miniflux = {
enable = true;
adminCredentialsFile = "/mnt/nfs/miniflux/admin-credentials";
config = {
LISTEN_ADDR = "0.0.0.0:8080";
};
};
services.forgejo = {
enable = true;
database.type = "postgres";
lfs.enable = true;
settings = {
server = {
DOMAIN = "forge.rperce.net";
ROOT_URL = "https://forge.rperce.net/";
HTTP_PORT = 3333;
};
service.DISABLE_REGISTRATION = true;
actions = {
ENABLED = true;
DEFAULT_ACTIONS_URL = "github";
};
mailer.ENABLED = false;
};
};
};
}