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