48 lines
1.3 KiB
Nix
48 lines
1.3 KiB
Nix
{ config, lib, pkgs, ... }:
|
|
|
|
with lib;
|
|
|
|
let
|
|
cfg = config.services.ndppd;
|
|
|
|
configFile = pkgs.runCommand "ndppd.conf" {} ''
|
|
substitute ${pkgs.ndppd}/etc/ndppd.conf $out \
|
|
--replace eth0 ${cfg.interface} \
|
|
--replace 1111:: ${cfg.network}
|
|
'';
|
|
in {
|
|
options = {
|
|
services.ndppd = {
|
|
enable = mkEnableOption "daemon that proxies NDP (Neighbor Discovery Protocol) messages between interfaces";
|
|
interface = mkOption {
|
|
type = types.string;
|
|
default = "eth0";
|
|
example = "ens3";
|
|
description = "Interface which is on link-level with router.";
|
|
};
|
|
network = mkOption {
|
|
type = types.string;
|
|
default = "1111::";
|
|
example = "2001:DB8::/32";
|
|
description = "Network that we proxy.";
|
|
};
|
|
configFile = mkOption {
|
|
type = types.nullOr types.path;
|
|
default = null;
|
|
description = "Path to configuration file.";
|
|
};
|
|
};
|
|
};
|
|
|
|
config = mkIf cfg.enable {
|
|
systemd.packages = [ pkgs.ndppd ];
|
|
environment.etc."ndppd.conf".source = if (cfg.configFile != null) then cfg.configFile else configFile;
|
|
systemd.services.ndppd = {
|
|
serviceConfig.RuntimeDirectory = [ "ndppd" ];
|
|
wantedBy = [ "multi-user.target" ];
|
|
};
|
|
};
|
|
|
|
meta.maintainers = with maintainers; [ gnidorah ];
|
|
}
|