88 lines
2.4 KiB
Nix
88 lines
2.4 KiB
Nix
{ inputs, pkgs, lib, config, ... }:
|
|
{
|
|
# Example: 3-node HA control plane. Replace IPs/hostnames to match your cluster.
|
|
imports = [ inputs.self.nixosModules.plasmacloud ];
|
|
|
|
networking.hostName = lib.mkDefault "plasmacloud-node01";
|
|
networking.firewall.allowedTCPPorts = [ 8080 8081 8082 8083 8084 8085 8086 8087 9000 9001 9002 2379 2380 2381 2479 2480 ];
|
|
|
|
# Core data stores
|
|
services.chainfire = {
|
|
enable = true;
|
|
dataDir = "/var/lib/chainfire";
|
|
# Adjust ports if you need to avoid conflicts; defaults are fine for most cases.
|
|
port = 2379;
|
|
raftPort = 2380;
|
|
gossipPort = 2381;
|
|
};
|
|
|
|
services.flaredb = {
|
|
enable = true;
|
|
dataDir = "/var/lib/flaredb";
|
|
port = 2479;
|
|
raftPort = 2480;
|
|
httpPort = 8082;
|
|
};
|
|
|
|
# IAM
|
|
services.iam = {
|
|
enable = true;
|
|
dataDir = "/var/lib/iam";
|
|
};
|
|
|
|
# Compute + networking + ingress
|
|
services.plasmavmc.enable = true;
|
|
services.prismnet.enable = true;
|
|
services.flashdns.enable = true;
|
|
services.fiberlb.enable = true;
|
|
services.apigateway = {
|
|
enable = true;
|
|
authProviders = [{
|
|
name = "iam";
|
|
providerType = "grpc";
|
|
endpoint = "http://127.0.0.1:${toString config.services.iam.port}";
|
|
}];
|
|
creditProviders = [{
|
|
name = "creditservice";
|
|
providerType = "grpc";
|
|
endpoint = "http://127.0.0.1:${toString config.services.creditservice.grpcPort}";
|
|
}];
|
|
routes = [
|
|
{
|
|
name = "iam-rest";
|
|
pathPrefix = "/iam";
|
|
upstream = "http://127.0.0.1:8083";
|
|
stripPrefix = true;
|
|
auth = {
|
|
provider = "iam";
|
|
mode = "required";
|
|
};
|
|
}
|
|
{
|
|
name = "credit-rest";
|
|
pathPrefix = "/credit";
|
|
upstream = "http://127.0.0.1:${toString config.services.creditservice.httpPort}";
|
|
stripPrefix = true;
|
|
auth = {
|
|
provider = "iam";
|
|
mode = "required";
|
|
};
|
|
credit = {
|
|
provider = "creditservice";
|
|
mode = "optional";
|
|
units = 1;
|
|
commitOn = "success";
|
|
};
|
|
}
|
|
];
|
|
};
|
|
services.lightningstor.enable = true;
|
|
services.creditservice.enable = true;
|
|
|
|
# Optional: install binaries for debugging
|
|
environment.systemPackages = with inputs.self.packages.${pkgs.system}; [
|
|
chainfire-server flaredb-server iam-server plasmavmc-server
|
|
prismnet-server flashdns-server fiberlb-server apigateway-server lightningstor-server
|
|
creditservice-server
|
|
];
|
|
}
|