dotfiles/nixos/systems/omen/udp2tcp.nix
Magic_RB 519d7b3841
Fill out omen, toothpick and heater
Signed-off-by: Magic_RB <magic_rb@redalder.org>
2023-06-16 16:08:01 +02:00

111 lines
2.9 KiB
Nix

{ pkgs, lib, ... }:
let
inherit (lib)
makeBinPath;
in
{
systemd.services.udp2tcp = {
wantedBy = [ "multi-user.target" ];
after = [ "network.target" ];
path = with pkgs; [ dig.host ];
restartIfChanged = true;
script = ''
${pkgs.udp-over-tcp}/bin/udp2tcp\
--udp-listen 127.0.0.1:6665 \
--tcp-forward "64.225.104.221:6001"
'';
};
systemd.services.udp2tcp-wake-restart = {
wantedBy = [
"suspend.target"
"hibernate.target"
"hybrid-sleep.target"
"suspend-then-hibernate.target"
];
after = [
"suspend.target"
"hibernate.target"
"hybrid-sleep.target"
"suspend-then-hibernate.target"
];
script = ''
systemctl restart udp2tcp.service
'';
};
networking.networkmanager.dispatcherScripts = [
{
source = pkgs.writeShellScript "udp2tcp.sh"
''
export PATH=${makeBinPath [ pkgs.wireguard-tools ]}:$PATH
_interface="$1"
_action="$2"
echo "action: $_action interface: $_interface id: $CONNECTION_ID"
case "$_action" in
up)
case "$_interface" in
wlo1)
case "$CONNECTION_ID" in
VU-Campusnet)
wg set wg0 \
peer h4g6vWjOB6RS0NbrP/Kvb2CZeutm/F+ZfDbJmEd1Dgk= \
endpoint 127.0.0.1:6665
systemctl restart udp2tcp.service
;;
*)
wg set wg0 \
peer h4g6vWjOB6RS0NbrP/Kvb2CZeutm/F+ZfDbJmEd1Dgk= \
endpoint 64.225.104.221:6666
systemctl stop udp2tcp.service
;;
esac
;;
*)
;;
esac
;;
down)
wg set wg0 \
peer h4g6vWjOB6RS0NbrP/Kvb2CZeutm/F+ZfDbJmEd1Dgk= \
endpoint 64.225.104.221:6666
systemctl stop udp2tcp.service
;;
*)
;;
esac
'';
}
{
source = pkgs.writeShellScript "nfs-mounts.sh"
''
export PATH=${makeBinPath [ pkgs.iputils ]}:$PATH
ping -c 1 -W 0.7 8.8.4.4 # > /dev/null 2>&1
if [ $? -eq 0 ] ; then
echo "Mounting network drives"
systemctl start mnt-net-kyle.mount \
mnt-net-cartman.mount \
mnt-net-stan.mount \
mnt-net-getmail.d.mount \
mnt-net-mail\\x2dconfiguration &
else
echo "Unmounting network drives"
umount -ql \
/mnt/net/kyle \
/mnt/net/cartman \
/mnt/net/stan \
/mnt/net/getmail.d \
/mnt/net/mail-configuration &
fi
'';
}
];
}