nixpkgs/nixos/modules/services/networking/radvd.nix
William A. Kennington III aa77fe0fb0 nixos/radvd: Convert to a systemd unit
Additionally, remove the automatic initialization of the ipv6 forwarding
sysctl as this should be handled by the end user. This really should not
be an issue as most people running radvd are likely forwarding ipv6
packets.
2014-08-24 03:12:55 -07:00

86 lines
1.7 KiB
Nix

# Module for the IPv6 Router Advertisement Daemon.
{ config, lib, pkgs, ... }:
with lib;
let
cfg = config.services.radvd;
confFile = pkgs.writeText "radvd.conf" cfg.config;
in
{
###### interface
options = {
services.radvd.enable = mkOption {
default = false;
description =
''
Whether to enable the Router Advertisement Daemon
(<command>radvd</command>), which provides link-local
advertisements of IPv6 router addresses and prefixes using
the Neighbor Discovery Protocol (NDP). This enables
stateless address autoconfiguration in IPv6 clients on the
network.
'';
};
services.radvd.config = mkOption {
example =
''
interface eth0 {
AdvSendAdvert on;
prefix 2001:db8:1234:5678::/64 { };
};
'';
description =
''
The contents of the radvd configuration file.
'';
};
};
###### implementation
config = mkIf cfg.enable {
users.extraUsers.radvd =
{ uid = config.ids.uids.radvd;
description = "Router Advertisement Daemon User";
};
systemd.services.radvd =
{ description = "IPv6 Router Advertisement Daemon";
wantedBy = [ "multi-user.target" ];
after = [ "network.target" ];
path = [ pkgs.radvd ];
preStart = ''
mkdir -m 755 -p /run/radvd
chown radvd /run/radvd
'';
serviceConfig =
{ ExecStart = "@${pkgs.radvd}/sbin/radvd radvd"
+ " -p /run/radvd/radvd.pid -m syslog -u radvd -C ${confFile}";
Restart = "always";
Type = "forking";
PIDFile = "/run/radvd/radvd.pid";
};
};
};
}