Add systemd unit file

Refs: #4594
Change-Id: I415bafa14902e9d43be4891f66349192e12b9166
diff --git a/systemd/nlsr.service.in b/systemd/nlsr.service.in
new file mode 100644
index 0000000..9cce740
--- /dev/null
+++ b/systemd/nlsr.service.in
@@ -0,0 +1,57 @@
+# Copyright (c) 2014-2019, The University of Memphis,
+#                          Regents of the University of California,
+#                          Arizona Board of Regents.
+#
+# This file is part of NLSR (Named-data Link State Routing).
+# See AUTHORS.md for complete list of NLSR authors and contributors.
+#
+# NLSR is free software: you can redistribute it and/or modify it under the terms
+# of the GNU General Public License as published by the Free Software Foundation,
+# either version 3 of the License, or (at your option) any later version.
+#
+# NLSR is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
+# without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
+# PURPOSE.  See the GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License along with
+# NLSR, e.g., in COPYING.md file.  If not, see <http://www.gnu.org/licenses/>.
+#
+# Author: Eric Newberry <enewberry@email.arizona.edu>
+# Author: Davide Pesavento <davidepesa@gmail.com>
+
+[Unit]
+Description=NDN Link State Routing Daemon
+Documentation=man:nlsr(1)
+BindsTo=nfd.service
+After=nfd.service
+
+[Service]
+Environment=HOME=%S/ndn/nlsr
+ExecStart=@BINDIR@/nlsr -f @SYSCONFDIR@/ndn/nlsr.conf
+Restart=on-failure
+RestartPreventExitStatus=2
+User=nlsr
+
+LockPersonality=yes
+MemoryDenyWriteExecute=yes
+NoNewPrivileges=yes
+PrivateDevices=yes
+PrivateTmp=yes
+PrivateUsers=yes
+ProtectControlGroups=yes
+ProtectHome=yes
+ProtectKernelModules=yes
+ProtectKernelTunables=yes
+ProtectSystem=strict
+RestrictAddressFamilies=AF_UNIX AF_INET AF_INET6
+RestrictNamespaces=yes
+RestrictRealtime=yes
+# "nlsr" is the state-dir, "ndn/nlsr" is the HOME
+StateDirectory=nlsr ndn/nlsr
+SystemCallArchitectures=native
+SystemCallErrorNumber=EPERM
+SystemCallFilter=~@clock @cpu-emulation @debug @module @mount @obsolete @privileged @raw-io @reboot @setuid @swap
+
+[Install]
+WantedBy=multi-user.target
+WantedBy=nfd.service
diff --git a/wscript b/wscript
index 42635bb..52c9882 100644
--- a/wscript
+++ b/wscript
@@ -73,8 +73,6 @@
 
     conf.load('sanitizers')
 
-    conf.define('DEFAULT_CONFIG_FILE', '%s/ndn/nlsr.conf' % conf.env['SYSCONFDIR'])
-
     conf.write_config_header('config.hpp')
 
 def build(bld):
@@ -113,17 +111,23 @@
         source='tools/nlsrc.cpp',
         use='nlsr-objects')
 
-    bld.install_as('${SYSCONFDIR}/ndn/nlsr.conf.sample', 'nlsr.conf')
-
     if bld.env.WITH_TESTS:
         bld.recurse('tests')
 
+    bld.install_as('${SYSCONFDIR}/ndn/nlsr.conf.sample', 'nlsr.conf')
+
+    if Utils.unversioned_sys_platform() == 'linux':
+        bld(features='subst',
+            name='nlsr.service',
+            source='systemd/nlsr.service.in',
+            target='systemd/nlsr.service')
+
     if bld.env.SPHINX_BUILD:
         bld(features='sphinx',
             name='manpages',
             builder='man',
-            outdir='docs/manpages',
             config='docs/conf.py',
+            outdir='docs/manpages',
             source=bld.path.ant_glob('docs/manpages/**/*.rst'),
             install_path='${MANDIR}',
             VERSION=VERSION)