diff --git a/flake.nix b/flake.nix index 886a15ab..64b59fe8 100644 --- a/flake.nix +++ b/flake.nix @@ -107,7 +107,7 @@ cube = { modules = [ basant.nixosModule ]; }; - # box = { }; + box = { channelName = "nixos" }; # hypercube = { }; # work = { }; }; @@ -118,8 +118,7 @@ suites = with profiles; rec { base = [ core users.root users.anish ]; sealight = [ base server ]; # matrix rsshub backup wireguard - mossnet = [ base server ]; # taskd nextcloud networking wireguard shaarli mod-wallabag wallabag headphones dns backup monitoring dev gonic module-gonic cron nfs - + mossnet = [ base server taskd nextcloud networking wireguard-box shaarli wallabag headphones dns backup monitoring dev gonic cron nfs]; cube = [ base site server ]; graphical = [ base bluetooth music sync wireguard wifi desktop ]; curve = [ graphical secrets ]; diff --git a/profiles/wireguard-box/default.nix b/profiles/wireguard-box/default.nix new file mode 100644 index 00000000..55e179aa --- /dev/null +++ b/profiles/wireguard-box/default.nix @@ -0,0 +1,61 @@ +{ config, pkgs, lib, ... }: + +{ + services.tailscale.enable = true; + networking.firewall.allowedUDPPorts = [ 60990 ]; + + # Enable WireGuard + networking.wireguard.interfaces = { + # "wg0" is the network interface name. You can name the interface arbitrarily. + wg0 = { + # Determines the IP address and subnet of the client's end of the tunnel interface. + ips = [ "10.0.69.4/24" ]; + listenPort = 60990; # to match firewall allowedUDPPorts (without this wg uses random port numbers) + + # Path to the private key file. + # + # Note: The private key can also be included inline via the privateKey option, + # but this makes the private key world-readable; thus, using privateKeyFile is + # recommended. + privateKeyFile = "/home/anish/wg/privkey"; + + peers = [ + # For a client configuration, one peer entry for the server will suffice. + { + # Public key of the server (not a file path). + publicKey = "c1J4p63rD3IlszugMZiki7UBV3YmDdqa3DU4UejXzAI="; + + # Forward all the traffic via VPN. + allowedIPs = [ "10.0.69.0/24" ]; + # Or forward only particular subnets + #allowedIPs = [ "10.100.0.1" "91.108.12.0/22" ]; + + # Set this to the server IP and port. + endpoint = "sealight.xyz:60990"; # ToDo: route to endpoint not automatically configured https://wiki.archlinux.org/index.php/WireGuard#Loop_routing https://discourse.nixos.org/t/solved-minimal-firewall-setup-for-wireguard-client/7577 + + # Send keepalives every 25 seconds. Important to keep NAT tables alive. + persistentKeepalive = 25; + } + ]; + }; + }; + +# boot.extraModulePackages = with config.boot.kernelPackages; [ wireguard ]; +# environment.systemPackages = [ pkgs.wireguard ]; +# networking.wireguard.enable = true; +# networking.wireguard.interfaces = { +# wg0 = { +# ips = [ "10.0.69.4/32" ]; +# privateKeyFile = "/home/anish/wg/privkey"; +# listenPort = 60990; +# +# peers = [ +# { # helix - server +# publicKey = "{c1J4p63rD3IlszugMZiki7UBV3YmDdqa3DU4UejXzAI=}"; +# allowedIPs = [ "10.0.69.1/24" ]; +# endpoint = "sealight.xyz:60990"; +# persistentKeepalive = 25; +# } ]; +# }; +# }; +}