python3Packages.orjson: Disable failing tests on 32 bit
[NixPkgs.git] / nixos / modules / services / networking / radvd.nix
blob72590eda4ee6840cac56a14092379a5ec6b84dcc
1 # Module for the IPv6 Router Advertisement Daemon.
3 { config, lib, pkgs, ... }:
5 with lib;
7 let
9   cfg = config.services.radvd;
11   confFile = pkgs.writeText "radvd.conf" cfg.config;
17   ###### interface
19   options.services.radvd = {
21     enable = mkOption {
22       type = types.bool;
23       default = false;
24       description =
25         lib.mdDoc ''
26           Whether to enable the Router Advertisement Daemon
27           ({command}`radvd`), which provides link-local
28           advertisements of IPv6 router addresses and prefixes using
29           the Neighbor Discovery Protocol (NDP).  This enables
30           stateless address autoconfiguration in IPv6 clients on the
31           network.
32         '';
33     };
35     package = mkOption {
36       type = types.package;
37       default = pkgs.radvd;
38       defaultText = literalExpression "pkgs.radvd";
39       description = lib.mdDoc ''
40         The RADVD package to use for the RADVD service.
41       '';
42     };
44     config = mkOption {
45       type = types.lines;
46       example =
47         ''
48           interface eth0 {
49             AdvSendAdvert on;
50             prefix 2001:db8:1234:5678::/64 { };
51           };
52         '';
53       description =
54         lib.mdDoc ''
55           The contents of the radvd configuration file.
56         '';
57     };
59   };
62   ###### implementation
64   config = mkIf cfg.enable {
66     users.users.radvd =
67       {
68         isSystemUser = true;
69         group = "radvd";
70         description = "Router Advertisement Daemon User";
71       };
72     users.groups.radvd = {};
74     systemd.services.radvd =
75       { description = "IPv6 Router Advertisement Daemon";
76         wantedBy = [ "multi-user.target" ];
77         after = [ "network.target" ];
78         serviceConfig =
79           { ExecStart = "@${cfg.package}/bin/radvd radvd -n -u radvd -C ${confFile}";
80             Restart = "always";
81           };
82       };
84   };