about summary refs log tree commit diff
path: root/nixpkgs/pkgs/servers/http/openresty/default.nix
diff options
context:
space:
mode:
Diffstat (limited to 'nixpkgs/pkgs/servers/http/openresty/default.nix')
-rw-r--r--nixpkgs/pkgs/servers/http/openresty/default.nix60
1 files changed, 60 insertions, 0 deletions
diff --git a/nixpkgs/pkgs/servers/http/openresty/default.nix b/nixpkgs/pkgs/servers/http/openresty/default.nix
new file mode 100644
index 000000000000..87cd8e4c53e3
--- /dev/null
+++ b/nixpkgs/pkgs/servers/http/openresty/default.nix
@@ -0,0 +1,60 @@
+{ callPackage
+, runCommand
+, lib
+, fetchurl
+, perl
+, postgresql
+, nixosTests
+, ...
+}@args:
+
+callPackage ../nginx/generic.nix args rec {
+  pname = "openresty";
+  nginxVersion = "1.21.4";
+  version = "${nginxVersion}.3";
+
+  src = fetchurl {
+    url = "https://openresty.org/download/openresty-${version}.tar.gz";
+    sha256 = "sha256-M6hMY8/Z5GsOXGLrLdx7gGi9ouFoYxQ0O4n8P/0kzdM=";
+  };
+
+  # generic.nix applies fixPatch on top of every patch defined there.
+  # This allows updating the patch destination, as openresty has
+  # nginx source code in a different folder.
+  fixPatch = patch:
+    let name = patch.name or (builtins.baseNameOf patch); in
+    runCommand "openresty-${name}" { src = patch; } ''
+      substitute $src $out \
+        --replace "a/" "a/bundle/nginx-${nginxVersion}/" \
+        --replace "b/" "b/bundle/nginx-${nginxVersion}/"
+    '';
+
+  nativeBuildInputs = [ perl ];
+
+  buildInputs = [ postgresql ];
+
+  postPatch = ''
+    patchShebangs configure bundle/
+  '';
+
+  configureFlags = [ "--with-http_postgres_module" ];
+
+  postInstall = ''
+    ln -s $out/luajit/bin/luajit-2.1.0-beta3 $out/bin/luajit-openresty
+    ln -s $out/nginx/bin/nginx $out/bin/nginx
+    ln -s $out/nginx/conf $out/conf
+    ln -s $out/nginx/html $out/html
+  '';
+
+  passthru.tests = {
+    inherit (nixosTests) openresty-lua;
+  };
+
+  meta = {
+    description = "A fast web application server built on Nginx";
+    homepage = "https://openresty.org";
+    license = lib.licenses.bsd2;
+    platforms = lib.platforms.all;
+    maintainers = with lib.maintainers; [ thoughtpolice lblasc emily ];
+  };
+}