121 lines
2.6 KiB
Nix
121 lines
2.6 KiB
Nix
{ inputs }:
|
|
{
|
|
config,
|
|
pkgs,
|
|
modulesPath,
|
|
lib,
|
|
...
|
|
}:
|
|
let
|
|
secrets = {
|
|
firewallRules = { };
|
|
}
|
|
// (import ./secrets.nix);
|
|
wirelessConfig = {
|
|
country_code = "TH";
|
|
inherit (secrets) wpa_passphrase;
|
|
wmm_enabled = 1;
|
|
};
|
|
svc = config.system.service;
|
|
in
|
|
{
|
|
imports = [
|
|
"${inputs.liminix}/modules/wlan.nix"
|
|
"${inputs.liminix}/modules/network"
|
|
"${inputs.liminix}/modules/vlan"
|
|
"${inputs.liminix}/modules/ssh"
|
|
"${inputs.liminix}/modules/bridge"
|
|
"${modulesPath}/profiles/gateway.nix"
|
|
];
|
|
|
|
hostname = "whitehouse";
|
|
boot = {
|
|
tftp = {
|
|
freeSpaceBytes = 3 * 1024 * 1024;
|
|
serverip = "${secrets.lan.prefix}.148";
|
|
ipaddr = "${secrets.lan.prefix}.251";
|
|
};
|
|
};
|
|
|
|
services.sshd = svc.ssh.build {
|
|
authorizedKeys.root = secrets.root.openssh.authorizedKeys.keys;
|
|
};
|
|
|
|
users.root = secrets.root;
|
|
|
|
services.resolvconf = lib.mkForce (
|
|
pkgs.liminix.services.oneshot rec {
|
|
name = "resolvconf";
|
|
up = ''
|
|
( in_outputs ${name}
|
|
echo "nameserver $(output ${config.services.wan} ns1)" > resolv.conf
|
|
echo "nameserver $(output ${config.services.wan} ns2)" >> resolv.conf
|
|
chmod 0444 resolv.conf
|
|
)
|
|
'';
|
|
}
|
|
);
|
|
|
|
profile.gateway = {
|
|
lan = {
|
|
interfaces = with config.hardware.networkInterfaces; [
|
|
wlan
|
|
wlan5
|
|
lan
|
|
];
|
|
inherit (secrets.lan) prefix;
|
|
address = {
|
|
family = "inet";
|
|
address = "${secrets.lan.prefix}.1";
|
|
prefixLength = 24;
|
|
};
|
|
dhcp = {
|
|
start = 10;
|
|
end = 240;
|
|
hosts = { };
|
|
localDomain = "lan";
|
|
};
|
|
};
|
|
wan = {
|
|
interface = svc.pppoe.build {
|
|
interface = config.hardware.networkInterfaces.wan;
|
|
username = secrets.l2tp.name;
|
|
password = secrets.l2tp.password;
|
|
};
|
|
|
|
dhcp6.enable = true;
|
|
};
|
|
firewall = {
|
|
enable = true;
|
|
rules = secrets.firewallRules;
|
|
};
|
|
wireless.networks = {
|
|
|
|
"${secrets.ssid}" = {
|
|
interface = config.hardware.networkInterfaces.wlan;
|
|
hw_mode = "g";
|
|
channel = "2";
|
|
ieee80211n = 1;
|
|
}
|
|
// wirelessConfig;
|
|
"${secrets.ssid}-5" = rec {
|
|
interface = config.hardware.networkInterfaces.wlan5;
|
|
hw_mode = "a";
|
|
channel = 36;
|
|
ht_capab = "[HT40+]";
|
|
vht_oper_chwidth = 1;
|
|
vht_oper_centr_freq_seg0_idx = channel + 6;
|
|
ieee80211n = 1;
|
|
ieee80211ac = 1;
|
|
}
|
|
// wirelessConfig;
|
|
};
|
|
};
|
|
defaultProfile.packages = with pkgs; [
|
|
busybox
|
|
iw
|
|
iptables
|
|
];
|
|
|
|
}
|