From b41196877436ac249077fdcc7e419cb056a53de0 Mon Sep 17 00:00:00 2001 From: Franz Pletz Date: Sat, 20 May 2017 22:45:48 +0200 Subject: [PATCH] lldpd: init at 0.9.7 --- nixos/modules/module-list.nix | 1 + nixos/modules/services/networking/lldpd.nix | 43 +++++++++++++++++++++ pkgs/tools/networking/lldpd/default.nix | 33 ++++++++++++++++ pkgs/top-level/all-packages.nix | 2 + 4 files changed, 79 insertions(+) create mode 100644 nixos/modules/services/networking/lldpd.nix create mode 100644 pkgs/tools/networking/lldpd/default.nix diff --git a/nixos/modules/module-list.nix b/nixos/modules/module-list.nix index 930ac51f13b..d25a61804eb 100644 --- a/nixos/modules/module-list.nix +++ b/nixos/modules/module-list.nix @@ -435,6 +435,7 @@ ./services/networking/kresd.nix ./services/networking/lambdabot.nix ./services/networking/libreswan.nix + ./services/networking/lldpd.nix ./services/networking/logmein-hamachi.nix ./services/networking/mailpile.nix ./services/networking/mfi.nix diff --git a/nixos/modules/services/networking/lldpd.nix b/nixos/modules/services/networking/lldpd.nix new file mode 100644 index 00000000000..4f951d843e2 --- /dev/null +++ b/nixos/modules/services/networking/lldpd.nix @@ -0,0 +1,43 @@ +{ config, lib, pkgs, ... }: + +with lib; + +let + cfg = config.services.lldpd; + +in + +{ + options.services.lldpd = { + enable = mkEnableOption "Link Layer Discovery Protocol Daemon"; + + extraArgs = mkOption { + type = types.listOf types.str; + default = []; + example = [ "-c" "-k" "-I eth0" ]; + description = "List of command line parameters for lldpd"; + }; + }; + + config = mkIf cfg.enable { + users.extraUsers._lldpd = { + description = "lldpd user"; + group = "_lldpd"; + home = "/var/run/lldpd"; + }; + users.extraGroups._lldpd = {}; + + environment.systemPackages = [ pkgs.lldpd ]; + + systemd.services.lldpd = { + wantedBy = [ "multi-user.target" ]; + after = [ "network.target" ]; + requires = [ "network.target" ]; + serviceConfig = { + ExecStart = "${pkgs.lldpd}/bin/lldpd -d ${concatStringsSep " " cfg.extraArgs}"; + PrivateTmp = true; + PrivateDevices = true; + }; + }; + }; +} diff --git a/pkgs/tools/networking/lldpd/default.nix b/pkgs/tools/networking/lldpd/default.nix new file mode 100644 index 00000000000..8e3bd7a82bf --- /dev/null +++ b/pkgs/tools/networking/lldpd/default.nix @@ -0,0 +1,33 @@ +{ stdenv, lib, fetchurl, pkgconfig +, libevent, readline, net_snmp }: + +stdenv.mkDerivation rec { + name = "lldpd-${version}"; + version = "0.9.7"; + + src = fetchurl { + url = "https://media.luffy.cx/files/lldpd/${name}.tar.gz"; + sha256 = "1f0d5s4643pjmgycc5ssgl1pggyq5a7navhabkyhcg0aqdah6dmr"; + }; + + configureFlags = [ + "--localstatedir=/var" + "--enable-pie" + "--with-snmp" + ]; + + nativeBuildInputs = [ pkgconfig ]; + buildInputs = [ libevent readline net_snmp ]; + + enableParallelBuilding = true; + + outputs = [ "out" "dev" "man" "doc" ]; + + meta = with lib; { + description = "802.1ab implementation (LLDP) to help you locate neighbors of all your equipments"; + homepage = "https://vincentbernat.github.io/lldpd/"; + license = licenses.isc; + maintainers = with maintainers; [ fpletz ]; + platforms = platforms.linux; + }; +} diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 41c6aedcc9f..1bc3d00701e 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -2645,6 +2645,8 @@ with pkgs; lksctp-tools = callPackage ../os-specific/linux/lksctp-tools { }; + lldpd = callPackage ../tools/networking/lldpd { }; + lnav = callPackage ../tools/misc/lnav { }; loc = callPackage ../development/misc/loc { };