aboutsummaryrefslogtreecommitdiffstats
path: root/home/root/arrakis.nix
diff options
context:
space:
mode:
Diffstat (limited to 'home/root/arrakis.nix')
-rw-r--r--home/root/arrakis.nix71
1 files changed, 70 insertions, 1 deletions
diff --git a/home/root/arrakis.nix b/home/root/arrakis.nix
index 83c92cd..d23549a 100644
--- a/home/root/arrakis.nix
+++ b/home/root/arrakis.nix
@@ -1,6 +1,75 @@
-{ inputs, lib, pkgs, config, outputs, ... }:
+{ config, inputs, lib, outputs, pkgs, ... }:
{
imports = [
common/core
];
+
+ home.file = {
+ "bin/vpnctl" = {
+ executable = true;
+ text = ''
+ #!/usr/bin/env zsh
+
+ function status_vpn {
+
+ ip netns exec vpn su -c 'curl -m 10 -s https://bitgnome.net/ip/ | grep REMOTE_ADDR' nipsy
+ ip netns exec vpn su -c 'curl -m 10 -s https://www.cloudflarestatus.com | grep "Cloudflare Status"' nipsy
+
+ }
+
+ function start_vpn {
+
+ ip netns add vpn
+ ip link add veth.host type veth peer veth.vpn
+ ip link set dev veth.host up
+ ip link set veth.vpn netns vpn up
+ ip -n vpn address add 192.168.1.3/24 dev veth.vpn
+ ip route add 192.168.1.3/32 dev veth.host
+ ip link add wg1 type wireguard
+ ip link set wg1 netns vpn
+ ip -n vpn -4 address add $(grep ^#Address /run/secrets/wireguard/wg1_conf | cut -d= -f2 | cut -d, -f1 | xargs) dev wg1
+ ip netns exec vpn wg setconf wg1 /run/secrets/wireguard/wg1_conf
+ ip -n vpn link set wg1 up
+ ip -n vpn route add default dev wg1
+ ip netns exec vpn nft -f /etc/nftables-vpn.conf
+
+ }
+
+ function stop_vpn {
+
+ #systemctl stop qbittorrent-nox@nipsy.service prowlarr.service
+ ip netns del vpn
+ ip link del veth.host
+
+ }
+
+ if [[ -z "${1}" || "${1}" == "status" ]]; then
+
+ status_vpn
+
+ elif [[ "${1}" == "restart" ]]; then
+
+ stop_vpn
+ sleep 2
+ start_vpn
+ #systemctl start qbittorrent-nox@nipsy.service prowlarr.service
+
+ elif [[ "${1}" == "restart_firewall" ]]; then
+
+ ip netns exec vpn nft -f /etc/nftables-vpn.conf
+
+ elif [[ "${1}" == "start" ]]; then
+
+ start_vpn
+
+ elif [[ "${1}" == "stop" ]]; then
+
+ stop_vpn
+
+ fi
+
+ exit 0
+ '';
+ };
+ }:
}