ndppd module: init (#35533)

This commit is contained in:
gnidorah 2018-05-05 08:33:20 +03:00 committed by Matthew Justin Bauer
parent 21b926003d
commit 9f1da66587
3 changed files with 65 additions and 2 deletions

View file

@ -515,6 +515,7 @@
./services/networking/murmur.nix
./services/networking/namecoind.nix
./services/networking/nat.nix
./services/networking/ndppd.nix
./services/networking/networkmanager.nix
./services/networking/nftables.nix
./services/networking/ngircd.nix

View file

@ -0,0 +1,47 @@
{ 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 ];
}

View file

@ -1,6 +1,11 @@
{ stdenv, fetchFromGitHub, gzip, ... }:
{ stdenv, fetchFromGitHub, fetchurl, gzip, ... }:
stdenv.mkDerivation rec {
let
serviceFile = fetchurl {
url = "https://raw.githubusercontent.com/DanielAdolfsson/ndppd/f37e8eb33dc68b3385ecba9b36a5efd92755580f/ndppd.service";
sha256 = "1zf54pzjfj9j9gr48075njqrgad4myd3dqmhvzxmjy4gjy9ixmyh";
};
in stdenv.mkDerivation rec {
name = "ndppd-${version}";
version = "0.2.5";
@ -19,6 +24,16 @@ stdenv.mkDerivation rec {
substituteInPlace Makefile --replace /bin/gzip ${gzip}/bin/gzip
'';
postInstall = ''
mkdir -p $out/etc
cp ndppd.conf-dist $out/etc/ndppd.conf
mkdir -p $out/lib/systemd/system
# service file needed for our module is not in release yet
substitute ${serviceFile} $out/lib/systemd/system/ndppd.service \
--replace /usr/sbin/ndppd $out/sbin/ndppd
'';
meta = {
description = "A daemon that proxies NDP (Neighbor Discovery Protocol) messages between interfaces";
homepage = https://github.com/DanielAdolfsson/ndppd;