feat[server]: add mailserver

This commit is contained in:
Leon Schwarzäugl 2025-11-25 19:46:28 +01:00
parent 31623b65d6
commit c62d244783
Signed by: swarsel
GPG key ID: 26A54C31F2A4FD84
12 changed files with 657 additions and 166 deletions

View file

@ -0,0 +1,82 @@
{ lib, config, minimal, ... }:
{
imports = [
./hardware-configuration.nix
./disk-config.nix
];
topology.self = {
icon = "devices.cloud-server";
};
networking = {
useDHCP = lib.mkForce false;
useNetworkd = true;
dhcpcd.enable = false;
renameInterfacesByMac = lib.mapAttrs (_: v: v.mac) (
config.repo.secrets.local.networking.networks or { }
);
};
boot.initrd.systemd.network = {
enable = true;
networks = {
inherit (config.systemd.network.networks) "10-wan";
};
};
systemd = {
network = {
enable = true;
wait-online.enable = false;
networks =
let
netConfig = config.repo.secrets.local.networking;
in
{
"10-wan" = {
address = [
"${netConfig.wanAddress4}/32"
"${netConfig.wanAddress6}/64"
];
gateway = [ "fe80::1" ];
routes = [
{ Destination = netConfig.defaultGateway4; }
{
Gateway = netConfig.defaultGateway4;
GatewayOnLink = true;
}
];
matchConfig.MACAddress = netConfig.networks.${config.swarselsystems.server.localNetwork}.mac;
networkConfig.IPv6PrivacyExtensions = "yes";
linkConfig.RequiredForOnline = "routable";
};
};
};
};
swarselmodules.server.mailserver = true;
swarselsystems = {
flakePath = "/root/.dotfiles";
info = "2vCPU, 4GB Ram";
isImpermanence = true;
isSecureBoot = false;
isCrypted = true;
isCloud = true;
isSwap = true;
swapSize = "4G";
rootDisk = "/dev/sda";
isBtrfs = true;
isNixos = true;
isLinux = true;
proxyHost = "eagleland";
server = {
inherit (config.repo.secrets.local.networking) localNetwork;
};
};
} // lib.optionalAttrs (!minimal) {
swarselprofiles = {
server = true;
};
}