mirror of
https://git.sr.ht/~magic_rb/dotfiles
synced 2024-11-30 12:06:13 +01:00
111 lines
2.9 KiB
Nix
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
|
||
|
'';
|
||
|
}
|
||
|
];
|
||
|
}
|