Merge pull request #26419 from roblabla/feature-sasl

cyrus-sasl: Add saslauthd service and LDAP support

Changed files
+67 -3
nixos
modules
services
system
pkgs
development
libraries
cyrus-sasl
+1
nixos/modules/module-list.nix
···
./services/system/earlyoom.nix
./services/system/kerberos.nix
./services/system/nscd.nix
./services/system/uptimed.nix
./services/torrent/deluge.nix
./services/torrent/flexget.nix
···
./services/system/earlyoom.nix
./services/system/kerberos.nix
./services/system/nscd.nix
+
./services/system/saslauthd.nix
./services/system/uptimed.nix
./services/torrent/deluge.nix
./services/torrent/flexget.nix
+63
nixos/modules/services/system/saslauthd.nix
···
···
+
{ config, lib, pkgs, ... }:
+
+
with lib;
+
+
let
+
+
nssModulesPath = config.system.nssModules.path;
+
cfg = config.services.saslauthd;
+
+
in
+
+
{
+
+
###### interface
+
+
options = {
+
+
services.saslauthd = {
+
+
enable = mkEnableOption "Whether to enable the Cyrus SASL authentication daemon.";
+
+
package = mkOption {
+
default = pkgs.cyrus_sasl.bin;
+
defaultText = "pkgs.cyrus_sasl.bin";
+
type = types.package;
+
description = "Cyrus SASL package to use.";
+
};
+
+
mechanism = mkOption {
+
type = types.str;
+
default = "pam";
+
description = "Auth mechanism to use";
+
};
+
+
config = mkOption {
+
type = types.lines;
+
default = "";
+
description = "Configuration to use for Cyrus SASL authentication daemon.";
+
};
+
+
};
+
+
};
+
+
+
###### implementation
+
+
config = mkIf cfg.enable {
+
+
systemd.services.saslauthd = {
+
description = "Cyrus SASL authentication daemon";
+
+
wantedBy = [ "multi-user.target" ];
+
+
serviceConfig = {
+
ExecStart = "@${cfg.package}/sbin/saslauthd saslauthd -a ${cfg.mechanism} -O ${pkgs.writeText "saslauthd.conf" cfg.config}";
+
Type = "forking";
+
PIDFile = "/run/saslauthd/saslauthd.pid";
+
Restart = "always";
+
};
+
};
+
};
+
}
+3 -3
pkgs/development/libraries/cyrus-sasl/default.nix
···
-
{ lib, stdenv, fetchurl, openssl, kerberos, db, gettext, pam, fixDarwinDylibNames, autoreconfHook }:
with stdenv.lib;
stdenv.mkDerivation rec {
···
buildInputs =
[ openssl db gettext kerberos ]
++ lib.optional stdenv.isFreeBSD autoreconfHook
++ lib.optional stdenv.isLinux pam
++ lib.optional stdenv.isDarwin fixDarwinDylibNames;
···
configureFlags = [
"--with-openssl=${openssl.dev}"
-
];
# Set this variable at build-time to make sure $out can be evaluated.
preConfigure = ''
configureFlagsArray=( --with-plugindir=$out/lib/sasl2
-
--with-configdir=$out/lib/sasl2
--with-saslauthd=/run/saslauthd
--enable-login
)
···
+
{ lib, stdenv, fetchurl, openssl, openldap, kerberos, db, gettext, pam, fixDarwinDylibNames, autoreconfHook, enableLdap ? false }:
with stdenv.lib;
stdenv.mkDerivation rec {
···
buildInputs =
[ openssl db gettext kerberos ]
+
++ lib.optional enableLdap openldap
++ lib.optional stdenv.isFreeBSD autoreconfHook
++ lib.optional stdenv.isLinux pam
++ lib.optional stdenv.isDarwin fixDarwinDylibNames;
···
configureFlags = [
"--with-openssl=${openssl.dev}"
+
] ++ lib.optional enableLdap "--with-ldap=${openldap.dev}";
# Set this variable at build-time to make sure $out can be evaluated.
preConfigure = ''
configureFlagsArray=( --with-plugindir=$out/lib/sasl2
--with-saslauthd=/run/saslauthd
--enable-login
)