65 lines
1.6 KiB
Nix
65 lines
1.6 KiB
Nix
{ ... }:
|
|
{
|
|
_class = "clan.service";
|
|
manifest.name = "gw-router";
|
|
manifest.description = "A gateway router service to configure most of a router features";
|
|
manifest.readme = "A gateway router service to configure most of a router features";
|
|
manifest.categories = [ "System" ];
|
|
|
|
roles.default = {
|
|
description = "A default role for the router node";
|
|
|
|
interface =
|
|
{ lib, config, ... }:
|
|
{
|
|
options = {
|
|
wan = {
|
|
interface = lib.mkOption {
|
|
type = lib.types.str;
|
|
description = "Physical WAN port the PPPoE session runs on.";
|
|
};
|
|
|
|
vlanId = lib.mkOption {
|
|
type = lib.types.nullOr (lib.types.ints.between 1 4094);
|
|
default = null;
|
|
description = ''
|
|
802.1Q tag the ISP requires for the PPPoE session (AIS Thailand: 10);
|
|
null for untagged PPPoE directly on the port. Unrelated to the LAN
|
|
VLANs — this tag exists only on the WAN port.
|
|
'';
|
|
};
|
|
};
|
|
};
|
|
};
|
|
|
|
perInstance =
|
|
{ settings, ... }:
|
|
{
|
|
nixosModule =
|
|
{
|
|
config,
|
|
pkgs,
|
|
lib,
|
|
...
|
|
}:
|
|
let
|
|
in
|
|
{
|
|
|
|
environment.systemPackages = with pkgs; [
|
|
tcpdump
|
|
mtr
|
|
ethtool
|
|
conntrack-tools
|
|
knot-dns
|
|
iftop
|
|
librespeed-cli
|
|
];
|
|
|
|
};
|
|
};
|
|
};
|
|
|
|
imports = [ ./pppoe.nix ];
|
|
}
|