GNU bug report logs -
#44099
[PATCH] gnu: Add gmnisrv.
Previous Next
Full log
View this message in rfc822 format
[Message part 1 (text/plain, inline)]
Your bug report
#44099: [PATCH] gnu: Add gmnisrv.
which was filed against the guix-patches package, has been closed.
The explanation is attached below, along with your original report.
If you require more details, please reply to 44099 <at> debbugs.gnu.org.
--
44099: http://debbugs.gnu.org/cgi/bugreport.cgi?bug=44099
GNU Bug Tracking System
Contact help-debbugs <at> gnu.org with problems
[Message part 2 (message/rfc822, inline)]
Hi,
Alexandru-Sergiu Marton <brown121407 <at> posteo.ro> skribis:
> * gnu/packages/web.scm (gmnisrv): New variable.
[...]
> + (synopsis "Simple Gemini protocol server")
> + (description "gmnisrv is a simple Gemini protocol server written in C.")
> + (license (list license:gpl3
It’s ‘gpl3+’ since there’s nothing saying “version 3 only”.
> * gnu/services/web.scm (<gmnisrv-configuration>): New record type.
> (%default-gmnisrv-config-file): New variable.
> (%gmnisrv-accounts, %gmnisrv-activation): New variables.
> (gmnisrv-shepherd-service): New procedure.
> (gmnisrv-service-type): New variable.
> * doc/guix.texi (Web Services): Document it.
Nice, applied!
> +(define %default-gmnisrv-config-file
> + (plain-file "gmnisrv.ini" "
> +listen=0.0.0.0:1965 [::]:1965
> +
> +[:tls]
> +store=/var/lib/gemini/certs
> +
> +organization=gmnisrv on Guix user
> +
> +[localhost]
> +root=/srv/gemini
> +"))
> +
> +(define-record-type* <gmnisrv-configuration>
> + gmnisrv-configuration make-gmnisrv-configuration
> + gmnisrv-configuration?
> + (package gmnisrv-configuration-package
> + (default gmnisrv))
> + (config-file gmnisrv-configuration-config-file
> + (default %default-gmnisrv-config-file)))
> +
> +(define gmnisrv-shepherd-service
> + (match-lambda
> + (($ <gmnisrv-configuration> package config-file)
> + (list (shepherd-service
> + (provision '(gmnisrv))
> + (requirement '(networking))
> + (documentation "Run the gmnisrv Gemini server.")
> + (start (let ((gmnisrv (file-append package "/bin/gmnisrv")))
> + #~(make-forkexec-constructor
> + (list #$gmnisrv "-C" #$config-file)
> + #:user "gmnisrv" #:group "gmnisrv"
> + #:log-file "/var/log/gmnisrv.log")))
Suggestions for future work. :-)
1. We could provide “bindings” to the config file, using
‘define-configuration’ for instance, which has direct mapping to
the ini file format.
2. Then we could probably use ‘make-forkexec-constructor/container’ to
run the process in a namespace that contains just what’s needed:
the root of the files to be served, and the relevant /gnu/store
bits.
Thanks!
Ludo’.
[Message part 3 (message/rfc822, inline)]
* gnu/packages/web.scm (gmnisrv): New variable.
---
gnu/packages/web.scm | 43 +++++++++++++++++++++++++++++++++++++++++++
1 file changed, 43 insertions(+)
diff --git a/gnu/packages/web.scm b/gnu/packages/web.scm
index 5be95e4741..2ce3ab89bf 100644
--- a/gnu/packages/web.scm
+++ b/gnu/packages/web.scm
@@ -46,6 +46,7 @@
;;; Copyright © 2020 Paul Garlick <pgarlick <at> tourbillion-technology.com>
;;; Copyright © 2020 Michael Rohleder <mike <at> rohleder.de>
;;; Copyright © 2020 Ryan Prior <rprior <at> protonmail.com>
+;;; Copyright © 2020 Alexandru-Sergiu Marton <brown121407 <at> posteo.ro>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -128,6 +129,7 @@
#:use-module (gnu packages lisp-xyz)
#:use-module (gnu packages lsof)
#:use-module (gnu packages lua)
+ #:use-module (gnu packages man)
#:use-module (gnu packages markup)
#:use-module (gnu packages ncurses)
#:use-module (gnu packages networking)
@@ -7702,3 +7704,44 @@ solution for any project's interface needs:
@item Easily integrated and extensible with Python or Lua scripting.
@end itemize\n")
(license license:expat)))
+
+(define-public gmnisrv
+ (let ((commit "a22bec51494a50c044416d469cc33e043480e7fd"))
+ (package
+ (name "gmnisrv")
+ (version (git-version "0" "0" commit))
+ (home-page "https://git.sr.ht/~sircmpwn/gmnisrv")
+ (source (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url home-page)
+ (commit commit)))
+ (sha256
+ (base32
+ "1k1n7cqd37jgbhxyh231bagdxdxqwpr6n5pk3gax2516w6xbzlb9"))
+ (file-name (git-file-name name version))))
+ (build-system gnu-build-system)
+ (arguments
+ `(#:phases
+ (modify-phases %standard-phases
+ (add-before 'configure 'set-variables
+ (lambda _
+ (setenv "CC" "gcc")
+ #t))
+ (delete 'check)
+ (add-after 'install 'install-config
+ (lambda* (#:key outputs #:allow-other-keys)
+ (let ((etc (string-append (assoc-ref outputs "out")
+ "/etc")))
+ (mkdir-p etc)
+ (copy-file "config.ini" (string-append etc "/gmnisrv.ini"))
+ #t))))))
+ (inputs
+ `(("openssl" ,openssl)))
+ (native-inputs
+ `(("pkg-config" ,pkg-config)
+ ("scdoc" ,scdoc)))
+ (synopsis "Simple Gemini protocol server")
+ (description "gmnisrv is a simple Gemini protocol server written in C.")
+ (license (list license:gpl3
+ license:bsd-3))))) ;; for ini.c and ini.h
--
2.28.0
This bug report was last modified 4 years and 211 days ago.
Previous Next
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997,2003 nCipher Corporation Ltd,
1994-97 Ian Jackson.