about summary refs log tree commit diff
path: root/gn/services/genome-browser.scm
diff options
context:
space:
mode:
Diffstat (limited to 'gn/services/genome-browser.scm')
-rw-r--r--gn/services/genome-browser.scm99
1 files changed, 99 insertions, 0 deletions
diff --git a/gn/services/genome-browser.scm b/gn/services/genome-browser.scm
new file mode 100644
index 0000000..58c8e4a
--- /dev/null
+++ b/gn/services/genome-browser.scm
@@ -0,0 +1,99 @@
+;; See dockerfile for some clarification about choices:
+;; https://github.com/icebert/docker_ucsc_genome_browser/blob/master/Dockerfile
+(define-module (gn services genome-browser))
+
+(use-modules (gnu)
+             (gn packages bioinformatics)
+             )
+(use-service-modules web)
+
+(define %hg.conf
+  (mixed-text-file "hg.conf"
+                   "browser.documentRoot=" ucsc-genome-browser "/html\n"
+                   "db.host=gbdb\n"
+                   "db.user=admin\n"
+                   "db.password=admin\n"
+                   "db.trackDb=trackDb\n"
+                   "defaultGenome=Human\n"
+                   "central.db=hgcentral\n"
+                   "central.host=gbdb\n"
+                   "central.user=admin\n"
+                   "central.password=admin\n"
+                   "central.domain=\n"
+                   "backupcentral.db=hgcentral\n"
+                   "backupcentral.host=gbdb\n"
+                   "backupcentral.user=admin\n"
+                   "backupcentral.password=admin\n"
+                   "backupcentral.domain=\n"))
+
+;; TODO: create 'daily clean' mcron scripts.
+;;       /var/www/html/trash needs to be created and owned by httpd:httpd
+
+(define ucsc-genome-browser-port 4321)
+
+(operating-system
+  (host-name "genome-browser")
+  (timezone "Etc/UTC")
+  (locale "en_US.utf8")
+
+  (bootloader (bootloader-configuration
+               (bootloader grub-bootloader)
+               (target "does-not-matter")))
+  (file-systems %base-file-systems)
+  ;; No firmware for VMs
+  (firmware '())
+  (packages (cons* %base-packages))
+  (services
+    (list (service httpd-service-type
+                   (httpd-configuration
+                     (config
+                       (httpd-config-file
+                         (document-root (file-append ucsc-genome-browser "/html"))
+                         (listen (list (number->string ucsc-genome-browser-port)))
+                         (modules
+                           (cons*
+                             (httpd-module
+                               (name "cgid_module")
+                               (file "modules/mod_cgid.so"))
+                             (httpd-module
+                               (name "include_module")
+                               (file "modules/mod_include.so"))
+                             %default-httpd-modules))
+                         (extra-config (list "\
+TypesConfig etc/httpd/mime.types
+# cgid.sock needs to be creatable, not in the store
+ScriptSock /var/run/cgid.sock
+# same as 'listen' above
+<VirtualHost *:" (number->string ucsc-genome-browser-port) ">
+  XBitHack On
+  DocumentRoot " ucsc-genome-browser "/html
+  Alias /bin " ucsc-genome-browser "/bin
+  Alias /cgi-bin " ucsc-genome-browser "/cgi-bin
+  #Alias /cgi-bin/hg.conf " %hg.conf "  # this doesn't seem to work
+  Alias /htdocs " ucsc-genome-browser "/htdocs
+  <Directory " ucsc-genome-browser "/html>
+    Options +Includes
+    SSILegacyExprParser on
+  </Directory>
+
+  ScriptAlias /cgi-bin/ " ucsc-genome-browser "/cgi-bin/
+  <Directory " ucsc-genome-browser "/cgi-bin>
+    AllowOverride None
+    Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
+    #Order allow,deny
+    #Allow from all
+    SetHandler cgi-script
+    Require all granted
+  </Directory>
+
+  <Directory /var/www/html/trash>
+    Options MultiViews
+    AllowOverride None
+    Order allow,deny
+    Allow from all
+  </Directory>
+</VirtualHost>")))))))))
+
+;; guix system container -L /path/to/guix-past/modules/ -L /path/to/guix-bioinformatics/ /path/to/guix-bioinformatics/gn/services/genome-browser.scm --network
+;; ALSO need to share in the external database
+;; xdg-open http://localhost:4321