about summary refs log tree commit diff
path: root/gn/services/discourse.scm
diff options
context:
space:
mode:
Diffstat (limited to 'gn/services/discourse.scm')
-rw-r--r--gn/services/discourse.scm129
1 files changed, 0 insertions, 129 deletions
diff --git a/gn/services/discourse.scm b/gn/services/discourse.scm
deleted file mode 100644
index feebb98..0000000
--- a/gn/services/discourse.scm
+++ /dev/null
@@ -1,129 +0,0 @@
-(define-module (gn services discourse))
-
-(use-modules (gnu)
-             (gn packages ruby)
-             (guix modules)
-             (guix records)
-             (ice-9 match)
-             (gnu packages ruby-check))
-(use-service-modules networking shepherd web)
-(use-package-modules node ruby)
-
-(define-record-type* <discourse-configuration>
-  discourse-configuration
-  make-discourse-configuration
-  discourse-configuration?
-  (package          discourse-configuration-package     ; package
-                    (default discourse))
-  (deploy-directory discourse-deploy-directory          ; string
-                    (default "/srv/http"))
-  (port             discourse-configuration-port        ; list of strings
-                    (default '("3000")))
-  (bundler          discourse-configuration-bundler     ; package
-                    (default bundler))
-  )
-
-(define discourse-activation
-  (match-lambda
-    (($ <discourse-configuration> package deploy-directory port bundler)
-     #~(begin
-         (mkdir-p #$deploy-directory)
-         (copy-recursively #$package #$deploy-directory)
-         (for-each make-file-writable (find-files #$deploy-directory))
-         (with-directory-excursion #$deploy-directory
-           ;; copied from the discourse package.
-           (substitute* "Gemfile"
-             ;; Don't require specific versions of these gems
-             (("6.0.3.3") (package-version ruby-rails))
-             (("2.0.1") (package-version ruby-sassc))
-             (("active_model_serializers.*") "active_model_serializers'\n")
-             ;; Add tzinfo-data and figure out how to use non-Ruby version later
-             (("active_model_serializers'")
-              "active_model_serializers'\ngem 'tzinfo-data'")
-             ;; ruby-cppjieba-rb never finishes the install phase with ruby-2.6
-             ((".*cppjieba_rb.*") ""))
-           (invoke #$(file-append node "/bin/npm") "install" "svgo")
-           )
-         ))))
-
-(define discourse-service
-  (match-lambda
-    (($ <discourse-configuration> package deploy-directory port bundler)
-     (with-imported-modules (source-module-closure
-                              '((gnu build shepherd)
-                                (gnu system file-systems)))
-       (list (shepherd-service
-               (provision '(discourse))
-               (requirement '(networking))
-               (modules '((gnu build shepherd)
-                          (gnu system file-systems)))
-               (start #~(make-forkexec-constructor/container
-                          (list #$(file-append package "/server.py"))
-                          ;; Needs to run from the directory it is located in.
-                          #:directory #$deploy-directory
-                          #:log-file "/var/log/discourse.log"
-                          ;; We don't need to set TMPDIR because we're inside a container.
-                          #:environment-variables
-                          '(
-                            ;"EDIRECT_PUBMED_MASTER=/export2/PubMed"
-                            ;"NLTK_DATA=/var/cache/nltk_data"
-                            ;"PERL_LWP_SSL_CA_FILE=/etc/ssl/certs/ca-certificates.crt"
-                            )
-                          ;#:mappings (list (file-system-mapping
-                          ;                   (source "/export2/PubMed")
-                          ;                   (target source)
-                          ;                   (writable? #t))
-                          ;                 (file-system-mapping
-                          ;                   (source "/export/ratspub")
-                          ;                   (target source)
-                          ;                   (writable? #t))
-                          ;                 (file-system-mapping
-                          ;                   (source "/var/cache/nltk_data")
-                          ;                   (target source))
-                          ;                 (file-system-mapping
-                          ;                   (source "/etc/ssl/certs")
-                          ;                   (target source)))
-                          ))
-               (stop  #~(make-kill-destructor)))))
-     )))
-
-(define discourse-service-type
-  (service-type
-    (name 'discourse)
-    (extensions
-      (list
-        (service-extension activation-service-type
-                           discourse-activation)
-        (service-extension shepherd-root-service-type
-                           discourse-service)
-        ;; Make sure discourse doesn't get garbage collected.
-        (service-extension profile-service-type
-                           (compose list discourse-configuration-package))
-        ;; Make sure php-fpm is instantiated.
-        (service-extension php-fpm-service-type
-                           (const #t))))
-    (default-value (discourse-configuration))
-    (description
-     "Run an instance of Discourse.")))
-
-(operating-system
-  (host-name "discourse")
-  (timezone "Etc/UTC")
-  (locale "en_US.utf8")
-
-  (bootloader (bootloader-configuration
-               (bootloader grub-bootloader)
-               (targets '("does-not-matter"))))
-  (file-systems %base-file-systems)
-  ;; No firmware for VMs.
-  (firmware '())
-  (packages (append
-              (list node)
-              %base-packages))
-
-  (services (list (service dhcp-service-type)
-                  (service discourse-service-type
-                           ;; The following is for testing:
-                           ;(discourse-configuration
-                           ;  (port '("3333")))
-                           ))))