about summary refs log tree commit diff
path: root/nixos/modules
diff options
context:
space:
mode:
authorNetix (Espinet François) <dev.espinetfrancois@gmail.com>2018-01-27 15:44:50 +0100
committerNetix (Espinet François) <dev.espinetfrancois@gmail.com>2018-02-10 09:59:01 +0100
commit2a2e885cd0cdb2ee1a1b1b37b3e33d58a935b462 (patch)
treefc902c89a42543adfe9a19b94df7aca96a5c5d34 /nixos/modules
parent5925caf39daf0eda9b62067a78eff595636b8011 (diff)
downloadnixlib-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.
Diffstat (limited to 'nixos/modules')
-rw-r--r--nixos/modules/services/networking/freeradius.nix72
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;
+
+  };
+
+}