diff options
author | Netix (Espinet François) <dev.espinetfrancois@gmail.com> | 2018-01-27 15:44:50 +0100 |
---|---|---|
committer | Netix (Espinet François) <dev.espinetfrancois@gmail.com> | 2018-02-10 09:59:01 +0100 |
commit | 2a2e885cd0cdb2ee1a1b1b37b3e33d58a935b462 (patch) | |
tree | fc902c89a42543adfe9a19b94df7aca96a5c5d34 | |
parent | 5925caf39daf0eda9b62067a78eff595636b8011 (diff) | |
download | nixlib-2a2e885cd0cdb2ee1a1b1b37b3e33d58a935b462.tar nixlib-2a2e885cd0cdb2ee1a1b1b37b3e33d58a935b462.tar.gz nixlib-2a2e885cd0cdb2ee1a1b1b37b3e33d58a935b462.tar.bz2 nixlib-2a2e885cd0cdb2ee1a1b1b37b3e33d58a935b462.tar.lz nixlib-2a2e885cd0cdb2ee1a1b1b37b3e33d58a935b462.tar.xz nixlib-2a2e885cd0cdb2ee1a1b1b37b3e33d58a935b462.tar.zst nixlib-2a2e885cd0cdb2ee1a1b1b37b3e33d58a935b462.zip |
nixos/freeradius : init - Added freeradius service
Inspired from the dhcpd service implementation Only 2 configurations options at the moment: - enabled - path to config directory (defaults to /etc/raddb) Implementation was also inspired from ArchLinux systemd file and corrected with @dotlambda and @fpletz help.
-rw-r--r-- | nixos/modules/services/networking/freeradius.nix | 72 |
1 files changed, 72 insertions, 0 deletions
diff --git a/nixos/modules/services/networking/freeradius.nix b/nixos/modules/services/networking/freeradius.nix new file mode 100644 index 000000000000..45cba1ce2770 --- /dev/null +++ b/nixos/modules/services/networking/freeradius.nix @@ -0,0 +1,72 @@ +{ config, lib, pkgs, ... }: + +with lib; + +let + + cfg = config.services.freeradius; + + freeradiusService = cfg: + { + description = "FreeRadius server"; + wantedBy = ["multi-user.target"]; + after = ["network-online.target"]; + wants = ["network-online.target"]; + preStart = '' + ${pkgs.freeradius}/bin/radiusd -C -d ${cfg.configDir} -l stdout + ''; + + serviceConfig = { + ExecStart = "${pkgs.freeradius}/bin/radiusd -f -d ${cfg.configDir} -l stdout -xx"; + ExecReload = [ + "${pkgs.freeradius}/bin/radiusd -C -d ${cfg.configDir} -l stdout" + "${pkgs.coreutils}/bin/kill -HUP $MAINPID" + ]; + User = "radius"; + ProtectSystem = "full"; + ProtectHome = "on"; + Restart = "on-failure"; + RestartSec = 2; + }; + }; + + freeradiusConfig = { + enable = mkEnableOption "the freeradius server"; + + configDir = mkOption { + type = types.path; + default = "/etc/raddb"; + description = '' + The path of the freeradius server configuration directory. + ''; + }; + + }; + +in + +{ + + ###### interface + + options = { + services.freeradius = freeradiusConfig; + }; + + + ###### implementation + + config = mkIf (cfg.enable) { + + users = { + extraUsers.radius = { + /*uid = config.ids.uids.radius;*/ + description = "Radius daemon user"; + }; + }; + + systemd.services.freeradius = freeradiusService cfg; + + }; + +} |