aboutsummaryrefslogtreecommitdiff
path: root/nixpkgs/nixos/modules/services/web-servers/uwsgi.nix
diff options
context:
space:
mode:
Diffstat (limited to 'nixpkgs/nixos/modules/services/web-servers/uwsgi.nix')
-rw-r--r--nixpkgs/nixos/modules/services/web-servers/uwsgi.nix33
1 files changed, 19 insertions, 14 deletions
diff --git a/nixpkgs/nixos/modules/services/web-servers/uwsgi.nix b/nixpkgs/nixos/modules/services/web-servers/uwsgi.nix
index af70f32f32d..3481b5e6040 100644
--- a/nixpkgs/nixos/modules/services/web-servers/uwsgi.nix
+++ b/nixpkgs/nixos/modules/services/web-servers/uwsgi.nix
@@ -5,10 +5,6 @@ with lib;
let
cfg = config.services.uwsgi;
- uwsgi = pkgs.uwsgi.override {
- plugins = cfg.plugins;
- };
-
buildCfg = name: c:
let
plugins =
@@ -23,8 +19,8 @@ let
python =
if hasPython2 && hasPython3 then
throw "`plugins` attribute in UWSGI configuration shouldn't contain both python2 and python3"
- else if hasPython2 then uwsgi.python2
- else if hasPython3 then uwsgi.python3
+ else if hasPython2 then cfg.package.python2
+ else if hasPython3 then cfg.package.python3
else null;
pythonEnv = python.withPackages (c.pythonPackages or (self: []));
@@ -77,6 +73,11 @@ in {
description = "Where uWSGI communication sockets can live";
};
+ package = mkOption {
+ type = types.package;
+ internal = true;
+ };
+
instance = mkOption {
type = types.attrs;
default = {
@@ -138,7 +139,7 @@ in {
'';
serviceConfig = {
Type = "notify";
- ExecStart = "${uwsgi}/bin/uwsgi --uid ${cfg.user} --gid ${cfg.group} --json ${buildCfg "server" cfg.instance}/server.json";
+ ExecStart = "${cfg.package}/bin/uwsgi --uid ${cfg.user} --gid ${cfg.group} --json ${buildCfg "server" cfg.instance}/server.json";
ExecReload = "${pkgs.coreutils}/bin/kill -HUP $MAINPID";
ExecStop = "${pkgs.coreutils}/bin/kill -INT $MAINPID";
NotifyAccess = "main";
@@ -146,15 +147,19 @@ in {
};
};
- users.users = optionalAttrs (cfg.user == "uwsgi") (singleton
- { name = "uwsgi";
+ users.users = optionalAttrs (cfg.user == "uwsgi") {
+ uwsgi = {
group = cfg.group;
uid = config.ids.uids.uwsgi;
- });
+ };
+ };
+
+ users.groups = optionalAttrs (cfg.group == "uwsgi") {
+ uwsgi.gid = config.ids.gids.uwsgi;
+ };
- users.groups = optionalAttrs (cfg.group == "uwsgi") (singleton
- { name = "uwsgi";
- gid = config.ids.gids.uwsgi;
- });
+ services.uwsgi.package = pkgs.uwsgi.override {
+ inherit (cfg) plugins;
+ };
};
}