summary refs log tree commit diff
path: root/nixos/modules/services/networking/radvd.nix
diff options
context:
space:
mode:
authorWilliam A. Kennington III <william@wkennington.com>2014-06-27 01:45:04 -0500
committerWilliam A. Kennington III <william@wkennington.com>2014-08-24 03:12:55 -0700
commitaa77fe0fb0f2b6636a57fd2ced4afd6636b4c1e1 (patch)
tree09a9f3a8173ed8e8ad17a0179976171db961c0f5 /nixos/modules/services/networking/radvd.nix
parent4da69cb7da731b2728edfa11ee758dff8f459b3e (diff)
downloadnixlib-aa77fe0fb0f2b6636a57fd2ced4afd6636b4c1e1.tar
nixlib-aa77fe0fb0f2b6636a57fd2ced4afd6636b4c1e1.tar.gz
nixlib-aa77fe0fb0f2b6636a57fd2ced4afd6636b4c1e1.tar.bz2
nixlib-aa77fe0fb0f2b6636a57fd2ced4afd6636b4c1e1.tar.lz
nixlib-aa77fe0fb0f2b6636a57fd2ced4afd6636b4c1e1.tar.xz
nixlib-aa77fe0fb0f2b6636a57fd2ced4afd6636b4c1e1.tar.zst
nixlib-aa77fe0fb0f2b6636a57fd2ced4afd6636b4c1e1.zip
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.
Diffstat (limited to 'nixos/modules/services/networking/radvd.nix')
-rw-r--r--nixos/modules/services/networking/radvd.nix32
1 files changed, 20 insertions, 12 deletions
diff --git a/nixos/modules/services/networking/radvd.nix b/nixos/modules/services/networking/radvd.nix
index 08762c9c8372..0199502163a3 100644
--- a/nixos/modules/services/networking/radvd.nix
+++ b/nixos/modules/services/networking/radvd.nix
@@ -52,24 +52,32 @@ in
 
   config = mkIf cfg.enable {
 
-    environment.systemPackages = [ pkgs.radvd ];
+    users.extraUsers.radvd =
+      { uid = config.ids.uids.radvd;
+        description = "Router Advertisement Daemon User";
+      };
 
-    jobs.radvd =
+    systemd.services.radvd =
       { description = "IPv6 Router Advertisement Daemon";
 
-        startOn = "started network-interfaces";
+        wantedBy = [ "multi-user.target" ];
+
+        after = [ "network.target" ];
 
-        preStart =
-          ''
-            # !!! Radvd only works if IPv6 forwarding is enabled.  But
-            # this should probably be done somewhere else (and not
-            # necessarily for all interfaces).
-            echo 1 > /proc/sys/net/ipv6/conf/all/forwarding
-          '';
+        path = [ pkgs.radvd ];
 
-        exec = "${pkgs.radvd}/sbin/radvd -m syslog -s -C ${confFile}";
+        preStart = ''
+          mkdir -m 755 -p /run/radvd
+          chown radvd /run/radvd
+        '';
 
-        daemonType = "fork";
+        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";
+          };
       };
 
   };