Subject: Re: bug#54602: Germinal, a Common Lisp Gemini Server

From: Ludovic Courtès <[email-masked]>
Date: Tue, 05 Apr 2022 20:41:26 +0200

Hello,

Sorry for the delay!  Comments below…

~vidak <[email-masked]> skribis:

> (use-modules (guix packages)
> 	     (guix build-system asdf)
> 	     (guix build utils)
> 	     (guix git)
> 	     (guix git-download)
> 	     (gnu packages lisp)
> 	     (gnu packages lisp-xyz)
> 	     ((guix licenses) #:prefix license:))
>
> (define-public germinal
>   ;; No release.
>   (let ((commit "5bfb371ea57dae8985c0e1c6f184f0338487d684"))
>     (package
>    (name "germinal")
>    (version (git-version "1.0.0" "1" commit))
>    (source
>     (origin
>      (method git-fetch)
>      (uri (git-reference
> 	   (url "https://git.carcosa.net/jmcbray/germinal")
> 	   (commit commit)))
>      (file-name (git-file-name "germinal" version))
>      (sha256
>       (base32 "12jypa8m10825lp5yxfcm1fyk3r4ziwcri7ndxa0m5dz0y7hggck"))))
>    (build-system asdf-build-system/sbcl)
>
>    (inputs `(("alexandria" ,sbcl-alexandria)
> 	     ("babel" ,sbcl-babel)
> 	     ("usocket" ,sbcl-usocket)
>              ("bordeaux-threads" ,sbcl-bordeaux-threads)
>              ("cl+ssl" ,sbcl-cl+ssl)
>              ("str" ,sbcl-cl-str)
>              ("trivial-mimes" ,sbcl-trivial-mimes)
>              ("ppath" ,sbcl-ppath)
>              ("osicat" ,sbcl-osicat)
>              ("cl-interpol" ,sbcl-cl-interpol)
>              ("quri" ,sbcl-quri)
>              ("cl-ppcre" ,sbcl-cl-ppcre)
>              ("cl-fad" ,sbcl-cl-fad)
>              ("local-time" ,sbcl-local-time)
>              ("uax-15" ,sbcl-uax-15)))
>    (outputs '("out"))
>    (arguments
>     `(#:asd-systems '("germinal")))
>    (synopsis "A gemini protocol server in Common Lisp.")
>    (description
>     " Germinal is a server for the Gemini Protocol, written in Common
> Lisp.
>
> It is named after the early 20th century Yiddish-language anarchist
> newspaper Germinal. I wanted to name it after an anarchist publication
> to convey the idea of people sharing information and ideas with each
> other, in contrast to the way the web is used to push advertising from
> corporations to people. And it happened that Germinal shares some
> sounds with Gemini.")
>    
>    (home-page "https://git.carcosa.net/jmcbray/germinal")
>    (license license:agpl3))))
>
> germinal
>
>
> Hello all,
>
> I have written this package for Guix. It is a gemini protocol server
> written in Common Lisp.
>
> For me, it builds and installs, but I cannot seem to understand how to
> run the software.
>
> I understand that there are Guix system configurations/definitions for
> 'Agate' and 'gmnisrv', that allow one to use Guix to serve gemini
> content.
>
> (see: https://guix.gnu.org/manual/en/html_node/Web-Services.html )
>
> Could anyone help me understand how I might be able to get this
> software, Germinal, running on Guix in the same way as Agate and
> gmnisrv?

First, I would encourage you to submit the package for inclusion in Guix
proper.  For that, you need to turn it into a patch and generally follow
the guidelines at:

  https://guix.gnu.org/manual/devel/en/html_node/Submitting-Patches.html

In particular, once you’ve added it to the Guix tree, you will need to
run:

  ./pre-inst-env guix style germinal
  ./pre-inst-env guix style -S inputs germinal

to obtain the “conventional” style.  Let us know how it goes!

As for defining a Guix System service such as those you mention, I don’t
know.  My guess is that you could probably copy/paste
‘agate-service-type’ or ‘gmnisrv-service-type’ and related code as a
starting point, and adjust it so it matches Germinal.  People can
provide guidance on [email-masked] and on #guix on Libera.chat.

Thanks in advance,
Ludo’.