Files
platform/gw/default.nix
2025-11-22 17:48:17 +01:00

142 lines
4.0 KiB
Nix

{ pkgs, ... }:
{
system.autoUpgrade.enable = pkgs.lib.mkForce false;
networking = {
useNetworkd = true;
nameservers = [ "127.0.0.1" ];
domain = "oceanbox.io";
search = [
"obx"
"oceanbox.io"
];
useDHCP = false;
extraHosts = import ../hosts.nix + import ./hosts.nix;
};
environment.systemPackages = with pkgs; [
iperf
zellij
fping
];
services.resolved = {
enable = true;
dnssec = "false";
extraConfig = ''
DNSStubListener=no
'';
fallbackDns = [
"1.1.1.1"
"1.0.0.1"
];
};
boot = {
loader.systemd-boot.enable = true;
loader.efi.canTouchEfiVariables = true;
};
console = {
font = "Lat2-Terminus16";
keyMap = "us";
};
i18n = {
defaultLocale = "en_US.UTF-8";
extraLocaleSettings = {
LC_CTYPE = "en_DK.UTF-8";
LC_TIME = "en_DK.UTF-8";
LC_PAPER = "en_DK.UTF-8";
LC_NAME = "en_DK.UTF-8";
LC_ADDRESS = "en_DK.UTF-8";
LC_TELEPHONE = "en_DK.UTF-8";
LC_MEASUREMENT = "en_DK.UTF-8";
LC_IDENTIFICATION = "en_DK.UTF-8";
};
};
time.timeZone = "Europe/Oslo";
features = {
desktop.enable = false;
laptop.enable = false;
desktop.wayland.enable = false;
desktop.hyprland.enable = false;
cachix.enable = false;
# host = {
# inherit name;
# inherit address;
# };
pki = {
enable = false;
certmgr.enable = true;
certs = {
foo = {
hosts = [ "localhost" ];
};
};
};
os = {
networkmanager.enable = false;
docker.enable = true;
adminAuthorizedKeys = [
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIKiAS30ZO+wgfAqDE9Y7VhRunn2QszPHA5voUwo+fGOf jonas-3"
"ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQDULdlLC8ZLu9qBZUYsjhpr6kv5RH4yPkekXQdD7prkqapyoptUkO1nOTDwy7ZsKDxmp9Zc6OtdhgoJbowhGW3VIZPmooWO8twcaYDpkxEBLUehY/n8SlAwBtiHJ4mTLLcynJMVrjmTQLF3FeWVof0Aqy6UtZceFpLp1eNkiHTCM3anwtb9+gfr91dX1YsAOqxqv7ooRDu5rCRUvOi4OvRowepyuBcCjeWpTkJHkC9WGxuESvDV3CySWkGC2fF2LHkAu6SFsFE39UA5ZHo0b1TK+AFqRFiBAb7ULmtuno1yxhpBxbozf8+Yyc7yLfMNCyBpL1ci7WnjKkghQv7yM1xN2XMJLpF56v0slSKMoAs7ThoIlmkRm/6o3NCChgu0pkpNg/YP6A3HfYiEDgChvA6rAHX6+to50L9xF3ajqk4BUzWd/sCk7Q5Op2lzj31L53Ryg8vMP8hjDjYcgEcCCsGOcjUVgcsmfC9LupwRIEz3aF14AWg66+3zAxVho8ozjes= jonas.juselius@juselius.io"
"ssh-rsa AAAAB3NzaC1yc2EAAAABJQAAAQEAlHx2RWPvBhYzevQE+llnyDuInSsyhs6PFaoavtEB2VLr2gOFxDZW5VmDXlorAXtCpcPpJdYbnPuRWZd0m5950BatWy5UPgDIK2Qm5XABlq6/tXzHJme9PJHcXwo6WStaB31RiJs9nhdYIhPRjcbeFdx/7Fz3atVikE6YUtb8a7YGeKgZh6ashtYPpG3oSBLn1menjk6CxVRt16de3PoDlYav/J8WPbaGJqcPIU9rjzqJkI4aG1txSyJ8Vt2vawQKnzPZCuQAdWgquE3CbJkJbgoh2TKmHds71WMTg3ZXz2KfVjdN8IXCTxdySlgVVAN6x0usGVnA22XnMYQEgbcb3Q== rsa-key-20201215"
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAII77Aa2MFZMTha8PdkNg32UR8y6Hwb4R0aR9Ad9qifNq mrtz@wurst"
];
};
};
programs.singularity.enable = false;
nixpkgs.config.allowUnfreee = true;
# Wait for resolved and network-online
systemd.services.tailscaled.after = [
"network-online.target"
"systemd-resolved.service"
];
# Don't wait on tailscale
systemd.network.wait-online.ignoredInterfaces = [ "tailscale0" ];
services.networkd-dispatcher = {
enable = true;
rules = {
"tailscale-router" = {
onState = [ "routable" ];
script = ''
#!${pkgs.runtimeShell}
${pkgs.ethtool}/bin/ethtool -K ens3 rx-udp-gro-forwarding on
${pkgs.ethtool}/bin/ethtool -K ens3 rx-gro-list off
${pkgs.ethtool}/bin/ethtool -K ens3 tx-udp-segmentation on
exit 0
'';
};
};
};
system.activationScripts.system-diff = {
supportsDryActivation = true; # safe: only outputs to stdout
text = ''
export PATH="${pkgs.lib.makeBinPath [ pkgs.nixVersions.latest ]}:$PATH"
if [ -e /run/current-system ]; then
${pkgs.lib.getExe pkgs.nvd} diff '/run/current-system' "$systemConfig" || true
fi
'';
};
imports = [
./users.nix
../dns.nix
../modules
../nixos
];
}