Skip to content

Commit

Permalink
ndppd module: init (NixOS#35533)
Browse files Browse the repository at this point in the history
  • Loading branch information
gnidorah authored and matthewbauer committed May 5, 2018
1 parent 21b9260 commit 9f1da66
Show file tree
Hide file tree
Showing 3 changed files with 65 additions and 2 deletions.
1 change: 1 addition & 0 deletions nixos/modules/module-list.nix
Expand Up @@ -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
Expand Down
47 changes: 47 additions & 0 deletions nixos/modules/services/networking/ndppd.nix
@@ -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 ];
}
19 changes: 17 additions & 2 deletions pkgs/applications/networking/ndppd/default.nix
@@ -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";

Expand All @@ -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;
Expand Down

0 comments on commit 9f1da66

Please sign in to comment.