~ruther/guix-local

ed2ea6430ecede48f13de7facadfdaaf997ddaee — Raven Hallsby 1 year, 18 days ago f1967dd
gnu: Add nginx-headers-more-module.

* gnu/packages/web.scm (nginx-headers-more-module): New variable.

Change-Id: I8219fefadd008b884f836f974d0850b352825ee0
Signed-off-by: Ludovic Courtès <ludo@gnu.org>
1 files changed, 62 insertions(+), 0 deletions(-)

M gnu/packages/web.scm
M gnu/packages/web.scm => gnu/packages/web.scm +62 -0
@@ 68,6 68,7 @@
;;; Copyright © 2024 Tomas Volf <~@wolfsden.cz>
;;; Copyright © 2024 Zheng Junjie <873216071@qq.com>
;;; Copyright © 2024, 2025 Artyom V. Poptsov <poptsov.artyom@gmail.com>
;;; Copyright © 2025 Raven Hallsby <karl@hallsby.com>
;;;
;;; This file is part of GNU Guix.
;;;


@@ 986,6 987,67 @@ on-demand streaming from a file on disk and pulling from an upstream RTMP
stream.  Remote control of the module is possible over HTTP.")
    (license license:bsd-2)))

(define-public nginx-headers-more-module
  (package
    (inherit nginx)
    (name "nginx-headers-more-module")
    (version "0.38")
    (source
     (origin
       (method git-fetch)
       (uri (git-reference
             (url "https://github.com/openresty/headers-more-nginx-module")
             (commit (string-append "v" version))))
       (file-name (git-file-name name version))
       (sha256
        (base32 "1dbgwzkpni616nawjkrq0xid60wdgab3vciy7nr966ac6rjyiliy"))))
    (build-system gnu-build-system)
    (inputs
     `(("nginx-sources" ,(package-source nginx))
       ,@(package-inputs nginx)))
    (arguments
     (substitute-keyword-arguments
         `(#:make-flags '("modules") ;Only build this module not all of nginx.
           ,@(package-arguments nginx))
       ((#:configure-flags flags)
        #~(cons "--add-dynamic-module=." #$flags))
       ((#:phases phases)
        #~(modify-phases #$phases
            (add-after 'unpack 'unpack-nginx-sources
              (lambda _
                (begin
                  ;; The nginx source code is needed to compile the module.
                  (format #t "decompressing nginx source code~%")
                  (invoke "tar" "xvf" #$(this-package-input "nginx-sources")
                          ;; This package's LICENSE file would be
                          ;; overwritten with the one from nginx when
                          ;; unpacking the nginx source, so rename the nginx
                          ;; one when unpacking.
                          "--transform=s,/LICENSE$,/LICENSE.nginx,"
                          "--strip-components=1"))))
            (replace 'install
              (lambda _
                (let ((modules-dir (string-append #$output
                                                  "/etc/nginx/modules")))
                  (install-file "objs/ngx_http_headers_more_filter_module.so"
                                modules-dir))))
            (delete 'fix-root-dirs)
            (delete 'install-man-page)))))
    (home-page "https://github.com/openresty/headers-more-nginx-module")
    (synopsis "Set, add, and clear input and output headers in NGINX http servers")
    (description "This NGINX module allows adding, setting, or clearing any
output or input header specified.

This is an enhanced version of the standard headers module because it provides
more utilities like resetting or clearing \"builtin headers\" like @code{Content-Type},
@code{Content-Length}, and @code{Server}.

It also allows you to specify an optional HTTP status code criteria using the
@code{-s} option and an optional content type criteria using the @code{-t}
option while modifying the output headers with the more_set_headers and
more_clear_headers directives.")
    (license license:bsd-2)))

(define-public nginx-module-vts
  (package
    (inherit nginx)