{ pkgs , lib , config , ... }: let keys = import ../../../variables/keys.nix; in { # TASK: new device networking.hostName = "vmd32387"; # Define your hostname. networking.domain = "contaboserver.net"; networking.firewall.enable = true; networking.firewall.allowedTCPPorts = [ # iperf3 5201 ]; networking.firewall.logRefusedConnections = false; networking.usePredictableInterfaceNames = false; networking.dhcpcd = { enable = true; persistent = true; }; networking.interfaces.eth0 = { useDHCP = true; ipv6.addresses = [ { address = "2a02:c207:3003:2387::1"; prefixLength = 64; } ]; }; networking.defaultGateway6 = { address = "fe80::1"; interface = "eth0"; }; networking.nat = { enable = true; internalInterfaces = [ "ve-+" ]; externalInterface = "eth0"; }; # Kubernetes # services.kubernetes.roles = ["master" "node"]; # virtualization virtualisation = { docker.enable = true; }; services.spice-vdagentd.enable = true; services.qemuGuest.enable = true; systemd.services."sshd-status" = { enable = true; description = "sshd-status service"; path = [ pkgs.systemd ]; script = '' systemctl status sshd | grep -i tasks ''; }; systemd.services.sshd.serviceConfig = { TasksMax = 32; }; systemd.timers."sshd-status" = { description = "Timer to trigger sshd-status periodically"; enable = true; wantedBy = [ "timer.target" "multi-user.target" ]; timerConfig = { OnActiveSec="5s"; OnUnitActiveSec="5s"; AccuracySec="1s"; Unit = "sshd-status.service"; }; }; nix.gc = { automatic = true; }; boot.initrd.network = { enable = true; udhcpc.extraArgs = [ "-x hostname:${config.networking.hostName}" ]; ssh = { enable = true; authorizedKeys = keys.users.steveej.openssh; hostKeys = [ "/etc/secrets/initrd/ssh_host_rsa_key" "/etc/secrets/initrd/ssh_host_ed25519_key" ]; }; }; boot.initrd.postMountCommands = '' for iface in $(cd /sys/class/net && ls); do echo "Bringing down $iface..." ip address flush dev $iface ip link set $iface down done ''; networking.useHostResolvConf = true; containers = { mailserver = import ../../containers/mailserver.nix { hostAddress = "192.168.100.10"; localAddress = "192.168.100.11"; imapsPort = 993; sievePort = 4190; }; backup = import ../../containers/backup.nix { inherit config; hostAddress = "192.168.100.16"; localAddress = "192.168.100.17"; subvolumes = [ "mailserver" "backup" ]; }; }; # This value determines the NixOS release from which the default # settings for stateful data, like file locations and database versions # on your system were taken. It‘s perfectly fine and recommended to leave # this value at the release version of the first install of this system. # Before changing this value read the documentation for this option # (e.g. man configuration.nix or on https://nixos.org/nixos/options.html). system.stateVersion = "20.03"; # Did you read the comment? }