aboutsummaryrefslogtreecommitdiff
path: root/pkgs/servers/uwsgi
diff options
context:
space:
mode:
authorNikolay Amiantov <ab@fmap.me>2014-12-10 04:41:02 +0300
committerNikolay Amiantov <ab@fmap.me>2015-02-02 22:23:30 +0300
commitf08abb15f11c029aec2d934056115e638e109375 (patch)
treec6ce596437bc859f9b126ff7bf013020100c918b /pkgs/servers/uwsgi
parent78bbd6f7c60487d63e7848b727c2c3f4298934ce (diff)
uwsgi: add package
Diffstat (limited to 'pkgs/servers/uwsgi')
-rw-r--r--pkgs/servers/uwsgi/default.nix76
-rw-r--r--pkgs/servers/uwsgi/nixos.ini5
2 files changed, 81 insertions, 0 deletions
diff --git a/pkgs/servers/uwsgi/default.nix b/pkgs/servers/uwsgi/default.nix
new file mode 100644
index 000000000000..60903314bf13
--- /dev/null
+++ b/pkgs/servers/uwsgi/default.nix
@@ -0,0 +1,76 @@
+{ stdenv, lib, fetchurl, pkgconfig, jansson
+, plugins
+, pam, withPAM ? stdenv.isLinux
+, systemd, withSystemd ? stdenv.isLinux
+, python2, python3, ncurses
+}:
+
+let pythonPlugin = pkg : { name = "python${if pkg ? isPy2 then "2" else "3"}";
+ interpreter = pkg;
+ path = "plugins/python";
+ deps = [ pkg ncurses ];
+ install = ''
+ install -Dm644 uwsgidecorators.py $out/${pkg.sitePackages}/uwsgidecorators.py
+ ${pkg.executable} -m compileall $out/${pkg.sitePackages}/
+ ${pkg.executable} -O -m compileall $out/${pkg.sitePackages}/
+ '';
+ };
+ available = [ (pythonPlugin python2)
+ (pythonPlugin python3)
+ ];
+ needed = builtins.filter (x: lib.any (y: x.name == y) plugins) available;
+in
+
+assert builtins.filter (x: lib.all (y: y.name != x) available) plugins == [];
+
+stdenv.mkDerivation rec {
+ name = "uwsgi-2.0.9";
+
+ src = fetchurl {
+ url = "http://projects.unbit.it/downloads/${name}.tar.gz";
+ sha256 = "15c2j5myx1s54a1f6a7pjblvk7v96mz2kqlbj19mdfd8l2y8j17y";
+ };
+
+ nativeBuildInputs = [ python3 pkgconfig ];
+
+ buildInputs = with stdenv.lib;
+ [ jansson ]
+ ++ optional withPAM pam
+ ++ optional withSystemd systemd
+ ++ lib.concatMap (x: x.deps) needed
+ ;
+
+ basePlugins = with stdenv.lib;
+ concatStringsSep ","
+ ( optional withPAM "pam"
+ ++ optional withSystemd "systemd_logger"
+ );
+
+ passthru = {
+ inherit python2 python3;
+ };
+
+ configurePhase = ''
+ export pluginDir=$out/lib/uwsgi
+ substituteAll ${./nixos.ini} buildconf/nixos.ini
+ '';
+
+ buildPhase = ''
+ mkdir -p $pluginDir
+ python3 uwsgiconfig.py --build nixos
+ ${lib.concatMapStringsSep ";" (x: "${x.interpreter.interpreter} uwsgiconfig.py --plugin ${x.path} nixos ${x.name}") needed}
+ '';
+
+ installPhase = ''
+ install -Dm755 uwsgi $out/bin/uwsgi
+ #cp *_plugin.so $pluginDir || true
+ ${lib.concatMapStringsSep "\n" (x: x.install) needed}
+ '';
+
+ meta = with stdenv.lib; {
+ homepage = http://uwsgi-docs.readthedocs.org/en/latest/;
+ description = "A fast, self-healing and developer/sysadmin-friendly application container server coded in pure C";
+ license = licenses.gpl2;
+ maintainers = with maintainers; [ abbradar ];
+ };
+}
diff --git a/pkgs/servers/uwsgi/nixos.ini b/pkgs/servers/uwsgi/nixos.ini
new file mode 100644
index 000000000000..454eb51893fc
--- /dev/null
+++ b/pkgs/servers/uwsgi/nixos.ini
@@ -0,0 +1,5 @@
+[uwsgi]
+plugin_dir = @pluginDir@
+main_plugin = @basePlugins@
+json = true
+inherit = base