80 lines
2.0 KiB
Nix
80 lines
2.0 KiB
Nix
{ config, pkgs, lib, ... }:
|
|
|
|
{
|
|
sops.secrets.ommpassword = {};
|
|
sops.secrets.sipsecret = {};
|
|
|
|
services.fieldpoc = {
|
|
enable = true;
|
|
ommIp = "10.42.132.2";
|
|
ommUser = "omm";
|
|
ommPasswordPath = config.sops.secrets.ommpassword.path;
|
|
sipsecretPath = config.sops.secrets.sipsecret.path;
|
|
dhcp = {
|
|
enable = true;
|
|
interface = "vlan132";
|
|
subnet = "10.42.132.0/24";
|
|
pool = "10.42.132.200 - 10.42.132.250";
|
|
router = "10.42.132.1";
|
|
dnsServers = "10.42.10.8";
|
|
omm = "10.42.132.2";
|
|
reservations = [
|
|
{
|
|
name = "omm";
|
|
macAddress = "AA:C3:A9:26:1F:77";
|
|
ipAddress = "10.42.132.2";
|
|
}
|
|
{
|
|
name = "rfp-01";
|
|
macAddress = "00:30:42:1B:8C:7A";
|
|
ipAddress = "10.42.132.11";
|
|
}
|
|
];
|
|
};
|
|
};
|
|
|
|
services.yate.config = {
|
|
accfile.dialout = {
|
|
enabled = "yes";
|
|
protocol = "sip";
|
|
username = "yate";
|
|
password = "yate";
|
|
registrar = "yate-dialup.bula22.de";
|
|
};
|
|
regexroute = "[default]
|
|
\${username}^$=-;error=noauth
|
|
^yate$=goto dialin
|
|
^.*$=line/\\0;line=dialout
|
|
|
|
[dialin]
|
|
\${sip_x-called}^.*$=lateroute/\\1";
|
|
};
|
|
|
|
environment.systemPackages = with pkgs; [
|
|
(writers.makePythonWriter python39 python39.pkgs "/bin/dect_claim" { libraries = [ python39.pkgs.python-yate ]; } (builtins.readFile ./dect_claim.py))
|
|
(runCommand "yintro.slin" {} ''
|
|
mkdir -p $out/share/sounds/yate
|
|
ln -s ${./yintro.slin} $out/share/sounds/yate/yintro.slin
|
|
'')
|
|
];
|
|
|
|
systemd.services.fieldpoc-nerd = {
|
|
wantedBy = ["multi-user.target"];
|
|
startAt = "*-*-* *:*:00";
|
|
script = let
|
|
reloadScript = pkgs.writeText "reload" ''
|
|
spawn ${pkgs.inetutils}/bin/telnet localhost 9437
|
|
expect "> "
|
|
send "reload\n"
|
|
expect "> "
|
|
send "exit\n"
|
|
expect "disconnecting"
|
|
'';
|
|
in ''
|
|
${pkgs.curl}/bin/curl https://nerd.bula22.de/export.json\?event=1 > /etc/fieldpoc/extensions.json
|
|
|
|
${pkgs.expect}/bin/expect ${reloadScript}
|
|
'';
|
|
};
|
|
}
|