1{
2 config,
3 lib,
4 pkgs,
5 ...
6}:
7let
8 cfg = config.services.lldpd;
9
10in
11
12{
13 options.services.lldpd = {
14 enable = lib.mkEnableOption "Link Layer Discovery Protocol Daemon";
15
16 extraArgs = lib.mkOption {
17 type = lib.types.listOf lib.types.str;
18 default = [ ];
19 example = [
20 "-c"
21 "-k"
22 "-I eth0"
23 ];
24 description = "List of command line parameters for lldpd";
25 };
26 };
27
28 config = lib.mkIf cfg.enable {
29 users.users._lldpd = {
30 description = "lldpd user";
31 group = "_lldpd";
32 home = "/run/lldpd";
33 isSystemUser = true;
34 };
35 users.groups._lldpd = { };
36
37 environment.systemPackages = [ pkgs.lldpd ];
38 systemd.packages = [ pkgs.lldpd ];
39
40 systemd.services.lldpd = {
41 wantedBy = [ "multi-user.target" ];
42 environment.LLDPD_OPTIONS = lib.concatStringsSep " " cfg.extraArgs;
43 };
44 };
45}