Files
homelab/modules/tools.nix
2025-12-09 14:35:20 +01:00

57 lines
1.5 KiB
Nix

{
config,
lib,
...
}:
let
build_ip =
arg:
(
if (!lib.strings.isString arg) then
"${config.globals.ip_prefix}${toString arg}"
else if (lib.hasAttr arg config.id) then
let
id = config.id.${arg};
ip = if (id > 1000) then id - 1000 else id;
in
"${config.globals.ip_prefix}${toString ip}"
else if (lib.hasAttr arg config.globals.other_hosts) then
let
ip = config.globals.other_hosts.${arg}.ip;
in
"${config.globals.ip_prefix}${toString ip}"
else
"${config.globals.ip_prefix}${toString arg}" # probably erroneous
);
build_ip_cidr = arg: "${build_ip arg}/${toString config.globals.cidr}";
mask_cidr = build_ip_cidr 0;
build_hostname = arg: "${arg}${config.globals.domains.external}";
build_db_uri =
container: base:
let
db_user = container;
db_pass = config.my-lxc.${container}.db.password;
db_host = build_ip "db";
db_port = "5432";
db_name = base;
in
"postgresql://${db_user}:${db_pass}@${db_host}:${db_port}/${db_name}";
build_proto_uri =
proto: container: port:
let
ip = build_ip container;
in
"${proto}://${ip}:${toString port}";
in
{
build_ip = build_ip;
build_ip_cidr = build_ip_cidr;
mask_cidr = mask_cidr;
build_hostname = build_hostname;
build_db_uri = build_db_uri;
build_proto_uri = build_proto_uri;
loki_addr = "${build_ip "monitoring"}:3100";
metrics_addr = "${build_ip "metrics"}:9090";
}