Updated fcgiwrap's systemd unit to match upstream version.

This commit is contained in:
koral 2015-02-06 00:50:11 +01:00
parent 519c696bcf
commit d9078d03a3
1 changed files with 37 additions and 14 deletions

View File

@ -4,7 +4,6 @@ with lib;
let let
cfg = config.services.fcgiwrap; cfg = config.services.fcgiwrap;
in { in {
options = { options = {
@ -21,29 +20,53 @@ in {
description = "Number of processes to prefork."; description = "Number of processes to prefork.";
}; };
bindSocket = mkOption { socketType = mkOption {
type = types.string; type = types.addCheck types.str (t: t == "unix" || t == "tcp" || t == "tcp6");
default = "unix:/run/fcgiwrap.sock"; default = "unix";
description = '' description = "Socket type: 'unix', 'tcp' or 'tcp6'.";
Socket to bind to. Valid socket URLs are: };
unix:/path/to/socket for Unix sockets
tcp:dot.ted.qu.ad:port for IPv4 sockets socketAddress = mkOption {
tcp6:[ipv6_addr]:port for IPv6 sockets type = types.str;
''; default = "/run/fcgiwrap.sock";
example = "1.2.3.4:5678";
description = "Socket address. In case of a UNIX socket, this should be its filesystem path.";
};
user = mkOption {
type = types.nullOr types.str;
default = null;
description = "User permissions for the socket.";
};
group = mkOption {
type = types.nullOr types.str;
default = null;
description = "Group permissions for the socket.";
}; };
}; };
}; };
config = mkIf cfg.enable { config = mkIf cfg.enable {
systemd.services.fcgiwrap = { systemd.services.fcgiwrap = {
after = [ "nss-user-lookup.target" ]; after = [ "nss-user-lookup.target" ];
wantedBy = [ "multi-user.target" ]; wantedBy = optional (cfg.socketType != "unix") "multi-user.target";
serviceConfig = { serviceConfig = {
ExecStart = "${pkgs.fcgiwrap}/sbin/fcgiwrap -c ${builtins.toString cfg.preforkProcesses} -s ${cfg.bindSocket}"; ExecStart = "${pkgs.fcgiwrap}/sbin/fcgiwrap -c ${builtins.toString cfg.preforkProcesses} ${
}; if (cfg.socketType != "unix") then "-s ${cfg.socketType}:${cfg.socketAddress}" else ""
}";
} // (if cfg.user != null && cfg.group != null then {
User = cfg.user;
Group = cfg.group;
} else { } );
}; };
systemd.sockets = if (cfg.socketType == "unix") then {
fcgiwrap = {
wantedBy = [ "sockets.target" ];
socketConfig.ListenStream = cfg.socketAddress;
};
} else { };
}; };
} }