feat(jeeves): wireguard

Add separate module for `wireguard`
Rekey `jeeves_password` (use all `users`' keys)
Add secrets related to Wireguard: server public/private, cheetah public
Add a `.gitignore` for the private `limonka_age` key
This commit is contained in:
reo101 2023-10-23 08:47:06 +03:00
parent 31d4b9561e
commit 4f5af36bc6
Signed by: reo101
GPG key ID: 675AA7EF13964ACB
11 changed files with 148 additions and 32 deletions

View file

@ -4,6 +4,7 @@
(import ./disko.nix { inherit inputs outputs; })
inputs.agenix.nixosModules.default
./network.nix
./wireguard.nix
];
nixpkgs = {

View file

@ -3,7 +3,6 @@
environment.systemPackages = with pkgs; [
];
# Networking
age.secrets."home/wifi.env".file = ../../../../secrets/home/wifi.env.age;
networking.wireless = {
iwd.enable = true;

View file

@ -0,0 +1,62 @@
{ lib, pkgs, config, ... }:
{
environment.systemPackages = with pkgs; [
wireguard-tools
];
# NOTE: key generation
# umask 077
# wg genkey > private
# wg pubkey < private > public
# Server
age.secrets."wireguard/server.private" = {
file = ../../../../secrets/home/wireguard/server.private.age;
mode = "077";
};
age.secrets."wireguard/server.public" = {
file = ../../../../secrets/home/wireguard/server.public.age;
};
# Peers
age.secrets."wireguard/cheetah.pub" = {
file = ../../../../secrets/home/wireguard/cheetah.pub.age;
};
networking.firewall.allowedUDPPorts = [51820];
systemd.network = {
netdevs = {
"50-wg0" = {
netdevConfig = {
Kind = "wireguard";
Name = "wg0";
MTUBytes = "1300";
};
wireguardConfig = {
PrivateKeyFile = config.age.secrets."wireguard/server.private".path;
ListenPort = 51820;
};
wireguardPeers = [
{
# cheetah
wireguardPeerConfig = {
PublicKey = config.age.secrets."wireguard/cheetah.pub".path;
AllowedIPs = [
"0.0.0.0/0"
# "::/0"
];
};
}
];
};
};
networks.wg0 = {
matchConfig.Name = "wg0";
address = ["10.100.0.1/24"];
networkConfig = {
IPMasquerade = "ipv4";
IPForward = true;
};
};
};
}