Title: Run your Gemini server on Guix with Agate
       Author: Solène
       Date: 17 June 2021
       Tags: guix gemini
       Description: 
       
       # Introduction
       
       This article is about deploying the Gemini server agate on the Guix
       linux distribution.
       
 (HTM) Gemini quickstart to explain Gemini to beginners
 (HTM) Guix website
       
       # Configuration
       
 (HTM) Guix manual about web services, search for Agate.
       
       Add the agate-service definition in your /etc/config.scm file, we will
       store the Gemini content in /srv/gemini/content and store the
       certificate and its private key in the upper directory.
       
       ```Guix configuration file
       (service agate-service-type
                (agate-configuration
                 (content "/srv/gemini/content")
                 (cert "/srv/gemini/cert.pem")
                 (key "/srv/gemini/key.rsa"))
       ```
       
       If you have something like %desktop-services or %base-services, you
       need to wrap the services list a list using "list" function and add the
       %something-services to that list using the function "append" like this.
       
       ```Guix configuration file
       (services
         (append
           (list (service openssh-service-type)
                 (service agate-service-type
                          (agate-configuration
                           (content "/srv/gemini/content")
                           (cert "/srv/gemini/cert.pem")
                           (key "/srv/gemini/key.rsa"))))
           %desktop-services))
       
       ```
       
       # Generating the certificate
       
       - Create directories /srv/gemini/content
       - run the following command in /srv/gemini/
       
       ```
       openssl req -x509 -newkey rsa:4096 -keyout key.rsa -out cert.pem -days 3650 -nodes -subj "/CN=YOUR_DOMAIN.TLD"
       ```
       
       - Apply a chmod 400 on both files cert.pem and key.rsa
       - Use "guix system reconfigure /etc/config.scm" to install agate
       - Use "chown agate:agate cert.pem key.rsa" to allow agate user to read
       the certificates
       - Use "herd restart agate" to restart the service, you should have a
       working gemini server on port 1965 now
       
       # Conclusion
       
       You are now ready to publish content on Gemini by adding files in
       /srv/gemini/content , enjoy!