79 lines
2.2 KiB
Nix
79 lines
2.2 KiB
Nix
{
|
|
config,
|
|
lib,
|
|
pkgs,
|
|
...
|
|
}:
|
|
{
|
|
options.bchmnn = {
|
|
network = {
|
|
nm = {
|
|
enable = lib.mkEnableOption "nm";
|
|
};
|
|
resolved = {
|
|
enable = lib.mkEnableOption "resolved";
|
|
};
|
|
networkd = {
|
|
enable = lib.mkEnableOption "networkd";
|
|
};
|
|
};
|
|
collections = {
|
|
vpn = {
|
|
dryborg = {
|
|
enable = lib.mkEnableOption "dryborg";
|
|
};
|
|
};
|
|
};
|
|
};
|
|
config = {
|
|
networking = {
|
|
networkmanager.enable = config.bchmnn.network.nm.enable;
|
|
};
|
|
|
|
systemd.services = lib.mkIf (config.bchmnn.network.nm.enable) {
|
|
NetworkManager-wait-online.enable = false;
|
|
};
|
|
|
|
services.resolved.enable = (
|
|
config.bchmnn.network.nm.enable || config.bchmnn.collections.vpn.enable
|
|
);
|
|
|
|
environment.systemPackages = lib.optionals (config.bchmnn.collections.vpn.enable) [
|
|
pkgs.openvpn3
|
|
pkgs.mullvad-vpn
|
|
pkgs.wireguard-tools # tools for the wireguard secure network tunnel
|
|
];
|
|
services.mullvad-vpn.enable = config.bchmnn.collections.vpn.enable;
|
|
|
|
age.secrets =
|
|
lib.mkIf (config.bchmnn.collections.vpn.enable && config.bchmnn.collections.vpn.dryborg.enable)
|
|
{
|
|
keys-wireguard-dryborg-privatekey = {
|
|
file = ../../secrets/keys/wireguard/dryborg/privatekey.age;
|
|
};
|
|
keys-wireguard-dryborg-presharedkey = {
|
|
file = ../../secrets/keys/wireguard/dryborg/presharedkey.age;
|
|
};
|
|
};
|
|
|
|
networking.wg-quick.interfaces =
|
|
lib.mkIf (config.bchmnn.collections.vpn.enable && config.bchmnn.collections.vpn.dryborg.enable)
|
|
{
|
|
"vpn.dryb.org" = {
|
|
autostart = false;
|
|
privateKeyFile = config.age.secrets.keys-wireguard-dryborg-privatekey.path;
|
|
address = [ "10.200.200.1/24" ];
|
|
dns = [ "192.168.2.1" ];
|
|
peers = [
|
|
{
|
|
publicKey = "JY5fb0RS7C8WyPPEeymzuMSUeIhDtICGk1FYJgTRnTs=";
|
|
presharedKeyFile = config.age.secrets.keys-wireguard-dryborg-presharedkey.path;
|
|
allowedIPs = [ "0.0.0.0/0" ];
|
|
endpoint = "vpn.dryb.org:53280";
|
|
persistentKeepalive = 21;
|
|
}
|
|
];
|
|
};
|
|
};
|
|
};
|
|
}
|