python3Packages.dirsearch: init at 0.4.3 (#350550)
[NixPkgs.git] / pkgs / servers / http / nginx / modules.nix
blob449e1cc660e488255c43773e57f4cfd519f764c0
1 { lib
2 , config
3 , fetchFromGitHub
4 , fetchFromGitLab
5 , fetchhg
6 , runCommand
8 , arpa2common
9 , brotli
10 , curl
11 , expat
12 , fdk_aac
13 , ffmpeg-headless
14 , ffmpeg_6-headless
15 , geoip
16 , libbsd
17 , libiconv
18 , libjpeg
19 , libkrb5
20 , libmaxminddb
21 , libmodsecurity
22 , libuuid
23 , libxml2
24 , lmdb
25 , luajit_openresty
26 , msgpuck
27 , openssl
28 , opentracing-cpp
29 , pam
30 , psol
31 , which
32 , yajl
33 , zlib
34 , zstd
37 let
39   http_proxy_connect_module_generic = patchName: rec {
40     name = "http_proxy_connect";
41     src = fetchFromGitHub {
42       name = "http_proxy_connect_module_generic";
43       owner = "chobits";
44       repo = "ngx_http_proxy_connect_module";
45       # 2023-06-19
46       rev = "dcb9a2c614d376b820d774db510d4da12dfe1e5b";
47       hash = "sha256-AzMhTSzmk3osSYy2q28/hko1v2AOTnY/dP5IprqGlQo=";
48     };
50     patches = [
51       "${src}/patch/${patchName}.patch"
52     ];
54     meta = with lib; {
55       description = "Forward proxy module for CONNECT request handling";
56       homepage = "https://github.com/chobits/ngx_http_proxy_connect_module";
57       license = with licenses; [ bsd2 ];
58       maintainers = [ ];
59     };
60   };
64 let self = {
65   akamai-token-validate = {
66     name = "akamai-token-validate";
67     src = fetchFromGitHub {
68       name = "akamai-token-validate";
69       owner = "kaltura";
70       repo = "nginx-akamai-token-validate-module";
71       rev = "34fd0c94d2c43c642f323491c4f4a226cd83b962";
72       sha256 = "0yf34s11vgkcl03wbl6gjngm3p9hs8vvm7hkjkwhjh39vkk2a7cy";
73     };
75     inputs = [ openssl ];
77     meta = with lib; {
78       description = "Validates Akamai v2 query string tokens";
79       homepage = "https://github.com/kaltura/nginx-akamai-token-validate-module";
80       license = with licenses; [ agpl3Only ];
81       maintainers = [ ];
82     };
83   };
85   auth-a2aclr = {
86     name = "auth-a2aclr";
87     src = fetchFromGitLab {
88       name = "auth-a2aclr";
89       owner = "arpa2";
90       repo = "nginx-auth-a2aclr";
91       rev = "bbabf9480bb2b40ac581551883a18dfa6522dd63";
92       sha256 = "sha256-h2LgMhreCgod+H/bNQzY9BvqG9ezkwikwWB3T6gHH04=";
93     };
95     inputs = [
96       (arpa2common.overrideAttrs
97         (old: rec {
98           version = "0.7.1";
100           src = fetchFromGitLab {
101             owner = "arpa2";
102             repo = "arpa2common";
103             rev = "v${version}";
104             sha256 = "sha256-8zVsAlGtmya9EK4OkGUMu2FKJRn2Q3bg2QWGjqcii64=";
105           };
106         }))
107     ];
109     meta = with lib; {
110       description = "Integrate ARPA2 Resource ACLs into nginx";
111       homepage = "https://gitlab.com/arpa2/nginx-auth-a2aclr";
112       license = with licenses; [ isc ];
113       maintainers = [ ];
114     };
115   };
117   aws-auth = {
118     name = "aws-auth";
119     src = fetchFromGitHub {
120       name = "aws-auth";
121       owner = "anomalizer";
122       repo = "ngx_aws_auth";
123       rev = "2.1.1";
124       sha256 = "10z67g40w7wpd13fwxyknkbg3p6hn61i4v8xw6lh27br29v1y6h9";
125     };
127     meta = with lib; {
128       description = "Proxy to authenticated AWS services";
129       homepage = "https://github.com/anomalizer/ngx_aws_auth";
130       license = with licenses; [ bsd2 ];
131       maintainers = [ ];
132     };
133   };
135   brotli = {
136     name = "brotli";
137     src = let src' = fetchFromGitHub {
138       name = "brotli";
139       owner = "google";
140       repo = "ngx_brotli";
141       rev = "6e975bcb015f62e1f303054897783355e2a877dc";
142       sha256 = "sha256-G0IDYlvaQzzJ6cNTSGbfuOuSXFp3RsEwIJLGapTbDgo=";
143     }; in
144       runCommand "brotli" { } ''
145         cp -a ${src'} $out
146         substituteInPlace $out/filter/config \
147           --replace '$ngx_addon_dir/deps/brotli/c' ${lib.getDev brotli}
148       '';
150     inputs = [ brotli ];
152     meta = with lib; {
153       description = "Brotli compression";
154       homepage = "https://github.com/google/ngx_brotli";
155       license = with licenses; [ bsd2 ];
156       maintainers = [ ];
157     };
158   };
160   cache-purge = {
161     name = "cache-purge";
162     src = fetchFromGitHub {
163       name = "cache-purge";
164       owner = "nginx-modules";
165       repo = "ngx_cache_purge";
166       rev = "2.5.1";
167       sha256 = "0va4jz36mxj76nmq05n3fgnpdad30cslg7c10vnlhdmmic9vqncd";
168     };
170     meta = with lib; {
171       description = "Adds ability to purge content from FastCGI, proxy, SCGI and uWSGI caches";
172       homepage = "https://github.com/nginx-modules/ngx_cache_purge";
173       license = with licenses; [ bsd2 ];
174       maintainers = [ ];
175     };
176   };
178   coolkit = {
179     name = "coolkit";
180     src = fetchFromGitHub {
181       name = "coolkit";
182       owner = "FRiCKLE";
183       repo = "ngx_coolkit";
184       rev = "0.2";
185       sha256 = "1idj0cqmfsdqawjcqpr1fsq670fdki51ksqk2lslfpcs3yrfjpqh";
186     };
188     meta = with lib; {
189       description = "Collection of small and useful nginx add-ons";
190       homepage = "https://github.com/FRiCKLE/ngx_coolkit";
191       license = with licenses; [ bsd2 ];
192       maintainers = [ ];
193     };
194   };
196   dav = {
197     name = "dav";
198     src = fetchFromGitHub {
199       name = "dav";
200       owner = "arut";
201       repo = "nginx-dav-ext-module";
202       rev = "v3.0.0";
203       sha256 = "000dm5zk0m1hm1iq60aff5r6y8xmqd7djrwhgnz9ig01xyhnjv9w";
204     };
206     inputs = [ expat ];
208     meta = with lib; {
209       description = "WebDAV PROPFIND,OPTIONS,LOCK,UNLOCK support";
210       homepage = "https://github.com/arut/nginx-dav-ext-module";
211       license = with licenses; [ bsd2 ];
212       maintainers = [ ];
213     };
214   };
216   develkit = {
217     name = "develkit";
218     src = fetchFromGitHub {
219       name = "develkit";
220       owner = "vision5";
221       repo = "ngx_devel_kit";
222       rev = "v0.3.3";
223       hash= "sha256-/RQUVHwIdNqm3UemQ/oNs2ksg8beziA4Pxejd5Yg0Pg=";
224     };
226     meta = with lib; {
227       description = "Adds additional generic tools that module developers can use in their own modules";
228       homepage = "https://github.com/vision5/ngx_devel_kit";
229       license = with licenses; [ bsd3 ];
230       maintainers = [ ];
231     };
232   };
234   echo = rec {
235     name = "echo";
236     version = "0.63";
238     src = fetchFromGitHub {
239       name = "echo";
240       owner = "openresty";
241       repo = "echo-nginx-module";
242       rev = "v${version}";
243       hash = "sha256-K7oOE0yxPYLf+3YMVbBsncpHRpGHXjs/8B5QPO3MQC4=";
244     };
246     meta = with lib; {
247       description = "Brings echo, sleep, time, exec and more shell-style goodies to Nginx";
248       homepage = "https://github.com/openresty/echo-nginx-module";
249       license = with licenses; [ bsd2 ];
250       maintainers = [ ];
251     };
252   };
254   fancyindex = {
255     name = "fancyindex";
256     src = fetchFromGitHub {
257       name = "fancyindex";
258       owner = "aperezdc";
259       repo = "ngx-fancyindex";
260       rev = "v0.5.2";
261       sha256 = "0nar45lp3jays3p6b01a78a6gwh6v0snpzcncgiphcqmj5kw8ipg";
262     };
264     meta = with lib; {
265       description = " Fancy indexes module";
266       homepage = "https://github.com/aperezdc/ngx-fancyindex";
267       license = with licenses; [ bsd2 ];
268       maintainers = with maintainers; [ aneeshusa ];
269     };
270   };
272   fluentd = {
273     name = "fluentd";
274     src = fetchFromGitHub {
275       name = "fluentd";
276       owner = "fluent";
277       repo = "nginx-fluentd-module";
278       rev = "8af234043059c857be27879bc547c141eafd5c13";
279       sha256 = "1ycb5zd9sw60ra53jpak1m73zwrjikwhrrh9q6266h1mlyns7zxm";
280     };
282     meta = with lib; {
283       description = "Fluentd data collector";
284       homepage = "https://github.com/fluent/nginx-fluentd-module";
285       license = with licenses; [ asl20 ];
286       maintainers = [ ];
287     };
288   };
290   geoip2 = {
291     name = "geoip2";
292     src = fetchFromGitHub {
293       name = "geoip2";
294       owner = "leev";
295       repo = "ngx_http_geoip2_module";
296       rev = "3.4";
297       sha256 = "CAs1JZsHY7RymSBYbumC2BENsXtZP3p4ljH5QKwz5yg=";
298     };
300     inputs = [ libmaxminddb ];
302     meta = with lib; {
303       description = "Creates variables with values from the maxmind geoip2 databases";
304       homepage = "https://github.com/leev/ngx_http_geoip2_module";
305       license = with licenses; [ bsd2 ];
306       maintainers = with maintainers; [ pinpox ];
307     };
308   };
310   http_proxy_connect_module_v24 = http_proxy_connect_module_generic "proxy_connect_rewrite_102101" // {
311     supports = with lib.versions; version: major version == "1" && minor version == "24";
312   };
314   http_proxy_connect_module_v25 = http_proxy_connect_module_generic "proxy_connect_rewrite_102101" // {
315     supports = with lib.versions; version: major version == "1" && minor version == "25";
316   };
318   ipscrub = {
319     name = "ipscrub";
320     src = fetchFromGitHub {
321       name = "ipscrub";
322       owner = "masonicboom";
323       repo = "ipscrub";
324       rev = "v1.0.1";
325       sha256 = "0qcx15c8wbsmyz2hkmyy5yd7qn1n84kx9amaxnfxkpqi05vzm1zz";
326     } + "/ipscrub";
328     inputs = [ libbsd ];
330     meta = with lib; {
331       description = " IP address anonymizer";
332       homepage = "https://github.com/masonicboom/ipscrub";
333       license = with licenses; [ bsd3 ];
334       maintainers = [ ];
335     };
336   };
338   limit-speed = {
339     name = "limit-speed";
340     src = fetchFromGitHub {
341       name = "limit-speed";
342       owner = "yaoweibin";
343       repo = "nginx_limit_speed_module";
344       rev = "f77ad4a56fbb134878e75827b40cf801990ed936";
345       sha256 = "0kkrd08zpcwx938i2is07vq6pgjkvn97xzjab0g4zaz8bivgmjp8";
346     };
348     meta = with lib; {
349       description = "Limit the total speed from the specific user";
350       homepage = "https://github.com/yaoweibin/nginx_limit_speed_module";
351       license = with licenses; [ bsd2 ];
352       maintainers = [ ];
353     };
354   };
356   live = {
357     name = "live";
358     src = fetchFromGitHub {
359       name = "live";
360       owner = "arut";
361       repo = "nginx-live-module";
362       rev = "5e4a1e3a718e65e5206c24eba00d42b0d1c4b7dd";
363       sha256 = "1kpnhl4b50zim84z22ahqxyxfq4jv8ab85kzsy2n5ciqbyg491lz";
364     };
366     meta = with lib; {
367       description = "HTTP live module";
368       homepage = "https://github.com/arut/nginx-live-module";
369       license = with licenses; [ bsd2 ];
370       maintainers = [ ];
371     };
372   };
374   lua = rec {
375     name = "lua";
376     version = "0.10.26";
378     src = fetchFromGitHub {
379       name = "lua";
380       owner = "openresty";
381       repo = "lua-nginx-module";
382       rev = "v${version}";
383       hash = "sha256-007up/XncaSBimBumHpbwgB1WnkXgBe8e/q/yT6vthI=";
384     };
386     inputs = [ luajit_openresty ];
388     preConfigure = ''
389       export LUAJIT_LIB="${luajit_openresty}/lib"
390       export LUAJIT_INC="$(realpath ${luajit_openresty}/include/luajit-*)"
392       # make source directory writable to allow generating src/ngx_http_lua_autoconf.h
393       lua_src=$TMPDIR/lua-src
394       cp -r "${src}/" "$lua_src"
395       chmod -R +w "$lua_src"
396       export configureFlags="''${configureFlags//"${src}"/"$lua_src"}"
397       unset lua_src
398     '';
400     allowMemoryWriteExecute = true;
402     meta = with lib; {
403       description = "Embed the Power of Lua";
404       homepage = "https://github.com/openresty/lua-nginx-module";
405       license = with licenses; [ bsd2 ];
406       maintainers = [ ];
407     };
408   };
410   lua-upstream = {
411     name = "lua-upstream";
412     src = fetchFromGitHub {
413       name = "lua-upstream";
414       owner = "openresty";
415       repo = "lua-upstream-nginx-module";
416       rev = "v0.07";
417       sha256 = "1gqccg8airli3i9103zv1zfwbjm27h235qjabfbfqk503rjamkpk";
418     };
420     inputs = [ luajit_openresty ];
421     allowMemoryWriteExecute = true;
423     meta = with lib; {
424       description = "Expose Lua API to ngx_lua for Nginx upstreams";
425       homepage = "https://github.com/openresty/lua-upstream-nginx-module";
426       license = with licenses; [ bsd2 ];
427       maintainers = [ ];
428     };
429   };
431   modsecurity = {
432     name = "modsecurity";
433     src = fetchFromGitHub {
434       name = "modsecurity-nginx";
435       owner = "SpiderLabs";
436       repo = "ModSecurity-nginx";
437       rev = "v1.0.3";
438       sha256 = "sha256-xp0/eqi5PJlzb9NaUbNnzEqNcxDPyjyNwZOwmlv1+ag=";
439     };
441     inputs = [ curl geoip libmodsecurity libxml2 lmdb yajl ];
442     disableIPC = true;
444     meta = with lib; {
445       description = "Open source, cross platform web application firewall (WAF)";
446       homepage = "https://github.com/SpiderLabs/ModSecurity";
447       license = with licenses; [ asl20 ];
448       maintainers = [ ];
449     };
450   };
452   moreheaders = {
453     name = "moreheaders";
454     src = fetchFromGitHub {
455       name = "moreheaders";
456       owner = "openresty";
457       repo = "headers-more-nginx-module";
458       rev = "v0.36";
459       sha256 = "sha256-X+ygIesQ9PGm5yM+u1BOLYVpm1172P8jWwXNr3ixFY4=";
460     };
462     meta = with lib; {
463       description = "Set, add, and clear arbitrary output headers";
464       homepage = "https://github.com/openresty/headers-more-nginx-module";
465       license = with licenses; [ bsd2 ];
466       maintainers = with maintainers; [ SuperSandro2000 ];
467     };
468   };
470   mpeg-ts = {
471     name = "mpeg-ts";
472     src = fetchFromGitHub {
473       name = "mpeg-ts";
474       owner = "arut";
475       repo = "nginx-ts-module";
476       rev = "v0.1.1";
477       sha256 = "12dxcyy6wna1fccl3a9lnsbymd6p4apnwz6c24w74v97qvpfdxqd";
478     };
480     meta = with lib; {
481       description = "MPEG-TS Live Module";
482       homepage = "https://github.com/arut/nginx-ts-module";
483       license = with licenses; [ bsd2 ];
484       maintainers = [ ];
485     };
486   };
488   naxsi = {
489     name = "naxsi";
490     src = fetchFromGitHub {
491       name = "naxsi";
492       owner = "nbs-system";
493       repo = "naxsi";
494       rev = "95ac520eed2ea04098a76305fd0ad7e9158840b7";
495       sha256 = "0b5pnqkgg18kbw5rf2ifiq7lsx5rqmpqsql6hx5ycxjzxj6acfb3";
496     } + "/naxsi_src";
498     meta = with lib; {
499       description = "Open-source, high performance, low rules maintenance WAF";
500       homepage = "https://github.com/nbs-system/naxsi";
501       license = with licenses; [ gpl3 ];
502       maintainers = [ ];
503     };
504   };
506   njs = rec {
507     name = "njs";
508     src = fetchhg {
509       url = "https://hg.nginx.org/njs";
510       rev = "0.8.4";
511       sha256 = "sha256-SooPFx4WNEezPD+W/wmMLY+FdkGRoojLNUFbhn3Riyg=";
512       name = "nginx-njs";
513     };
515     # njs module sources have to be writable during nginx build, so we copy them
516     # to a temporary directory and change the module path in the configureFlags
517     preConfigure = ''
518       NJS_SOURCE_DIR=$(readlink -m "$TMPDIR/${src}")
519       mkdir -p "$(dirname "$NJS_SOURCE_DIR")"
520       cp --recursive "${src}" "$NJS_SOURCE_DIR"
521       chmod -R u+rwX,go+rX "$NJS_SOURCE_DIR"
522       export configureFlags="''${configureFlags/"${src}"/"$NJS_SOURCE_DIR/nginx"}"
523       unset NJS_SOURCE_DIR
524     '';
526     inputs = [ which ];
528     meta = with lib; {
529       description = "Subset of the JavaScript language that allows extending nginx functionality";
530       homepage = "https://nginx.org/en/docs/njs/";
531       license = with licenses; [ bsd2 ];
532       maintainers = [ ];
533     };
534   };
536   opentracing = {
537     name = "opentracing";
538     src =
539       let src' = fetchFromGitHub {
540         name = "opentracing";
541         owner = "opentracing-contrib";
542         repo = "nginx-opentracing";
543         rev = "v0.10.0";
544         sha256 = "1q234s3p55xv820207dnh4fcxkqikjcq5rs02ai31ylpmfsf0kkb";
545       };
546       in "${src'}/opentracing";
548     inputs = [ opentracing-cpp ];
550     meta = with lib; {
551       description = "Enable requests served by nginx for distributed tracing via The OpenTracing Project";
552       homepage = "https://github.com/opentracing-contrib/nginx-opentracing";
553       license = with licenses; [ asl20 ];
554       maintainers = [ ];
555     };
556   };
558   pagespeed = {
559     name = "pagespeed";
560     src = let
561       moduleSrc = fetchFromGitHub {
562         name = "pagespeed";
563         owner = "apache";
564         repo = "incubator-pagespeed-ngx";
565         rev = "v${psol.version}-stable";
566         sha256 = "0ry7vmkb2bx0sspl1kgjlrzzz6lbz07313ks2lr80rrdm2zb16wp";
567       };
568     in runCommand "ngx_pagespeed" {
569       meta = {
570         description = "PageSpeed module for Nginx";
571         homepage = "https://developers.google.com/speed/pagespeed/module/";
572         license = lib.licenses.asl20;
573       };
574     } ''
575       cp -r "${moduleSrc}" "$out"
576       chmod -R +w "$out"
577       ln -s "${psol}" "$out/psol"
578     '';
580     inputs = [ zlib libuuid ]; # psol deps
581     allowMemoryWriteExecute = true;
583     meta = with lib; {
584       description = "Automatic PageSpeed optimization";
585       homepage = "https://github.com/apache/incubator-pagespeed-ngx";
586       license = with licenses; [ asl20 ];
587       maintainers = [ ];
588     };
589   };
591   pam = {
592     name = "pam";
593     src = fetchFromGitHub {
594       name = "pam";
595       owner = "sto";
596       repo = "ngx_http_auth_pam_module";
597       rev = "v1.5.3";
598       sha256 = "sha256:09lnljdhjg65643bc4535z378lsn4llbq67zcxlln0pizk9y921a";
599     };
601     inputs = [ pam ];
603     meta = with lib; {
604       description = "Use PAM for simple http authentication";
605       homepage = "https://github.com/sto/ngx_http_auth_pam_module";
606       license = with licenses; [ bsd2 ];
607       maintainers = [ ];
608     };
609   };
611   pinba = {
612     name = "pinba";
613     src = fetchFromGitHub {
614       name = "pinba";
615       owner = "tony2001";
616       repo = "ngx_http_pinba_module";
617       rev = "28131255d4797a7e2f82a6a35cf9fc03c4678fe6";
618       sha256 = "00fii8bjvyipq6q47xhjhm3ylj4rhzmlk3qwxmfpdn37j7bc8p8c";
619     };
621     meta = with lib; {
622       description = "Pinba module for nginx";
623       homepage = "https://github.com/tony2001/ngx_http_pinba_module";
624       license = with licenses; [ unfree ]; # no license in repo
625       maintainers = [ ];
626     };
627   };
629   push-stream = {
630     name = "push-stream";
631     src = fetchFromGitHub {
632       name = "push-stream";
633       owner = "wandenberg";
634       repo = "nginx-push-stream-module";
635       rev = "1cdc01521ed44dc614ebb5c0d19141cf047e1f90";
636       sha256 = "0ijka32b37dl07k2jl48db5a32ix43jaczrpjih84cvq8yph0jjr";
637     };
639     meta = with lib; {
640       description = "Pure stream http push technology";
641       homepage = "https://github.com/wandenberg/nginx-push-stream-module";
642       license = with licenses; [ gpl3 ];
643       maintainers = [ ];
644     };
645   };
647   rtmp = {
648     name = "rtmp";
649     src = fetchFromGitHub {
650       name = "rtmp";
651       owner = "arut";
652       repo = "nginx-rtmp-module";
653       rev = "v1.2.2";
654       sha256 = "0y45bswk213yhkc2v1xca2rnsxrhx8v6azxz9pvi71vvxcggqv6h";
655     };
657     meta = with lib; {
658       description = "Media Streaming Server";
659       homepage = "https://github.com/arut/nginx-rtmp-module";
660       license = with licenses; [ bsd2 ];
661       maintainers = [ ];
662     };
663   };
665   secure-token = rec {
666     name = "secure-token";
667     version = "1.5";
668     src = fetchFromGitHub {
669       name = "secure-token";
670       owner = "kaltura";
671       repo = "nginx-secure-token-module";
672       rev = "refs/tags/${version}";
673       hash = "sha256-qYTjGS9pykRqMFmNls52YKxEdXYhHw+18YC2zzdjEpU=";
674     };
676     inputs = [ openssl ];
678     meta = with lib; {
679       description = "Generates CDN tokens, either as a cookie or as a query string parameter";
680       homepage = "https://github.com/kaltura/nginx-secure-token-module";
681       license = with licenses; [ agpl3Only ];
682       maintainers = [ ];
683     };
684   };
686   set-misc = {
687     name = "set-misc";
688     src = fetchFromGitHub {
689       name = "set-misc";
690       owner = "openresty";
691       repo = "set-misc-nginx-module";
692       rev = "v0.33";
693       hash = "sha256-jMMj3Ki1uSfQzagoB/O4NarxPjiaF9YRwjSKo+cgMxo=";
694     };
696     meta = with lib; {
697       description = "Various set_xxx directives added to the rewrite module (md5/sha1, sql/json quoting and many more)";
698       homepage = "https://github.com/openresty/set-misc-nginx-module";
699       license = with licenses; [ bsd2 ];
700       maintainers = [ ];
701     };
702   };
704   shibboleth = {
705     name = "shibboleth";
706     src = fetchFromGitHub {
707       name = "shibboleth";
708       owner = "nginx-shib";
709       repo = "nginx-http-shibboleth";
710       rev = "3f5ff4212fa12de23cb1acae8bf3a5a432b3f43b";
711       sha256 = "136zjipaz7iikgcgqwdv1mrh3ya996zyzbkdy6d4k07s2h9g7hy6";
712     };
714     meta = with lib; {
715       description = "Shibboleth auth request";
716       homepage = "https://github.com/nginx-shib/nginx-http-shibboleth";
717       license = with licenses; [ bsd2 ];
718       maintainers = [ ];
719     };
720   };
722   sla = {
723     name = "sla";
724     src = fetchFromGitHub {
725       name = "sla";
726       owner = "goldenclone";
727       repo = "nginx-sla";
728       rev = "7778f0125974befbc83751d0e1cadb2dcea57601";
729       sha256 = "1x5hm6r0dkm02ffny8kjd7mmq8przyd9amg2qvy5700x6lb63pbs";
730     };
732     meta = with lib; {
733       description = "Implements a collection of augmented statistics based on HTTP-codes and upstreams response time";
734       homepage = "https://github.com/goldenclone/nginx-sla";
735       license = with licenses; [ unfree ]; # no license in repo
736       maintainers = [ ];
737     };
738   };
740   slowfs-cache = {
741     name = "slowfs-cache";
742     src = fetchFromGitHub {
743       name = "slowfs-cache";
744       owner = "FRiCKLE";
745       repo = "ngx_slowfs_cache";
746       rev = "1.10";
747       sha256 = "1gyza02pcws3zqm1phv3ag50db5gnapxyjwy8skjmvawz7p5bmxr";
748     };
750     meta = with lib; {
751       description = "Adds ability to cache static files";
752       homepage = "https://github.com/friCKLE/ngx_slowfs_cache";
753       license = with licenses; [ bsd2 ];
754       maintainers = [ ];
755     };
756   };
758   sorted-querystring = {
759     name = "sorted-querystring";
760     src = fetchFromGitHub {
761       name = "sorted-querystring";
762       owner = "wandenberg";
763       repo = "nginx-sorted-querystring-module";
764       rev = "0.3";
765       sha256 = "0p6b0hcws39n27fx4xp9k4hb3pcv7b6kah4qqaj0pzjy3nbp4gj7";
766     };
768     meta = with lib; {
769       description = "Expose querystring parameters sorted in a variable";
770       homepage = "https://github.com/wandenberg/nginx-sorted-querystring-module";
771       license = with licenses; [ mit ];
772       maintainers = [ ];
773     };
774   };
776   spnego-http-auth = {
777     name = "spnego-http-auth";
778     src = fetchFromGitHub {
779       name = "spnego-http-auth";
780       owner = "stnoonan";
781       repo = "spnego-http-auth-nginx-module";
782       rev = "3575542b3147bd03a6c68a750c3662b0d72ed94e";
783       hash = "sha256-s0m5h7m7dsPD5o2SvBb9L2kB57jwXZK5SkdkGuOmlgs=";
784     };
786     inputs = [ libkrb5 ];
788     meta = with lib; {
789       description = "SPNEGO HTTP Authentication Module";
790       homepage = "https://github.com/stnoonan/spnego-http-auth-nginx-module";
791       license = with licenses; [ bsd2 ];
792       maintainers = teams.deshaw.members;
793     };
794   };
796   statsd = {
797     name = "statsd";
798     src = fetchFromGitHub {
799       name = "statsd";
800       owner = "harvesthq";
801       repo = "nginx-statsd";
802       rev = "b970e40467a624ba710c9a5106879a0554413d15";
803       sha256 = "1x8j4i1i2ahrr7qvz03vkldgdjdxi6mx75mzkfizfcc8smr4salr";
804     };
806     meta = with lib; {
807       description = "Send statistics to statsd";
808       homepage = "https://github.com/harvesthq/nginx-statsd";
809       license = with licenses; [ bsd3 ];
810       maintainers = [ ];
811     };
812   };
814   stream-sts = {
815     name = "stream-sts";
816     src = fetchFromGitHub {
817       name = "stream-sts";
818       owner = "vozlt";
819       repo = "nginx-module-stream-sts";
820       rev = "v0.1.1";
821       sha256 = "1jdj1kik6l3rl9nyx61xkqk7hmqbncy0rrqjz3dmjqsz92y8zaya";
822     };
824     meta = with lib; {
825       description = "Stream server traffic status core module";
826       homepage = "https://github.com/vozlt/nginx-module-stream-sts";
827       license = with licenses; [ bsd2 ];
828       maintainers = [ ];
829     };
830   };
832   sts = {
833     name = "sts";
834     src = fetchFromGitHub {
835       name = "sts";
836       owner = "vozlt";
837       repo = "nginx-module-sts";
838       rev = "v0.1.1";
839       sha256 = "0nvb29641x1i7mdbydcny4qwlvdpws38xscxirajd2x7nnfdflrk";
840     };
842     meta = with lib; {
843       description = "Stream server traffic status module";
844       homepage = "https://github.com/vozlt/nginx-module-sts";
845       license = with licenses; [ bsd2 ];
846       maintainers = [ ];
847     };
848   };
850   subsFilter = {
851     name = "subsFilter";
852     src = fetchFromGitHub {
853       name = "subsFilter";
854       owner = "yaoweibin";
855       repo = "ngx_http_substitutions_filter_module";
856       rev = "e12e965ac1837ca709709f9a26f572a54d83430e";
857       sha256 = "sha256-3sWgue6QZYwK69XSi9q8r3WYGVyMCIgfqqLvPBHqJKU=";
858     };
860     meta = with lib; {
861       description = "Filter module which can do both regular expression and fixed string substitutions";
862       homepage = "https://github.com/yaoweibin/ngx_http_substitutions_filter_module";
863       license = with licenses; [ bsd2 ];
864       maintainers = [ ];
865     };
866   };
868   sysguard = {
869     name = "sysguard";
870     src = fetchFromGitHub {
871       name = "sysguard";
872       owner = "vozlt";
873       repo = "nginx-module-sysguard";
874       rev = "e512897f5aba4f79ccaeeebb51138f1704a58608";
875       sha256 = "19c6w6wscbq9phnx7vzbdf4ay6p2ys0g7kp2rmc9d4fb53phrhfx";
876     };
878     meta = with lib; {
879       description = "Nginx sysguard module";
880       homepage = "https://github.com/vozlt/nginx-module-sysguard";
881       license = with licenses; [ bsd2 ];
882       maintainers = [ ];
883     };
884   };
886   upload = {
887     name = "upload";
888     src = fetchFromGitHub {
889       name = "upload";
890       owner = "fdintino";
891       repo = "nginx-upload-module";
892       rev = "2.3.0";
893       sha256 = "8veZP516oC7TESO368ZsZreetbDt+1eTcamk7P1kWjU=";
894     };
896     meta = with lib; {
897       description = "Handle file uploads using multipart/form-data encoding and resumable uploads";
898       homepage = "https://github.com/fdintino/nginx-upload-module";
899       license = with licenses; [ bsd3 ];
900       maintainers = [ ];
901     };
902   };
904   upstream-check = {
905     name = "upstream-check";
906     src = fetchFromGitHub {
907       name = "upstream-check";
908       owner = "yaoweibin";
909       repo = "nginx_upstream_check_module";
910       rev = "e538034b6ad7992080d2403d6d3da56e4f7ac01e";
911       sha256 = "06y7k04072xzqyqyb08m0vaaizkp4rfwm0q7i735imbzw2rxb74l";
912     };
914     meta = with lib; {
915       description = "Support upstream health check";
916       homepage = "https://github.com/yaoweibin/nginx_upstream_check_module";
917       license = with licenses; [ bsd2 ];
918       maintainers = [ ];
919     };
920   };
922   upstream-tarantool = {
923     name = "upstream-tarantool";
924     src = fetchFromGitHub {
925       name = "upstream-tarantool";
926       owner = "tarantool";
927       repo = "nginx_upstream_module";
928       rev = "v2.7.1";
929       sha256 = "0ya4330in7zjzqw57djv4icpk0n1j98nvf0f8v296yi9rjy054br";
930     };
932     inputs = [ msgpuck.dev yajl ];
934     meta = with lib; {
935       description = "Tarantool NginX upstream module (REST, JSON API, websockets, load balancing)";
936       homepage = "https://github.com/tarantool/nginx_upstream_module";
937       license = with licenses; [ bsd2 ];
938       maintainers = [ ];
939     };
940   };
942   url = {
943     name = "url";
944     src = fetchFromGitHub {
945       name = "url";
946       owner = "vozlt";
947       repo = "nginx-module-url";
948       rev = "9299816ca6bc395625c3683fbd2aa7b916bfe91e";
949       sha256 = "0mk1gjmfnry6hgdsnlavww9bn7223idw50jlkhh5k00q5509w4ip";
950     };
952     meta = with lib; {
953       description = "URL encoding converting module";
954       homepage = "https://github.com/vozlt/nginx-module-url";
955       license = with licenses; [ bsd2 ];
956       maintainers = [ ];
957     };
958   };
960   video-thumbextractor = rec {
961     name = "video-thumbextractor";
962     version = "1.0.0";
963     src = fetchFromGitHub {
964       name = "video-thumbextractor";
965       owner = "wandenberg";
966       repo = "nginx-video-thumbextractor-module";
967       rev = "refs/tags/${version}";
968       hash = "sha256-F2cuzCbJdGYX0Zmz9MSXTB7x8+FBR6pPpXtLlDRCcj8=";
969     };
971     inputs = [ ffmpeg-headless libjpeg ];
973     meta = with lib; {
974       description = "Extract thumbs from a video file";
975       homepage = "https://github.com/wandenberg/nginx-video-thumbextractor-module";
976       license = with licenses; [ gpl3 ];
977       maintainers = [ ];
978     };
979   };
981   vod = {
982     name = "vod";
983     src = fetchFromGitHub {
984       name = "vod";
985       owner = "kaltura";
986       repo = "nginx-vod-module";
987       rev = "1.33";
988       hash = "sha256-xcdbaogJV/vSzFfP55uK2+zw3zF5j9AHaJI0QItTSss=";
989       postFetch = ''
990         substituteInPlace $out/vod/media_set.h \
991           --replace "MAX_CLIPS (128)" "MAX_CLIPS (1024)"
992       '';
993     };
995     inputs = [ ffmpeg_6-headless fdk_aac openssl libxml2 libiconv ];
997     meta = with lib; {
998       description = "VOD packager";
999       homepage = "https://github.com/kaltura/nginx-vod-module";
1000       license = with licenses; [ agpl3Only ];
1001       maintainers = [ ];
1002     };
1003   };
1005   vts = {
1006     name = "vts";
1007     src = fetchFromGitHub {
1008       name = "vts";
1009       owner = "vozlt";
1010       repo = "nginx-module-vts";
1011       rev = "v0.2.2";
1012       sha256 = "sha256-ReTmYGVSOwtnYDMkQDMWwxw09vT4iHYfYZvgd8iBotk=";
1013     };
1015     meta = with lib; {
1016       description = "Virtual host traffic status module";
1017       homepage = "https://github.com/vozlt/nginx-module-vts";
1018       license = with licenses; [ bsd2 ];
1019       maintainers = with maintainers; [ SuperSandro2000 ];
1020     };
1021   };
1023   zstd = {
1024     name = "zstd";
1025     src = fetchFromGitHub {
1026       name = "zstd";
1027       owner = "tokers";
1028       repo = "zstd-nginx-module";
1029       rev = "0.1.1";
1030       hash = "sha256-1gCV7uUsuYnZfb9e8VfjWkUloVINOUH5qzeJ03kIHgs=";
1031     };
1033     inputs = [ zstd ];
1035     meta = with lib; {
1036       description = "Nginx modules for the Zstandard compression";
1037       homepage = "https://github.com/tokers/zstd-nginx-module";
1038       license = with licenses; [ bsd2 ];
1039       maintainers = with maintainers; [ SuperSandro2000 ];
1040     };
1041   };
1042 }; in self // lib.optionalAttrs config.allowAliases {
1043   # deprecated or renamed packages
1044   modsecurity-nginx = self.modsecurity;
1045   fastcgi-cache-purge = throw "fastcgi-cache-purge was renamed to cache-purge";
1046   ngx_aws_auth = throw "ngx_aws_auth was renamed to aws-auth";