about summary refs log tree commit diff
path: root/gn
diff options
context:
space:
mode:
Diffstat (limited to 'gn')
-rw-r--r--gn/deploy/octopus.scm161
-rw-r--r--gn/packages/afnumpy.scm51
-rw-r--r--gn/packages/arrayfire.scm235
-rw-r--r--gn/packages/binderlite.scm37
-rw-r--r--gn/packages/bioinformatics.scm4702
-rw-r--r--gn/packages/check.scm61
-rw-r--r--gn/packages/cran.scm54
-rw-r--r--gn/packages/crates-io.scm714
-rw-r--r--gn/packages/cwl.scm112
-rw-r--r--gn/packages/databases.scm135
-rw-r--r--gn/packages/dlang.scm264
-rw-r--r--gn/packages/edash.scm448
-rw-r--r--gn/packages/elixir.scm91
-rw-r--r--gn/packages/file-systems.scm155
-rw-r--r--gn/packages/fpga.scm17
-rw-r--r--gn/packages/gemma.scm2
-rw-r--r--gn/packages/genecup.scm107
-rw-r--r--gn/packages/genenetwork-rust.scm605
-rw-r--r--gn/packages/genenetwork.scm153
-rw-r--r--gn/packages/gitea.scm79
-rw-r--r--gn/packages/globus.scm76
-rw-r--r--gn/packages/gn-proxy.scm10
-rw-r--r--gn/packages/gnulib.scm1
-rw-r--r--gn/packages/gtest.scm1
-rw-r--r--gn/packages/hyphy.scm71
-rw-r--r--gn/packages/java.scm408
-rw-r--r--gn/packages/javascript.scm664
-rw-r--r--gn/packages/julia.scm1133
-rw-r--r--gn/packages/jupyterhub.scm301
-rw-r--r--gn/packages/kubernetes.scm347
-rw-r--r--gn/packages/lisp.scm259
-rw-r--r--gn/packages/lmm.scm23
-rw-r--r--gn/packages/machine-learning.scm28
-rw-r--r--gn/packages/mail.scm20
-rw-r--r--gn/packages/maths.scm130
-rw-r--r--gn/packages/mouse-longevity.scm87
-rw-r--r--gn/packages/node.scm658
-rw-r--r--gn/packages/notebooks.scm83
-rw-r--r--gn/packages/ocaml.scm50
-rw-r--r--gn/packages/opencl-icd-loader.scm95
-rw-r--r--gn/packages/openfyba.scm58
-rw-r--r--gn/packages/pangenome-rust.scm4566
-rw-r--r--gn/packages/pangenome.scm1896
-rw-r--r--gn/packages/patches/python-unittest2-python3-compat.patch46
-rw-r--r--gn/packages/patches/python-unittest2-remove-argparse.patch11
-rw-r--r--gn/packages/phewas.scm113
-rw-r--r--gn/packages/php.scm232
-rw-r--r--gn/packages/python-build.scm68
-rw-r--r--gn/packages/python-xyz.scm135
-rw-r--r--gn/packages/python.scm1635
-rw-r--r--gn/packages/python24.scm545
-rw-r--r--gn/packages/quality-control.scm176
-rw-r--r--gn/packages/r-shiny.scm61
-rw-r--r--gn/packages/riscv.scm98
-rw-r--r--gn/packages/ruby.scm6269
-rw-r--r--gn/packages/rust-crates.scm525
-rw-r--r--gn/packages/sambamba.scm155
-rw-r--r--gn/packages/static.scm83
-rw-r--r--gn/packages/statistics.scm96
-rw-r--r--gn/packages/tcl.scm50
-rw-r--r--gn/packages/traefik.scm52
-rw-r--r--gn/packages/twint.scm191
-rw-r--r--gn/packages/virtualization.scm163
-rw-r--r--gn/packages/web.scm16
-rw-r--r--gn/packages/yaj.scm91
-rw-r--r--gn/past/genenetwork1.scm295
-rw-r--r--gn/services/bxd-power-container.scm24
-rw-r--r--gn/services/discourse.scm129
-rw-r--r--gn/services/file-systems.scm653
-rw-r--r--gn/services/genenetwork1.scm33
-rw-r--r--gn/services/genome-browser.scm207
-rw-r--r--gn/services/gitea-README17
-rw-r--r--gn/services/gitea-container.scm94
-rw-r--r--gn/services/gitea-dump.service11
-rw-r--r--gn/services/gitea-dump.timer9
-rw-r--r--gn/services/gitea-nocontainer.service10
-rw-r--r--gn/services/gitea.service10
-rw-r--r--gn/services/gn1-httpd-config.scm136
-rw-r--r--gn/services/rn6-assembly-container.scm24
-rw-r--r--gn/services/rshiny.scm86
-rw-r--r--gn/services/science.scm387
-rw-r--r--gn/services/singlecell-container.scm27
82 files changed, 8984 insertions, 23127 deletions
diff --git a/gn/deploy/octopus.scm b/gn/deploy/octopus.scm
deleted file mode 100644
index fc631b8..0000000
--- a/gn/deploy/octopus.scm
+++ /dev/null
@@ -1,161 +0,0 @@
-(define-module (gn deploy octopus))
-
-(use-modules (gnu)
-             (gn services file-systems)
-             (gn services science)
-             (srfi srfi-26))
-(use-service-modules networking ssh sysctl web)
-(use-package-modules parallel shells)
-
-(define %efraimf-ssh-pubkey
-  (plain-file "efraim-id_rsa.pub"
-              "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDUCDY8ZKFF/ln0yzDt3CNmKz3cT4wzNv9bzCKvOBXcL0O7JtPWwqgLlZgmMHfzhzgReAkHcrt+Gdsyduzm/s9Y8c6QpyfaH6uoDwjfoOs6GrAjZaOXmAdncf+9HZEAy/IrygQ1YFRu6BvYogsdhhtN+O6IXBuvQQDRzldHs53Y53DK06Nrs19vAPwELXcDxcx1FvO+/L9nT8RHkI1Z0ucgTS+F/BWXl8+mh89r4j+4IRpZXOuCD0DrW5rgEE1EygF2dVdWZQESi23gU5Mt6vnmysXzwixB7j6I+xTih8LH4pz7hewEx6754e/cs9Gm7ZtfXKfXUt6+GtsBSBF3ULKl efraimf@octopus01"))
-
-
-(operating-system
-  (host-name "octopus")
-  (timezone "Etc/UTC")
-  (locale "en_US.utf8")
-
-  (bootloader (bootloader-configuration
-               (bootloader grub-bootloader)
-               (targets '("/dev/sda"))
-               (terminal-outputs '(console serial))))
-  (kernel-arguments '("console=tty1" "console=ttyS0,115200n8"))
-
-  (file-systems
-    (append (list
-              (file-system
-                (device "/dev/sda3")
-                (mount-point "/")
-                (type "ext4")
-                (options "errors=remount-ro"))
-              ;(file-system
-              ;  (device "/dev/sdb1")
-              ;  (mount-point "/mnt/sdb1")
-              ;  (type "xfs")
-              ;  (flags '(no-exec no-dev no-atime))
-              ;  (options "rw,nodiratime,largeio,inode64")
-              ;  (create-mount-point? #t))
-              (file-system
-                (device "octopus01:/export")
-                (mount-point "/export")
-                (type "nfs")
-                (mount? #f)    ; VM can't find octopus01
-                (check? #f))(file-system
-                (device "octopus01:/home")
-                (mount-point "/home")
-                (type "nfs")
-                (mount? #f)    ; VM can't find octopus01
-                (check? #f)))
-              %base-file-systems))
-
-  (swap-devices '("/dev/sda2"))
-  ;; No firmware needed
-  (firmware '())
-
-  (users (cons*
-           (user-account
-             (name "wrk")
-             (comment "Pjotr Prins")
-             (uid 502)
-             (group "users")
-             (supplementary-groups '("wheel" "kvm")))
-           (user-account
-             (name "efraimf")
-             (comment "Efraim Flashner")
-             (uid 1000)
-             (group "users")
-             (supplementary-groups '("wheel" "kvm")))
-           (user-account
-             (name "erikg")
-             (comment "Erik Garrison")
-             (uid 1001)
-             (group "users")
-             (shell (file-append zsh "/bin/zsh")))
-           (user-account
-             (name "hchen")
-             (comment "Hao Chen")
-             (uid 1002)
-             (group "users"))
-           %base-user-accounts))
-
-
-  (packages (append
-              (map (cut specification->package <>)
-                     '("nss-certs"
-                       "screen" "tmux"
-                       "vim"
-                       "htop"))
-              %base-packages))
-
-  (services
-    (append (list
-              (service openssh-service-type
-                       (openssh-configuration
-                         (authorized-keys
-                           `(("efraimf" ,%efraimf-ssh-pubkey)))))
-
-              (service sysctl-service-type
-                       (sysctl-configuration
-                         (settings '(("vm.overcommit_memory" . "2")
-                                     ("vm.overcommit_ratio" . "90")))))
-
-              (service munge-service-type)
-              (service slurm-service-type
-                       (slurm-configuration
-                         (package slurm-18.08)
-                         (SlurmdLogFile "/var/log/slurmd.log")
-                         (SlurmctldLogFile "/var/log/slurmctld.log")
-                         (ClusterName "linux")
-                         (SlurmUser "slurm")
-                         (SlurmctldHost '("octopus"))
-                         (DbdHost "localhost")
-                         (StorageType "accounting_storage/none")
-                         (slurm-extra-content
-                           (string-append
-                             "StateSaveLocation=/var/spool/slurmd/ctld    # default /var/spool\n"
-                             "ReturnToService=1               # default 0\n"
-                             "DebugFlags=NO_CONF_HASH         # default empty\n"
-                             "SelectType=select/cons_res      # default select/linear\n"
-                             "SelectTypeParameters=CR_CPU     # default 0\n"
-                             "# COMPUTE NODES\n"
-                             "NodeName=octopus CPUs=1 Boards=1 SocketsPerBoard=1 CoresPerSocket=1 ThreadsPerCore=1 RealMemory=1024\n"
-                             "PartitionName=debug Nodes=ALL Default=YES MaxTime=INFINITE State=UP"))
-                         (cgroup-extra-content
-                           (string-append
-                             "CgroupAutomount=yes     # default no\n"
-                             "ConstrainCores=yes      # default no\n"
-                             "MaxRAMPercent=95        # default 100"))
-                         (slurmdbd-extra-content
-                           (string-append
-                             "LogFile=/var/log/slurmdbd.log   # default none, syslog"))
-                         (run-slurmdbd? #t)
-                         (run-slurmctld? #t)))
-
-              (service lizardfs-service-type
-                       (lizardfs-configuration
-                         (mfsmetalogger-config
-                           (lizardfs-mfsmetalogger-config-file
-                             (master-host "octopus")))
-                         (mfschunkserver-config
-                           (lizardfs-mfschunkserver-config-file
-                             (master-host "octopus")))
-                         (mfshdd-config
-                           (lizardfs-mfshdd-config-file
-                             (disks-to-use (list "/mnt"))))
-                         (mfsmaster-config
-                           (lizardfs-mfsmaster-config-file
-                             (personality "master")
-                             (master-host "octopus")))
-                         (mfsexports-config
-                           (plain-file "mfsexports.cfg"
-                                       "* / rw\n"))
-                         (run-mfsmetalogger-service? #t)
-                         ))
-
-              (service dhcp-service-type)
-              (service openntpd-service-type))
-            %base-services))
-
-  (name-service-switch %mdns-host-lookup-nss))
diff --git a/gn/packages/afnumpy.scm b/gn/packages/afnumpy.scm
deleted file mode 100644
index 1322aee..0000000
--- a/gn/packages/afnumpy.scm
+++ /dev/null
@@ -1,51 +0,0 @@
-;;; GNU Guix --- Functional package management for GNU
-;;; Copyright © 2016 Dennis Mungai <dmngaie@gmail.com>
-;;;
-;;; This file is part of GNU Guix.
-;;;
-;;; GNU Guix is free software; you can redistribute it and/or modify it
-;;; under the terms of the GNU General Public License as published by
-;;; the Free Software Foundation; either version 3 of the License, or (at
-;;; your option) any later version.
-;;;
-;;; GNU Guix is distributed in the hope that it will be useful, but
-;;; WITHOUT ANY WARRANTY; without even the implied warranty of
-;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-;;; GNU General Public License for more details.
-;;;
-;;; You should have received a copy of the GNU General Public License
-;;; along with GNU Guix.  If not, see <http://www.gnu.org/licenses/>.
-
-(define-module (gn packages afnumpy)
-  #:use-module ((guix licenses) #:prefix license:)
-  #:use-module (guix packages)
-  #:use-module (guix git-download)
-  #:use-module (guix utils)
-  #:use-module (guix build-system python)
-  #:use-module (gnu packages python))
-
-(define-public afnumpy
-  (let ((commit "c5594c1"))
-    (package
-      (name "afnumpy")
-      (version (string-append "rel1-" commit))
-      (source (origin
-                (method git-fetch)
-                (uri (git-reference
-                       (url "https://github.com/FilipeMaia/afnumpy.git")
-                       (commit commit)))
-                (file-name (string-append name "-" commit))
-                (sha256
-                 (base32
-                  "0n30xn8cz0ww7czb3m6dz5sh87khan7ag3vb192narmxj37l8qy7"))))
-      (build-system python-build-system)
-      ;; (native-inputs
-      ;; `(("python-setuptools" ,python-setuptools)))
-      (arguments
-       `(#:python ,python-2
-         #:tests? #f))
-      (home-page "https://github.com/FilipeMaia/afnumpy")
-      (synopsis "Numerical library array processing of numbers, strings, records and objects")
-      (description
-       "A GPGPU-accelerated drop-in of python's numpy")
-      (license license:gpl2))))
diff --git a/gn/packages/arrayfire.scm b/gn/packages/arrayfire.scm
deleted file mode 100644
index 9cb86fa..0000000
--- a/gn/packages/arrayfire.scm
+++ /dev/null
@@ -1,235 +0,0 @@
-;;; GNU Guix --- Functional package management for GNU
-;;; Copyright © 2016 Dennis Mungai <dmngaie@gmail.com>
-;;; Copyright © 2019 Efraim Flashner <efraim@flashner.co.il>
-;;;
-;;; This file is part of GNU Guix.
-;;;
-;;; GNU Guix is free software; you can redistribute it and/or modify it
-;;; under the terms of the GNU General Public License as published by
-;;; the Free Software Foundation; either version 3 of the License, or (at
-;;; your option) any later version.
-;;;
-;;; GNU Guix is distributed in the hope that it will be useful, but
-;;; WITHOUT ANY WARRANTY; without even the implied warranty of
-;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-;;; GNU General Public License for more details.
-;;;
-;;; You should have received a copy of the GNU General Public License
-;;; along with GNU Guix.  If not, see <http://www.gnu.org/licenses/>.
-
-(define-module (gn packages arrayfire)
-  #:use-module (guix packages)
-  #:use-module ((guix licenses) #:prefix license:)
-  #:use-module (guix git-download)
-  #:use-module (guix build-system cmake)
-  #:use-module (gnu packages)
-  #:use-module (guix utils)
-  #:use-module (gnu packages algebra)
-  #:use-module (gnu packages boost)
-  #:use-module (gnu packages check)
-  #:use-module (gnu packages gcc)
-  #:use-module (gnu packages maths)
-  #:use-module (gnu packages opencl)
-  #:use-module (gnu packages pkg-config)
-  #:use-module (gnu packages python))
-
-(define-public arrayfire
-(package
-    (name "arrayfire")
-    (version "3.3.2")
-    (source (origin
-              (method git-fetch)
-              (uri (git-reference
-                     (url "https://github.com/arrayfire/arrayfire.git")
-                     (commit (string-append "v" version))))
-              (file-name (git-file-name name version))
-              (sha256
-               (base32
-                "113ldnqsil4p84sayv7jh8vnn0nalxibhdyvvwp94vqk20kqg4lw"))
-              (patches (search-patches "arrayfire-lapack-detection.patch"
-                                       "arrayfire-newer-boost-compute.patch"))))
-    (native-inputs
-     `(("pkg-config" ,pkg-config)
-       ("googletest" ,googletest)
-       ("assets" ,(origin
-                    (method git-fetch)
-                     (uri (git-reference
-                            (url "https://github.com/arrayfire/assets.git")
-                            (commit "729c7b64039e6433ae5ee521658ba20147efcb02"))) ; March 4, 2019
-                     (file-name (git-file-name "arrayfire-assets" "submodule"))
-                     (sha256
-                      (base32
-                       "05zg7m6zlwi3llbv7l5wd9qi9ppb9p3ad2i5xmqwvcbgx5ry4l2s"))))
-       ("threads" ,(origin
-                     (method git-fetch)
-                     (uri (git-reference
-                            (url "https://github.com/alltheflops/threads.git")
-                            (commit "5e778ce0a7f0f80af9d32ea3569df3dbec834f59"))) ; Dec 16, 2015
-                     (file-name (git-file-name "arrayfire-threads" "submodule"))
-                     (sha256
-                      (base32
-                       "1rj2357r124b4ry0s467fz9hs4jxcyacliwprggvai85a39pqabx"))))))
-    (inputs
-     `(("boost" ,boost)
-       ("clBLAS" ,clBLAS)
-       ("clFFT" ,clFFT)
-       ("fftw-openmpi" ,fftw-openmpi)
-       ("fftwf" ,fftwf)
-       ("ocl-icd" ,ocl-icd)
-       ("openblas" ,openblas)
-       ("opencl-headers" ,opencl-headers)))
-    (build-system cmake-build-system)
-    (arguments
-     `(#:configure-flags
-       '("-DBUILD_OPENCL=ON"
-         "-DBUILD_CUDA=OFF"
-         "-DBUILD_GRAPHICS=OFF"
-         "-DBUILD_TEST=OFF" ; building tests segfaults
-         "-DUSE_SYSTEM_CLBLAS=ON"
-         "-DUSE_SYSTEM_CLFFT=ON"
-         "-DUSE_SYSTEM_GTEST=ON")
-       #:phases
-       (modify-phases %standard-phases
-         (add-after 'unpack 'add-more-sources
-           (lambda* (#:key inputs #:allow-other-keys)
-             (let ((assets  (assoc-ref inputs "assets"))
-                   (threads (assoc-ref inputs "threads")))
-               (copy-recursively assets "assets")
-               (copy-recursively threads "src/backend/cpu/threads"))
-             #t))
-         (add-after 'unpack 'fix-sources
-           (lambda _
-             (substitute* "src/backend/opencl/blas.cpp"
-               ;; https://github.com/arrayfire/arrayfire/commit/90a9ffbce5c38352a365e03a634ffaf0d2fb9933
-               (("#undef BLAS_FUNC_DEF")
-                "#undef BLAS_FUNC_DEF\n#undef BLAS_FUNC"))
-             (substitute* '("src/backend/cpu/blas.cpp"
-                            "src/backend/opencl/cpu/cpu_blas.cpp")
-               ;; https://github.com/arrayfire/arrayfire/pull/2538/files
-               (("&cblas_##PREFIX##FUNC;")
-                "(FUNC##_func_def<TYPE>)&cblas_##PREFIX##FUNC;"))
-             #t)))
-       #:tests? #f)) ; Building the tests fail linking, so we build the examples as a test.
-    (home-page "https://arrayfire.com/")
-    (synopsis "High performance library for parallel computing")
-    (description
-     "ArrayFire is a high performance software library for parallel computing
-with an easy-to-use API.  Its array based function set makes parallel
-programming simple.")
-    (license (list license:bsd-3 ; everything except CMakeModules folder
-                   license:cc0)))) ; assets
-
-(define-public clBLAS
-  (package
-    (name "clBLAS")
-    (version "2.12")
-    (source (origin
-             (method git-fetch)
-             (uri (git-reference
-                    (url "https://github.com/clMathLibraries/clBLAS.git")
-                    (commit (string-append "v" version))))
-             (file-name (git-file-name name version))
-             (sha256
-              (base32
-               "154mz52r5hm0jrp5fqrirzzbki14c1jkacj75flplnykbl36ibjs"))))
-    (build-system cmake-build-system)
-    (arguments
-     `(#:tests? #f
-       #:configure-flags
-       (list "../source/src"
-             "-DUSE_SYSTEM_GTEST=ON"
-             ;"-DBoost_USE_STATIC_LIBS=OFF" ; this does not seem to apply
-             "-DBUILD_TEST=OFF")
-       #:phases
-       (modify-phases %standard-phases
-         (add-after 'unpack 'patch-source
-           (lambda _
-             (substitute* "src/CMakeLists.txt"
-               (("Boost_USE_STATIC_LIBS   ON")
-                "Boost_USE_STATIC_LIBS   OFF"))
-             #t)))))
-    (native-inputs
-     `(("gfortran" ,gfortran)
-       ("openblas" ,openblas)
-       ("opencl-headers" ,opencl-headers)
-       ("python" ,python-2)))
-    (inputs
-     `(("boost" ,boost)
-       ("ocl-icd" ,ocl-icd)))
-    (home-page "https://github.com/clMathLibraries/clBLAS")
-    (synopsis "Library containing BLAS functions written in OpenCL")
-    (description
-     "The primary goal of @code{clBLAS} is to make it easier for developers to
-utilize the inherent performance and power efficiency benefits of heterogeneous
-computing.  @code{clBLAS} interfaces do not hide nor wrap @code{OpenCL}
-interfaces, but rather leaves @code{OpenCL} state management to the control of
-the user to allow for maximum performance and flexibility.  The @code{clBLAS}
-library does generate and enqueue optimized @code{OpenCL} kernels, relieving the
-user from the task of writing, optimizing and maintaining kernel code themselves.")
-    (license license:asl2.0)))
-
-(define-public clFFT
-  (package
-    (name "clFFT")
-    (version "2.12.2")
-    (source (origin
-             (method git-fetch)
-             (uri (git-reference
-                    (url "https://github.com/clMathLibraries/clFFT.git")
-                    (commit (string-append "v" version))))
-             (file-name (git-file-name name version))
-             (sha256
-              (base32
-               "134vb6214hn00qy84m4djg4hqs6hw19gkp8d0wlq8gb9m3mfx7na"))))
-    (build-system cmake-build-system)
-    (arguments
-     `(#:configure-flags '("../source/src"
-                           "-DBUILD_TEST=ON"
-                           "-DUSE_SYSTEM_GTEST=ON"
-                           "-DBoost_USE_STATIC_LIBS=OFF")
-       #:test-target "Test"))
-    (native-inputs
-     `(("boost" ,boost)
-       ("fftw-openmpi" ,fftw-openmpi)
-       ("fftwf" ,fftwf)
-       ("googletest" ,googletest)))
-    (inputs
-     `(("ocl-icd" ,ocl-icd)
-       ("opencl-headers" ,opencl-headers)))
-    (home-page "https://github.com/clMathLibraries/clFFT/")
-    (synopsis "Library containing FFT functions written in OpenCL")
-    (description "@code{clFFT} is a software library containing FFT functions
-written in @code{OpenCL}.  In addition to GPU devices, the library also supports
-running on CPU devices to facilitate debugging and heterogeneous programming.")
-    (license license:asl2.0)))
-
-(define-public compute ; superceeded by boost-1.61+
-  (package
-    (name "compute")
-    (version "0.5")
-    (source (origin
-             (method git-fetch)
-             (uri (git-reference
-                    (url "https://github.com/boostorg/compute.git")
-                    (commit (string-append "v" version))))
-             (file-name (git-file-name name version))
-             (sha256
-              (base32
-               "0jc04k43br49hqgzrxfn3wfz2m94q1z45zfg5nahqb7p0lbfgwyx"))))
-    (build-system cmake-build-system)
-    (arguments
-     `(#:configure-flags '("-DBUILD_SHARED_LIBS=ON"
-                           "-DCMAKE_BUILD_TYPE=Release")
-       #:tests? #f)) ; tests require OpenCL device
-    (native-inputs
-     `(("boost" ,boost-for-mysql) ; 1.59.0
-       ("opencl-headers" ,opencl-headers)
-       ("ocl-icd" ,ocl-icd)))
-    (home-page "http://boostorg.github.io/compute/")
-    (synopsis "C++ GPU Computing Library for OpenCL")
-    (description
-     "@code{Boost.Compute} is a GPU/parallel-computing library for C++ based on
-@code{OpenCL}.  The core library is a thin C++ wrapper over the @code{OpenCL
-API} and provides access to compute devices, contexts, command queues and memory
-buffers.")
-    (license license:boost1.0)))
diff --git a/gn/packages/binderlite.scm b/gn/packages/binderlite.scm
deleted file mode 100644
index 8010e41..0000000
--- a/gn/packages/binderlite.scm
+++ /dev/null
@@ -1,37 +0,0 @@
-(define-module (gn packages binderlite)
-  #:use-module (gnu packages)
-  #:use-module ((guix licenses) #:prefix license:)
-  #:use-module (gnu packages python-web)
-  #:use-module (gnu packages python-xyz)
-  #:use-module (guix packages)
-  #:use-module (guix download)
-  #:use-module (guix git-download)
-  #:use-module (guix utils)
-  #:use-module (guix build-system asdf)
-  #:use-module (guix build-system python))
-
-(define-public python-jgart-giturlparse
-  ;; https://github.com/nephila/giturlparse/pull/41
-  (let ((commit "719f4c8e642718121f5a7b91ae8160b0041d31f9")
-        (revision "0"))
-    (package
-      (inherit python-giturlparse)
-      (name "python-jgart-giturlparse")
-      (version (git-version "20211107" revision commit))
-      (source
-       (origin
-         (method git-fetch)
-         (uri (git-reference
-                (url "https://git.genenetwork.org/jgart/giturlparse")
-                (commit commit)))
-         (file-name (git-file-name name version))
-         (sha256
-          (base32
-           "1nyp0gw48cmnkcccgvq14adsykf9sk0z34x3j2myfm9g9cg9d669"))))
-          (arguments (list #:tests? #f))
-          (description
-"Provides an updated clean_data function for the github platform.  See
-@url{https://github.com/nephila/giturlparse/pull/41}.  @code{binderlite}
-will be rewritten in Common Lisp.  If we stay with Python I recommend
-switching this library out for @code{python-furl} or similar."))))
-
diff --git a/gn/packages/bioinformatics.scm b/gn/packages/bioinformatics.scm
index fb2ee18..6c2f2d6 100644
--- a/gn/packages/bioinformatics.scm
+++ b/gn/packages/bioinformatics.scm
@@ -9,22 +9,19 @@
   #:use-module (guix git-download)
   #:use-module (guix hg-download)
   #:use-module (guix build-system ant)
-  #:use-module (guix build-system cargo)
   #:use-module (guix build-system cmake)
   #:use-module (guix build-system copy)
   #:use-module (guix build-system gnu)
   #:use-module (guix build-system meson)
   #:use-module (guix build-system ocaml)
+  #:use-module (guix build-system pyproject)
   #:use-module (guix build-system python)
   #:use-module (guix build-system r)
   #:use-module (guix build-system trivial)
   #:use-module (guix build-system waf)
   #:use-module (gnu packages)
-  #:use-module (gn packages crates-io)
   #:use-module (gn packages datastructures)
-  #:use-module (gn packages java)
   #:use-module (gn packages maths)
-  #:use-module (gn packages ocaml)
   #:use-module (gn packages python)
   #:use-module (gnu packages algebra)
   #:use-module (gnu packages assembly)
@@ -41,7 +38,6 @@
   #:use-module (gnu packages compression)
   #:use-module (gnu packages cpp)
   #:use-module (gnu packages cran)
-  #:use-module (past-crates packages crates-io)
   #:use-module (gnu packages curl)
   #:use-module (gnu packages databases)
   #:use-module (gnu packages datastructures)
@@ -92,4083 +88,18 @@
   #:use-module (gnu packages tls)
   #:use-module (gnu packages vim)
   #:use-module (gnu packages web)
-  #:use-module (past packages python27))
-
-(define-public contra
-  (package
-    (name "contra")
-    (version "2.0.6")
-    (source (origin
-      (method url-fetch)
-      (uri (string-append
-            "mirror://sourceforge/contra-cnv/CONTRA.V"
-            (version-major+minor version) "/CONTRA.v" version ".tar.gz"))
-      (sha256
-       (base32
-        "0agpcm2xh5f0i9n9sx1kvln6mzdksddmh11bvzj6bh76yw5pnw91"))
-      (modules '((guix build utils)))
-      (snippet
-       '(begin
-          (delete-file "BEDTools.v2.11.2.tar.gz") #t))))
-    (build-system gnu-build-system)
-    (propagated-inputs
-     `(("python" ,python-2)
-       ("r" ,r)
-       ;; ("r-dnacopy" ,r-dnacopy) <-- missing in Pjotr's tree
-       ("bedtools" ,bedtools)
-       ("samtools" ,samtools)))
-    (arguments
-     `(#:tests? #f ; There are no tests.
-       #:phases
-       (modify-phases %standard-phases
-         (delete 'configure)
-         (delete 'build) ; We can use Guix's BEDtools instead.
-         (replace 'install
-           (lambda* (#:key outputs #:allow-other-keys)
-             (let* ((out (assoc-ref outputs "out"))
-                    (bin (string-append out "/bin"))
-                    (doc (string-append out "/share/doc/contra")))
-               (copy-recursively "scripts" (string-append bin "/scripts"))
-               (install-file "contra.py" bin)
-               (install-file "baseline.py" bin)
-               ;; There's only a pre-built PDF available.
-               (install-file "CONTRA_User_Guide.2.0.pdf" doc))
-             #t)))))
-    (home-page "http://contra-cnv.sourceforge.net/")
-    (synopsis "Tool for copy number variation (CNV) detection for targeted
-resequencing data")
-    (description "CONTRA is a tool for copy number variation (CNV) detection
-for targeted resequencing data such as those from whole-exome capture data.
-CONTRA calls copy number gains and losses for each target region with key
-strategies including the use of base-level log-ratios to remove GC-content
-bias, correction for an imbalanced library size effect on log-ratios, and the
-estimation of log-ratio variations via binning and interpolation.  It takes
-standard alignment formats (BAM/SAM) and outputs in variant call format
-(VCF 4.0) for easy integration with other next generation sequencing analysis
-package.")
-    (license license:gpl3+)))
-
-(define boost-delly
-  (package (inherit boost)
-    (name "boost-delly")
-    (version "1.57.0")
-    (source (origin
-              (method url-fetch)
-              (uri (string-append
-                    "mirror://sourceforge/boost/boost_"
-                    (string-map (lambda (x) (if (eq? x #\.) #\_ x)) version)
-                    ".tar.bz2"))
-              (sha256
-               (base32
-                "0rs94vdmg34bwwj23fllva6mhrml2i7mvmlb11zyrk1k5818q34i"))))))
-
-(define-public delly
-  (package
-    (name "delly")
-    (version "0.7.2")
-    (source (origin
-      (method url-fetch)
-      (uri (string-append "https://github.com/tobiasrausch/delly/archive/v"
-            version ".tar.gz"))
-      (sha256
-       (base32 "173mmg43dbxqkyq0kiffz63xbmggr2kzd55mwxci9yfh5md1zprn"))
-      (patches (list (search-patch "delly-use-system-libraries.patch")))))
-    (build-system gnu-build-system)
-    (native-inputs
-     `(("python" ,python-2)))
-    (inputs
-     `(("boost" ,boost-delly) ; Use version 1.57.0 instead.
-       ("htslib" ,htslib)
-       ("zlib" ,zlib)
-       ("bzip2" ,bzip2)))
-    (arguments
-     `(#:tests? #f ; There are no tests to run.
-       #:phases
-       (modify-phases %standard-phases
-         (delete 'configure) ; There is no configure phase.
-         (replace 'install
-           (lambda _
-             (let ((bin (string-append (assoc-ref %outputs "out") "/bin")))
-               (install-file "src/cov" bin)
-               (install-file "src/delly" bin)
-               (install-file "src/extract" bin)
-               (install-file "src/iover" bin)
-               (install-file "src/stats" bin)))))))
-    (home-page "https://github.com/tobiasrausch/delly")
-    (synopsis "Integrated structural variant prediction method")
-    (description "Delly is an integrated structural variant prediction method
-that can discover and genotype deletions, tandem duplications, inversions and
-translocations at single-nucleotide resolution in short-read massively parallel
-sequencing data.  It uses paired-ends and split-reads to sensitively and
-accurately delineate genomic rearrangements throughout the genome.  Structural
-variants can be visualized using Delly-maze and Delly-suave.")
-    (license license:gpl3)))
-
-(define-public wfmash-x86-64-v2
-  (package/inherit wfmash
-    (name "wfmash-x86-64-v2")
-    (arguments
-     (substitute-keyword-arguments (package-arguments wfmash)
-       ((#:configure-flags flags #~'())
-        #~(append (list "-DEXTRA_FLAGS=-march=x86-64-v2"
-                        "-DCMAKE_INSTALL_LIBDIR=lib/glibc-hwcaps/x86-64-v2"
-                        (string-append "-DCMAKE_INSTALL_RPATH=" #$output
-                                       "/lib/glibc-hwcaps/x86-64-v2"))
-                  #$flags))
-       ;; The building machine can't necessarily run the code produced.
-       ((#:tests? _ #t) #f)
-       ((#:phases phases #~%standard-phases)
-        #~(modify-phases #$phases
-            (add-after 'install 'remove-binary
-              (lambda _
-                (delete-file-recursively (string-append #$output "/bin"))))))))
-    (supported-systems '("x86_64-linux"))
-    (properties `((hidden? . #t)))))
-
-(define-public wfmash-x86-64-v3
-  (package/inherit wfmash
-    (name "wfmash-x86-64-v3")
-    (arguments
-     (substitute-keyword-arguments (package-arguments wfmash)
-       ((#:configure-flags flags #~'())
-        #~(append (list "-DEXTRA_FLAGS=-march=x86-64-v3"
-                        "-DCMAKE_INSTALL_LIBDIR=lib/glibc-hwcaps/x86-64-v3"
-                        (string-append "-DCMAKE_INSTALL_RPATH=" #$output
-                                       "/lib/glibc-hwcaps/x86-64-v3"))
-                  #$flags))
-       ;; The building machine can't necessarily run the code produced.
-       ((#:tests? _ #t) #f)
-       ((#:phases phases #~%standard-phases)
-        #~(modify-phases #$phases
-            (add-after 'install 'remove-binary
-              (lambda _
-                (delete-file-recursively (string-append #$output "/bin"))))))))
-    (supported-systems '("x86_64-linux"))
-    (properties `((hidden? . #t)))))
-
-(define-public wfmash-x86-64-v4
-  (package/inherit wfmash
-    (name "wfmash-x86-64-v4")
-    (arguments
-     (substitute-keyword-arguments (package-arguments wfmash)
-       ((#:configure-flags flags #~'())
-        #~(append (list "-DEXTRA_FLAGS=-march=x86-64-v4"
-                        "-DCMAKE_INSTALL_LIBDIR=lib/glibc-hwcaps/x86-64-v4"
-                        (string-append "-DCMAKE_INSTALL_RPATH=" #$output
-                                       "/lib/glibc-hwcaps/x86-64-v4"))
-                  #$flags))
-       ;; The building machine can't necessarily run the code produced.
-       ((#:tests? _ #t) #f)
-       ((#:phases phases #~%standard-phases)
-        #~(modify-phases #$phases
-            (add-after 'install 'remove-binary
-              (lambda _
-                (delete-file-recursively (string-append #$output "/bin"))))))))
-    (supported-systems '("x86_64-linux"))
-    (properties `((hidden? . #t)))))
-
-;; This copy of wfmash will automatically use the libraries that target the
-;; x86_64 psABI which the hardware supports.
-(define-public wfmash-hwcaps
-  (package/inherit wfmash
-    (name "wfmash-hwcaps")
-    (arguments
-     (substitute-keyword-arguments (package-arguments wfmash)
-       ((#:phases phases #~%standard-phases)
-        #~(modify-phases #$phases
-            (add-after 'install 'install-optimized-libraries
-              (lambda* (#:key inputs outputs #:allow-other-keys)
-                (let ((hwcaps "/lib/glibc-hwcaps"))
-                  (copy-recursively
-                    (string-append (assoc-ref inputs "wfmash-x86-64-v2")
-                                   hwcaps "/x86-64-v2")
-                    (string-append #$output hwcaps "/x86-64-v2"))
-                  (copy-recursively
-                    (string-append (assoc-ref inputs "wfmash-x86-64-v3")
-                                   hwcaps "/x86-64-v3")
-                    (string-append #$output hwcaps "/x86-64-v3"))
-                  (copy-recursively
-                    (string-append (assoc-ref inputs "wfmash-x86-64-v4")
-                                   hwcaps "/x86-64-v4")
-                    (string-append #$output hwcaps "/x86-64-v4")))))))))
-    (native-inputs
-     (modify-inputs (package-native-inputs wfmash)
-                    (append wfmash-x86-64-v2
-                            wfmash-x86-64-v3
-                            wfmash-x86-64-v4)))
-    (properties `((tunable? . #f)))))
-
-(define-public freec
-  (package
-    (name "control-freec")
-    (version "8.7")
-    (source (origin
-      (method url-fetch)
-      (uri "http://bioinfo-out.curie.fr/projects/freec/src/FREEC_Linux64.tar.gz")
-      (file-name (string-append name "-" version ".tar.gz"))
-      (sha256
-       (base32 "12sl7gxbklhvv0687qjhml1z4lwpcn159zcyxvawvclsrzqjmv0h"))))
-    (build-system gnu-build-system)
-    ;; The source code's filename indicates only a 64-bit Linux build.
-    ;; We need to investigate whether this is true.
-    (supported-systems '("x86_64-linux"))
-    (arguments
-     `(#:phases
-       (modify-phases %standard-phases
-         ;; There's no configure phase because there are no external
-         ;; dependencies.
-         (delete 'configure)
-         ;; There are no tests.
-         (delete 'check)
-         (replace
-          'unpack
-          (lambda* (#:key source #:allow-other-keys)
-            (and
-             (zero? (system* "mkdir" "source"))
-             (with-directory-excursion "source"
-               (zero? (system* "tar" "xvf" source))))))
-         (replace
-          'build
-          (lambda* (#:key inputs #:allow-other-keys)
-            (with-directory-excursion "source"
-              (zero? (system* "make")))))
-         (replace
-          'install
-          (lambda* (#:key outputs #:allow-other-keys)
-            (let ((bin (string-append (assoc-ref outputs "out") "/bin")))
-              (install-file "source/freec" bin)))))))
-    (home-page "http://bioinfo-out.curie.fr/projects/freec/")
-    (synopsis "Tool for detection of copy-number changes and allelic imbalances
-(including LOH) using deep-sequencing data")
-    (description "Control-FREEC automatically computes, normalizes, segments
-copy number and beta allele frequency (BAF) profiles, then calls copy number
-alterations and LOH.  The control (matched normal) sample is optional for whole
-genome sequencing data but mandatory for whole exome or targeted sequencing
-data.  For whole genome sequencing data analysis, the program can also use
-mappability data (files created by GEM). ")
-    (license license:gpl2+)))
-
-(define-public plink2
-  (package
-    (name "plink2")
-    (version "1.90b3")
-    (source
-     (origin
-      (method url-fetch)
-      ;; https://github.com/chrchang/plink-ng/archive/v1.90b3.tar.gz
-       (uri (string-append
-             "https://github.com/chrchang/plink-ng/archive/v"
-             version ".tar.gz"))
-       (sha256
-        (base32 "03fzib1al5qkr9vxv63wxmv6y2pfb1rmir0h8jpi72r87hczqjig"))
-       (patches (list (search-patch "plink-ng-Makefile-zlib.patch")))))
-    (build-system gnu-build-system)
-    (arguments
-     '(#:tests? #f ;no "check" target
-       #:phases
-       (modify-phases %standard-phases
-        (delete 'configure)
-        (replace 'build
-                 (lambda _
-                   (zero? (system* "make" "-f" "Makefile.std"))
-                   ))
-        (replace 'install
-                  (lambda* (#:key outputs #:allow-other-keys)
-                    (let ((bin (string-append (assoc-ref outputs "out")
-                                              "/bin/")))
-                      (install-file "plink2" bin)
-                      #t))))))
-    (inputs
-     `(("zlib" ,zlib)
-       ("openblas" ,openblas)
-       ;; ("atlas" ,atlas)
-       ;; ("lapack" ,lapack)
-       ("gfortran" ,gfortran)
-       ))
-    (native-inputs
-     `(("unzip" ,unzip)))
-    (home-page "https://www.cog-genomics.org/plink2")
-    (synopsis "Whole genome association analysis toolset")
-    (description
-     "PLINK is a whole genome association analysis toolset, designed to
-perform a range of basic, large-scale analyses in a computationally efficient
-manner.  The focus of PLINK is purely on analysis of genotype/phenotype data,
-so there is no support for steps prior to this (e.g. study design and
-planning, generating genotype or CNV calls from raw data).  Through
-integration with gPLINK and Haploview, there is some support for the
-subsequent visualization, annotation and storage of results.")
-    ;; Code is released under GPLv2, except for fisher.h, which is under
-    ;; LGPLv2.1+
-    (license (list license:gpl2 license:lgpl2.1+))))
-
-(define-public plink-ng-gn
-  (let ((commit "5d1db4313ba0cc976562da233db4aced78975d10"))
-  (package
-    (name "plink-ng-gn")
-    (version (string-append "1.90b3-" commit )) ; Aug 11, 2016
-    (source (origin
-             (method git-fetch)
-             (uri (git-reference
-                   (url "https://github.com/genenetwork/plink-ng.git")
-                   (commit commit)))
-             (file-name (string-append name "-" commit))
-             (sha256
-              (base32
-               "1366li3ks9076bblvd1rpzkjq4j8f8f08lhga4c1ckrkil3xww4m"))))
-            ;; no longer (patches (list (search-patch "plink-ng-Makefile-zlib-git.patch")))))
-    (inputs
-     `(("zlib" ,zlib)
-       ("openblas" ,openblas)
-       ;; ("atlas" ,atlas) ; openblas replaces atlas
-       ("lapack" ,lapack)  ; lapack is disabled in GUIX openblas
-       ;; ("gfortran" ,gfortran)
-       ;; ("python" ,python-2)   ;; for tests - currently disabled
-       ))
-    (native-inputs
-     `(("unzip" ,unzip)))
-    (build-system gnu-build-system)
-    (arguments
-     '(#:tests? #f ;no "check" target. Some of the python-based tests fail
-       #:phases
-       (modify-phases %standard-phases
-        (delete 'configure)
-        (replace 'build
-                 (lambda _
-                   (zero? (system* "make" "-f" "Makefile.guix"))
-                   ))
-        (replace 'install
-                  (lambda* (#:key outputs #:allow-other-keys)
-                    (let ((bin (string-append (assoc-ref outputs "out")
-                                              "/bin/")))
-                      (install-file "plink2" bin)
-                      #t))))))
-    (home-page "https://www.cog-genomics.org/plink2")
-    (synopsis "Whole genome association analysis toolset")
-    (description
-     "PLINK is a whole genome association analysis toolset, designed to
-perform a range of basic, large-scale analyses in a computationally efficient
-manner.  The focus of PLINK is purely on analysis of genotype/phenotype data,
-so there is no support for steps prior to this (e.g. study design and
-planning, generating genotype or CNV calls from raw data).  Through
-integration with gPLINK and Haploview, there is some support for the
-subsequent visualization, annotation and storage of results.")
-    (license license:gpl3+))))
-
-(define-public pindel
-  (package
-   (name "pindel")
-   (version "0.2.5b8")
-   (source (origin
-     (method git-fetch)
-     (uri (git-reference
-            (url "https://github.com/genome/pindel.git")
-            (commit (string-append "v" version))))
-     (file-name (git-file-name name version))
-     (sha256
-      (base32 "16a32fbgv1n58nfcxa1nyphrdrad80sgpinfa9p028n6plwycpww"))))
-   (build-system gnu-build-system)
-   (inputs
-    `(("samtools" ,samtools)
-      ("htslib" ,htslib)
-      ("zlib" ,zlib)))
-   (native-inputs
-    `(("cppcheck" ,cppcheck)
-      ("python" ,python-2)
-      ("perl" ,perl)))
-   (arguments
-    `(#:phases
-      (modify-phases %standard-phases
-        (delete 'configure) ; There is no configure phase.
-        ;; The build phase needs to run 'make' twice for the reasons described
-        ;; below.
-        (replace 'build
-          (lambda* (#:key inputs #:allow-other-keys)
-            ;; The first run creates a Makefile.local file.  Make will report
-            ;; the failure to find Makefile.local, but we can ignore this error.
-            (system* "make" (string-append "SAMTOOLS=" (assoc-ref inputs "samtools")))
-            ;; The second run actually compiles the program.  Now Makefile.local
-            ;; is available, and we should treat an exiting make with an error as
-            ;; a true error.
-            (invoke "make")))
-        (replace 'install
-          (lambda* (#:key outputs #:allow-other-keys)
-            (let ((bin (string-append (assoc-ref outputs "out") "/bin")))
-              (install-file "src/pindel" bin)
-              (install-file "src/pindel2vcf" bin)
-              (install-file "src/pindel2vcf4tcga" bin)
-              (install-file "src/sam2pindel" bin))))
-        ;; There are multiple test targets, so in order to run all
-        ;; tests, we must run the separate make targets.
-        (replace 'check
-          (lambda _
-            (for-each (lambda (target)
-                        (invoke "make" target))
-                      '("acceptance-tests" "coverage-tests" "cppcheck"
-                        "functional-tests" "regression-tests")))))))
-   (home-page "https://github.com/genome/pindel")
-   (synopsis "Structural variants detector for next-gen sequencing data")
-   (description "Pindel can detect breakpoints of large deletions, medium sized
-insertions, inversions, tandem duplications and other structural variants at
-single-based resolution from next-gen sequence data.  It uses a pattern growth
-approach to identify the breakpoints of these variants from paired-end short
-reads.")
-   (license license:gpl3+)))
-
-(define-public varscan
-  (package
-    (name "varscan")
-    (version "2.4.1")
-    (source (origin
-      (method url-fetch)
-      (uri (string-append
-            "https://github.com/dkoboldt/varscan/releases/download/v"
-            version "/VarScan.v" version ".source.jar"))
-      (sha256
-       (base32 "0y45ympkza7qwcbcisg006286pwjbr5978n03hx5nvl09f0mapk8"))))
-    (build-system ant-build-system)
-    (arguments
-     `(#:tests? #f ; build.xml does not exist
-       #:phases
-       (modify-phases %standard-phases
-         (replace 'unpack
-           (lambda _
-             (mkdir "source")
-             (chdir "source")
-             ;; Unpack the Java archive containing the source files.
-             (invoke "jar" "xf" (assoc-ref %build-inputs "source"))
-             ;; Remove existing compiled output.
-             (with-directory-excursion "net/sf/varscan/"
-               (for-each (lambda (file)
-                           (delete-file file))
-                         (find-files "." "^.java$" #:directories? #f)))
-             #t))
-         (replace 'build
-           (lambda _
-             ;; Compile the source files.
-             (with-directory-excursion "net/sf/varscan/"
-               (for-each (lambda (file)
-                           (invoke "javac" file))
-                         (find-files "." ".java$" #:directories? #f)))
-             ;; Construct the new Java archive.
-             (apply invoke "jar" "cfm"
-                    (string-append "varscan-" ,version ".jar")
-                    "META-INF/MANIFEST.MF"
-                    (find-files "net/sf/varscan" ".java$"))))
-        (replace 'install
-          (lambda* (#:key outputs #:allow-other-keys)
-            (let ((out (string-append (assoc-ref outputs "out")
-                                      "/share/java/varscan/")))
-              (install-file (string-append "varscan-" ,version ".jar") out))
-            #t)))))
-    (home-page "https://dkoboldt.github.io/varscan/")
-    (synopsis "Variant detection in massively parallel sequencing data")
-    (description "Variant detection in massively parallel sequencing data.")
-    ;; Free for non-commercial use by academic, government, and
-    ;; non-profit/not-for-profit institutions
-    (license (license:non-copyleft "file:///LICENSE"))))
-
-(define-public edirect-gn
-  (deprecated-package "edirect-gn" edirect))
-
-(define-public gfaffix
-  (package
-    (name "gfaffix")
-    (version "0.1.5")
-    (source
-      (origin
-        (method git-fetch)
-        (uri (git-reference
-               (url "https://github.com/marschall-lab/GFAffix")
-               (commit version)))
-        (file-name (git-file-name name version))
-        (sha256
-         (base32 "181jxl8ldj39jgscyqzhz4l4k5kxj1j9hvzi8dxj59h2zzznb0kb"))))
-    (build-system cargo-build-system)
-    (arguments
-     `(#:install-source? #f
-       #:cargo-inputs
-       (("rust-clap" ,rust-clap-3)
-        ("rust-rustc-hash" ,rust-rustc-hash-1)
-        ("rust-regex" ,rust-regex-1)
-        ("rust-handlegraph" ,rust-handlegraph-0.7.0-alpha.9)
-        ("rust-gfa" ,rust-gfa-0.10)
-        ("rust-quick-csv", rust-quick-csv-0.1)
-        ("rust-rayon" ,rust-rayon-1)
-        ("rust-log" ,rust-log-0.4)
-        ("rust-env-logger" ,rust-env-logger-0.7))))
-    (home-page "https://github.com/marschall-lab/GFAffix")
-    (synopsis "Identify walk-preserving shared affixes in variation graphs")
-    (description
-     "GFAffix identifies walk-preserving shared affixes in variation graphs and
-collapses them into a non-redundant graph structure.")
-    (license license:expat)))
-
-(define-public vcfbub
-  (package
-    (name "vcfbub")
-    (version "0.1.0")
-    (source
-      (origin
-        (method git-fetch)
-        (uri (git-reference
-               (url "https://github.com/pangenome/vcfbub")
-               (commit (string-append "v" version))))
-        (file-name (git-file-name name version))
-        (sha256
-         (base32 "0sk2ab22z6qa00j1w8a8f5kbb7q2xb10fhd32zy4lh351v3mqmyg"))))
-    (build-system cargo-build-system)
-    (arguments
-     `(#:install-source? #f
-       #:cargo-inputs
-       (("rust-clap" ,rust-clap-2)
-        ("rust-flate2" ,rust-flate2-1)
-        ("rust-vcf" ,rust-vcf-0.6))))
-    (home-page "https://github.com/pangenome/vcfbub")
-    (synopsis "Popping bubbles in vg deconstruct VCFs")
-    (description
-     "The VCF output produced by a command like @command{vg deconstruct -e -a
--H '#' ...} includes information about the nesting of variants.  With @code{-a},
-@code{--all-snarls}, we obtain not just the top level bubbles, but all nested
-ones.  This exposed snarl tree information can be used to filter the VCF to
-obtain a set of non-overlapping sites (n.b. \"snarl\" is a generic model of
-graph bubbles including tips and loops).
-@code{vcfbub} lets us do two common operations on these VCFs:
-@enumerate
-@item We can filter sites by maximum level in the snarl tree.  For instance,
-@code{--max-level 0} would keep only sites with @code{LV=0}.  In practice, vg's
-snarl finder ensures that these are sites rooted on the main linear axis of the
-pangenome graph.  Those at higher levels occur within larger variants.
-@item We can filter sites by maximum allele size, either for the reference
-allele or any allele.  In this case, @code{--max-ref-length 10000} would keep
-only sites where the reference allele is less than 10kb long.  Setting
-@code{--max-ref-length} or @code{--max-allele-length} additionally ensures that
-the output contains the bubbles nested inside of any popped bubble, even if
-they are at greater than @code{--max-level}.
-@end enumerate
-@code{vcfbub} accomplishes a simple task: we keep sites that are the children
-of those which we \"pop\" due to their size.  These occur around complex large
-SVs, such as multi-Mbp inversions and segmental duplications.  We often need to
-remove these, as they provide little information for many downstream
-applications, such as haplotype panels or other imputation references.")
-    (license license:expat)))
-
-(define-public fastix
-  (package
-    (name "fastix")
-    (version "0.1.0")
-    (source (origin
-              (method url-fetch)
-              (uri (crate-uri "fastix" version))
-              (file-name (string-append name "-" version ".tar.gz"))
-              (sha256
-               (base32 "1mzk65mg8vx0hz39xis6zqdmq56abhmza656gn9pgmlsn151gpx2"))))
-    (build-system cargo-build-system)
-    (arguments
-     `(#:install-source? #f
-       #:cargo-inputs
-       (("rust-clap" ,rust-clap-2))
-       #:cargo-development-inputs
-       (("rust-assert-cmd" ,rust-assert-cmd-0.12)
-        ("rust-predicates" ,rust-predicates-1))))
-    (home-page "https://github.com/ekg/fastix")
-    (synopsis "Prefix-renaming FASTA records")
-    (description "A command line tool to add prefixes to FASTA headers.  The
-idea is to support pangenomic applications, following the
-@url{https://github.com/pangenome/PanSN-spec, PanSN} hierarchical naming
-specification.")
-    (license license:expat)))
-
-(define-public pafplot
-  (let ((commit "7dda24c0aeba8556b600d53d748ae3103ec85501")
-        (revision "1"))
-    (package
-      (name "pafplot")
-      (version (git-version "0.0.0" revision commit))
-      (source (origin
-                (method git-fetch)
-                (uri (git-reference
-                       (url "https://github.com/ekg/pafplot.git")
-                       (commit commit)))
-                (file-name (git-file-name name version))
-                (sha256
-                 (base32 "04ffz0zfj4mvfxmrwgisv213fypgl02f7sim950a067pm7375g1l"))))
-      (build-system cargo-build-system)
-      (arguments
-       `(#:install-source? #f
-         #:cargo-inputs
-         (("rust-clap" ,rust-clap-2)
-          ("rust-boomphf" ,rust-boomphf-0.5)
-          ("rust-itertools" ,rust-itertools-0.10)
-          ("rust-fnv" ,rust-fnv-1)
-          ("rust-lodepng" ,rust-lodepng-3)
-          ("rust-rgb" ,rust-rgb-0.8)
-          ("rust-line-drawing" ,rust-line-drawing-0.8))))
-      (home-page "https://github.com/ekg/pafplot.git")
-      (synopsis "Base-level dotplots from PAF alignments")
-      (description "In the process of generating alignments between whole
-genomes, we often need to understand the base-level alignment between
-particular sequences.  @command{pafplot} allows us to do so by rasterizing the
-matches alignment set.  It draws a line on a raster image to represent each
-match found in a set of alignments.  The resulting image provides a high-level
-view of the structure of the alignments, and in consequence the homology
-relationships between the sequences in consideration.")
-      (license license:expat))))
-
-(define-public gafpack
-  (let ((commit "ad31875b6914d964c6fd72d1bf334f0843538fb6")     ; November 10, 2022
-        (revision "1"))
-    (package
-      (name "gafpack")
-      (version (git-version "0.0.0" revision commit))
-      (source
-        (origin
-          (method git-fetch)
-          (uri (git-reference
-                 (url "https://github.com/ekg/gafpack")
-                 (commit commit)))
-          (file-name (git-file-name name version))
-          (sha256
-           (base32 "0di2psh0ls7jlbnqs7k71p55f73pn23a09k1h3ril7gwjcrzr3rk"))))
-      (build-system cargo-build-system)
-      (arguments
-       `(#:install-source? #f
-         #:cargo-inputs
-         (("rust-clap" ,rust-clap-4)
-          ("rust-gfa" ,rust-gfa-0.10))))
-      (home-page "https://github.com/ekg/gafpack")
-      (synopsis "Convert variation graph alignments to coverage maps over nodes")
-      (description
-       "Gafpack converts alignments to pangenome variation graphs to coverage
-maps useful in haplotype-based genotyping.")
-      (license license:expat))))
-
-(define-public agc-for-pgr-tk
-  (let ((commit "453c0afdc54b4aa00fa8e97a63f196931fdb81c4") ; April 26, 2022
-        (revision "1"))
-    (package
-      (name "agc")
-      (version (git-version "2.0" revision commit))
-      (source
-        (origin
-          (method git-fetch)
-          (uri (git-reference
-                 (url "https://github.com/cschin/agc")
-                 (commit commit)))
-          (file-name (git-file-name name version))
-          (sha256
-           (base32 "1v5s79rl38dcyy5h1lykbp6clcbqq9winn533j54y49q1jp8chix"))
-          (snippet
-           #~(begin
-               (use-modules (guix build utils))
-               ;; Copy the two radul files we can't find a replacement for:
-               ;; https://github.com/refresh-bio/RADULS
-               (mkdir "keep-libs")
-               (rename-file "libs/raduls.h" "keep-libs/raduls.h")
-               (rename-file "libs/libraduls.a" "keep-libs/libraduls.a")
-               (delete-file-recursively "libs")
-               (rename-file "keep-libs" "libs")
-
-               (delete-file-recursively "py_agc_api/pybind11-2.8.1")
-               (substitute* '("makefile" "makefile.release")
-                 (("-mavx") "")
-                 (("-m64") "")
-                 (("\\$\\(AGC_LIBS_DIR)\\/mimalloc/\\$\\(LIB_ALLOC\\)")
-                  "$(pkg-config --cflags --libs mimalloc) /usr/lib/libmimalloc.so")
-                 (("\\$\\(AGC_LIBS_DIR)\\/\\$\\(LIB_ZLIB\\)")
-                  "$(pkg-config --cflags --libs zlib) /usr/lib/libz.so")
-                 (("\\$\\(AGC_LIBS_DIR)\\/\\$\\(LIB_ZSTD\\)")
-                  "$(pkg-config --cflags --libs libzstd) /usr/lib/libzstd.so")
-                 (("^PYBIND11_LIB = .*") "PYBIND11_LIB = /usr/include/pybind11")
-                 (("\\$\\(PYBIND11_LIB\\)/include") "$(PYBIND11_LIB)"))
-               (substitute* (find-files "src" "\\.(h|cpp)$")
-                 (("../../libs/ketopt.h") "ketopt.h")
-                 (("../../libs/zlib.h") "zlib.h")
-                 (("../../libs/zstd.h") "zstd.h"))))))
-      (build-system gnu-build-system)
-      (arguments
-       `(#:tests? #f                    ; No tests.
-         #:phases
-         (modify-phases %standard-phases
-           (delete 'configure)          ; No configure script.
-           (add-after 'unpack 'adjust-sources
-             (lambda* (#:key inputs #:allow-other-keys)
-               (let ((mimalloc (assoc-ref inputs "mimalloc")))
-                 (substitute* '("makefile" "makefile.release")
-                   (("/usr/include/pybind11")
-                    (search-input-directory inputs "/include/pybind11"))
-                   (("/usr/lib/libmimalloc.so")
-                    (search-input-file inputs "/lib/libmimalloc.so"))
-                   (("/usr/lib/libz.so")
-                    (search-input-file inputs "/lib/libz.so"))
-                   (("/usr/lib/libzstd.so")
-                    (search-input-file inputs "/lib/libzstd.so"))
-                   (("pkg-config") ,(pkg-config-for-target))))))
-           (replace 'install
-             (lambda* (#:key outputs #:allow-other-keys)
-               (let* ((out (assoc-ref outputs "out"))
-                      (include (string-append out "/include/")))
-                 (install-file "agc" (string-append out "/bin"))
-                 (install-file "libagc.so" (string-append out "/lib"))
-                 (mkdir-p (string-append include "app"))
-                 (mkdir-p (string-append include "core"))
-                 (mkdir-p (string-append include "lib-cxx"))
-                 (with-directory-excursion "src"
-                   (for-each
-                     (lambda (file)
-                       (copy-file file (string-append include file)))
-                     (find-files "." "\\.h$")))))))))
-      (native-inputs
-       (list minimap2                   ; for ketopt.h
-             pkg-config))
-      (inputs
-       (list mimalloc
-             python
-             pybind11
-             zlib
-             (list zstd "lib")))
-      (home-page "https://github.com/cschin/agc")
-      (synopsis "Assembled Genomes Compressor")
-      (description
-       "@acronym{Assembled Genomes Compressor, AGC} is a tool designed to
-compress collections of de-novo assembled genomes.  It can be used for various
-types of datasets: short genomes (viruses) as well as long (humans).")
-      (license license:expat))))
-
-(define-public pgr-tk
-  (package
-    (name "pgr-tk")
-    (version "0.3.6")
-    (source
-      (origin
-        (method git-fetch)
-        (uri (git-reference
-               (url "https://github.com/Sema4-Research/pgr-tk")
-               (commit (string-append "v" version))))
-        (file-name (git-file-name name version))
-        (sha256
-         (base32 "0vm1k63v91zd0pfbg2zmwskajylz8xg83m63qxwaiwny5f4y6f1j"))
-        (snippet
-         #~(begin
-             (use-modules (guix build utils))
-             (substitute* (find-files "." "Cargo.toml")
-               ;; Only use the major+minor version to decrease the number of
-               ;; special version crates.
-               (("(.*= \")([[:digit:]]+\\.[[:digit:]]+)\\.[[:digit:]]+(\".*)"
-                 _ name version tail)
-                (string-append name version tail))
-               ;; Then fix the version string for the actual package.
-               (("^version = \".*")
-                (string-append "version = \"" #$version "\"\n")))))))
-    (build-system cargo-build-system)
-    (arguments
-     `(#:install-source? #f
-       #:cargo-test-flags
-       (list "--release" "--"
-             "--skip=get_aln_segements"
-             "--skip=get_shmmr_dots"
-             "--skip=AGCFile"
-             "--skip=SeqIndexDB")
-       #:cargo-inputs
-       (("rust-bindgen" ,rust-bindgen-0.58)
-        ("rust-bgzip" ,rust-bgzip-0.2)
-        ("rust-byteorder" ,rust-byteorder-1)
-        ("rust-clap" ,rust-clap-3)
-        ("rust-cuckoofilter" ,rust-cuckoofilter-0.5)
-        ("rust-flate2" ,rust-flate2-1)
-        ("rust-libc" ,rust-libc-0.2)
-        ("rust-log" ,rust-log-0.4)
-        ("rust-petgraph" ,rust-petgraph-0.6)
-        ("rust-pyo3" ,rust-pyo3-0.14)
-        ("rust-rayon" ,rust-rayon-1)
-        ("rust-regex" ,rust-regex-1)
-        ("rust-rustc-hash" ,rust-rustc-hash-1)
-        ("rust-serde" ,rust-serde-1)
-        ("rust-serde-json" ,rust-serde-json-1)
-        ("rust-simple-logger" ,rust-simple-logger-1))
-       #:phases
-       (modify-phases %standard-phases
-         (add-after 'unpack 'insert-wfa-source
-           (lambda* (#:key inputs #:allow-other-keys)
-             (copy-recursively (assoc-ref inputs "wfa-src")
-                               "rs-wfa/WFA")))
-         (add-after 'unpack 'adjust-source
-           (lambda* (#:key inputs #:allow-other-keys)
-             (substitute* '("pgr-bin/build.rs"
-                            "pgr-db/build.rs"
-                            "pgr-tk/build.rs")
-               (("git") "ls")
-               (("bioconda") "Guix"))
-             ;; Build with zlib, not zlib-ng
-             (substitute* '("pgr-bin/Cargo.toml"
-                            "pgr-db/Cargo.toml")
-               (("zlib-ng-compat") "zlib"))
-             ;; Don't look for agc to be bundled.
-             (substitute* "pgr-db/wrapper.h"
-               (("../agc/src/lib-cxx/agc-api.h") "lib-cxx/agc-api.h"))
-             (substitute* "pgr-db/build.rs"
-               ((".*panic!\\(\"Error.*") ""))
-             (mkdir-p "target/release")
-             (symlink (search-input-file inputs "/bin/agc")
-                      "target/release/agc")
-             (symlink (search-input-file inputs "/lib/libagc.so")
-                      "target/release/libagc")))
-         (replace 'install
-           (lambda* (#:key outputs #:allow-other-keys)
-             (let ((out (assoc-ref outputs "out")))
-               (with-directory-excursion "target/release"
-                 (install-file "libpgrtk.so" (string-append out "/lib"))
-                 (for-each
-                   (lambda (file)
-                     (install-file file (string-append out "/bin")))
-                   (list "pgr-filter"
-                         "pgr-mdb"
-                         "pgr-multifilter"
-                         "pgr-probe-match"
-                         "pgr-shmmr-pair-count")))))))))
-    (inputs
-     (list agc-for-pgr-tk
-           clang
-           python
-           zlib
-           (list zstd "lib")))
-    (native-inputs
-     `(("pkg-config" ,pkg-config)
-       ("wfa-src"
-        ,(origin
-           (method git-fetch)
-           (uri (git-reference
-                  ;; forPYO3 branch, 14-03-2021
-                  (url "https://github.com/cschin/WFA")
-                  (commit "1f8c8d2905ed482cd2d306a1676d60c2a45cb098")))
-           (file-name "wfa-for-pgr-tk")
-           (sha256
-            (base32 "19h1cjp2bdlcfq5c6rsbk8bc0f8zn64b471dhj4xlfxd1prv2dpk"))))))
-    (home-page "https://github.com/Sema4-Research/pgr-tk")
-    (synopsis "Pangenome Research Tool Kit")
-    (description
-     "PGR-TK provides pangenome assembly management, query and
-@acronym{Minimizer Anchored Pangenome, MAP} Graph Generation.  It is a project
-to provide Python and Rust libraries to facilitate pangenomics analysis.
-Several algorithms and data structures used for the Peregrine Genome Assembler
-are useful for Pangenomics analysis as well.  This repo takes those algorithms
-and data structure, combining other handy 3rd party tools to expose them as a
-library in Python (with Rust code for those computing parts that need
-performance.)")
-    (license (license:non-copyleft
-               "file:///LICENSE"
-               "CC-BY-NC-SA 4.0"))))
-
-(define-public graph-genotyper
-  (let ((commit "e7cc6b43a5b1f389d76bf9aac7f2ee02f92caeaf") ; October 17, 2022
-        (revision "13"))
-    (package
-      (name "graph-genotyper")
-      (version (git-version "0.0.0" revision commit))
-      (source (origin
-        (method git-fetch)
-        (uri (git-reference
-               (url "https://github.com/davidebolo1993/graph_genotyper")
-               (commit commit)))
-        (file-name (git-file-name name version))
-        (sha256
-         (base32 "1l8yjpkqamiqr1q5i7vr5z04aba7skpbcwyc9dx5fiklvljjfhcx"))))
-      (build-system copy-build-system)
-      (arguments
-       `(#:install-plan
-         '(("genotype.py" "bin/")
-           ("genotype.sh" "bin/"))
-         #:phases
-         (modify-phases %standard-phases
-           (add-after 'install 'wrap-genotype
-             (lambda* (#:key inputs outputs #:allow-other-keys)
-               (let ((out (assoc-ref outputs "out")))
-                 (wrap-script (string-append out "/bin/genotype.sh")
-                  `("GUIX_PYTHONPATH" ":" prefix (,(getenv "GUIX_PYTHONPATH")))
-                  `("PATH" ":" prefix
-                    ,(map (lambda (file-name)
-                            (string-append (assoc-ref inputs file-name) "/bin"))
-                          (list "gafpack"
-                                "odgi"
-                                "python"
-                                "samtools"
-                                "vg"))))))))))
-      (inputs
-       (list gafpack
-             guile-3.0
-             odgi
-             python
-             python-numpy
-             python-pandas
-             python-scipy
-             samtools
-             vg))
-      (home-page "https://bitbucket.org/jana_ebler")
-      (synopsis "Genotyping based on k-mers and pangenome graphs")
-      (description
-       "This package provides a genotyper for various types of genetic variants
-(such as SNPs, indels and structural variants).  Genotypes are computed based on
-read k-mer counts and a panel of known haplotypes.  A description of the method
-can be found @url{https://www.biorxiv.org/content/10.1101/2020.11.11.378133v1,
-here}.")
-      (license (license:non-copyleft
-                 "No license listed")))))
-
-(define-public pangenie
-  (let ((commit "e779076827022d1416ab9fabf99a03d8f4725956") ; September 2, 2021 from phasing-tests branch
-        (revision "2"))
-    (package
-      (name "pangenie")
-      (version (git-version "0.0.0" revision commit))
-      (source (origin
-        (method git-fetch)
-        (uri (git-reference
-               (url "https://bitbucket.org/jana_ebler/pangenie.git")
-               (commit commit)))
-        (file-name (git-file-name name version))
-        (sha256
-         (base32 "1mphrvidaz328kcwrjgz8q5i4iwnz6ygl6279lm2acv4zgqhmp5i"))))
-      (build-system cmake-build-system)
-      (arguments
-       `(#:configure-flags (list (string-append "-DCMAKE_BUILD_RPATH="
-                                                (assoc-ref %outputs "out") "/lib"))
-         #:phases
-         (modify-phases %standard-phases
-           (replace 'check
-             (lambda* (#:key tests? #:allow-other-keys)
-               (when tests?
-                 (invoke "make" "-C" "tests"))
-               #t))
-           (replace 'install
-             (lambda* (#:key outputs #:allow-other-keys)
-               (let ((out (assoc-ref outputs "out")))
-                 (with-directory-excursion "src"
-                   (install-file "PanGenie" (string-append out "/bin"))
-                   (install-file "PanGenie-graph" (string-append out "/bin"))
-                   (install-file "libPanGenieLib.so" (string-append out "/lib"))
-                   )
-                 #t))))))
-      (native-inputs
-       `(("pkg-config" ,pkg-config)))
-      (inputs
-       `(("jellyfish" ,jellyfish)))
-      (home-page "https://bitbucket.org/jana_ebler")
-      (synopsis "Genotyping based on k-mers and pangenome graphs")
-      (description
-       "This package provides a genotyper for various types of genetic variants
-(such as SNPs, indels and structural variants).  Genotypes are computed based on
-read k-mer counts and a panel of known haplotypes.  A description of the method
-can be found @url{https://www.biorxiv.org/content/10.1101/2020.11.11.378133v1,
-here}.")
-      (license license:expat))))
-
-(define-public pbsim2
-  (let ((commit "e71f7892aea0bd3c963b4f1f5628db4f830ee475") ; Dec 2, 2020
-        (revision "1"))
-    (package
-      (name "pbsim2")
-      (version (git-version "0.0.0" revision commit))
-      (source (origin
-        (method git-fetch)
-        (uri (git-reference
-               (url "https://github.com/yukiteruono/pbsim2")
-               (commit commit)))
-        (file-name (git-file-name name version))
-        (sha256
-         (base32 "13d3mhdp3rs58w14j9a5sbda4q8k9vzic7rgfa8223m7cm5ih6y7"))))
-      (build-system gnu-build-system)
-      (home-page "https://github.com/yukiteruono/pbsim2")
-      (synopsis "Simulator for long read sequencers")
-      (description "PBSIM simulates @acronym{Continuous Long Reads, CLRs} of
-PacBio, and Nanopore reads.  In it sampling-based and model-based simulations
-are implemented.")
-      (license license:gpl2))))
-
-(define-public pirs
-  (let ((commit "bee9b594f4d0e10580aae77ec411cecec4a77219") ; Sept 7, 2017
-        (revision "1"))
-    (package
-      (name "pirs")
-      (version (git-version "2.0.2" revision commit))
-      (source (origin
-        (method git-fetch)
-        (uri (git-reference
-               (url "https://github.com/galaxy001/pirs")
-               (commit commit)))
-        (file-name (git-file-name name version))
-        (sha256
-         (base32 "0pn74h98cqcr5qayp4riss982n4272p35y5dp472cmqpwjjil9cd"))))
-      (build-system gnu-build-system)
-      (arguments
-       `(#:configure-flags (list "--enable-pirs-diploid"
-                                 ;; TODO: Enable after core-updates merge, late 2021.
-                                 ;,@(if (not (or (target-x86-64?)
-                                 ;               (target-x86-32?)))
-                                 ;    `("--disable-sse2")
-                                 ;    '())
-                                 )
-         #:phases
-         (modify-phases %standard-phases
-           (add-before 'bootstrap 'chdir
-             (lambda _
-               (chdir "src")))
-           (add-after 'unpack 'patch-source
-             (lambda* (#:key outputs #:allow-other-keys)
-               (let ((out  (assoc-ref outputs "out")))
-                 (substitute* "src/configure.ac"
-                   (("ssse2") "sse2"))
-                 (substitute* "src/stator/gcContCvgBias/Makefile"
-                   (("gzstream.o ") "")
-                   (("-lz")"-lgzstream -lz")
-                   (("-static") "")
-                   (("-mtune=generic") ""))
-                 (substitute* "src/pirs/gccMakefile"
-                   (("/usr/local") out)))))
-           (replace 'check
-             (lambda* (#:key tests? test-target #:allow-other-keys #:rest args)
-               (when tests?
-                 (apply (assoc-ref %standard-phases 'check) args)
-                 (with-directory-excursion "stator/gcContCvgBias"
-                 ;  ((assoc-ref %standard-phases 'check)
-                 ;   #:test-target "test" args))
-                   (invoke "make" "test")))))
-           (add-after 'build 'build-more
-             (lambda* (#:key #:allow-other-keys #:rest args)
-               (with-directory-excursion "stator/gcContCvgBias"
-                 (apply (assoc-ref %standard-phases 'build) args))))
-           (replace 'install
-             (lambda* (#:key outputs #:allow-other-keys #:rest args)
-               (let ((out (assoc-ref outputs "out")))
-                 (apply (assoc-ref %standard-phases 'install) args)
-                 (with-directory-excursion "stator/gcContCvgBias"
-                   ;(apply (assoc-ref %standard-phases 'install) args)
-                   (install-file "gc_coverage_bias" (string-append out "/bin")))))))))
-      (inputs
-       `(("gnuplot" ,gnuplot)
-         ("perl" ,perl)
-         ("zlib" ,zlib)))
-      (native-inputs
-       `(("autoconf" ,autoconf)
-         ("automake" ,automake)
-         ("boost" ,boost)
-         ("gzstream" ,gzstream)
-         ("libtool" ,libtool)))
-      (home-page "https://github.com/galaxy001/pirs")
-      (synopsis "Profile based Illumina pair-end Reads Simulator")
-      (description "@code{pIRS} is a program for simulating paired-end reads
-from a reference genome.  It is optimized for simulating reads similar to those
-generated from the Illumina platform.")
-      (license license:gpl2))))
-
-;; TODO: Unbundle zlib, bamtools, tclap
-(define-public sniffles
-  (package
-   (name "sniffles")
-   (version "1.0.11")
-   (source (origin
-     (method git-fetch)
-     (uri (git-reference
-            (url "https://github.com/fritzsedlazeck/Sniffles.git")
-            (commit version)))
-     (file-name (git-file-name name version))
-     (sha256
-      (base32 "0rkwqn1ycckfzrg2wdid4cqahq8q2jmmgi7vvl8qxgpsihqfbq0j"))))
-   (build-system cmake-build-system)
-   (arguments
-    `(#:phases
-      (modify-phases %standard-phases
-        (replace 'install
-          (lambda* (#:key outputs #:allow-other-keys)
-            (let ((out (assoc-ref outputs "out")))
-              (install-file (string-append "../source/bin/sniffles-core-"
-                                           ,version "/sniffles")
-                            (string-append out "/bin")))
-            #t))
-        (replace 'check
-          (lambda _
-            (with-directory-excursion "../source/test_set"
-              (for-each make-file-writable (find-files "."))
-              (invoke (string-append "../bin/sniffles-core-" ,version "/sniffles")
-                      "-m" "reads_region.bam" "-v" "test.vcf")))))))
-   (native-inputs
-    `(("zlib" ,zlib)))
-   (home-page "https://github.com/fritzsedlazeck/Sniffles")
-   (synopsis "Structural variation caller using third generation sequencing")
-   (description
-    "Sniffles is a structural variation caller using third generation sequencing
-(PacBio or Oxford Nanopore).  It detects all types of SVs (10bp+) using evidence
-from split-read alignments, high-mismatch regions, and coverage analysis.")
-   (license license:expat)))
-
-;; TODO: Unbundle Complete-Striped-Smith-Waterman-Library
-(define-public ngmlr
-  (package
-   (name "ngmlr")
-   (version "0.2.7")
-   (source (origin
-     (method git-fetch)
-     (uri (git-reference
-            (url "https://github.com/philres/ngmlr.git")
-            (commit (string-append "v" version))))
-     (file-name (git-file-name name version))
-     (sha256
-      (base32 "0lmsy8w0kxbyfnrln7lxgmnx3d82sv2b20n2yw5742rvfhq1v31n"))))
-   (build-system cmake-build-system)
-   (arguments
-    `(#:phases
-      (modify-phases %standard-phases
-        (add-after 'patch-source-shebangs 'patch-more-tools
-          (lambda* (#:key inputs #:allow-other-keys)
-            (let ((bed (assoc-ref inputs "bedtools"))
-                  (sam (assoc-ref inputs "samtools")))
-              (substitute* (find-files "test" "\\.sh$")
-                (("bedtools") (string-append bed "/bin/bedtools"))
-                (("samtools") (string-append sam "/bin/samtools")))
-              #t)))
-        (replace 'check
-          (lambda _
-            (with-directory-excursion "../source"
-              (invoke "sh" "test/test_travis.sh")))))))
-   (native-inputs
-    `(("bedtools" ,bedtools)
-      ("samtools" ,samtools)))
-   (inputs
-    `(("zlib" ,zlib)))
-   (home-page "https://github.com/philres/ngmlr")
-   (synopsis "Long-read mapper designed to align PacBio or Oxford Nanopore")
-   (description
-    "NGMLR is a long-read mapper designed to align PacBio or Oxford Nanopore
-(standard and ultra-long) to a reference genome with a focus on reads that span
-structural variations.")
-   (license license:expat)))
-
-(define-public svim
-  (package
-   (name "svim")
-   (version "1.2.0")
-   (source (origin
-     (method git-fetch)
-     (uri (git-reference
-            (url "https://github.com/eldariont/svim.git")
-            (commit (string-append "v" version))))
-     (file-name (git-file-name name version))
-     (sha256
-      (base32 "08j02in9jbq41b67dna1apnc3y30i37v44d1khml1xlx0iga720s"))))
-   (build-system python-build-system)
-   (arguments
-    '(#:phases
-      (modify-phases %standard-phases
-        (replace 'check
-          (lambda _
-            (invoke "python3" "-m" "unittest" "discover" "-s" "src/"))))))
-   (propagated-inputs
-    `(("python-matplotlib" ,python-matplotlib)
-      ("python-numpy" ,python-numpy)
-      ("python-pysam" ,python-pysam)
-      ("python-scipy" ,python-scipy)
-      ("minimap2" ,minimap2)
-      ("ngmlr" ,ngmlr)
-      ("samtools" ,samtools)))
-   (home-page "https://github.com/eldariont/svim")
-   (synopsis "Structural Variant Identification Method using Long Reads")
-   (description
-    "SVIM (pronounced SWIM) is a structural variant caller for long reads.  It
-is able to detect, classify and genotype five different classes of structural
-variants.  Unlike existing methods, SVIM integrates information from across the
-genome to precisely distinguish similar events, such as tandem and interspersed
-duplications and novel element insertions.")
-   (license license:gpl3)))
-
-(define-public bamaddrg
-  (let ((commit "3fccbf057eef21f6304fade6c306c5bb64158865") ; May 26, 2012
-        (revision "1"))
-    (package
-      (name "bamaddrg")
-      (version (git-version "0.0.0" revision commit))
-      (source (origin
-        (method git-fetch)
-        (uri (git-reference
-               (url "https://github.com/ekg/bamaddrg.git")
-               (commit commit)))
-        (file-name (git-file-name name version))
-        (sha256
-         (base32 "14hq66cc7f4cssagb6079fmd2i6hfr9vmpcw5vi5kzsqr3ifc5yk"))))
-      (build-system gnu-build-system)
-      (arguments
-       `(#:tests? #f ; no tests
-         #:phases
-         (modify-phases %standard-phases
-           (delete 'configure)
-           ;; The Makefile wants to vendor bamtools' source so we mimic it.
-           (replace 'build
-              (lambda* (#:key inputs #:allow-other-keys)
-                (let ((bam (assoc-ref inputs "bamtools")))
-                  (apply invoke
-                         `("g++" "-O3"
-                           ,(string-append "-I" bam "/include/bamtools")
-                           ,(string-append "-L" bam "/lib/libbamtools.a")
-                           "bamaddrg.cpp" "-o" "bamaddrg" "-lbamtools" "-lz")))
-                #t))
-         (replace 'install
-           (lambda* (#:key outputs #:allow-other-keys)
-             (let ((bin (string-append (assoc-ref outputs "out") "/bin")))
-               (install-file "bamaddrg" bin)
-               #t))))))
-      (native-inputs
-       `(("bamtools" ,bamtools)))
-      (inputs
-       `(("zlib" ,zlib)))
-      (home-page "https://github.com/ekg/bamaddrg")
-      (synopsis "Adds read groups to input BAM files, streams BAM output on stdout")
-      (description
-       "This is intended for use \"fixing up\" RG tags on the fly so that they
-reflect the source file from which the aligment originated from.  This allows
-the \"safe\" merging of many files from many individuals into one stream,
-suitable for input into downstream processing systems such as freebayes (
-population variant detector).")
-      (license #f)))) ; no license listed
-
-(define-public qctool
-  (let ((changeset "73662f5f6e1e6efe75796bc64e342fb5d5d35e54") ; May 30, 2019
-        (revision "1"))
-    (package
-      (name "qctool")
-      (version (string-append "2.0.5-" revision "." (string-take changeset 7)))
-      (source
-        (origin
-          (method hg-fetch)
-          (uri (hg-reference
-                 (url "https://bitbucket.org/gavinband/qctool")
-                 (changeset changeset)))
-          (file-name (string-append name "-" version "-checkout"))
-          (sha256
-           (base32 "0lcir6jdw1gsi1l0yrsyqgrb8dryxxw3gyncfx5bx34qbhd6f5dv"))))
-      (build-system waf-build-system)
-      (arguments
-       `(#:python ,python-2
-         #:tests? #f ; no check command
-         #:phases
-         (modify-phases %standard-phases
-           (add-after 'unpack 'rename-waf
-             (lambda _
-               (rename-file "waf-1.5.18" "waf")
-               #t)))))
-      (native-inputs
-       `(("readline" ,readline)
-         ("zlib" ,zlib)))
-      (inputs
-       `(("lapack" ,lapack)
-         ("openblas" ,openblas)))
-      (home-page "https://www.well.ox.ac.uk/~gav/qctool_v2/")
-      (synopsis "Quality control and analysis of gwas datasets")
-      (description
-       "QCTOOL is a command-line utility program for manipulation and quality
-control of gwas datasets and other genome-wide data.  QCTOOL can be used
-@enumerate
-@item To compute per-variant and per-sample QC metrics.
-@item To filter out samples or variants.
-@item To merge datasets in various ways.
-@item To convert dataset between file formats. (In particular QCTOOL can read
-and write BGEN files, including full support for the BGEN v1.2 format that has
-been used for the UK Biobank imputed data full release).
-@item To manipulate datasets in various ways - e.g. by updating data fields or
-aligning alleles to a reference sequence based on information in a strand file.
-@item To annotate variants with information from BED files, sequence from FASTA
-files, or with genetic map positions.
-@item To compute LD metrics between variants.
-@item To compare genotypes for individuals typed or imputed or phased in
-different datasets.
-@item To compute between-sample relatedness and principal components.
-@item To compute 'genetic risk predictor' scores.
-@end enumerate")
-      (license (license:x11-style "https://www.boost.org/LICENSE_1_0.txt")))))
-
-(define-public rn6-assembly-error-app
-  (package
-   (name "rn6-assembly-error-app")
-   (version "0.12")
-   (source (origin
-     (method git-fetch)
-     (uri (git-reference
-            (url "https://github.com/chen42/rn6_assembly_error_app.git")
-            (commit (string-append "v" version))))
-     (file-name (git-file-name name version))
-     (sha256
-      (base32 "0ilmn6w0l17041dlizf4dy4pqn26k7956k7fjx4fvssb525g4gi6"))))
-   (build-system trivial-build-system)
-   (arguments
-    `(#:modules ((guix build utils))
-      #:builder
-      (begin
-        (use-modules (guix build utils))
-        (let* ((out       (assoc-ref %outputs "out"))
-               (targetdir (string-append out "/share/" ,name))
-               (app       (string-append out "/bin/" ,name))
-               (Rbin      (string-append (assoc-ref %build-inputs "r-min")
-                                         "/bin/Rscript"))
-               (convert   (string-append (assoc-ref %build-inputs "imagemagick")
-                                         "/bin/convert"))
-               (cp        (string-append (assoc-ref %build-inputs "coreutils")
-                                         "/bin/cp"))
-               (source    (assoc-ref %build-inputs "source")))
-          (copy-recursively source targetdir)
-          (substitute* (string-append targetdir "/server.r")
-            ;; This version is ideal for deploying with the included PNGs.
-            ;; But we want all of them, so we use a local copy in shepherd's $HOME.
-            ;;(("./pngs") (string-append targetdir "/pngs"))
-            (("./pngs") "/home/shepherd/rn6app/pngs")
-            (("cp") cp)
-            (("convert") convert))
-          (mkdir-p (string-append out "/bin"))
-          (call-with-output-file app
-            (lambda (port)
-              (format port
-"#!~a
-library(shiny)
-setwd(\"~a\")
-runApp(launch.browser=0, port=4202)~%\n"
-              Rbin targetdir)))
-          (chmod app #o555)
-          #t))))
-   (native-inputs `(("source" ,source)))
-   (inputs
-    `(("coreutils" ,coreutils-minimal)
-      ("imagemagick" ,imagemagick)
-      ("r-min" ,r-minimal)))
-   (propagated-inputs
-    `(("freetype" ,freetype)
-      ("r" ,r)
-      ("r-ggplot2" ,r-ggplot2)
-      ("r-shiny" ,r-shiny)))
-   (home-page "http://rn6err.opar.io/")
-   (synopsis "Display potential assembly errors in rn6")
-   (description
-    "Display potential assembly errors in rn6.")
-   (license license:expat)))
-
-(define-public bxd-power-calculator-app
-  (let ((commit "7cdd73daa9a7aa79af1de04dc314c325f9706fb8")
-        (revision "1"))
-    (package
-      (name "bxd-power-calculator-app")
-      (version (git-version "0.7" revision commit))
-      (source (origin
-                (method git-fetch)
-                (uri (git-reference
-                       (url "https://github.com/Dashbrook/BXD_power_calculator_app/")
-                       (commit commit)))
-                (file-name (git-file-name name version))
-                (sha256
-                 (base32 "0vdfilzy78jalkh9w9xxvarnzgnlaz943crmhlds8bcrvwbmf6yh"))))
-      (build-system trivial-build-system)
-      (arguments
-       `(#:modules ((guix build utils))
-         #:builder
-         (begin
-           (use-modules (guix build utils))
-           (let* ((out       (assoc-ref %outputs "out"))
-                  (targetdir (string-append out "/share/" ,name))
-                  (app       (string-append out "/bin/" ,name))
-                  (Rbin      (string-append (assoc-ref %build-inputs "r-min")
-                                            "/bin/Rscript"))
-                  (datasets  (assoc-ref %build-inputs "datasets"))
-                  (source    (assoc-ref %build-inputs "source")))
-             (copy-recursively source targetdir)
-             (mkdir-p (string-append out "/bin"))
-             (call-with-output-file app
-               (lambda (port)
-                 (format port
-"#!~a
-library(shiny)
-setwd(\"~a\")
-runApp(launch.browser=0, port=3978)~%\n"
-                 Rbin targetdir)))
-             (chmod app #o555)
-             (substitute* (string-append targetdir "/server.R")
-               (("read.csv.*")
-               (string-append "read.csv(url(\"file://" datasets "\"), header = TRUE)\n")))
-             #t))))
-      (native-inputs `(("source" ,source)))
-      (propagated-inputs
-       `(("r" ,r)
-         ("r-data-table" ,r-data-table)
-         ("r-dt" ,r-dt)
-         ("r-dplyr" ,r-dplyr)
-         ("r-ggplot2" ,r-ggplot2)
-         ("r-rcolorbrewer" ,r-rcolorbrewer)
-         ("r-shiny" ,r-shiny)))
-      (inputs
-       `(("r-min" ,r-minimal)
-         ;; Also available from ipfs
-         ;; ipfs get Qma3LWJBoks77btTmp6rn6jGSBcuBoPgcPCmofY2RRKEKf
-         ("datasets" ,(origin
-                        (method url-fetch)
-                        (uri "https://web.archive.org/web/20191016132922/http://individual.utoronto.ca/D_Ashbrook/Effect_size_analysis_heritability_28th_Nov_2018_recalc.csv")
-                        (sha256
-                         (base32
-                          "1ldr9infavd0vak8n8ry9smcnrir3xgs1bahmmx7n2csx4n6qx2x"))))))
-      (home-page "https://dashbrook1.shinyapps.io/bxd_power_calculator_app/")
-      (synopsis "Visualize probability (beta) of detecting a QTL")
-      (description
-       "The BXD power app seeks to provide a quick and easy graphical interface
-for users to calculate the theortical power to detect an effect in a two parent
-recombinant inbred population.  A power calculator such as this is needed as all
-grants require a calculation of the applications power to detect the effect of
-interest, and this app can provide values and figures for applicants to use.")
-        (license license:gpl3))))
-
-(define-public singlecellrshiny
-  (let ((commit "bdca74f4819d11e8fe7b15d9ab91b853f6542f7a")
-        (revision "3"))
-    (package
-     (name "singlecellrshiny")
-     (version (git-version "0.0.0" revision commit))
-     (source (origin
-       (method git-fetch)
-       (uri (git-reference
-              (url "https://github.com/genenetwork/singleCellRshiny")
-              (commit commit)))
-       (file-name (git-file-name name version))
-       (sha256
-        (base32 "1rxj933s9p9r7358vnp15f7ag6c0j65r4hgr8kyirfhmp1i8xdlw"))))
-     (build-system trivial-build-system)
-     (arguments
-      `(#:modules ((guix build utils))
-        #:builder
-        (begin
-          (use-modules (guix build utils))
-          (let* ((out       (assoc-ref %outputs "out"))
-                 (targetdir (string-append out "/share/" ,name))
-                 (app       (string-append out "/bin/" ,name))
-                 (Rbin      (string-append (assoc-ref %build-inputs "r-min")
-                                           "/bin/Rscript"))
-                 (top1001   (assoc-ref %build-inputs "RobTop1001.csv"))
-                 (celltypes (assoc-ref %build-inputs "CellTypes_RGC_Master_08Dec2018.csv"))
-                 (800-H1    (assoc-ref %build-inputs "800-H1-H20-RNA-Seq.csv"))
-                 (source    (assoc-ref %build-inputs "source")))
-            (copy-recursively source targetdir)
-            (substitute* (string-append targetdir "/app.R")
-              ;; As seen in https://github.com/genenetwork/singleCellRshiny/commit/6b2a344dd0d02f65228ad8c350bac0ced5850d05.patch
-              (("library\\(DT\\)") "library(DT)\nlibrary(multtest)"))
-            (substitute* (string-append targetdir "/global.R")
-              (("800-H1-H20-RNA-Seq-SingleCell-Retina-OMRF-03-29-19_FPKM_v2_SiamakPlay.csv") 800-H1)
-              (("CellTypes_RGC_Master_08Dec2018.csv") celltypes)
-              (("RobTop1001.csv") top1001)
-              ;; As seen in https://github.com/genenetwork/singleCellRshiny/commit/6b2a344dd0d02f65228ad8c350bac0ced5850d05.patch
-              (("dim\\(sc.object.1") "dim(sc.object"))
-            (mkdir-p (string-append out "/bin"))
-            (call-with-output-file app
-              (lambda (port)
-                (format port
-"#!~a
-library(shiny)
-setwd(\"~a\")
-runApp(launch.browser=0, port=4208)~%\n"
-                Rbin targetdir)))
-            (chmod app #o555)
-            #t))))
-     (inputs
-      `(("r-min" ,r-minimal)
-        ("RobTop1001.csv"
-         ,(origin
-            (method url-fetch)
-            (uri "https://archive.org/download/celltypesrgcmaster08dec2018/RobTop1001.csv")
-            (file-name "RobTop1001.csv")
-            (sha256
-             (base32 "0pa73kc1p8417sjvvvhp9xsbh2h8g7h85pnmm16mnv4wjalhq0gn"))))
-        ("CellTypes_RGC_Master_08Dec2018.csv"
-         ,(origin
-            (method url-fetch)
-            (uri "https://archive.org/download/celltypesrgcmaster08dec2018/CellTypes_RGC_Master_08Dec2018.csv")
-            (file-name "CellTypes_RGC_Master_08Dec2018.csv")
-            (sha256
-             (base32 "0y411968np1f5g21iym9xc9yj5c1jsn94rpkwkxh9pw2z43gvghn"))))
-        ("800-H1-H20-RNA-Seq.csv"
-         ,(origin
-            (method url-fetch)
-            (uri "https://archive.org/download/celltypesrgcmaster08dec2018/800-H1-H20-RNA-Seq-SingleCell-Retina-OMRF-03-29-19_FPKM_v2_SiamakPlay.csv")
-            (file-name "800-H1-H20-RNA-Seq-SingleCell-Retina-OMRF-03-29-19_FPKM_v2_SiamakPlay.csv")
-            (sha256
-             (base32 "1b1y4lfs8drypm04i1rypbmk67rdqgs27nfh05pwnv3sja2nanam"))))))
-     (propagated-inputs
-      `(("r" ,r)
-        ("r-dt" ,r-dt)
-        ("r-multtest" ,r-multtest)
-        ("r-seurat" ,r-seurat)
-        ("r-shiny" ,r-shiny)))
-     (home-page "http://singlecell.opar.io/")
-     (synopsis "RNA sequencing data analysis")
-     (description
-      "This is the R-Shiny programs to run some basic single cell RNA sequencing
-(scRNA-seq) data analysis.")
-     (license license:agpl3))))
-
-(define-public seqwish
-  (package
-    (name "seqwish")
-    (version "0.7.11")
-    (source (origin
-             (method git-fetch)
-             (uri (git-reference
-                   (url "https://github.com/ekg/seqwish.git")
-                   (commit (string-append "v" version))
-                   (recursive? #t)))
-             (file-name (git-file-name name version))
-             (sha256
-              (base32 "18wsrvqf0nsfk29v3ggdq2r4q15d4n4sq8v228qq1jsybbjlkgsa"))
-             (patches (search-patches "seqwish-paryfor-riscv.diff"
-                                      "seqwish-shared-library.diff"))
-             (snippet
-              #~(begin
-                  (use-modules (guix build utils))
-                  (substitute* '("CMakeLists.txt"
-                                 "deps/atomic_queue/Makefile"
-                                 "deps/mmmulti/deps/DYNAMIC/CMakeLists.txt"
-                                 "deps/mmmulti/deps/atomic_queue/Makefile"
-                                 "deps/mmmulti/deps/ips4o/CMakeLists.txt")
-                    (("-march=native") "")
-                    (("-mcx16") ""))
-                  (substitute* '("deps/mmmulti/deps/sdsl-lite/CMakeLists.txt"
-                                 "deps/sdsl-lite/CMakeLists.txt")
-                    (("-msse4.2 -march=native") ""))))))
-    (build-system cmake-build-system)
-    (arguments
-     `(#:configure-flags
-       (cons* ,@(if (target-x86?)
-                  ;; This is the minimum needed to compile on x86_64, and is a
-                  ;; subset of any other optimizations which might be applied.
-                  '("-DCMAKE_C_FLAGS=-mcx16"
-                    "-DCMAKE_CXX_FLAGS=-mcx16")
-                  '())
-              '("-DSEQWISH_LINK_SHARED_LIBRARY=ON"))
-       #:phases
-       (modify-phases %standard-phases
-         (add-after 'unpack 'set-version
-           (lambda _
-             ;; This stashes the build version in the executable.
-             (mkdir "include")
-             (substitute* "CMakeLists.txt"
-               (("^execute_process") "#execute_process"))
-             (with-output-to-file "include/seqwish_git_version.hpp"
-               (lambda ()
-                 (format #t "#define SEQWISH_GIT_VERSION \"~a\"~%" ,version)))))
-         (add-after 'unpack 'link-with-some-shared-libraries
-           (lambda* (#:key inputs #:allow-other-keys)
-             (substitute* '("CMakeLists.txt"
-                            "deps/mmmulti/CMakeLists.txt")
-               (("\".*libsdsl\\.a\"") "\"-lsdsl\"")
-               (("\".*libdivsufsort\\.a\"") "\"-ldivsufsort\"")
-               (("\".*libdivsufsort64\\.a\"") "\"-ldivsufsort64\"")
-               (("\\$\\{sdsl-lite_INCLUDE\\}")
-                (search-input-directory inputs "/include/sdsl"))
-               (("\\$\\{sdsl-lite-divsufsort_INCLUDE\\}")
-                (dirname
-                  (search-input-file inputs "/include/divsufsort.h"))))))
-         (replace 'check
-           (lambda* (#:key tests? #:allow-other-keys)
-             ;; Add seqwish to the PATH for the tests.
-             (setenv "PATH" (string-append (getcwd) ":" (getenv "PATH")))
-             (when tests?
-               (with-directory-excursion "../source/test"
-                 (invoke "make"))))))))
-    (inputs
-     (list jemalloc
-           libdivsufsort
-           openmpi
-           sdsl-lite
-           zlib))
-    (native-inputs
-     (list perl))
-    (home-page "https://github.com/ekg/seqwish")
-    (synopsis "Alignment to variation graph inducer")
-    (description "Seqwish implements a lossless conversion from pairwise
-alignments between sequences to a variation graph encoding the sequences and
-their alignments.  As input we typically take all-versus-all alignments, but the
-exact structure of the alignment set may be defined in an application specific
-way.  This algorithm uses a series of disk-backed sorts and passes over the
-alignment and sequence inputs to allow the graph to be constructed from very
-large inputs that are commonly encountered when working with large numbers of
-noisy input sequences.  Memory usage during construction and traversal is
-limited by the use of sorted disk-backed arrays and succinct rank/select
-dictionaries to record a queryable version of the graph.")
-    (properties `((tunable? . #t)))
-    (license license:expat)))
-
-(define-public seqwish-x86-64-v2
-  (package/inherit seqwish
-    (name "seqwish-x86-64-v2")
-    (outputs '("out" "static"))
-    (arguments
-     (substitute-keyword-arguments (package-arguments seqwish)
-       ((#:configure-flags flags #~'())
-        #~(append (list "-DEXTRA_FLAGS=-march=x86-64-v2"
-                        "-DCMAKE_INSTALL_LIBDIR=lib/glibc-hwcaps/x86-64-v2"
-                        (string-append "-DCMAKE_INSTALL_RPATH=" #$output
-                                       "/lib/glibc-hwcaps/x86-64-v2"))
-                  #$flags))
-       ;; The building machine can't necessarily run the code produced.
-       ((#:tests? _ #t) #f)
-       ((#:phases phases #~%standard-phases)
-        #~(modify-phases #$phases
-            (add-after 'install 'remove-extra-files
-              (lambda _
-                (delete-file-recursively (string-append #$output "/bin"))))
-            (add-after 'install 'move-static-library
-              (lambda* (#:key outputs #:allow-other-keys)
-                (let ((lib "/lib/glibc-hwcaps/x86-64-v2/libseqwish.a"))
-                  (mkdir-p (dirname (string-append #$output:static lib)))
-                  (rename-file (string-append #$output lib)
-                               (string-append #$output:static lib)))))))))
-    (supported-systems '("x86_64-linux"))
-    (properties `((hidden? . #t)
-                  (tunable? . #f)))))
-
-(define-public seqwish-x86-64-v3
-  (package/inherit seqwish
-    (name "seqwish-x86-64-v3")
-    (outputs '("out" "static"))
-    (arguments
-     (substitute-keyword-arguments (package-arguments seqwish)
-       ((#:configure-flags flags #~'())
-        #~(append (list "-DEXTRA_FLAGS=-march=x86-64-v3"
-                        "-DCMAKE_INSTALL_LIBDIR=lib/glibc-hwcaps/x86-64-v3"
-                        (string-append "-DCMAKE_INSTALL_RPATH=" #$output
-                                       "/lib/glibc-hwcaps/x86-64-v3"))
-                  #$flags))
-       ;; The building machine can't necessarily run the code produced.
-       ((#:tests? _ #t) #f)
-       ((#:phases phases #~%standard-phases)
-        #~(modify-phases #$phases
-            (add-after 'install 'remove-extra-files
-              (lambda _
-                (delete-file-recursively (string-append #$output "/bin"))))
-            (add-after 'install 'move-static-library
-              (lambda* (#:key outputs #:allow-other-keys)
-                (let ((lib "/lib/glibc-hwcaps/x86-64-v3/libseqwish.a"))
-                  (mkdir-p (dirname (string-append #$output:static lib)))
-                  (rename-file (string-append #$output lib)
-                               (string-append #$output:static lib)))))))))
-    (supported-systems '("x86_64-linux"))
-    (properties `((hidden? . #t)
-                  (tunable? . #f)))))
-
-(define-public seqwish-x86-64-v4
-  (package/inherit seqwish
-    (name "seqwish-x86-64-v4")
-    (outputs '("out" "static"))
-    (arguments
-     (substitute-keyword-arguments (package-arguments seqwish)
-       ((#:configure-flags flags #~'())
-        #~(append (list "-DEXTRA_FLAGS=-march=x86-64-v4"
-                        "-DCMAKE_INSTALL_LIBDIR=lib/glibc-hwcaps/x86-64-v4"
-                        (string-append "-DCMAKE_INSTALL_RPATH=" #$output
-                                       "/lib/glibc-hwcaps/x86-64-v4"))
-                  #$flags))
-       ;; The building machine can't necessarily run the code produced.
-       ((#:tests? _ #t) #f)
-       ((#:phases phases #~%standard-phases)
-        #~(modify-phases #$phases
-            (add-after 'install 'remove-extra-files
-              (lambda _
-                (delete-file-recursively (string-append #$output "/bin"))))
-            (add-after 'install 'move-static-library
-              (lambda* (#:key outputs #:allow-other-keys)
-                (let ((lib "/lib/glibc-hwcaps/x86-64-v4/libseqwish.a"))
-                  (mkdir-p (dirname (string-append #$output:static lib)))
-                  (rename-file (string-append #$output lib)
-                               (string-append #$output:static lib)))))))))
-    (supported-systems '("x86_64-linux"))
-    (properties `((hidden? . #t)
-                  (tunable? . #f)))))
-
-;; This copy of seqwish will automatically use the libraries that target the
-;; x86_64 psABI which the hardware supports.
-(define-public seqwish-hwcaps
-  (package/inherit seqwish
-    (name "seqwish-hwcaps")
-    (arguments
-     (substitute-keyword-arguments (package-arguments seqwish)
-       ((#:phases phases #~%standard-phases)
-        #~(modify-phases #$phases
-            (add-after 'install 'install-optimized-libraries
-              (lambda* (#:key inputs outputs #:allow-other-keys)
-                (let ((hwcaps "/lib/glibc-hwcaps"))
-                  (copy-recursively
-                    (string-append (assoc-ref inputs "seqwish-x86-64-v2")
-                                   hwcaps "/x86-64-v2")
-                    (string-append #$output hwcaps "/x86-64-v2"))
-                  (copy-recursively
-                    (string-append (assoc-ref inputs "seqwish-x86-64-v3")
-                                   hwcaps "/x86-64-v3")
-                    (string-append #$output hwcaps "/x86-64-v3"))
-                  (copy-recursively
-                    (string-append (assoc-ref inputs "seqwish-x86-64-v4")
-                                   hwcaps "/x86-64-v4")
-                    (string-append #$output hwcaps "/x86-64-v4")))))))))
-    (native-inputs
-     (modify-inputs (package-native-inputs seqwish)
-                    (append seqwish-x86-64-v2
-                            seqwish-x86-64-v3
-                            seqwish-x86-64-v4)))
-    (properties `((tunable? . #f)))))
-
-(define-public smoothxg
-  (package
-    (name "smoothxg")
-    (version "0.8.0")
-    (source (origin
-             (method url-fetch)
-             (uri (string-append "https://github.com/pangenome/smoothxg"
-                                 "/releases/download/v" version
-                                 "/smoothxg-v" version ".tar.gz"))
-             (sha256
-              (base32 "1gl4dskj81hlma7wsjrwwg77hgzk7dc9iaqqnf2wzrf2f4ll1cdj"))
-             (snippet
-              #~(begin
-                  (use-modules (guix build utils))
-                  (substitute* (find-files "." "CMakeLists.txt")
-                    (("spoa_optimize_for_native ON")
-                     "spoa_optimize_for_native OFF")
-                    (("-msse4\\.2") "")
-                    (("-march=native") ""))))))
-    (build-system cmake-build-system)
-    (arguments
-     (list
-       #:make-flags
-       #~(list (string-append "CC = " #$(cc-for-target)))
-       #:phases
-       #~(modify-phases %standard-phases
-           (add-after 'unpack 'link-with-some-shared-libraries
-             (lambda* (#:key inputs #:allow-other-keys)
-               (substitute* '("CMakeLists.txt"
-                              "deps/mmmulti/CMakeLists.txt"
-                              "deps/odgi/deps/mmmulti/CMakeLists.txt")
-                 (("\".*libsdsl\\.a\"") "\"-lsdsl\"")
-                 (("\".*libdivsufsort\\.a\"") "\"-ldivsufsort\"")
-                 (("\".*libdivsufsort64\\.a\"") "\"-ldivsufsort64\"")
-                 (("\".*libodgi\\.a\"") "\"-lodgi\"")
-                 (("\\$\\{sdsl-lite_INCLUDE\\}")
-                  (search-input-directory inputs "/include/sdsl"))
-                 (("\\$\\{sdsl-lite-divsufsort_INCLUDE\\}")
-                  (dirname
-                    (search-input-file inputs "/include/divsufsort.h")))
-                 (("\\$\\{odgi_INCLUDE\\}")
-                  (search-input-directory inputs "/include/odgi")))))
-           (add-before 'build 'build-abPOA
-             (lambda* (#:key make-flags #:allow-other-keys)
-               ;; This helps with portability to other architectures.
-               (with-directory-excursion
-                 (string-append "../smoothxg-v" #$version "/deps/abPOA")
-                 (substitute* "Makefile"
-                   (("-march=native") "")
-                   (("-march=armv8-a\\+simd") ""))
-                 (apply invoke "make" "libabpoa" make-flags)))))))
-    (inputs
-     (list jemalloc
-           libdivsufsort
-           odgi
-           openmpi
-           pybind11
-           python
-           sdsl-lite
-           zlib
-           (list zstd "lib")))
-    (native-inputs
-     (list pkg-config))
-    (home-page "https://github.com/ekg/smoothxg")
-    (synopsis
-     "Linearize and simplify variation graphs using blocked partial order alignment")
-    (description "Pangenome graphs built from raw sets of alignments may have
-complex local structures generated by common patterns of genome variation.
-These local nonlinearities can introduce difficulty in downstream analyses,
-visualization, and interpretation of variation graphs.
-
-@command{smoothxg} finds blocks of paths that are collinear within a variation
-graph.  It applies partial order alignment to each block, yielding an acyclic
-variation graph.  Then, to yield a smoothed graph, it walks the original paths
-to lace these subgraphs together.  The resulting graph only contains cyclic or
-inverting structures larger than the chosen block size, and is otherwise
-manifold linear.  In addition to providing a linear structure to the graph,
-smoothxg can be used to extract the consensus pangenome graph by applying the
-heaviest bundle algorithm to each chain.
-
-To find blocks, smoothxg applies a greedy algorithm that assumes that the graph
-nodes are sorted according to their occurence in the graph's embedded paths.
-The path-guided stochastic gradient descent based 1D sort implemented in
-@command{odgi sort -Y} is designed to provide this kind of sort.")
-    (properties `((tunable? . #t)))
-    (license license:expat)))
-
-;; TODO: Unbundle BBHash, parallel-hashmap, zstr
-(define-public graphaligner
-  (package
-    (name "graphaligner")
-    (version "1.0.20")
-    (source (origin
-      (method url-fetch)
-      (uri "https://github.com/user-attachments/files/17976913/GraphAligner.tar.gz")
-      (file-name (string-append name "-" version ".tar.gz"))
-      (sha256
-       (base32 "1gs6jds4lazljb1s7s8f1vp0l4j8jvqy6qhb9sck7x66z8157ndm"))))
-    (build-system gnu-build-system)
-    (arguments
-     (list
-       #:tests? #f ; no tests
-       #:make-flags
-       #~(list (string-append "VERSION=" #$version))
-       #:phases
-       #~(modify-phases %standard-phases
-           (delete 'configure) ; no configure phase
-           (add-after 'unpack 'patch-source
-             (lambda* (#:key inputs #:allow-other-keys)
-               (delete-file-recursively "concurrentqueue")
-               (substitute* "makefile"
-                 (("-Iconcurrentqueue")
-                  (string-append "-I" (search-input-directory inputs "/include/concurrentqueue")))
-                 (("^JEMALLOCFLAGS.*")
-                  "JEMALLOCFLAGS= `pkg-config --libs jemalloc`\n")
-                 (("`pkg-config --cflags zlib`/bamtools")
-                  (string-append "-I " (search-input-directory inputs "include/bamtools")))
-                 ;; No need to build statically.
-                 (("-Wl,-Bstatic") "")
-                 (("-static-libstdc\\+\\+") ""))))
-           (replace 'install
-             (lambda* (#:key outputs #:allow-other-keys)
-               (let ((out (assoc-ref outputs "out")))
-                 (for-each
-                   (lambda (program)
-                     (install-file program (string-append out "/bin")))
-                   (find-files "bin"))
-                 (for-each
-                   (lambda (header)
-                     (install-file header (string-append out "/include")))
-                   (find-files "src" "\\.h(pp)?$"))))))))
-    (native-inputs
-     (list (list jemalloc "bin")
-           pkg-config
-           sparsehash))
-    (inputs
-     (list bamtools
-           boost
-           concurrentqueue
-           jemalloc
-           libdivsufsort
-           mummer
-           protobuf
-           sdsl-lite
-           zlib))
-    (home-page "https://github.com/maickrau/GraphAligner")
-    (synopsis "Seed-and-extend program for aligning  genome graphs")
-    (description "Seed-and-extend program for aligning long error-prone reads to
-genome graphs.  For a description of the bitvector alignment extension
-algorithm, see
-@url{https://academic.oup.com/bioinformatics/advance-article/doi/10.1093/bioinformatics/btz162/5372677
-here}.")
-    (license license:expat)))
-
-(define-public mummer
-  (package
-    (name "mummer")
-    (version "4.0.0rc1")
-    (source
-      (origin
-        (method url-fetch)
-        (uri (string-append "https://github.com/mummer4/mummer/releases/"
-                            "download/v" version "/mummer-" version ".tar.gz"))
-        (sha256
-         (base32 "07bxw1vax1sai3g5xjn6sqngddlbnlabpqy373vw4fb55pdnl045"))))
-    (build-system gnu-build-system)
-    (arguments
-     (list
-       #:phases
-       #~(modify-phases %standard-phases
-           (add-after 'configure 'skip-test_md5-tests
-             (lambda _
-               ;; There seems to be a bug with how these tests are called.
-               (substitute* "Makefile"
-                 (("tests/mummer.sh") "")
-                 (("tests/nucmer.sh") "")
-                 (("tests/genome.sh") "")
-                 (("tests/sam.sh") "")))))))
-    (inputs
-     (list gnuplot
-           perl))
-    (home-page "http://mummer.sourceforge.net/")
-    (synopsis "Efficient sequence alignment of full genomes")
-    (description "MUMmer is a versatil alignment tool for DNA and protein sequences.")
-    (license license:artistic2.0)))
-
-(define-public diagnostic-slider
-  (let ((commit "514d65d4982133e4869e578c5553fced4c6d506c")
-        (revision "1"))
-    (package
-      (name "diagnostic-slider")
-      (version (git-version "0.0.0" revision commit))
-      (source (origin
-                (method git-fetch)
-                (uri (git-reference
-                       (url "https://github.com/sens/diagnostic-slider")
-                       (commit commit)))
-                (file-name (git-file-name name version))
-                (sha256
-                 (base32 "04g8if32g8syg6v0bd3jjn05i3d394nx8i3ccl0883p8mlmdvlmx"))))
-      (build-system trivial-build-system)
-      (arguments
-       `(#:modules ((guix build utils))
-         #:builder
-         (begin
-           (use-modules (guix build utils))
-           (let* ((out       (assoc-ref %outputs "out"))
-                  (targetdir (string-append out "/share/" ,name))
-                  (app       (string-append out "/bin/" ,name))
-                  (Rbin      (string-append (assoc-ref %build-inputs "r-min")
-                                            "/bin/Rscript"))
-                  (source    (assoc-ref %build-inputs "source")))
-             (copy-recursively source targetdir)
-             (mkdir-p (string-append out "/bin"))
-             (call-with-output-file app
-               (lambda (port)
-                 (format port
-"#!~a
-library(shiny)
-setwd(\"~a\")
-runApp(launch.browser=0, port=4206)~%\n"
-                         Rbin targetdir)))
-               (chmod app #o555)
-               #t))))
-        (native-inputs
-         `(("source" ,source)))
-        (inputs
-         `(("r-min" ,r-minimal)))
-        (propagated-inputs
-         `(("r" ,r)
-           ("r-shiny" ,r-shiny)))
-        (home-page "https://github.com/sens/diagnostic-slider")
-        (synopsis "")
-        (description
-         "")
-        (license #f))))
-
-(define-public clustalw
-  (package
-   (name "clustalw")
-   (version "2.1")
-   (source (origin
-     (method url-fetch)
-     (uri "http://www.clustal.org/download/current/clustalw-2.1.tar.gz")
-     (file-name (string-append name "-" version ".tar.gz"))
-     (sha256
-      (base32 "11llyj08liq0bg6vqan8728qjrbam3xhna2wd6g8rzdbhydhalp0"))))
-   (arguments
-    `(#:phases
-      (modify-phases %standard-phases
-       (add-after
-        'install 'post-install
-        (lambda* (#:key inputs outputs #:allow-other-keys)
-          (let* ((out     (assoc-ref outputs "out")))
-            (rename-file (string-append out "/bin/clustalw2")
-                         (string-append out "/bin/clustalw"))
-                 ))))))
-   (build-system gnu-build-system)
-   (home-page "http://www.clustal.org/")
-   (synopsis "")
-   (description
-    "")
-   (license #f)))
-
-(define-public python-whatshap
-  (package
-    (name "python-whatshap")
-    (version "1.1")
-    (source
-      (origin
-        (method url-fetch)
-        (uri (pypi-uri "whatshap" version))
-        (sha256
-         (base32 "0vxv6y8sg25yii106j6k55vc5z7n1l1y1nax49dgbarbrvk8cr2f"))))
-    (build-system python-build-system)
-    (inputs
-     `(("python-biopython" ,python-biopython)
-       ("python-networkx" ,python-networkx)
-       ("python-pyfaidx" ,python-pyfaidx)
-       ("python-pysam" ,python-pysam)
-       ("python-scipy" ,python-scipy)
-       ("python-xopen" ,python-xopen)))
-    (native-inputs
-     `(("python-cython" ,python-cython)
-       ("python-setuptools-scm" ,python-setuptools-scm)))
-    (home-page "https://github.com/whatshap/whatshap/")
-    (synopsis "Read-based phasing of genomic variants")
-    (description
-     "WhatsHap is a software for phasing genomic variants using DNA sequencing
-reads, also called read-based phasing or haplotype assembly.  It is especially
-suitable for long reads, but works also well with short reads.")
-    (license license:expat)))
-
-(define-public python-scanpy-git
-  (let ((commit "590d42309f9ed6550d7b887039990edfc1ac7648") ; April 22, 2020
-        (revision "1"))
-    (package
-      (inherit python-scanpy)
-      (name "python-scanpy-git")
-      (version (git-version "1.4.6" revision commit))
-      (source
-        (origin
-          (method git-fetch)
-          (uri (git-reference
-                 (url "https://github.com/theislab/scanpy")
-                 (commit commit)))
-          (file-name (git-file-name "python-scanpy" version))
-          (sha256
-           (base32 "0z3pk9vh4b7fqq7fs262i6z0pm1dnn6bf49a4r7r73k6gjj6namd"))))
-      (arguments
-       (substitute-keyword-arguments (package-arguments python-scanpy)
-         ((#:phases phases)
-          `(modify-phases ,phases
-             (add-before 'build 'fix-build
-               (lambda* (#:key inputs outputs #:allow-other-keys)
-                 (let ((out (assoc-ref outputs "out"))
-                       (pyv (python-version (assoc-ref inputs "python"))))
-                   (substitute* "setup.py"
-                     (("use_scm_version=True") "use_scm_version=False"))
-                   (substitute* "scanpy/__init__.py"
-                     (("__version__.*")
-                      (string-append "__version__ = '" ,version "'\n")))
-                   (mkdir-p
-                     (string-append out "/lib/python" pyv "/site-packages"))
-                   (setenv "PYTHONPATH"
-                           (string-append out
-                                          "/lib/python" pyv "/site-packages/:"
-                                          (getenv "PYTHONPATH"))))
-                 ;; These tests fail on this git revision
-                 (delete-file "scanpy/tests/test_neighbors_key_added.py")
-                 (delete-file "scanpy/tests/test_pca.py")
-                 #t)))))))))
-
-;; TODO: Unbundle everything before upstreaming
-(define-public odgi
-  (package
-    (name "odgi")
-    (version "0.9.0")
-    (outputs '("out" "static"))
-    (source (origin
-              (method url-fetch)
-              (uri (string-append "https://github.com/pangenome/odgi/releases"
-                                  "/download/v" version
-                                  "/odgi-v" version ".tar.gz"))
-              (sha256
-               (base32 "0brg0sz45v1wv4ld3p4jwiab10nyp2f691zfwpiva6g6f71q3cbk"))
-              (snippet
-               #~(begin
-                   (use-modules (guix build utils))
-                   (substitute* "CMakeLists.txt"
-                     (("-march=native") "")
-                     (("-msse4\\.2") ""))))))
-    (build-system cmake-build-system)
-    (arguments
-     (list
-       #:tests? #f  ;; FIXME: tests are broken
-       #:phases
-       #~(modify-phases %standard-phases
-           (add-after 'unpack 'use-gnuinstalldirs-macros
-             (lambda _
-               (substitute* "CMakeLists.txt"
-                 (("project\\(odgi\\)" all)
-                  (string-append all "\ninclude(GNUInstallDirs)"))
-                 ;; This is different than the default.
-                 ;(("PUBLIC_HEADER DESTINATION include/odgi")
-                 ; "PUBLIC_HEADER DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}")
-                 (("LIBRARY DESTINATION lib")
-                  "LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}")
-                 (("ARCHIVE DESTINATION lib")
-                  "ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}"))))
-           (add-after 'unpack 'link-to-libodgi
-             (lambda _
-               ;; This lets us provide libraries for different psABI levels.
-               (substitute* "CMakeLists.txt"
-                 (("^  \\$<TARGET_OBJECTS:odgi_objs>.*") "")
-                 (("target_link_libraries\\(odgi " all)
-                  (string-append all "libodgi_shared ")))))
-           (add-after 'install 'move-static-library
-             (lambda* (#:key outputs #:allow-other-keys)
-               (mkdir-p (string-append #$output:static "/lib"))
-               (rename-file (string-append #$output "/lib/libodgi.a")
-                            (string-append #$output:static "/lib/libodgi.a")))))))
-    (native-inputs
-     (list pkg-config))
-    (inputs
-     (list jemalloc
-           libdivsufsort
-           openmpi
-           pybind11
-           python
-           sdsl-lite))
-    (home-page "https://github.com/vgteam/odgi")
-    (synopsis "Optimized Dynamic Genome/Graph Implementation")
-    (description "@acronym{Optimized Dynamic Genome/Graph Implementation, odgi}
-provides an efficient and succinct dynamic DNA sequence graph model, as well as
-a host of algorithms that allow the use of such graphs in bioinformatic
-analyses.
-
-Careful encoding of graph entities allows odgi to efficiently compute and
-transform pangenomes with minimal overheads.  @command{odgi} implements a
-dynamic data structure that leveraged multi-core CPUs and can be updated on the
-fly.
-
-The edges and path steps are recorded as deltas between the current node id and
-the target node id, where the node id corresponds to the rank in the global
-array of nodes.  Graphs built from biological data sets tend to have local
-partial order and, when sorted, the deltas be small.  This allows them to be
-compressed with a variable length integer representation, resulting in a small
-in-memory footprint at the cost of packing and unpacking.")
-    (properties '((tunable? . #t)))
-    (license license:expat)))
-
-(define-public odgi-x86-64-v2
-  (package/inherit odgi
-    (name "odgi-x86-64-v2")
-    (arguments
-     (substitute-keyword-arguments (package-arguments odgi)
-       ((#:configure-flags flags #~'())
-        #~(append (list "-DEXTRA_FLAGS=-march=x86-64-v2"
-                        "-DCMAKE_INSTALL_LIBDIR=lib/glibc-hwcaps/x86-64-v2"
-                        (string-append "-DCMAKE_INSTALL_RPATH=" #$output
-                                       "/lib/glibc-hwcaps/x86-64-v2"))
-                  #$flags))
-       ;; The building machine can't necessarily run the code produced.
-       ((#:tests? _ #t) #f)
-       ((#:phases phases #~%standard-phases)
-        #~(modify-phases #$phases
-            (add-after 'install 'remove-extra-files
-              (lambda _
-                (delete-file-recursively (string-append #$output "/bin"))
-                (delete-file-recursively (string-append #$output "/include"))))
-            (replace 'move-static-library
-              (lambda* (#:key outputs #:allow-other-keys)
-                (let ((lib "/lib/glibc-hwcaps/x86-64-v2/libodgi.a"))
-                  (mkdir-p (dirname (string-append #$output:static lib)))
-                  (rename-file (string-append #$output lib)
-                               (string-append #$output:static lib)))))))))
-    (supported-systems '("x86_64-linux"))
-    (properties `((hidden? . #t)))))
-
-(define-public odgi-x86-64-v3
-  (package/inherit odgi
-    (name "odgi-x86-64-v3")
-    (arguments
-     (substitute-keyword-arguments (package-arguments odgi)
-       ((#:configure-flags flags #~'())
-        #~(append (list "-DEXTRA_FLAGS=-march=x86-64-v3"
-                        "-DCMAKE_INSTALL_LIBDIR=lib/glibc-hwcaps/x86-64-v3"
-                        (string-append "-DCMAKE_INSTALL_RPATH=" #$output
-                                       "/lib/glibc-hwcaps/x86-64-v3"))
-                  #$flags))
-       ;; The building machine can't necessarily run the code produced.
-       ((#:tests? _ #t) #f)
-       ((#:phases phases #~%standard-phases)
-        #~(modify-phases #$phases
-            (add-after 'install 'remove-extra-files
-              (lambda _
-                (delete-file-recursively (string-append #$output "/bin"))
-                (delete-file-recursively (string-append #$output "/include"))))
-            (replace 'move-static-library
-              (lambda* (#:key outputs #:allow-other-keys)
-                (let ((lib "/lib/glibc-hwcaps/x86-64-v3/libodgi.a"))
-                  (mkdir-p (dirname (string-append #$output:static lib)))
-                  (rename-file (string-append #$output lib)
-                               (string-append #$output:static lib)))))))))
-    (supported-systems '("x86_64-linux"))
-    (properties `((hidden? . #t)))))
-
-(define-public odgi-x86-64-v4
-  (package/inherit odgi
-    (name "odgi-x86-64-v4")
-    (arguments
-     (substitute-keyword-arguments (package-arguments odgi)
-       ((#:configure-flags flags #~'())
-        #~(append (list "-DEXTRA_FLAGS=-march=x86-64-v4"
-                        "-DCMAKE_INSTALL_LIBDIR=lib/glibc-hwcaps/x86-64-v4"
-                        (string-append "-DCMAKE_INSTALL_RPATH=" #$output
-                                       "/lib/glibc-hwcaps/x86-64-v4"))
-                  #$flags))
-       ;; The building machine can't necessarily run the code produced.
-       ((#:tests? _ #t) #f)
-       ((#:phases phases #~%standard-phases)
-        #~(modify-phases #$phases
-            (add-after 'install 'remove-extra-files
-              (lambda _
-                (delete-file-recursively (string-append #$output "/bin"))
-                (delete-file-recursively (string-append #$output "/include"))))
-            (replace 'move-static-library
-              (lambda* (#:key outputs #:allow-other-keys)
-                (let ((lib "/lib/glibc-hwcaps/x86-64-v4/libodgi.a"))
-                  (mkdir-p (dirname (string-append #$output:static lib)))
-                  (rename-file (string-append #$output lib)
-                               (string-append #$output:static lib)))))))))
-    (supported-systems '("x86_64-linux"))
-    (properties `((hidden? . #t)))))
-
-;; This copy of odgi will automatically use the libraries that target the
-;; x86_64 psABI which the hardware supports.
-(define-public odgi-hwcaps
-  (package/inherit odgi
-    (name "odgi-hwcaps")
-    (arguments
-     (substitute-keyword-arguments (package-arguments odgi)
-       ((#:phases phases #~%standard-phases)
-        #~(modify-phases #$phases
-            (add-after 'install 'install-optimized-libraries
-              (lambda* (#:key inputs outputs #:allow-other-keys)
-                (let ((hwcaps "/lib/glibc-hwcaps"))
-                  (copy-recursively
-                    (string-append (assoc-ref inputs "odgi-x86-64-v2")
-                                   hwcaps "/x86-64-v2")
-                    (string-append #$output hwcaps "/x86-64-v2"))
-                  (copy-recursively
-                    (string-append (assoc-ref inputs "odgi-x86-64-v3")
-                                   hwcaps "/x86-64-v3")
-                    (string-append #$output hwcaps "/x86-64-v3"))
-                  (copy-recursively
-                    (string-append (assoc-ref inputs "odgi-x86-64-v4")
-                                   hwcaps "/x86-64-v4")
-                    (string-append #$output hwcaps "/x86-64-v4")))))))))
-    (native-inputs
-     (modify-inputs (package-native-inputs odgi)
-                    (append odgi-x86-64-v2
-                            odgi-x86-64-v3
-                            odgi-x86-64-v4)))
-    (properties `((tunable? . #f)))))
-
-(define-public vg
-  (package
-    (name "vg")
-    (version "1.65.0")
-    (source
-      (origin
-        (method url-fetch)
-        (uri (string-append "https://github.com/vgteam/vg/releases/download/v"
-                            version "/vg-v" version ".tar.gz"))
-        (sha256
-         (base32 "022wiz0rs1x90nk9zaxcf8szhma8kzygnbfhciq9166kjysd0pc6"))
-        (snippet
-         #~(begin
-             (use-modules (guix build utils))
-             (substitute* (find-files "." "(CMakeLists\\.txt|Makefile)")
-               (("-march=native") "")
-               (("-mtune=native") "")
-               (("-msse4.2") "")
-               (("-mcx16") ""))))))
-    (build-system gnu-build-system)
-    (arguments
-     (list
-      #:make-flags
-      #~(list (string-append "CC=" #$(cc-for-target))
-              ;; Set rpath so the validate-runpath phase finds
-              ;; libhandlegraph.so.
-              (string-append "LDFLAGS=-Wl,-rpath=" #$output "/lib"))
-      #:phases
-      #~(modify-phases %standard-phases
-          (delete 'configure)    ; no configure script
-          (add-after 'unpack 'patch-source
-            (lambda* (#:key inputs #:allow-other-keys)
-              ;; Most of these are so that we can skip bootstrapping some of the sources.
-              (substitute* "Makefile"
-                ;; PKG_CONFIG_DEPS needs to be substituted to actually link to everything.
-                (("cairo libzstd")
-                 "cairo htslib libzstd libdw libelf protobuf raptor2 sdsl-lite tabixpp vcflib fastahack libdeflate")
-
-                ;; Skip the part where we link static libraries special. It doesn't like the changes we make
-                (("-Wl,-B.*") "\n")
-
-                (("\\$\\(CWD\\)/\\$\\(LIB_DIR\\)/libtabixpp\\.a") "$(LIB_DIR)/libtabixpp.a")
-                ((" \\$\\(LIB_DIR\\)/libtabixpp\\.a")
-                 (string-append " " (search-input-file inputs "/lib/libtabixpp.so")))
-                (("\\$\\(LIB_DIR\\)/pkgconfig/tabixpp\\.pc")
-                 (string-append " " (search-input-file inputs "/lib/pkgconfig/tabixpp.pc")))
-
-                (("\\$\\(CWD\\)/\\$\\(LIB_DIR\\)/libhts\\.a") "$(LIB_DIR)/libhts.a")
-                ((" \\$\\(LIB_DIR\\)/libhts\\.a")
-                 (string-append " " (search-input-file inputs "/lib/libhts.so")))
-                (("\\$\\(LIB_DIR\\)/pkgconfig/htslib\\.pc")
-                 (string-append " " (search-input-file inputs "/lib/pkgconfig/htslib.pc")))
-
-                (("\\$\\(CWD\\)/\\$\\(LIB_DIR\\)/libdeflate\\.a") "$(LIB_DIR)/libdeflate.a")
-                ((" \\$\\(LIB_DIR\\)/libdeflate\\.a")
-                 (string-append " " (search-input-file inputs "/lib/libdeflate.so")))
-
-                ((" \\$\\(LIB_DIR\\)/libvcflib.a")
-                 (string-append " " (search-input-file inputs "/lib/libvcflib.so")))
-                ((" \\$\\(BIN_DIR\\)/vcf2tsv")
-                 (string-append " " (search-input-file inputs "/bin/vcf2tsv")))
-
-                ((" \\$\\(FASTAHACK_DIR\\)/fastahack")
-                 (string-append " " (search-input-file inputs "/bin/fastahack")))
-                (("\\+= \\$\\(OBJ_DIR\\)/Fasta\\.o")
-                 (string-append "+= " (search-input-file inputs "/lib/libfastahack.so")))
-
-                ((" \\$\\(LIB_DIR\\)/libsnappy.a")
-                 (string-append " " (search-input-file inputs "/lib/libsnappy.so")))
-
-                ;; Only link against the libraries in the elfutils package.
-                (("-ldwfl -ldw -ldwelf -lelf -lebl") "-ldw -lelf")
-                ((" \\$\\(LIB_DIR\\)/libelf.a")
-                 (string-append " " (search-input-file inputs "/lib/libelf.so")))
-                ((" \\$\\(LIB_DIR\\)/libdw.a")
-                 (string-append " " (search-input-file inputs "/lib/libdw.so")))
-
-                ((" \\$\\(LIB_DIR\\)/%divsufsort.a")
-                 (string-append " " (dirname
-                                     (search-input-file inputs "/lib/libdivsufsort.so"))
-                                "%divsufsort.so"))
-                ((" \\$\\(LIB_DIR\\)/libdivsufsort.a")
-                 (string-append " " (search-input-file inputs "/lib/libdivsufsort.so")))
-                ((" \\$\\(LIB_DIR\\)/%divsufsort64.a")
-                 (string-append " " (dirname
-                                     (search-input-file inputs "/lib/libdivsufsort64.so"))
-                                "%divsufsort64.so"))
-                ((" \\$\\(LIB_DIR\\)/libdivsufsort64.a")
-                 (string-append " " (search-input-file inputs "/lib/libdivsufsort64.so")))
-
-                ((" \\$\\(LIB_DIR\\)/libjemalloc.a")
-                 (string-append " " (search-input-file inputs "/lib/libjemalloc.a")))
-
-                ((" \\$\\(INC_DIR\\)/sparsehash")
-                 (string-append " " (search-input-directory inputs "/include/sparsehash")))
-
-                ((" \\$\\(INC_DIR\\)/raptor2")
-                 (string-append " " (search-input-directory inputs "/include/raptor2")))
-                ((" \\$\\(LIB_DIR\\)/libraptor2.a")
-                 (string-append " " (search-input-file inputs "/lib/libraptor2.so")))
-                ((" \\$\\(BIN_DIR\\)/rapper")
-                 (string-append " " (search-input-file inputs "/bin/rapper"))))
-              ;; Create obj and lib directories. They do not exist in
-              ;; the release tarball.
-              (mkdir "deps/libbdsg/bdsg/obj")
-              (mkdir "deps/libbdsg/lib")
-              ;; Do not remove obj and lib directories in the clean
-              ;; target.
-              (substitute* "deps/libbdsg/Makefile"
-                (("\\[ ! -e \\$\\(OBJ_DIR\\) \\][^\n]*") "")
-                (("\\[ ! -e \\$\\(LIB_DIR\\) \\][^\n]*") ""))))
-          (add-after 'unpack 'link-with-some-shared-libraries
-            (lambda* (#:key inputs #:allow-other-keys)
-              (substitute* '("deps/mmmultimap/CMakeLists.txt"
-                             "deps/xg/CMakeLists.txt"
-                             "deps/xg/deps/mmmulti/CMakeLists.txt")
-                (("\".*libsdsl\\.a\"") "\"-lsdsl\"")
-                (("\".*libdivsufsort\\.a\"") "\"-ldivsufsort\"")
-                (("\".*libdivsufsort64\\.a\"") "\"-ldivsufsort64\"")
-                (("\\$\\{sdsl-lite_INCLUDE\\}")
-                 (search-input-directory inputs "/include/sdsl"))
-                (("\\$\\{sdsl-lite-divsufsort_INCLUDE\\}")
-                 (dirname
-                  (search-input-file inputs "/include/divsufsort.h"))))))
-          (add-after 'unpack 'dont-build-shared-vgio
-            (lambda _
-              ;; vg will link with libvgio and fail the 'validate-runpath phase.
-              (substitute* "deps/libvgio/CMakeLists.txt"
-                (("TARGETS vgio vgio_static") "TARGETS vgio_static"))))
-          (add-after 'unpack 'fix-fastahack-dependency
-            (lambda _
-              (substitute* (append (list "src/aligner.hpp"
-                                         "src/vg.hpp")
-                                   (find-files "deps/vcflib/src" "\\.cpp$"))
-                (("Fasta.h") "fastahack/Fasta.h"))
-              (substitute* '("deps/vcflib/src/Variant.h"
-                             "src/constructor.hpp"
-                             "src/index_registry.cpp")
-                (("<Fasta.h>") "\"fastahack/Fasta.h\""))))
-          (add-after 'unpack 'adjust-tests
-            (lambda* (#:key inputs #:allow-other-keys)
-              (let ((bash-tap (assoc-ref inputs "bash-tap")))
-                (substitute* (find-files "test/t")
-                  (("BASH_TAP_ROOT.*")
-                   (string-append "BASH_TAP_ROOT=" bash-tap "/bin\n"))
-                  ((".*bash-tap-bootstrap")
-                   (string-append ". " bash-tap "/bin/bash-tap-bootstrap")))
-                (substitute* "test/t/02_vg_construct.t"
-                  (("../deps/fastahack/fastahack") (which "fastahack"))
-                  (("../bin/vcf2tsv") (which "vcf2tsv")))
-                ;; Lets skip the 9 failing tests for now. They fail with our
-                ;; bash-tap and the bundled one.
-                (substitute* "test/t/02_vg_construct.t"
-                  ((".*self-inconsistent.*") "is $(true) \"\" \"\"\n"))
-                (substitute* "test/t/07_vg_map.t"
-                  ;; Change in fasta's output
-                  (("identity\\) 1 \"") "identity) 1.0 \""))
-                (substitute* '("test/t/07_vg_map.t"
-                               "test/t/33_vg_mpmap.t")
-                  ((".*node id.*") "is $(true) \"\" \"\"\n"))
-                (substitute* "test/t/48_vg_convert.t"
-                  (("true \"vg.*") "true \"true\"\n"))
-                (substitute* "test/t/50_vg_giraffe.t"
-                  ((".*A long read can.*") "is $(true) \"\" \"\"\n")
-                  ((".*A long read has.*") "is $(true) \"\" \"\"\n")
-                  ((".*Long read minimizer.*") "is $(true) \"\" \"\"\n"))
-                ;; Don't test the docs, we're not providing npm
-                (substitute* "Makefile"
-                  ((".*test-docs.*") "")))))
-          (add-after 'build 'build-manpages
-            (lambda* (#:key make-flags #:allow-other-keys)
-              ;; vg is not in PATH. Replace it with full path.
-              (substitute* "doc/vgmanmd.py"
-                (("'vg'") "'./bin/vg'"))
-              (apply invoke "make" "man" make-flags)))
-          (replace 'install
-            (lambda* (#:key outputs #:allow-other-keys)
-              (let ((out (assoc-ref outputs "out")))
-                (install-file "bin/vg" (string-append out "/bin"))
-                (install-file "lib/libhandlegraph.so" (string-append out "/lib"))
-                (for-each
-                 (lambda (file)
-                   (install-file file (string-append out "/share/man/man1")))
-                 (find-files "doc/man" "\\.1$"))))))
-      #:test-target "test"))
-    (native-inputs
-     (append
-       (if (supported-package? ruby-asciidoctor)
-         (list ruby-asciidoctor)
-         '())
-       (list asciidoc
-             bash-tap
-             bc
-             cmake-minimal
-             ghc-pandoc
-             jq
-             perl
-             pkg-config
-             python
-             samtools
-             util-linux
-             which
-             xxd)))
-    (inputs
-     (list boost
-           cairo
-           curl
-           elfutils
-           fastahack
-           htslib
-           jansson
-           jemalloc
-           libdeflate
-           libdivsufsort
-           ncurses
-           openmpi
-           protobuf
-           raptor2
-           sdsl-lite
-           smithwaterman
-           snappy
-           sparsehash
-           tabixpp
-           vcflib
-           zlib
-           (list zstd "lib")))
-    (home-page "https://www.biostars.org/t/vg/")
-    (synopsis "Tools for working with genome variation graphs")
-    (description "Variation graphs provide a succinct encoding of the sequences
-of many genomes.  A variation graph (in particular as implemented in vg) is
-composed of:
-@enumerate
-@item nodes, which are labeled by sequences and ids
-@item edges, which connect two nodes via either of their respective ends
-@item paths, describe genomes, sequence alignments, and annotations (such as
-gene models and transcripts) as walks through nodes connected by edges
-@end enumerate
-This model is similar to sequence graphs that have been used in assembly and
-multiple sequence alignment.")
-    (properties `((release-monitoring-url . "https://github.com/vgteam/vg/releases")
-                  (tunable? . #t)))
-    (license
-      (list
-        license:expat   ; main program
-        license:bsd-2   ; deps/xg/deps/ips4o
-        license:bsd-3   ; deps/sparsepp, deps/sonLib/C/{impl,inc}
-        license:asl2.0  ; deps/sonLib/externalTools/quicktree_1.1, deps/structures
-        license:gpl3+   ; all sdsl-lite copies
-        license:zlib    ; deps/sonLib/externalTools/cutest
-        license:boost1.0)))) ; catch.hpp
-
-(define-public wfmash-0.14
-  (package
-    (inherit wfmash)
-    (version "0.14.0")
-    (source
-     (origin
-       (method url-fetch)
-       (uri (string-append "https://github.com/waveygang/wfmash/releases/download/v"
-                           version "/wfmash-v" version ".tar.gz"))
-       (sha256
-        (base32
-         "1mk3jschn3hdr45glds65g3hxk7v6nc3plkvxmfbd5pr4kyzlf13"))
-       (snippet
-        #~(begin
-            (use-modules (guix build utils))
-            ;; Unbundle atomic-queue.
-            (delete-file-recursively "src/common/atomic_queue")
-            (substitute* "src/align/include/computeAlignments.hpp"
-              (("\"common/atomic_queue/atomic_queue.h\"")
-               "<atomic_queue/atomic_queue.h>"))
-            ;; Remove compiler optimizations.
-            (substitute* (find-files "." "CMakeLists\\.txt")
-              (("-march=native ") ""))))))
-    (arguments
-     (substitute-keyword-arguments (package-arguments wfmash)
-       ((#:tests? tests? #f) #f)
-       ((#:phases phases #~%standard-phases)
-        #~(modify-phases #$phases
-            (replace 'build-check-prerequisites
-              (lambda _
-                (let ((wfa2-lib #$(string-append "../wfmash-v"
-                                                 version
-                                                 "/src/common/wflign/deps/WFA2-lib")))
-                  (substitute* (string-append wfa2-lib "/Makefile")
-                    ;; Remove architecture-specific flags.
-                    (("-march=x86-64-v3") ""))
-                  (substitute* (string-append wfa2-lib "/tests/wfa.utest.sh")
-                    ;; Fix time command.
-                    (("\\\\time -v") "time"))
-                  ;; Build wfa2-lib.
-                  (invoke "make" "-C" wfa2-lib
-                          #$(string-append "CC=" (cc-for-target))))))))))
-    (inputs
-     (modify-inputs (package-inputs wfmash)
-       (prepend jemalloc)
-       (delete "libdeflate")))))
-
-(define-public pggb
-  (package
-    (name "pggb")
-    (version "0.7.2")
-    (source (origin
-              (method git-fetch)
-              (uri (git-reference
-                    (url "https://github.com/pangenome/pggb")
-                    (commit (string-append "v" version))))
-              (file-name (git-file-name name version))
-              (sha256
-               (base32
-                "1k3ffl5h5jqnz9k9y5cjqr8z6hh0gyjfj4szggz11lncp5wkskgv"))))
-    (build-system copy-build-system)
-    (arguments
-     (list
-      #:install-plan
-      #~'(("pggb" "bin/")
-          ("partition-before-pggb" "bin/")
-          ("scripts/" "bin/")
-          ("scripts" "bin/scripts"))
-      #:phases
-      #~(modify-phases %standard-phases
-          (add-after 'unpack 'force-python3
-            (lambda _
-              (substitute* (find-files "scripts" "\\.py$")
-                (("/usr/bin/python") "/usr/bin/python3"))))
-          (add-before 'install 'patch-and-wrap-scripts
-            (lambda* (#:key inputs #:allow-other-keys)
-              (substitute* "scripts/vcf_preprocess.sh"
-                (("bcftools ")
-                 (string-append (search-input-file inputs "/bin/bcftools") " ")))
-              (wrap-script "scripts/net2communities.py"
-                           `("GUIX_PYTHONPATH" ":" prefix
-                             (,(getenv "GUIX_PYTHONPATH"))))))
-          (add-after 'install 'wrap-scripts
-            (lambda* (#:key inputs outputs #:allow-other-keys)
-              (let ((out (assoc-ref outputs "out")))
-                (for-each
-                 (lambda (file)
-                   (wrap-script file
-                                `("R_LIBS_SITE" ":" prefix
-                                  (,(getenv "R_LIBS_SITE")))
-                                `("PATH" ":" prefix
-                                  ,(map (lambda (input) (string-append input "/bin"))
-                                        '#$(map (lambda (label)
-                                                  (or (this-package-input (string-append label "-hwcaps"))
-                                                      (this-package-input label)))
-                                                (list "bc"
-                                                      "bcftools"
-                                                      "bedtools"
-                                                      "gfaffix"
-                                                      "htslib"
-                                                      "multiqc"
-                                                      "odgi"
-                                                      "parallel"
-                                                      "pigz"
-                                                      "python"
-                                                      "r-data-table"
-                                                      "r-minimal"
-                                                      "rtg-tools"
-                                                      "samtools"
-                                                      "seqwish"
-                                                      "smoothxg"
-                                                      "time"
-                                                      "vcfbub"
-                                                      "vg"
-                                                      "wfmash"))))))
-                 (list (string-append out "/bin/pggb")
-                       (string-append out "/bin/partition-before-pggb")
-                       (string-append out "/bin/gfa2evaluation.sh")
-                       (string-append out "/bin/scripts/gfa2evaluation.sh"))))))
-          (add-after 'install 'substitute-file-paths
-            (lambda* (#:key outputs #:allow-other-keys)
-              (let ((out (assoc-ref outputs "out")))
-                (substitute* (string-append out "/bin/gfa2evaluation.sh")
-                  (("/usr/local/bin/vcf_preprocess.sh")
-                   (string-append out "/bin/vcf_preprocess.sh"))
-                  (("/usr/local/bin/nucmer2vcf.R")
-                   (string-append out "/bin/nucmer2vcf.R")))))))))
-    (inputs
-     (list bc
-           bcftools
-           bedtools
-           gfaffix
-           guile-3.0                    ; for wrap-script
-           htslib                       ; tabix
-           multiqc
-           odgi
-           parallel
-           pigz
-           python
-           python-igraph
-           r-data-table
-           r-minimal
-           rtg-tools
-           samtools
-           seqwish
-           smoothxg
-           time
-           vcfbub
-           vg
-           wfmash-0.14))
-    (home-page "https://doi.org/10.1101/2023.04.05.535718")
-    (synopsis "PanGenome Graph Builder")
-    (description "@command{pggb} builds
-@url{https://doi.org/10.1146%2Fannurev-genom-120219-080406, pangenome}
-@url{https://doi.org/10.1038/nbt.4227, variation graphs} from a set of input
-sequences.
-A pangenome variation graph is a kind of generic multiple sequence alignment.
-It lets us understand any kind of sequence variation between a collection of
-genomes.  It shows us similarity where genomes walk through the same parts of
-the graph, and differences where they do not.
-@command{pggb} generates this kind of graph using an all-to-all alignment of
-input sequences (@url{https://github.com/waveygang/wfmash, wfmash}), graph
-induction (@url{https://doi.org/10.1101/2022.02.14.480413, seqwish}), and
-progressive normalization (@url{https://github.com/pangenome/smoothxg,
-smoothxg}, @url{https://github.com/marschall-lab/GFAffix, gfaffix}).  After
-construction, @command{pggb} generates diagnostic visualizations of the graph
-(@url{https://doi.org/10.1093/bioinformatics/btac308, odgi}).  A variant call
-report (in VCF) representing both small and large variants can be generated
-based on any reference genome included in the graph
-(@url{https://github.com/vgteam/vg, vg}).  @command{pggb} writes its output in
-@url{https://github.com/GFA-spec/GFA-spec/blob/master/GFA1.md, GFAv1} format,
-which can be used as input by numerous \"genome graph\" and pangenome tools,
-such as the @url{https://github.com/vgteam/vg, vg} and
-@url{https://doi.org/10.1093/bioinformatics/btac308, odgi} toolkits.
-@command{pggb} has been tested at scale in the @acronym{Human Pangenome
-Reference Consortium, HPRC} as a method to build a graph from the
-@url{https://doi.org/10.1101/2022.07.09.499321, draft human pangenome}.")
-    (license license:expat)))
-
-(define use-glibc-hwcaps
-  (package-input-rewriting/spec
-    ;; Replace some packages with ones built targeting custom packages build
-    ;; with glibc-hwcaps support.
-    `(;("gsl" . ,(const gsl-hwcaps))        ; Causes too many rebuilds through multiqc
-      ("sdsl-lite" . ,(const sdsl-lite-hwcaps))
-      ("seqwish" . ,(const seqwish-hwcaps))
-      ("odgi" . ,(const odgi-hwcaps))
-      ("wfmash" . ,(const wfmash-hwcaps)))))
-
-(define-public pggb-with-hwcaps
-  (package
-    (inherit (use-glibc-hwcaps pggb))
-    (name "pggb-with-hwcaps")))
-
-(define-public ucsc-genome-browser
-  (package
-    (name "ucsc-genome-browser")
-    (version "413")
-    (source (origin
-      (method git-fetch)
-      (uri (git-reference
-             (url "https://genome-source.gi.ucsc.edu/kent.git/")
-             (commit (string-append "v" version "_base"))))
-      (file-name (git-file-name name version))
-      (sha256
-       (base32 "1qcjhd4wcajik71z5347fw2sfhfkv0p6y7yldrrkmycw2qhqmpzn"))))
-    (build-system gnu-build-system)
-    (arguments
-     `(#:test-target "test"
-       #:parallel-tests? #f ; not supported
-       #:phases
-       (modify-phases %standard-phases
-         (delete 'configure) ; There is no configure phase.
-         (add-before 'build 'pre-build
-           (lambda* (#:key outputs #:allow-other-keys)
-             (let ((out (assoc-ref outputs "out")))
-               ;; Start by setting some variables.
-               (chdir "src")
-               (setenv "CC" ,(cc-for-target))
-               (setenv "HOME" (getcwd))
-
-               ;; And here we set the output directories
-               (setenv "CGI_BIN" (string-append out "/cgi-bin"))
-               (setenv "CGI_BIN_USER" (string-append out "/cgi-bin"))
-               (setenv "DOCUMENTROOT" (string-append out "/html"))
-               (setenv "DOCUMENTROOT_USER" (string-append out "/html"))
-               (setenv "BINDIR" (string-append out "/bin"))
-
-               ;; Now let's fix some errors:
-               (mkdir-p (string-append out "/cgi-bin"))
-               (substitute* "inc/cgi_build_rules.mk"
-                  (("rm -f.*") ""))
-               (substitute* (cons* "inc/cgi_build_rules.mk"
-                                   (find-files "." "makefile"))
-                  (("CGI_BIN\\}-\\$\\{USER") "CGI_BIN_USER"))
-
-               ;; Force linking with freetype.
-               (substitute* "inc/common.mk"
-                 (("libpng-config --ldflags") "pkg-config --libs libpng freetype2")
-                 (("libpng-config --I_opts") "pkg-config --cflags-only-I libpng freetype2")
-                 (("\\$\\{HG_INC\\}" hg_inc) (string-append hg_inc " -DUSE_FREETYPE")))
-
-               ;; Force the trash location.
-               (substitute* (cons*
-                              "utils/qa/showTracks"
-                              "webBlat/webBlat.cfg"
-                              "hg/js/hgTracks.js"
-                              (find-files "." "\\.c$"))
-                 ;; This line is specifically needed as-is.
-                 (("\\.\\./trash") "/var/cache/genome"))
-
-               #t)))
-
-         (add-before 'check 'pre-check
-           (lambda* (#:key outputs #:allow-other-keys)
-             (let ((out (assoc-ref outputs "out"))
-                   (triplet ,(gnu-triplet->nix-system (%current-system))))
-               (setenv "PATH" (string-append (getenv "PATH")
-                                             ":" out "/bin"))
-               (setenv "MACHTYPE"
-                       (string-take triplet (string-index triplet #\-)))
-               (for-each make-file-writable
-                         (find-files "utils/bedJoinTabOffset/tests"))
-               (substitute* '("utils/bamToPsl/tests/makefile"
-                              "utils/trackDbIndexBb/tests/makefile")
-                 (("/cluster/bin/bedtools/bedtools") (which "bedtools")))
-
-               ;; These tests fail intermittently:
-               (substitute* "utils/vcfFilter/tests/makefile"
-                 ((" testRenameNoGt ") " ")
-                 ((" testMinAc1NoGt ") " "))
-
-               ;; These tests can't find their database:
-               (substitute* "hg/lib/tests/makefile"
-                 ((" spDbTest ") " ")
-                 ((" hdbTest ") " "))
-               (substitute* "hg/lib/tests/genePredTests.mk"
-                 ((" tableTests ") " ")
-                 ((" compatTblTests ") " "))
-               (substitute* "hg/lib/tests/pslReaderTests.mk"
-                 ((" tableTests") " "))
-               (substitute* "hg/lib/tests/makefile"
-                 ((" annoGratorTest ") " ")
-                 ((" customTrackTest ") " ")
-                 ((" hgvsTest") " "))
-               (substitute* "hg/autoSql/tests/makefile"
-                 ((" dbLinkTest ") " ")
-                 ((" symColsTest ") " "))
-               (delete-file "hg/checkTableCoords/tests/makefile")
-               (delete-file "hg/hgGetAnn/tests/makefile")
-               (substitute* "hg/sqlToXml/makefile"
-                 ((".*doTest.*") ""))
-               (substitute* "hg/utils/genePredFilter/tests/makefile"
-                 ((" gencodeHackDbTest") " "))
-               (substitute* "hg/utils/refSeqGet/tests/makefile"
-                 (("^test::.*") "test:: mkout\n"))
-               (delete-file "hg/utils/vcfToHgvs/tests/makefile")
-               (substitute* "hg/bedItemOverlapCount/tests/makefile"
-                 ((".*RunTest.*") ""))
-
-               ;; Depends on /cluster
-               (substitute* "hg/liftOver/tests/makefile"
-                 (("^test:.*") "test: mkdirs scaffoldEndBug\n"))
-               (delete-file "hg/mouseStuff/netToAxt/tests/makefile")
-               (substitute* "hg/pslToChain/tests/makefile"
-                 ((" example1 ") " "))
-
-               ;; Depends on /gbdb
-               (delete-file "hg/mouseStuff/chainBridge/tests/makefile")
-
-               ;; Depends on /hive
-               (delete-file "hg/utils/genePredToProt/tests/makefile")
-
-               ;; Unclear why this fails
-               (delete-file "hg/utils/hgvsToVcf/tests/makefile")
-
-               ;; Wants network
-               (substitute* "hg/utils/hubCheck/tests/makefile"
-                 (("^test::.*") "test:: one two\n"))
-               #t)))
-
-         ;; Install happens during the 'build phase.
-         ;; Install the website files too
-         (replace 'install
-           (lambda _
-             (invoke "make" "doc-install")
-             #t))
-         (add-after 'install 'create-hg-conf
-           (lambda* (#:key outputs #:allow-other-keys)
-             (let ((out (assoc-ref outputs "out")))
-               (with-output-to-file (string-append out "/cgi-bin/hg.conf")
-                 (lambda ()
-                   (display
-                     "include /var/lib/genome/hg.conf\n")))
-               #t)))
-         (add-after 'install 'create-symlink
-           (lambda* (#:key inputs #:allow-other-keys)
-             (mkdir-p "htdocs")
-             ;; Fallback location for fonts.
-             (symlink (string-append (assoc-ref inputs "gs-fonts")
-                                     "/share/fonts/type1/ghostscript")
-                      "htdocs/urw-fonts")
-             #t)))))
-    (inputs
-     `(("freetype" ,freetype)
-       ("libpng" ,libpng)
-       ("mysql:dev" ,mariadb "dev")
-       ("mysql:lib" ,mariadb "lib")
-       ("openssl" ,openssl)
-       ("perl" ,perl)
-       ("python2" ,python-2)
-       ("zlib" ,zlib)))
-    (native-inputs
-     `(("bedtools" ,bedtools)
-       ("gs-fonts" ,gs-fonts)
-       ("pkg-config" ,pkg-config)
-       ("python" ,python)
-       ("rsync" ,rsync)    ; For installing js files from the source checkout
-       ("tcl" ,tcl)
-       ("tcsh" ,tcsh)
-       ("util-linux:lib" ,util-linux "lib")
-       ("which" ,(@ (gnu packages base) which))))
-    (home-page "https://www.genome.ucsc.edu/")
-    (synopsis "Structural variants detector for next-gen sequencing data")
-    (description
-     "The UCSC Genome Browser provides a rapid and reliable display of any
-requested portion of genomes at any scale, together with dozens of aligned
-annotation tracks (known genes, predicted genes, ESTs, mRNAs, CpG islands,
-assembly gaps and coverage, chromosomal bands, mouse homologies, and more).
-Half of the annotation tracks are computed at UCSC from publicly available
-sequence data.  The remaining tracks are provided by collaborators worldwide.
-Users can also add their own custom tracks to the browser for educational or
-research purposes.
-The Genome Browser stacks annotation tracks beneath genome coordinate positions,
-allowing rapid visual correlation of different types of information.  The user
-can look at a whole chromosome to get a feel for gene density, open a specific
-cytogenetic band to see a positionally mapped disease gene candidate, or zoom in
-to a particular gene to view its spliced ESTs and possible alternative splicing.
-The Genome Browser itself does not draw conclusions; rather, it collates all
-relevant information in one location, leaving the exploration and interpretation
-to the user.")
-    (license (list
-               ;; license:bsd-0    ; kent/src/{utils,lib,inc,tabStorm,parasol,hg/ausoSql,hg/autoXml}
-               license:bsd-3    ; these two for bundled htslib-1.3
-               license:expat
-               (license:non-copyleft
-                 "https://www.genome.ucsc.edu/license/"
-                 "Free for academic/non-profit/personal use only.")
-               (license:non-copyleft    ; Blat, In-Silico PCR
-                 "http://www.kentinformatics.com/index.html"
-                 "Free for universities and non-profit institutions.")))))
-
-(define htslib-1.14
-  (package/inherit htslib
-    (version "1.14")
-    (source (origin
-              (method url-fetch)
-              (uri (string-append
-                    "https://github.com/samtools/htslib/releases/download/"
-                    version "/htslib-" version ".tar.bz2"))
-              (sha256
-               (base32
-                "0pwk8yhhvb85mi1d2qhwsb4samc3rmbcrq7b1s0jz0glaa7in8pd"))))
-    (arguments
-     (substitute-keyword-arguments (package-arguments htslib)
-       ((#:configure-flags cf #~'())
-        #~(delete "--with-external-htscodecs" #$cf))))
-    (propagated-inputs
-     (modify-inputs (package-propagated-inputs htslib)
-       (delete "htscodecs")))))
-
-(define-public pbbam
-  (package
-    (name "pbbam")
-    (version "2.1.0")
-    (source (origin
-              (method git-fetch)
-              (uri (git-reference
-                    (url "https://github.com/PacificBiosciences/pbbam")
-                    (commit (string-append "v" version))))
-              (file-name (git-file-name name version))
-              (sha256
-               (base32
-                "1iyazi3l7dswpfxh39k5j7ydi0ywja0579xz3r6l9kkwz2n1z6dc"))))
-    (build-system meson-build-system)
-    (arguments
-     `(#:phases
-       (modify-phases %standard-phases
-         (add-after 'unpack 'patch-tests
-           (lambda* (#:key inputs #:allow-other-keys)
-             ;; Disable this test.  I tried fixing it by including
-             ;; optional_io.hpp, but there's a type error.
-             (substitute* "tests/src/meson.build"
-               (("'test_ReadGroupInfo.cpp',") ""))
-             #;
-             (substitute* "include/pbbam/ReadGroupInfo.h"
-               (("#include <boost/optional.hpp>" m)
-                (string-append m "\n#include <boost/optional/optional_io.hpp>")))
-             (substitute* '("tests/scripts/cram/_test.py"
-                            "tests/scripts/cram/_main.py")
-               (("'/bin/sh'")
-                (string-append "'" (which "sh") "'"))))))))
-    ;; These libraries are listed as "Required" in the pkg-config file.
-    (propagated-inputs
-     (list htslib-1.14 pbcopper zlib))
-    (inputs
-     (list boost samtools))
-    (native-inputs
-     (list googletest
-           pkg-config
-           python-wrapper)) ;for tests
-    (home-page "https://github.com/PacificBiosciences/pbbam")
-    (synopsis "Work with PacBio BAM files")
-    (description
-     "The pbbam software package provides components to create, query, and
-edit PacBio BAM files and associated indices.  These components include a core
-C++ library, bindings for additional languages, and command-line utilities.
-This library is not intended to be used as a general-purpose BAM utility - all
-input and output BAMs must adhere to the PacBio BAM format specification.
-Non-PacBio BAMs will cause exceptions to be thrown.")
-    (license license:bsd-3)))
-
-(define-public bam2fastx
-  (package
-    (name "bam2fastx")
-    (version "1.3.1")
-    (source
-      (origin
-        (method git-fetch)
-        (uri (git-reference
-               (url "https://github.com/PacificBiosciences/bam2fastx")
-               (commit version)))
-        (file-name (git-file-name name version))
-        (sha256
-         (base32
-          "0pyfmvh874w29kaq6gbb1bd86135qs2jc4f8giw98kxw1b2gjdh0"))))
-    (build-system meson-build-system)
-    (arguments
-     `(#:configure-flags '("-Dtests=true")))
-    (inputs
-     `(("boost" ,boost)
-       ;("htslib" ,htslib)
-       ("pbbam" ,pbbam)
-       ("pbcopper" ,pbcopper)
-       ("zlib" ,zlib)))
-    (native-inputs
-     `(("pkg-config" ,pkg-config)
-       ("python-cram" ,python-cram)
-       ("python-wrapper" ,python-wrapper)))
-    (home-page "https://github.com/PacificBiosciences/bam2fastx")
-    (synopsis "Converting and demultiplexing of PacBio BAM files into gzipped fasta and fastq files")
-    (description "Conversion of PacBio BAM files into gzipped fasta and fastq files, including splitting of barcoded data.")
-    (license license:bsd-3)))
-
-(define-public pbbam-1
-  (package
-    (name "pbbam")
-    (version "1.6.0")
-    (source (origin
-              (method git-fetch)
-              (uri (git-reference
-                    (url "https://github.com/PacificBiosciences/pbbam")
-                    (commit (string-append "v" version))))
-              (file-name (git-file-name name version))
-              (sha256
-               (base32
-                "1z3sh9cmrap37ijrm0cv85j92r1xkq6kba2j10mrr4fv7fc9zzfb"))))
-    (build-system meson-build-system)
-    ;; These libraries are listed as "Required" in the pkg-config file.
-    (propagated-inputs
-     `(("htslib" ,htslib)
-       ("pbcopper" ,pbcopper)
-       ("zlib" ,zlib)))
-    (inputs
-     `(("boost" ,boost)
-       ("samtools" ,samtools)))
-    (native-inputs
-     `(("cram" ,python-cram)
-       ("googletest" ,googletest)
-       ("pkg-config" ,pkg-config)
-       ("python" ,python-wrapper))) ; for tests
-    (home-page "https://github.com/PacificBiosciences/pbbam")
-    (synopsis "Work with PacBio BAM files")
-    (description
-     "The pbbam software package provides components to create, query, and
-edit PacBio BAM files and associated indices.  These components include a core
-C++ library, bindings for additional languages, and command-line utilities.
-This library is not intended to be used as a general-purpose BAM utility - all
-input and output BAMs must adhere to the PacBio BAM format specification.
-Non-PacBio BAMs will cause exceptions to be thrown.")
-    (license license:bsd-3)))
-
-(define-public pbcopper
-  (package
-    (name "pbcopper")
-    (version "1.9.1")
-    (source
-      (origin
-        (method git-fetch)
-        (uri (git-reference
-               (url "https://github.com/PacificBiosciences/pbcopper")
-               (commit (string-append "v" version))))
-        (file-name (git-file-name name version))
-        (sha256
-         (base32
-          "1pphklil5kn1ds796ch41bgvdf7yq03z6w5rgi572s8xg8k5b0xn"))))
-    (build-system meson-build-system)
-    (arguments
-     `(#:phases
-       (modify-phases %standard-phases
-         (add-after 'unpack 'patch-source
-           (lambda _
-             (substitute* "meson.build"
-               ;; uncomment when upstreaming
-               ;(("sse4\\.1") "nosse4.1")
-               (("v8\\.2-a") "v8-a"))
-             #t)))))
-    (inputs
-     `(("boost" ,boost)))
-    (native-inputs
-     `(("googletest" ,googletest)))
-    (home-page "https://github.com/PacificBiosciences/pbcopper")
-    (synopsis "Data structures, algorithms, and utilities for C++ applications")
-    (description "The pbcopper library provides a suite of data structures,
-algorithms, and utilities for PacBio C++ applications.")
-    (license license:bsd-3)))
-
-(define-public pbmm2
-  (package
-    (name "pbmm2")
-    (version "1.4.0")
-    (source
-      (origin
-        (method git-fetch)
-        (uri (git-reference
-               (url "https://github.com/PacificBiosciences/pbmm2")
-               (commit (string-append "v" version))))
-        (file-name (git-file-name name version))
-        (sha256
-         (base32
-          "0c01c647c7wvq5jzkf68xsf0bn8mlyw0hbz2fiyirxg7hj05jyac"))))
-    (build-system meson-build-system)
-    (arguments
-     `(#:tests? #f))    ; TODO: Fix later.
-    (inputs
-     `(("boost" ,boost)
-       ("htslib" ,htslib)
-       ("minimap2" ,minimap2-for-pbmm2)
-       ("pbbam" ,pbbam-1)
-       ("pbcopper" ,pbcopper)))
-    (native-inputs
-     `(("cram" ,python-cram)
-       ("googletest" ,googletest)
-       ("pkg-config" ,pkg-config)
-       ("samtools" ,samtools)
-       ("util-linux" ,util-linux)
-       ("zlib" ,zlib)))
-    (home-page "https://github.com/PacificBiosciences/pbmm2")
-    (synopsis "minimap2 frontend for PacBio native data formats")
-    (description "pbmm2 is a SMRT C++ wrapper for minimap2's C API.  Its purpose is to support native PacBio in- and output, provide sets of recommended parameters, generate sorted output on-the-fly, and postprocess alignments.  Sorted output can be used directly for polishing using GenomicConsensus, if BAM has been used as input to pbmm2.  Benchmarks show that pbmm2 outperforms BLASR in sequence identity, number of mapped bases, and especially runtime.  pbmm2 is the official replacement for BLASR.")
-    (license license:bsd-3)))
-
-(define minimap2-for-pbmm2
-  (package
-    (name "minimap2")
-    (version "2.17")
-    (source
-     (origin
-       (method git-fetch)
-       (uri (git-reference
-              (url "https://github.com/pacificbiosciences/minimap2")
-              (commit (string-append version "-meson"))))
-       (file-name (git-file-name "minimap2-for-pbmm2" version))
-       (sha256
-        (base32
-         "1833y6xdcblz7k4fyclryd6lwibsisp4svp2mk9w6ivk64icl6jq"))))
-    (build-system meson-build-system)
-    (inputs
-     `(("zlib" ,zlib)))
-    (native-inputs
-     `(("pkg-config" ,pkg-config)))
-    (home-page "https://lh3.github.io/minimap2/")
-    (synopsis "Pairwise aligner for genomic and spliced nucleotide sequences")
-    (description "Minimap2 is a versatile sequence alignment program that
-aligns DNA or mRNA sequences against a large reference database.  Typical use
-cases include:
-
-@enumerate
-@item mapping PacBio or Oxford Nanopore genomic reads to the human genome;
-@item finding overlaps between long reads with error rate up to ~15%;
-@item splice-aware alignment of PacBio Iso-Seq or Nanopore cDNA or Direct RNA
-  reads against a reference genome;
-@item aligning Illumina single- or paired-end reads;
-@item assembly-to-assembly alignment;
-@item full-genome alignment between two closely related species with
-  divergence below ~15%.
-@end enumerate\n")
-    (license license:expat)))
-
-;; 0.8.9 is the last version which supports python2.
-(define-public python2-bx-python
-  (let ((base (python2-package python-bx-python)))
-    (package
-      (inherit base)
-      (name "python2-bx-python")
-      (version "0.8.9")
-      (source (origin
-                ;; No cythonized files in the git repository.
-                (method git-fetch)
-                (uri (git-reference
-                      (url "https://github.com/bxlab/bx-python")
-                      (commit (string-append "v" version))))
-                (file-name (git-file-name name version))
-                (sha256
-                 (base32
-                  "0bsqnw8rv08586wksvx2a8dawvhyzvz5pzsh9y3217b6wxq98dnq"))))
-      (propagated-inputs
-       (modify-inputs (package-propagated-inputs base)
-         (append python2-six))))))
-
-(define-public hap.py
-  (package
-   (name "hap.py")
-   (version "0.3.14")
-   (source
-     (origin
-       (method git-fetch)
-       (uri (git-reference
-              (url "https://github.com/Illumina/hap.py")
-              (commit (string-append "v" version))))
-       (file-name (git-file-name name version))
-       (sha256
-        (base32 "1bnm7s86651p3zf6wahz5pic7n8416fx677kj47lwckr3syp2x1h"))
-       (modules '((guix build utils)))
-       (snippet
-        '(begin
-           (delete-file-recursively "external/bcftools.tar.gz")
-           (delete-file-recursively "external/boost_subset_1_58_0.tar.bz2")
-           (delete-file-recursively "external/htslib.tar.gz")
-           ;; TODO: Unbundle jsoncpp.
-           ;(delete-file-recursively "external/jsoncpp")
-           ;(delete-file-recursively "external/klib")
-           (delete-file-recursively "external/samtools.tar.gz")
-           (delete-file-recursively "external/virtualenv-12.0.7.tar.gz")
-           (delete-file-recursively "external/zlib-1.2.8.tar.gz")
-           #t))))
-   (build-system cmake-build-system)
-   (arguments
-    `(#:configure-flags (list "-DBUILD_VCFEVAL=ON")
-      #:phases
-      (modify-phases %standard-phases
-        (add-after 'unpack 'set-package-version
-          (lambda _
-            (substitute* "CMakeLists.txt"
-              (("git describe --tags --always")
-               (string-append "echo " ,version)))
-            #t))
-        ;; A shared library conflicts with boost-static.
-        ;; Not using boost-static causes linking errors.
-        ;(add-after 'unpack 'build-dynamic-library
-        ;  (lambda _
-        ;    (substitute* "src/c++/lib/CMakeLists.txt"
-        ;      (("STATIC") "SHARED"))
-        ;    #t))
-        (add-after 'unpack 'fix-build
-          (lambda* (#:key inputs #:allow-other-keys)
-            (let ((zlib     (assoc-ref inputs "zlib"))
-                  (bcftools (assoc-ref inputs "bcftools"))
-                  (boost    (assoc-ref inputs "boost"))
-                  (htslib   (assoc-ref inputs "htslib"))
-                  (samtools (assoc-ref inputs "samtools")))
-              (mkdir-p "external/bin")
-              (mkdir-p "external/lib")
-              (mkdir-p "external/include")
-              (mkdir-p "external/scratch/lib")
-
-              (substitute* "external/make_dependencies.sh"
-                (("zlib-1\\.2\\.8/libz\\.a") "lib/libz.so"))
-              (substitute* "src/cmake/FindHTSLib.cmake"
-                (("libhts\\.a") "libhts.so"))
-              (substitute* "CMakeLists.txt"
-                (("ZLIB_LIBRARIES .*\\)")
-                 (string-append "ZLIB_LIBRARIES \"" zlib "/lib/libz.so\")")))
-
-              (setenv "BOOST_ROOT" boost)
-              (setenv "LDFLAGS"
-                      (string-append "-L" (assoc-ref %build-inputs "htslib") "/lib"))
-
-              (symlink (string-append zlib "/lib/libz.so")
-                       "external/scratch/lib/libz.so")
-
-              (symlink (string-append htslib "/include/htslib")
-                       "external/include/htslib")
-              (symlink (string-append htslib "/lib/libhts.so")
-                       "external/lib/libhts.so")
-              (symlink (string-append htslib "/lib/libhts.so")
-                       "external/lib/libhts.so.3")
-
-              (symlink (string-append bcftools "/bin/bcftools")
-                       "external/bin/bcftools")
-              (symlink (string-append samtools "/bin/samtools")
-                       "external/bin/samtools")
-              #t)))
-        (add-after 'fix-build 'insert-rtg-tools
-          (lambda* (#:key inputs #:allow-other-keys)
-            (let ((rtg-tools (assoc-ref inputs "rtg-tools"))
-                  (dest      "external/libexec/rtg-tools-install"))
-              (mkdir-p (dirname dest))
-              (symlink rtg-tools dest)
-              #t)))
-        (replace 'configure
-          (lambda* (#:key outputs (configure-flags '()) (out-of-source? #t)
-                    build-type target
-                    #:allow-other-keys)
-                   "Configure the given package."
-                   (let* ((out        (assoc-ref outputs "out"))
-                          (abs-srcdir (getcwd))
-                          (srcdir     (if out-of-source?
-                                        (string-append "../" (basename abs-srcdir))
-                                        ".")))
-                     (format #t "source directory: ~s (relative from build: ~s)~%"
-                             abs-srcdir srcdir)
-                     (when out-of-source?
-                       (mkdir "../build")
-
-                       ;; Extra code added here!!
-                       (copy-recursively "external/scratch" "../build/scratch")
-                       (copy-recursively "external/libexec" "../build/libexec")
-                       (copy-recursively "external/lib" "../build/lib")
-                       (copy-recursively "external/bin" "../build/bin")
-                       (copy-recursively "external/include" "../build/include")
-
-                       (chdir "../build"))
-                     (format #t "build directory: ~s~%" (getcwd))
-
-                     (let ((args `(,srcdir
-                                    ,@(if build-type
-                                        (list (string-append "-DCMAKE_BUILD_TYPE="
-                                                             build-type))
-                                        '())
-                                    ,(string-append "-DCMAKE_INSTALL_PREFIX=" out)
-                                    ;; ensure that the libraries are installed into /lib
-                                    "-DCMAKE_INSTALL_LIBDIR=lib"
-                                    ;; add input libraries to rpath
-                                    "-DCMAKE_INSTALL_RPATH_USE_LINK_PATH=TRUE"
-                                    ;; add (other) libraries of the project itself to rpath
-                                    ,(string-append "-DCMAKE_INSTALL_RPATH=" out "/lib")
-                                    ;; enable verbose output from builds
-                                    "-DCMAKE_VERBOSE_MAKEFILE=ON"
-
-                                    ;;  Cross-build
-                                    ,@(if target
-                                        (list (string-append "-DCMAKE_C_COMPILER="
-                                                             target "-gcc")
-                                              (string-append "-DCMAKE_CXX_COMPILER="
-                                                             target "-g++")
-                                              (if (string-contains target "mingw")
-
-                                                "-DCMAKE_SYSTEM_NAME=Windows"
-                                                "-DCMAKE_SYSTEM_NAME=Linux"))
-                                        '())
-                                    ,@configure-flags)))
-                       (format #t "running 'cmake' with arguments ~s~%" args)
-                       (apply invoke "cmake" args)))))
-        (replace 'check
-          (lambda* (#:key tests? #:allow-other-keys)
-            (when tests?
-              (invoke "./bin/test_haplotypes"))
-            #t))
-        (add-before 'install 'remove-extra-files
-          (lambda _
-            (delete-file "bin/bcftools")
-            (delete-file "bin/samtools")
-            (delete-file "bin/test_haplotypes")
-            (delete-file "lib/libhts.so")
-            (delete-file "lib/libhts.so.3")
-            #t))
-        (add-after 'install 'wrap-programs
-          (lambda* (#:key inputs outputs #:allow-other-keys)
-            (let ((out      (assoc-ref outputs "out"))
-                  (bcftools (assoc-ref inputs "bcftools"))
-                  (samtools (assoc-ref inputs "samtools")))
-              (for-each
-                (lambda (file)
-                  (wrap-script file
-                    `("GUIX_PYTHONPATH" ":" prefix (,(getenv "GUIX_PYTHONPATH")))
-                    `("PATH" ":" prefix (,(string-append bcftools "/bin")
-                                         ,(string-append samtools "/bin")))))
-                (find-files (string-append out "/bin") "\\.py$"))
-              #t))))))
-   (inputs
-    `(("bcftools" ,bcftools)
-      ("boost" ,boost-static)   ; has to be boost-static
-      ("guile" ,guile-3.0)      ; for wrap-script
-      ("htslib" ,htslib)
-      ;; The software specifically states python-2.
-      ("python" ,python-2)
-      ("python2-bx-python" ,python2-bx-python)
-      ("python2-numpy" ,python2-numpy)
-      ("python2-pandas" ,python2-pandas)
-      ("python2-pysam" ,(python2-package python-pysam))
-      ("python2-scipy" ,python2-scipy)
-      ("rtg-tools" ,rtg-tools)
-      ("samtools" ,samtools)
-      ("zlib" ,zlib)))
-   (home-page "https://github.com/Illumina/hap.py")
-   (synopsis "Haplotype VCF comparison tools")
-   (description
-    "This is a set of programs based on htslib to benchmark variant calls
-against gold standard truth datasets.
-
-The main two tools are @code{hap.py} (diploid precision/recall evaluation) and
-@code{som.py} (somatic precision/recall evaluation -- this ignores the GT and
-just checks for presence of alleles).  Other tools are @code{qfy.py} (which just
-executes the quantification step of the analysis pipeline, this requires a
-GA4GH-intermediate VCF file), and @code{pre.py}, which is @code{hap.py}'s input
-cleaning and variant normalisation step.
-
-To run the bundled rtg-tools software you will also need java.  The
-@code{icedtea:jdk} output should work nicely.")
-   (license (list license:expat     ; bundled jsoncpp, klib
-                  license:bsd-2))))
-
-;; TODO:
-;; Unbundle gatb-core.
-(define-public minia
-  (package
-    (name "minia")
-    (version "3.2.6")
-    (source
-      (origin
-        (method url-fetch)
-        (uri (string-append "https://github.com/GATB/minia/releases"
-                            "/download/v" version
-                            "/minia-v" version "-Source.tar.gz"))
-        (sha256
-         (base32 "03zg1jh0yjw7546kax8xs0zwiqhaiqz044409jc3ss6nj968ay70"))))
-    (build-system cmake-build-system)
-    (arguments
-     `(#:tests? #f          ; Tests are expected to be run manually.
-       #:configure-flags '("-DNO_SSE=ON")   ; Can be removed after unbundling gatb-core.
-       #:phases
-       (modify-phases %standard-phases
-         (add-after 'install 'remove-cruft
-           (lambda* (#:key outputs #:allow-other-keys)
-             (let ((out (assoc-ref outputs "out")))
-               (with-directory-excursion out
-                 (delete-file-recursively "lib")
-                 (delete-file-recursively "test")
-                 (delete-file "bin/h5cc")
-                 (delete-file "LICENSE")
-                 (delete-file "README.md")
-                 #t)))))))
-    (inputs
-     `(("zlib" ,zlib)))
-    (home-page "https://gatb.inria.fr/software/minia")
-    (synopsis "Short-read assembler based on a de Bruijn graph")
-    (description "Minia is a short-read assembler based on a de Bruijn graph,
-capable of assembling a human genome on a desktop computer in a day.  The output
-of Minia is a set of contigs.  Back when it was released, Minia produced results
-of similar contiguity and accuracy to other de Bruijn assemblers (e.g. Velvet).")
-    (license license:agpl3+)))
-
-(define-public metaeuk
-  (package
-    (name "metaeuk")
-    (version "5-34c21f2")       ; As seen upstream.
-    (source (origin
-              (method git-fetch)
-              (uri (git-reference
-                     (url "https://github.com/soedinglab/metaeuk")
-                     (commit version)
-                     (recursive? #t)))      ; Only contains the tests.
-              (file-name (git-file-name name version))
-              (sha256
-               (base32 "0pqiqy3wycn9h3y699b5drd3y4zmz087bwgdxx6wbbqqipa6wk0j"))
-              (modules '((guix build utils)))
-              (snippet
-               '(begin
-                  ;(delete-file-recursively "lib/mmseqs/lib/gzstream")
-                  (delete-file-recursively "lib/mmseqs/lib/simde")
-                  (delete-file-recursively "lib/mmseqs/lib/xxhash")
-                  (delete-file-recursively "lib/mmseqs/lib/zstd")))))
-    (build-system cmake-build-system)
-    (arguments
-     `(#:configure-flags '("-DUSE_SYSTEM_ZSTD=YES")
-       #:substitutable? #f      ; We want the native build.
-       #:phases
-       (modify-phases %standard-phases
-         (add-after 'unpack 'use-shared-libraries
-           (lambda* (#:key inputs #:allow-other-keys)
-             (substitute* "lib/mmseqs/CMakeLists.txt"
-               (("libzstd\\.a") "libzstd.so")
-               (("libzstd_static") "libzstd_shared")
-               ;(("lib/gzstream")
-               ; (string-append (assoc-ref inputs "gzstream") "/include"))
-               (("lib/xxhash")
-                (string-append (assoc-ref inputs "xxhash") "/include"))
-               (("lib/simde")
-                (string-append (assoc-ref inputs "simde") "/include/simde")))
-             #t))
-         (replace 'check
-           (lambda* (#:key tests? #:allow-other-keys)
-             (when tests?
-               (with-directory-excursion "../source/tests"
-                 (invoke "./run.sh" "../../build/src/metaeuk"))))))))
-    (inputs
-     `(("bzip2" ,bzip2)
-       ("zlib" ,zlib)
-       ("zstd:lib" ,zstd "lib")))
-    (native-inputs
-     `(;("gzstream" ,gzstream)
-       ("perl" ,perl)
-       ("simde" ,simde)
-       ("xxd" ,xxd)
-       ("xxhash" ,xxhash)))
-    (home-page "https://github.com/soedinglab/metaeuk")
-    (synopsis
-     "Gene discovery and annotation for large-scale eukaryotic metagenomics")
-    (description
-     "MetaEuk is a modular toolkit designed for large-scale gene discovery and
-annotation in eukaryotic metagenomic contigs.  MetaEuk combines the fast and
-sensitive homology search capabilities of
-@url{https://github.com/soedinglab/MMseqs2, MMseqs2} with a dynamic programming
-procedure to recover optimal exons sets.  It reduces redundancies in multiple
-discoveries of the same gene and resolves conflicting gene predictions on the
-same strand.")
-    (license license:gpl3)))
-
-(define-public augustus
-  (package
-    (name "augustus")
-    (version "3.4.0")
-    (source (origin
-              (method git-fetch)
-              (uri (git-reference
-                     (url "https://github.com/Gaius-Augustus/Augustus")
-                     (commit (string-append "v" version))))
-              (file-name (git-file-name name version))
-              (sha256
-               (base32 "1nc4nddcxi98fb14vmgj7x5aw5vglm4amzraqibgzmigpqnca68f"))))
-    (build-system gnu-build-system)
-    (arguments
-     `(#:make-flags (list (string-append "CC=" ,(cc-for-target))
-                          (string-append "CXX=" ,(cxx-for-target)))
-       #:phases
-       (modify-phases %standard-phases
-         (delete 'configure)    ; No configure script
-         (add-after 'unpack 'adjust-sources
-           (lambda* (#:key inputs #:allow-other-keys)
-             (substitute* "common.mk"
-               ;; Has the wrong version.
-               (("AUGVERSION = .*")
-                (string-append "AUGVERSION = " ,version "\n"))
-               ;; Looks for ancient version of mysql.
-               (("COMPGENEPRED = ")
-                "SQLITE=true\nMYSQL = false\nCOMPGENEPRED = "))
-             (substitute* "src/Makefile"
-               (("/usr/include/lpsolve")
-                (string-append (assoc-ref inputs "lpsolve") "/include/lpsolve")))
-             (substitute* (find-files "auxprogs" "Makefile")
-               (("/usr/include/bamtools")
-                (string-append (assoc-ref inputs "bamtools") "/include/bamtools"))
-               (("/usr/include/htslib")
-                (string-append (assoc-ref inputs "htslib") "/include/htslib"))
-               (("/usr/include/boost")
-                (string-append (assoc-ref inputs "boost") "/include/boost")))
-             #t))
-         (replace 'check
-           (lambda args
-             ;; These tests rely on mysql.
-             ;(apply (assoc-ref %standard-phases 'check)
-             ;       `(,@args #:test-target "unit_test"))
-             (apply (assoc-ref %standard-phases 'check)
-                    `(,@args #:test-target "test"))))
-         (replace 'install
-           (lambda* (#:key outputs #:allow-other-keys)
-             (let* ((out (assoc-ref outputs "out"))
-                    (bin (string-append out "/bin"))
-                    (share (string-append out "/share/augstus"))
-                    (scripts (string-append share "/scripts")))
-               ;; Install targets taken from Debian.
-               (install-file "auxprogs/bam2wig/bam2wig" bin)
-               (install-file "auxprogs/compileSpliceCands/compileSpliceCands" bin)
-               (install-file "auxprogs/homGeneMapping/src/homGeneMapping" bin)
-               (install-file "auxprogs/joingenes/joingenes" bin)
-               (mkdir-p scripts)
-               (copy-recursively "scripts" scripts)
-               (copy-recursively "config" share)
-               (with-directory-excursion "scripts"
-                 (for-each delete-file (cons "executeTestCGP.py"
-                                             (find-files "." "\\.txt$"))))
-               (for-each make-file-writable (find-files out "\\.gz$"))
-               #t))))))
-    (inputs
-     `(("boost" ,boost)
-       ("htslib" ,htslib)
-       ("perl" ,perl)
-       ("python" ,python)
-       ("sqlite" ,sqlite)
-       ("zlib" ,zlib)))
-    (native-inputs
-     `(("bamtools" ,bamtools)
-       ("gsl" ,gsl)
-       ("gzip" ,gzip)
-       ("lpsolve" ,lpsolve)
-       ("samtools" ,samtools)
-       ("suitesparse" ,suitesparse)))
-    (home-page "http://bioinf.uni-greifswald.de/webaugustus/")
-    (synopsis "Genome annotation with AUGUSTUS")
-    (description "Augustus can be used as an ab initio program, which means it
-bases its prediction purely on the sequence.  AUGUSTUS may also incorporate
-hints on the gene structure coming from extrinsic sources such as EST, MS/MS,
-protein alignments and syntenic genomic alignments.")
-    (license (license:non-copyleft
-               "https://opensource.org/licenses/artistic-license-1.0"
-               "Artistic-license-1.0"))))
-
-(define-public pplacer
-  (let ((commit "807f6f3"))
-    (build-with-ocaml4.07
-     (package
-       (name "pplacer")
-       ;; The commit should be updated with each version change.
-       (version "1.1.alpha19")
-       (source
-        (origin
-          (method git-fetch)
-          (uri (git-reference
-                (url "https://github.com/matsen/pplacer")
-                (commit (string-append "v" version))))
-          (file-name (git-file-name name version))
-          (sha256
-           (base32 "11ppbbbx20p2g9wj3ff64dhnarb12q79v7qh4rk0gj6lkbz4n7cn"))))
-       (build-system ocaml-build-system)
-       (arguments
-        (list
-         #:modules '((guix build ocaml-build-system)
-                     (guix build utils)
-                     (ice-9 ftw))
-         #:phases
-         #~(modify-phases %standard-phases
-             (delete 'configure)
-             (add-after 'unpack 'fix-build-with-latest-ocaml
-               (lambda _
-                 (substitute* "myocamlbuild.ml"
-                   (("dep \\[\"c_pam\"\\]" m)
-                    (string-append "flag [\"ocaml\"; \"compile\"] (A \"-unsafe-string\");\n"
-                                   m))
-                   (("let run_and_read" m)
-                    (string-append "
-let split s ch =
-  let x = ref [] in
-  let rec go s =
-    let pos = String.index s ch in
-    x := (String.before s pos)::!x;
-    go (String.after s (pos + 1))
-  in
-  try go s
-  with Not_found -> !x
-let split_nl s = split s '\\n'
-let before_space s =
-  try String.before s (String.index s ' ')
-  with Not_found -> s
-
-" m))
-                   (("run_and_read \"ocamlfind list \\| cut -d' ' -f1\"" m)
-                    (string-append "List.map before_space (split_nl & " m ")"))
-                   (("    blank_sep_strings &") "")
-                   (("      Lexing.from_string &") ""))))
-             (add-after 'unpack 'replace-bundled-cddlib
-               (lambda* (#:key inputs #:allow-other-keys)
-                 (let* ((cddlib-src (assoc-ref inputs "cddlib-src"))
-                        (local-dir "cddlib_guix"))
-                   (mkdir local-dir)
-                   (with-directory-excursion local-dir
-                     (invoke "tar" "xvf" cddlib-src))
-                   (let ((cddlib-src-folder
-                          (string-append local-dir "/"
-                                         (list-ref (scandir local-dir) 2)
-                                         "/lib-src")))
-                     (for-each make-file-writable (find-files "cdd_src" ".*"))
-                     (for-each
-                      (lambda (file)
-                        (copy-file file
-                                   (string-append "cdd_src/" (basename file))))
-                      (find-files cddlib-src-folder ".*[ch]$"))))))
-             (add-after 'unpack 'fix-makefile
-               (lambda _
-                 ;; Remove system calls to 'git'.
-                 (substitute* "Makefile"
-                   (("^DESCRIPT:=pplacer-.*")
-                    (string-append
-                     "DESCRIPT:=pplacer-$(shell uname)-v" ,version "\n")))
-                 (substitute* "myocamlbuild.ml"
-                   (("git describe --tags --long .*\\\" with")
-                    (string-append
-                     "echo -n v" ,version "-" ,commit "\" with")))))
-             (replace 'install
-               (lambda* (#:key outputs #:allow-other-keys)
-                 (let* ((out (assoc-ref outputs "out"))
-                        (bin (string-append out "/bin")))
-                   (copy-recursively "bin" bin)))))
-         #:ocaml ocaml-4.07
-         #:findlib ocaml4.07-findlib))
-       (inputs
-        (list (list zlib "static")
-              (list gsl "static")
-              (package-with-ocaml4.07 ocaml-ounit)
-              (package-with-ocaml4.07 ocaml-batteries)
-              (package-with-ocaml4.07 camlzip)
-              (package-with-ocaml4.07 ocaml-csv)
-              (package-with-ocaml4.07 ocaml-sqlite3)
-              (package-with-ocaml4.07 ocaml-xmlm)
-              (package-with-ocaml4.07 ocaml-mcl)
-              ocaml4.07-gsl-1
-              (list sqlite "static")))
-       (native-inputs
-        (list (package-source cddlib)
-              (package-with-ocaml4.07 ocamlbuild)
-              pkg-config))
-       (propagated-inputs
-        (list pplacer-scripts))
-       (synopsis "Phylogenetic placement of biological sequences")
-       (description
-        "Pplacer places query sequences on a fixed reference phylogenetic tree
-to maximize phylogenetic likelihood or posterior probability according to a
-reference alignment.  Pplacer is designed to be fast, to give useful
-information about uncertainty, and to offer advanced visualization and
-downstream analysis.")
-       (home-page "https://matsen.fhcrc.org/pplacer/")
-       (license license:gpl3)))))
-
-(define-public python2-biopython
-  (python2-package python-biopython))
-
-;; This package is installed alongside 'pplacer'.  It is a separate package so
-;; that it can use the python-build-system for the scripts that are
-;; distributed alongside the main OCaml binaries.
-(define pplacer-scripts
-  (package
-    (inherit pplacer)
-    (name "pplacer-scripts")
-    (build-system python-build-system)
-    (arguments
-     `(#:python ,python-2
-       #:phases
-       (modify-phases %standard-phases
-         (add-after 'unpack 'enter-scripts-dir
-           (lambda _ (chdir "scripts")))
-         (replace 'check
-           (lambda* (#:key tests? #:allow-other-keys)
-             (when tests?
-               (invoke "python" "-m" "unittest" "discover" "-v"))))
-         (add-after 'install 'wrap-executables
-           (lambda* (#:key inputs outputs #:allow-other-keys)
-             (let* ((out (assoc-ref outputs "out"))
-                    (bin (string-append out "/bin"))
-                    (path (string-append
-                            (assoc-ref inputs "hmmer") "/bin:"
-                            (assoc-ref inputs "infernal") "/bin")))
-               (display path)
-               (wrap-program (string-append bin "/refpkg_align.py")
-                 `("PATH" ":" prefix (,path)))
-               (wrap-program (string-append bin "/hrefpkg_query.py")
-                 `("PATH" ":" prefix (,path)))))))))
-    (inputs
-     `(("infernal" ,infernal)
-       ("hmmer" ,hmmer)))
-    (propagated-inputs
-     `(("python-biopython" ,python2-biopython)
-       ("taxtastic" ,taxtastic)))
-    (synopsis "Pplacer Python scripts")))
-
-(define-public sepp
-  (package
-    (name "sepp")
-    (version "4.5.1")
-    (source (origin
-              (method git-fetch)
-              (uri (git-reference
-                     (url "https://github.com/smirarab/sepp")
-                     (commit version)))
-              (file-name (git-file-name name version))
-              (sha256
-               (base32 "1bw5gjhymq0a4slkk7pr5dl4jb9bnwv4qpn26mvwp8fx3aszvmij"))
-              (modules '((guix build utils)))
-              (snippet
-               '(begin
-                  (delete-file-recursively "tools/bundled")
-                  (mkdir-p "tools/bundled/Linux")
-                  (for-each (lambda (file)
-                              (with-output-to-file
-                                (string-append "tools/bundled/Linux/" file)
-                                (lambda _
-                                  (format #t ""))))
-                            '("guppy-32" "guppy-64"
-                              "hmmalign-32" "hmmalign-64"
-                              "hmmbuild-32" "hmmbuild-64"
-                              "hmmsearch-32" "hmmsearch-64"
-                              "pplacer-32" "pplacer-64"))
-                  ;; TODO: Rebuild java blob.
-                  ;(delete-file-recursively "tools/merge/lib")
-                  ;(delete-file "tools/merge/seppJsonMerger.jar")
-                  ;; This is a circular reference to the top directory ...
-                  (delete-file-recursively "sepp-package/sepp")))))
-    (build-system python-build-system)
-    (arguments
-     `(#:tests? #f      ; Test suite hangs.
-       #:phases
-       (modify-phases %standard-phases
-         (add-before 'check 'pre-check
-           (lambda* (#:key tests? inputs outputs #:allow-other-keys)
-             (let ((hmmer   (string-append (assoc-ref inputs "hmmer") "/bin/"))
-                   (pplacer (string-append (assoc-ref inputs "pplacer") "/bin/"))
-                   (tools   "tools/bundled/Linux/"))
-               (for-each
-                 (lambda (target package)
-                   (delete-file (string-append tools target))
-                   (symlink (string-append package (string-drop-right target 3))
-                            (string-append tools target)))
-                 (list "guppy-32" "guppy-64"
-                       "hmmalign-32" "hmmalign-64"
-                       "hmmbuild-32" "hmmbuild-64"
-                       "hmmsearch-32" "hmmsearch-64"
-                       "pplacer-32" "pplacer-64")
-                 (list pplacer pplacer
-                       hmmer hmmer
-                       hmmer hmmer
-                       hmmer hmmer
-                       pplacer pplacer))
-               #t)))
-         (replace 'check
-           (lambda* (#:key tests? inputs outputs #:allow-other-keys)
-             (when tests?
-               (add-installed-pythonpath inputs outputs)
-               ;; This test is upset we removed the Darwin binary.
-               (delete-file "test/unittest/testConfig.py")
-               ;; This test is missing its config file.
-               (delete-file "test/unittest/testUPP.py")
-               (invoke "nosetests" "-w" "test/unittest"))))
-         (replace 'build
-           (lambda* (#:key outputs #:allow-other-keys)
-             (let* ((out       (assoc-ref outputs "out"))
-                    (home.path (string-append out "/share/sepp")))
-               (setenv "HOME" home.path)
-               (mkdir-p (string-append home.path "/.sepp"))
-               ;; configure with '-c' so our pretend bundled
-               ;; libraries aren't actually installed.
-               (invoke "python" "setup.py" "config" "-c")
-               #t)))
-         (add-after 'install 'copy-home.path
-           (lambda* (#:key inputs outputs #:allow-other-keys)
-             (let* ((out       (assoc-ref outputs "out"))
-                    (home.path (string-append out "/share/sepp")))
-               (with-output-to-file (string-append out "/home.path")
-                 (lambda _
-                   (format #t "~a/.sepp"
-                           home.path)))
-               (with-output-to-file (string-append home.path "/.sepp/main.config")
-                 (lambda _
-                   (format #t "[pplacer]~@
-                           path=~a/bin/pplacer~@
-                           ~@
-                           [hmmalign]~@
-                           path=~a/bin/hmmalign~@
-                           ~@
-                           [hmmsearch]~@
-                           path=~a/bin/hmmsearch~@
-                           piped=False~@
-                           elim=10000~@
-                           filters=True~@
-                           ~@
-                           [hmmbuild]~@
-                           path=~a/bin/hmmbuild~@
-                           ~@
-                           [jsonmerger]~@
-                           path=~a/share/sepp/seppJsonMerger.jar~@
-                           ~@
-                           [exhaustive]~@
-                           strategy = centroid~@
-                           minsubsetsize = 2~@
-                           placementminsubsetsizefacotr = 4~@
-                           placer = pplacer~@
-                           weight_placement_by_alignment = True~%"
-                           (assoc-ref inputs "pplacer")
-                           (assoc-ref inputs "hmmer")
-                           (assoc-ref inputs "hmmer")
-                           (assoc-ref inputs "hmmer")
-                           out)))
-               (install-file "tools/merge/seppJsonMerger.jar"
-                             home.path)
-               (copy-file (string-append out "/home.path")
-                          (string-append (site-packages inputs outputs) "/home.path"))
-               #t))))))
-    (inputs
-     `(("hmmer" ,hmmer)
-       ("java" ,icedtea-8)
-       ("pplacer" ,pplacer)
-       ("python-dendropy" ,python-dendropy)))
-    (native-inputs
-     `(("python-nose" ,python-nose)))
-    (home-page "https://github.com/smirarab/sepp")
-    (synopsis "SATe enabled phylogenetic placement")
-    (description "SEPP operates by using a divide-and-conquer strategy adopted
-from SATe-II (@url{Liu et al. (Systematic Biology 2012),
-http://sysbio.oxfordjournals.org/content/61/1/90.full.pdf+html?sid=dd32838d-89dc-4bda-8008-6f948146341f}
-and @url{Liu et. al. (Science 2009),
-http://www.sciencemag.org/content/324/5934/1561.abstract}) to construct an
-Ensemble of @acronym{HMMs, Hidden Markov Models} to represent the input
-multiple sequence alignment `A`.  It then computes the fit of each query
-sequence in `X` to each HMM in the ensemble, and uses the highest scoring HMM to
-add the sequence to the input tree `T`.  This technique improves the accuracy of
-the placements of the query sequences compared to using a single HMM to
-represent the input alignment.  SEPP uses tools in HMMER to construct HMMs,
-compute the fit of sequences to HMMs, and add sequences to the alignment `A`.
-SEPP uses @code{pplacer} to add query sequences to the input tree `T`, after
-they are added to the alignment `A`.  SEPP is also used in other software,
-including @acronym{TIPP, taxonomic identical using phylogenetic placement} and
-@acronym{UPP, ultra-large alignments using phylogeny-aware profiles}.")
-    (license license:gpl3+)))
-
-(define-public busco
-  (package
-    (name "busco")
-    (version "5.4.1")
-    (source (origin
-              (method git-fetch)
-              (uri (git-reference
-                     (url "https://gitlab.com/ezlab/busco")
-                     (commit version)))
-              (file-name (git-file-name name version))
-              (sha256
-               (base32 "0fnijr7q9jj8hq3q5v0jd73zcznqrg72idr3lmchx7x2c66mb9dz"))))
-    (build-system python-build-system)
-    (arguments
-     '(#:phases
-       (modify-phases %standard-phases
-         (replace 'check
-           (lambda* (#:key inputs outputs tests? #:allow-other-keys)
-             (when tests?
-               (begin (add-installed-pythonpath inputs outputs)
-                      (invoke "python" "setup.py" "check")))))
-         (add-after 'install 'wrap-binary
-           (lambda* (#:key inputs outputs #:allow-other-keys)
-             (let ((out (assoc-ref outputs "out")))
-               (wrap-program (string-append out "/bin/busco")
-                 `("PATH" ":" prefix
-                   (,(string-append (assoc-ref inputs "augustus") "/bin")
-                     ,(string-append (assoc-ref inputs "blast") "/bin")
-                     ,(string-append (assoc-ref inputs "hmmer") "/bin")
-                     ,(string-append (assoc-ref inputs "metaeuk") "/bin")
-                     ,(string-append (assoc-ref inputs "prodigal") "/bin")
-                     ,(string-append (assoc-ref inputs "r") "/bin")
-                     ,(string-append (assoc-ref inputs "sepp") "/bin"))))))))))
-    (inputs
-     `(("augustus" ,augustus)
-       ("blast" ,blast+)
-       ("hmmer" ,hmmer)
-       ("metaeuk" ,metaeuk)
-       ("prodigal" ,prodigal)
-       ("python-biopython" ,python-biopython)
-       ("python-pandas" ,python-pandas)
-       ("r" ,r)
-       ("sepp" ,sepp)))
-    (home-page "https://busco.ezlab.org/")
-    (synopsis "Assess genome assembly and annotation completeness")
-    (description "Assess genome assembly and annotation completeness with
-Benchmarking Universal Single-Copy Orthologs.")
-    (license license:expat)))
-
-(define-public mutation-simulator
-  (let ((commit "9cb6bd2acf8201151bc610be14963e65b41d8899")     ; March 25, 2021
-        (revision "1"))
-    (package
-      (name "mutation-simulator")
-      (version (git-version "2.0.3" revision commit))
-      (source (origin
-                (method git-fetch)
-                (uri (git-reference
-                       (url "https://github.com/mkpython3/mutation-simulator")
-                       (commit commit)))
-                (file-name (git-file-name name version))
-                (sha256
-                 (base32 "1yxn5v5x804rm5ra1srmnph468yk7amsgfsj6h20rd6nmj2j0g9c"))))
-      (build-system copy-build-system)
-      (arguments
-       `(#:install-plan
-         '(("mutation-simulator.py" "bin/"))
-         #:phases
-         (modify-phases %standard-phases
-           (add-after 'install 'wrap-script
-             (lambda* (#:key outputs #:allow-other-keys)
-               (let* ((out (assoc-ref outputs "out"))
-                      (script (string-append out "/bin/mutation-simulator.py")))
-                 ;; wrap-script doesn't accept arguments
-                 (wrap-program script
-                   `("PYTHONPATH" ":" prefix (,(getenv "PYTHONPATH"))))
-                 (chmod script #o555)
-                 ;; When using wrap-script.
-                 (when (file-exists?
-                         (string-append out "/bin/.mutation-simulator.py-real"))
-                   (chmod (string-append out "/bin/.mutation-simulator.py-real")
-                          #o555))
-                 #t)))
-           (add-after 'wrap-script 'check
-             (lambda* (#:key tests? outputs #:allow-other-keys)
-               (when tests?
-                 (invoke (string-append (assoc-ref outputs "out")
-                                        "/bin/mutation-simulator.py")
-                         "Test/test.fa" "rmt" "Test/test.rmt")))))))
-      (inputs
-       `(("bash" ,bash-minimal)                         ; for wrap-program
-         ;("guile" ,(@ (gnu packages guile) guile-3.0))  ; for wrap-script
-         ("python" ,python)
-         ("python-blist" ,python-blist)
-         ("python-pyfaidx" ,python-pyfaidx)
-         ("python-numpy" ,python-numpy)
-         ("python-tqdm" ,python-tqdm)))
-      (home-page "https://github.com/mkpython3/mutation-simulator")
-      (synopsis "Simulate mutations on given fasta files")
-      (description "Mutation-Simulator is a Python tool for simulating SNPs and
-SVs in any reference genome with cohesive documentation about implemented
-mutations.  With Mutation-Simulator, the new file format @acronym{RMT, Random
-Mutation Tables} is introduced, which gives more simulation power to the user by
-creating an interface for more natural simulations within specific genomes.
-Mutation-Simulator provides 3 different modes to simulate SNPs, insertions,
-deletions, tandem duplications, inversions, translocations and interchromosomal
-translocations from the commandline or with highly configureable RMT files.")
-      (license license:gpl3+))))
-
-(define-public python-blist
-  (package
-    (name "python-blist")
-    (version "1.3.6")
-    (source
-      (origin
-        (method url-fetch)
-        (uri (pypi-uri "blist" version))
-        (sha256
-         (base32 "1hqz9pqbwx0czvq9bjdqjqh5bwfksva1is0anfazig81n18c84is"))
-        (patches (search-patches "blist-stopiteration.patch"))))
-    (build-system python-build-system)
-    (home-page "http://stutzbachenterprises.com/blist/")
-    (synopsis "List-like type for Python with better asymptotic performance")
-    (description
-     "This package provides a list-like type for Python with better asymptotic
-performance and similar performance on small lists.")
-    (license license:bsd-3)))
-
-(define-public verkko
-  (let ((commit "9323e71f46b0ea1725202ebe911142d0d1288c45")     ; Jan 22, 2022
-        (revision "1"))
-    (package
-      (name "verkko")
-      (version (git-version "1.0_beta" revision commit))
-      (source (origin
-                (method git-fetch)
-                (uri (git-reference
-                       (url "https://github.com/marbl/verkko")
-                       (commit commit)
-                       (recursive? #t)))    ; Needs canu
-                (file-name (git-file-name name version))
-                (sha256
-                 (base32 "0pb66mlz8r9hrvlcfw9zwxqzzns7221pm2z9mrjisvniwq8ggqmh"))))
-      (build-system gnu-build-system)
-      (arguments
-       (list
-         #:make-flags
-         #~(list (string-append "CC=" #$(cc-for-target))
-                 (string-append "VERSION= verkko " #$version)
-                 "BUILDOPTIMIZED=1")
-         #:phases
-         #~(modify-phases %standard-phases
-             (delete 'configure)        ; No configure script.
-             (add-after 'unpack 'chdir
-               (lambda _ (chdir "src")))
-             (add-after 'chdir 'patch-source
-               (lambda* (#:key inputs #:allow-other-keys)
-                 (substitute* "verkko.sh"
-                   (("\"#!/bin/sh\"")
-                    (string-append "\"#!" (which "sh") "\""))
-                   ;; Hardcode the paths to some binaries
-                   (("\\$\\(which MBG\\)")
-                    (search-input-file inputs "/bin/MBG"))
-                   (("\\$\\(which GraphAligner\\)")
-                    (search-input-file inputs "/bin/GraphAligner"))
-                   (("snakemake --nocolor")
-                    (string-append (search-input-file
-                                    inputs
-                                    "/bin/snakemake")
-                                   " --nocolor")))
-                 (substitute* (find-files "Snakefiles")
-                   (("#!/bin/sh") (string-append "#!" (which "sh"))))))
-             (replace 'check
-               (lambda* (#:key tests? inputs #:allow-other-keys)
-                 (let ((hifi.fastq.gz (assoc-ref inputs "hifi.fastq.gz"))
-                       (ont.fastq.gz  (assoc-ref inputs "ont.fastq.gz")))
-                   (when tests?
-                     (invoke "../bin/verkko" "-d" "asm"
-                             "--hifi" hifi.fastq.gz
-                             "--nano" ont.fastq.gz)))))
-             (replace 'install
-               (lambda* (#:key outputs #:allow-other-keys)
-                 (let ((out (assoc-ref outputs "out")))
-                   (with-directory-excursion "../"
-                     (copy-recursively "bin" (string-append out "/bin"))
-                     (copy-recursively "lib" (string-append out "/lib")))))))))
-      (inputs
-       (list graphaligner
-             mbg
-             python-wrapper
-             snakemake))
-      (native-inputs
-       `(("perl" ,perl)
-         ;; Provided by upstream to test the build:
-         ("hifi.fastq.gz"       ; 118 MiB
-          ,(origin
-             (method url-fetch)
-             (uri "https://obj.umiacs.umd.edu/sergek/shared/ecoli_hifi_subset24x.fastq.gz")
-             (sha256
-              (base32 "1nh5jzwnlf0r37rcgqwsjlszb8i0w5pfwp3rb5h869qp5qdlms8z"))))
-         ("ont.fastq.gz"        ; 244 MiB
-          ,(origin
-             (method url-fetch)
-             (uri "https://obj.umiacs.umd.edu/sergek/shared/ecoli_ont_subset50x.fastq.gz")
-             (sha256
-              (base32 "056pkf1dx76zs88vi4zgcbzrgvqqvlq9mpnyvmdszyhy0cj00smy"))))))
-      (home-page "https://github.com/marbl/verkko")
-      (synopsis "Hybrid genome assembly pipeline for telomere-to-telomere
-assembly of PacBio HiFi and Oxford Nanopore reads")
-      (description "Verkko is a hybrid genome assembly pipeline developed for
-telomere-to-telomere assembly of PacBio HiFi and Oxford Nanopore reads.  Verkko
-is Finnish for net, mesh and graph.  Verkko uses Canu to correct remaining
-errors in the HiFi reads, builds a multiplex de Bruijn graph using MBG, aligns
-the Oxford Nanopore reads to the graph using GraphAligner, progressively
-resolves loops and tangles first with the HiFi reads then with the aligned
-Oxford Nanopore reads, and finally creates contig consensus sequences using
-Canu's consensus module.")
-      (license license:public-domain))))
+  #:use-module (gnu packages zig))
+
+(define mbg-zstr-src
+  ;; zstr is not packaged in Guix; bundle it as an unbundled origin.
+  (origin
+    (method git-fetch)
+    (uri (git-reference
+          (url "https://github.com/mateidavid/zstr.git")
+          (commit "8bfd7e7633bc7ba3cf87c152fc3a2bc37559018f")))
+    (file-name (git-file-name "zstr" "8bfd7e76"))
+    (sha256
+     (base32 "048q7js7q0jsqyqqgx06zhs9f0nh1c29sjbpymjckgz7p9h4pbjb"))))
 
 (define-public mbg
   (package
@@ -4178,12 +109,11 @@ Canu's consensus module.")
               (method git-fetch)
               (uri (git-reference
                     (url "https://github.com/maickrau/MBG")
-                    (commit (string-append "v" version))
-                    (recursive? #t)))
+                    (commit (string-append "v" version))))
               (file-name (git-file-name name version))
               (sha256
                (base32
-                "14p0vk6qfyf7ha8x30dk8hi16c5n8fpzi96k2vwmg17mlcf0hkgj"))))
+                "1mf02w5bx95inc19b2az2ps708insbj0n8mlrx1wh28ybcbcxzap"))))
     (build-system gnu-build-system)
     (arguments
      (list
@@ -4193,18 +123,26 @@ Canu's consensus module.")
        #:phases
        #~(modify-phases %standard-phases
            (delete 'configure)          ; No configure script.
+           (add-after 'unpack 'unpack-zstr
+             (lambda _
+               (copy-recursively #$mbg-zstr-src "zstr")))
            (add-after 'unpack 'use-packaged-inputs
              (lambda* (#:key inputs #:allow-other-keys)
                (let ((cxxopts (dirname (search-input-file inputs
                                         "/include/cxxopts.hpp")))
                      (concurrentqueue
                        (search-input-directory inputs
-                        "/include/concurrentqueue")))
-                 (delete-file-recursively "cxxopts")
-                 (delete-file-recursively "concurrentqueue")
+                        "/include/concurrentqueue"))
+                     (parallel-hashmap
+                       (search-input-directory inputs
+                        "/include/parallel_hashmap")))
                  (substitute* "makefile"
                    (("-Icxxopts/include") (string-append "-I" cxxopts))
                    (("-Iconcurrentqueue") (string-append "-I" concurrentqueue))
+                   (("-Iparallel-hashmap/parallel_hashmap/")
+                    (string-append "-I" parallel-hashmap))
+                   ;; Fix missing cstdint with newer GCC.
+                   (("CPPFLAGS=") "CPPFLAGS=-include cstdint ")
                    ;; No need to build statically.
                    (("-Wl,-Bstatic") "")
                    (("-static-libstdc\\+\\+") "")))))
@@ -4213,10 +151,10 @@ Canu's consensus module.")
                (let ((out (assoc-ref outputs "out")))
                  (install-file "bin/MBG" (string-append out "/bin"))))))))
     (inputs (list concurrentqueue
-                  ;; parallel-hashmap
-                  ;; zstr
+                  parallel-hashmap
                   zlib))
     (native-inputs (list cxxopts))
+    (properties '((tunable? . #t)))
     (home-page "https://github.com/maickrau/MBG")
     (synopsis "Minimizer based sparse de Bruijn Graph constructor")
     (description
@@ -4283,168 +221,6 @@ their chance of getting selected as minimizers.")
     ;; Rest of the code is public domain.
     (license license:expat)))
 
-(define-public quast
-  (package
-    (name "quast")
-    (version "5.2.0")
-    (source
-      (origin
-        (method url-fetch)
-        (uri (list (pypi-uri "quast" version)
-                   (string-append "https://github.com/ablab/quast"
-                                  "/releases/download/quast_" version
-                                  "/quast-" version ".tar.gz")))
-        (sha256
-         (base32 "1nz0lz7zgrhcirmm3xcn756f91a6bpww9npap3a4l9gsgh413nfc"))
-        (patches (search-patches "quast.patch"))
-        (snippet
-         #~(begin
-             (use-modules (guix build utils))
-             (with-directory-excursion "quast_libs"
-               (substitute* "run_busco.py"
-                 (("from quast_libs\\.busco import busco") "import busco"))
-               (delete-file-recursively "site_packages/joblib2")
-               (delete-file-recursively "site_packages/joblib3")
-               (delete-file-recursively "site_packages/simplejson")
-               (delete-file-recursively "minimap2")     ; Accepts minimap2 >= 2.19
-               ;; These packages are needed at runtime
-               (delete-file-recursively "bedtools")
-               (delete-file-recursively "bwa")
-               ;; These files are from python itself
-               (delete-file "site_packages/bz2.py")
-               (delete-file "site_packages/_bz2.py")
-               (delete-file "site_packages/_compression.py")
-               ;; Delete some pre-compiled binaries
-               (delete-file-recursively "barrnap/binaries/darwin")
-               (delete-file "barrnap/binaries/linux/nhmmer")
-               (delete-file "busco/hmmsearch")
-               (delete-file "sambamba/sambamba_linux")
-               (delete-file "sambamba/sambamba_osx")
-               ;; TODO:
-               ;(delete-file "barrnap/bin/barrnap")
-
-               ;; Genemark is a non-free, but available to academic
-               ;; institutions. Remove some of the bundled binaries.
-               (delete-file-recursively "genemark/linux_32")
-               (delete-file-recursively "genemark/macosx")
-               (delete-file-recursively "genemark-es/linux_32")
-               (delete-file-recursively "genemark-es/macosx"))))))
-    (build-system python-build-system)
-    (arguments
-     (list
-       #:phases
-       #~(modify-phases %standard-phases
-           (add-after 'unpack 'patchelf-genemark
-             (lambda* (#:key inputs #:allow-other-keys)
-               (let ((patchelf (search-input-file inputs "/bin/patchelf"))
-                     (ld-so    (search-input-file inputs #$(glibc-dynamic-linker)))
-                     (rpath    (dirname
-                                 (search-input-file inputs "/lib/libstdc++.so.6"))))
-                 (for-each (lambda (binary)
-                             (invoke patchelf "--set-interpreter" ld-so binary)
-                             (invoke patchelf "--set-rpath" rpath binary))
-                           (list "quast_libs/genemark/linux_64/gmhmmp"
-                                 "quast_libs/genemark/linux_64/probuild"
-                                 "quast_libs/genemark-es/linux_64/gmhmme3"
-                                 "quast_libs/genemark-es/linux_64/probuild")))))
-           (add-before 'build 'replace-bundled-binaries
-             (lambda* (#:key inputs #:allow-other-keys)
-               (substitute* "quast_libs/ca_utils/misc.py"
-                 (("join\\(qconfig.LIBS_LOCATION, 'minimap2'\\)")
-                  (string-append "'" (search-input-file inputs "/bin/minimap2") "'")))
-               (substitute* "./quast_libs/ra_utils/misc.py"
-                 (("join\\(sambamba_dirpath, fname \\+ platform_suffix\\)")
-                  (string-append "'" (search-input-file inputs "/bin/sambamba") "'"))
-                 (("join\\(qconfig.LIBS_LOCATION, 'bedtools', 'bin'\\)")
-                  (string-append
-                    "'" (dirname (search-input-file inputs "/bin/bedtools")) "'")))))
-           (add-after 'wrap 'wrap-more
-             (lambda* (#:key inputs outputs #:allow-other-keys)
-               (for-each
-                 (lambda (file)
-                   (wrap-program file
-                     `("PATH" ":" prefix
-                       ,(map (lambda (file-name)
-                               (string-append (assoc-ref inputs file-name) "/bin"))
-                             (list "bedtools"
-                                   "blast+"
-                                   "busco"
-                                   "bwa"
-                                   "hmmer"
-                                   "minimap2"
-                                   "sambamba")))))
-                 (find-files (string-append #$output "/bin") "\\.py$"))))
-           (replace 'check
-             (lambda* (#:key tests? inputs outputs #:allow-other-keys)
-               (when tests?
-                 (add-installed-pythonpath inputs outputs)
-                 (invoke "python" "setup.py" "test"))))
-           (delete 'strip))))       ; Can't strip genemark binaries.
-    (native-inputs
-     (list (list (canonical-package gcc) "lib") patchelf))
-    (inputs
-     (list python-joblib
-           python-matplotlib
-           python-simplejson
-           ;; And the non-python packages:
-           ;augustus
-           bash-minimal
-           bedtools
-           blast+
-           busco
-           bwa
-           hmmer
-           minimap2
-           perl
-           sambamba))
-    (home-page "http://quast.sourceforge.net/")
-    (synopsis "Genome assembly evaluation tool")
-    (description "QUAST stands for QUality ASsessment Tool.  It evaluates
-genome/metagenome assemblies by computing various metrics.  The current QUAST
-toolkit includes the general QUAST tool for genome assemblies, MetaQUAST, the
-extension for metagenomic datasets, QUAST-LG, the extension for large genomes
-(e.g., mammalians), and Icarus, the interactive visualizer for these tools.")
-    (supported-systems '("x86_64-linux"))   ; Due to bundled genemark
-    (license
-      (list license:gpl2    ; Main program
-            ;; Genemark (bundled) is free for non-commercial use by academic,
-            ;; government, and non-profit/not-for-profit institutions.
-            (license:non-copyleft
-              "http://topaz.gatech.edu/GeneMark/license_download.cgi")))))
-
-(define-public blobtools
-  (let ((commit "1bed7870198831539b370f9254d5d30b94199a18")
-        (revision "3"))         ;; 2022-09-21
-    (package
-      (name "blobtools")
-      (version (git-version "1.1.1" revision commit))
-      (source
-        (origin
-          (method git-fetch)
-          (uri (git-reference
-                 (url "https://github.com/DRL/blobtools")
-                 (commit commit)))
-          (file-name (git-file-name name version))
-          (sha256
-           (base32 "0nki2m1sxkx75rkwzw6dqvxzyswrv47q0rz4bx9w0bz4fawnx86z"))))
-      (build-system python-build-system)
-      (arguments
-       (list #:tests? #f))          ; No tests in repo.
-      (inputs
-       (list python-docopt
-             python-matplotlib
-             python-tqdm
-             python-pysam
-             python-pyyaml))
-      (home-page "https://blobtools.readme.io/")
-      (synopsis
-       "Modular command-line solution for partitioning of genome datasets")
-      (description "Blobtools is a modular command-line solution for
-visualisation, quality control and taxonomic partitioning of genome datasets.
-BlobTools takes the information from HITS files and sums up bitscores by
-taxonomic group at each taxonomic rank.")
-      (license license:gpl3))))
-
 ;; TODO: Regenerate or remove docs folder.
 (define-public python-pixy
   (package
@@ -4486,80 +262,6 @@ invariant (monomorphic) sites, which are essential for the correct computation
 of π and dxy in the face of missing data (i.e. always).")
     (license license:expat)))
 
-(define-public wfa2-lib
-  (let ((commit "af6be887614e8bb4e2b6e8c4e500705a978bd513")     ; 14 April 2022
-        (revision "1"))
-    (package
-      (name "wfa2-lib")
-      (version (git-version "2.1" revision commit))     ; As seen in ./VERSION
-      (source (origin
-                (method git-fetch)
-                (uri (git-reference
-                       (url "https://github.com/smarco/WFA2-lib")
-                       (commit commit)))
-                (file-name (git-file-name name version))
-                (sha256
-                 (base32 "09gsmks4dzmfscklb60m6gcsvsd9r6jywf10633dpcsfsdcvmzaw"))
-                (snippet
-                 #~(begin
-                     (use-modules ((guix build utils)))
-                     (substitute* "Makefile"
-                       (("^CC=") "CC:=")
-                       (("^CPP=") "CPP:=")
-                       (("-march=native") ""))))))
-      (build-system gnu-build-system)
-      (arguments
-       (list
-         #:tests? #f            ; No tests.
-         #:parallel-build? #f   ; Race condition in Makefile.
-         #:modules '((guix build gnu-build-system)
-                     (guix build utils)
-                     (srfi srfi-26))
-         #:make-flags
-         #~(list (string-append "CC=" #$(cc-for-target))
-                 (string-append "CPP=" #$(cxx-for-target)))
-         #:phases
-         #~(modify-phases %standard-phases
-             (delete 'configure)        ; No configure script.
-             ;; -flto breaks align_benchmark.
-             (replace 'build
-               (lambda* (#:key (make-flags '()) #:allow-other-keys)
-                 (apply invoke "make" "all" make-flags)))
-             (replace 'install
-               (lambda _
-                 (for-each
-                   (cut install-file <> (string-append #$output "/bin"))
-                   (find-files "bin"))
-                 (for-each
-                   (cut install-file <> (string-append #$output "/lib"))
-                   (find-files "lib"))
-                 (for-each
-                   (lambda (file)
-                     (mkdir-p (string-append #$output "/include/wfa2-lib/" (dirname file)))
-                     (copy-file file (string-append #$output "/include/wfa2-lib/" file)))
-                   (find-files "." "\\.(h|hpp)$")))))))
-      (home-page "https://github.com/smarco/WFA2-lib")
-      (synopsis "Wavefront alignment algorithm library")
-      (description "The @acronym{wavefront alignment, WFA} algorithm is an exact
-gap-affine algorithm that takes advantage of homologous regions between the
-sequences to accelerate the alignment process.  Unlike to traditional dynamic
-programming algorithms that run in quadratic time, the WFA runs in time
-@code{O(ns+s^2)}, proportional to the sequence length @code{n} and the alignment
-score @code{s}, using @code{O(s^2)} memory.  Moreover, the WFA algorithm
-exhibits simple computational patterns that the modern compilers can
-automatically vectorize for different architectures without adapting the code.")
-      (properties '((tunable? . #t)))
-      (license license:expat))))
-
-(define-public wfa2-lib-static
-  (package
-    (inherit (static-package wfa2-lib))
-    (name "wfa2-lib-static")
-    (arguments
-     (substitute-keyword-arguments (package-arguments wfa2-lib)
-       ((#:make-flags flags ''())
-        #~(cons "CC_FLAGS+=-static" #$flags))))))
-
 (define-public r-rrbgen
   (package
     (name "r-rrbgen")
@@ -4644,6 +346,7 @@ without a properly defined error.")
     ;; they are propagated inputs.
     (propagated-inputs
      (list htslib jsoncpp))
+    (properties '((tunable? . #t)))
     (home-page "https://github.com/Zilong-Li/SeqLib")
     (synopsis "C++ htslib interface for manipulating sequence data and VCF")
     (description "@code{seqlib} is a C++ htslib interface for manipulating sequence data
@@ -4700,54 +403,6 @@ functions for FAM and BIM tables with default values to go with
 simulated genotype data.")
     (license license:gpl3)))
 
-(define-public r-stitch
-  (package
-    (name "r-stitch")
-    (version "1.6.10")
-    (source
-     ;; The release tarball bundles dependencies. So, use git-fetch.
-     (origin
-       (method git-fetch)
-       (uri (git-reference
-             (url "https://github.com/rwdavies/STITCH")
-             (commit version)))
-       (file-name (git-file-name name version))
-       (sha256
-        (base32
-         "0iy5fq2l5a35xdxqaf9ypj56da57qmwppwqmh9nflbvmbc7kgbkf"))))
-    (build-system r-build-system)
-    (arguments
-     (list
-      #:phases
-      #~(modify-phases %standard-phases
-          (add-after 'unpack 'chdir
-            (lambda _
-              (chdir "STITCH")))
-          (add-after 'chdir 'patch-build-system
-            (lambda _
-              (substitute* "src/Makevars"
-                (("\\$\\(SEQLIB_ROOT\\)/src/libseqlib.a") "-lseqlib")
-                (("\\$\\(SEQLIB_ROOT\\)/htslib/libhts.a") "-lhts")
-                ((": SeqLib") ":")))))))
-    (inputs
-     (list curl htslib seqlib zlib))
-    (native-inputs
-     (list autoconf automake vcfpp))
-    (propagated-inputs
-     (list r-data-table r-rrbgen
-           ;; FIXME: These should be inputs that are substituted into
-           ;; the source. But, for some reason, the reference scanner
-           ;; does not pick them up that way.
-           coreutils findutils htslib rsync))
-    (home-page "https://github.com/rwdavies/STITCH")
-    (synopsis "Sequencing to imputation through constructing haplotypes")
-    (description "@code{r-stitch} is an R program for reference panel free,
-read aware, low coverage sequencing genotype imputation.  STITCH runs
-on a set of samples with sequencing reads in BAM format, as well as a
-list of positions to genotype, and outputs imputed genotypes in VCF
-format.")
-    (license license:gpl3)))
-
 (define-public hifiasm
   (package
     (name "hifiasm")
@@ -4765,6 +420,7 @@ format.")
     (build-system gnu-build-system)
     (arguments
      (list #:tests? #f
+           #:make-flags #~(list "CXXFLAGS=-include linux/types.h")
            #:phases
            #~(modify-phases %standard-phases
                (delete 'configure)
@@ -4774,6 +430,7 @@ format.")
                    (install-file "hifiasm.1" (string-append #$output "/share/man/man1")))))))
     (inputs
      (list zlib))
+    (properties '((tunable? . #t)))
     (home-page "https://github.com/chhylp123/hifiasm")
     (synopsis "haplotype-resolved assembler for accurate Hifi reads")
     (description "Hifiasm is a fast haplotype-resolved de-novo assembler originally
@@ -4785,3 +442,300 @@ reads, and it is one of the best haplotype-resolved assemblers for the
 trio-binning assembly given parental short reads.  For a human genome,
 hifiasm can produce the telomere-to-telomere assembly in one day.")
     (license license:expat)))
+
+(define-public parasail
+  (package
+   (name "parasail")
+   (version "2.6.2")
+   (source (origin
+            (method git-fetch)
+            (uri (git-reference
+                  (url "https://github.com/jeffdaily/parasail")
+                  (commit (string-append "v" version))))
+            (file-name (git-file-name name version))
+            (sha256
+             (base32
+              "0pnw8x266b4qggv9hn4sng9z6zcq0rg7h6slcq3ka3snybzn61r8"))))
+   (build-system gnu-build-system)
+   (arguments
+    (list #:phases
+          #~(modify-phases %standard-phases
+              (add-after 'unpack 'patch-tests
+                (lambda _
+                  (substitute* "tests/test_verify_traces.c"
+                    (("ref_trace_table = parasail")
+                     "ref_trace_table = (int8_t*)parasail")
+                    ((", trace_table,")
+                     ", (int8_t*)trace_table,")))))))
+   (native-inputs
+    (list autoconf
+          automake
+          libtool))
+   (properties '((tunable? . #t)))
+   (home-page "https://github.com/jeffdaily/parasail")
+   (synopsis "Pairwise sequence alignment library")
+   (description "parasail is a SIMD C (C99) library containing
+implementations of the Smith-Waterman (local),
+Needleman-Wunsch (global), and various semi-global pairwise sequence
+alignment algorithms.  Here, semi-global means insertions before the
+start or after the end of either the query or target sequence are
+optionally not penalized.  parasail implements most known algorithms
+for vectorized pairwise sequence alignment, including diagonal
+[Wozniak, 1997], blocked [Rognes and Seeberg, 2000], striped [Farrar,
+2007], and prefix scan [Daily, 2015].  Therefore, parasail is a
+reference implementation for these algorithms in addition to providing
+an implementation of the best-performing algorithm(s) to date on
+today's most advanced CPUs.")
+   (license license:bsd-2)))
+
+(define-public python-parasail
+  (package
+   (name "python-parasail")
+   (version "1.3.4")
+   (source
+    (origin
+     (method url-fetch)
+     (uri (pypi-uri "parasail" version))
+     (sha256
+      (base32 "03qvnswvzv6pv5lzlnd05rbjphhl29qiasbyvnpmmvz3z9fh79yn"))))
+   (build-system pyproject-build-system)
+   (arguments
+    (list #:test-backend #~'unittest
+          #:phases
+          #~(modify-phases %standard-phases
+              (add-after 'unpack 'insert-libparasail
+                (lambda* (#:key inputs #:allow-other-keys)
+                  (copy-file (search-input-file inputs "/lib/libparasail.so")
+                             "parasail/libparasail.so"))))))
+   (inputs
+    (list parasail))
+   (native-inputs
+    (list python-setuptools python-wheel))
+   (propagated-inputs
+    (list python-numpy))
+   (home-page "https://github.com/jeffdaily/parasail-python")
+   (synopsis "Parasail Python bindings")
+   (description "This package provides Python bindings for the
+parasail C library.")
+   (license license:bsd-2)))
+
+(define-public liftoff
+  (package
+    (name "liftoff")
+    (version "1.6.3")
+    (source
+     ;; The PyPI tarball is missing the tests.
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+              (url "https://github.com/agshumate/Liftoff")
+              (commit version)))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32
+         "18840vdv75nsq0fw5hzvrp7l0k6ciamlzkhgxxhnjh23ghih71dx"))))
+    (build-system pyproject-build-system)
+    (arguments
+     (list #:phases
+           #~(modify-phases %standard-phases
+               (add-after 'unpack 'relax-version-requirements
+                 (lambda _
+                   (substitute* "setup.py"
+                     (("==") ">=")))))))
+    (inputs
+     (list python-biopython
+           python-gffutils
+           python-interlap
+           python-networkx
+           python-numpy
+           python-parasail
+           python-pyfaidx
+           python-pysam
+           python-ujson))
+    (native-inputs
+     (list minimap2
+           python-pytest
+           python-setuptools
+           python-wheel))
+    (home-page "https://github.com/ashumate/Liftoff")
+    (synopsis "GFF3/GTF lift over pipeline")
+    (description "Liftoff is a tool that accurately maps annotations
+in GFF or GTF between assemblies of the same, or closely-related
+species.  Unlike current coordinate lift-over tools which require a
+pre-generated “chain” file as input, Liftoff is a standalone tool that
+takes two genome assemblies and a reference annotation as input and
+outputs an annotation of the target genome.  Liftoff uses minimap2 to
+align the gene sequences from a reference genome to the target genome.
+Rather than aligning whole genomes, aligning only the gene sequences
+allows genes to be lifted over even if there are many structural
+differences between the two genomes.  For each gene, Liftoff finds the
+alignments of the exons that maximize sequence identity while
+preserving the transcript and gene structure.  If two genes incorrectly
+map to overlapping loci, Liftoff determines which gene is most-likely
+mis-mapped, and attempts to re-map it.  Liftoff can also find
+additional gene copies present in the target assembly that are not
+annotated in the reference.")
+    (license license:gpl3+)))
+
+(define-public r-gggenes
+  (package
+    (name "r-gggenes")
+    (version "0.6.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (cran-uri "gggenes" version))
+       (sha256
+        (base32 "0400qhppx8kg70f6bbya3k6lhdgjj3dllgfgg6s509kbp5qsjbcd"))))
+    (properties `((upstream-name . "gggenes")))
+    (build-system r-build-system)
+    (propagated-inputs (list r-cli r-ggfittext r-ggplot2 r-lifecycle r-rlang))
+    (native-inputs (list r-knitr r-spelling r-testthat))
+    (home-page "https://wilkox.org/gggenes/")
+    (synopsis "Draw Gene Arrow Maps in 'ggplot2'")
+    (description
+     "This package provides a ggplot2 extension for drawing gene arrow maps.")
+    (license license:gpl2)))
+
+(define-public plink-ng-gn
+  (let ((commit "5d1db4313ba0cc976562da233db4aced78975d10"))
+  (package
+    (name "plink-ng-gn")
+    (version (string-append "1.90b3-" commit )) ; Aug 11, 2016
+    (source (origin
+             (method git-fetch)
+             (uri (git-reference
+                   (url "https://github.com/genenetwork/plink-ng.git")
+                   (commit commit)))
+             (file-name (string-append name "-" commit))
+             (sha256
+              (base32
+               "1366li3ks9076bblvd1rpzkjq4j8f8f08lhga4c1ckrkil3xww4m"))))
+            ;; no longer (patches (list (search-patch "plink-ng-Makefile-zlib-git.patch")))))
+    (inputs
+     `(("zlib" ,zlib)
+       ("openblas" ,openblas)
+       ;; ("atlas" ,atlas) ; openblas replaces atlas
+       ("lapack" ,lapack)  ; lapack is disabled in GUIX openblas
+       ;; ("gfortran" ,gfortran)
+       ;; ("python" ,python-2)   ;; for tests - currently disabled
+       ))
+    (native-inputs
+     `(("unzip" ,unzip)))
+    (build-system gnu-build-system)
+    (arguments
+     '(#:tests? #f ;no "check" target. Some of the python-based tests fail
+       #:phases
+       (modify-phases %standard-phases
+        (delete 'configure)
+        (replace 'build
+                 (lambda _
+                   (zero? (system* "make" "-f" "Makefile.guix"))
+                   ))
+        (replace 'install
+                  (lambda* (#:key outputs #:allow-other-keys)
+                    (let ((bin (string-append (assoc-ref outputs "out")
+                                              "/bin/")))
+                      (install-file "plink2" bin)
+                      #t))))))
+    (properties '((tunable? . #t)))
+    (home-page "https://www.cog-genomics.org/plink2")
+    (synopsis "Whole genome association analysis toolset")
+    (description
+     "PLINK is a whole genome association analysis toolset, designed to
+perform a range of basic, large-scale analyses in a computationally efficient
+manner.  The focus of PLINK is purely on analysis of genotype/phenotype data,
+so there is no support for steps prior to this (e.g. study design and
+planning, generating genotype or CNV calls from raw data).  Through
+integration with gPLINK and Haploview, there is some support for the
+subsequent visualization, annotation and storage of results.")
+    (license license:gpl3+))))
+
+(define-public graphaligner
+  (package
+    (name "graphaligner")
+    (version "1.0.20")
+    (source (origin
+      (method url-fetch)
+      (uri "https://github.com/user-attachments/files/17976913/GraphAligner.tar.gz")
+      (file-name (string-append name "-" version ".tar.gz"))
+      (sha256
+       (base32 "1gs6jds4lazljb1s7s8f1vp0l4j8jvqy6qhb9sck7x66z8157ndm"))))
+    (build-system gnu-build-system)
+    (arguments
+     (list
+       #:tests? #f ; no tests
+       #:make-flags
+       #~(list (string-append "VERSION=" #$version))
+       #:phases
+       #~(modify-phases %standard-phases
+           (delete 'configure) ; no configure phase
+           (add-after 'unpack 'patch-source
+             (lambda* (#:key inputs #:allow-other-keys)
+               (delete-file-recursively "concurrentqueue")
+               (substitute* "makefile"
+                 (("-Iconcurrentqueue")
+                  (string-append "-I" (search-input-directory inputs "/include/concurrentqueue")))
+                 (("^JEMALLOCFLAGS.*")
+                  "JEMALLOCFLAGS= `pkg-config --libs jemalloc`\n")
+                 (("`pkg-config --cflags zlib`/bamtools")
+                  (string-append "-I " (search-input-directory inputs "include/bamtools")))
+                 ;; No need to build statically.
+                 (("-Wl,-Bstatic") "")
+                 (("-static-libstdc\\+\\+") ""))))
+           (replace 'install
+             (lambda* (#:key outputs #:allow-other-keys)
+               (let ((out (assoc-ref outputs "out")))
+                 (for-each
+                   (lambda (program)
+                     (install-file program (string-append out "/bin")))
+                   (find-files "bin"))
+                 (for-each
+                   (lambda (header)
+                     (install-file header (string-append out "/include")))
+                   (find-files "src" "\\.h(pp)?$"))))))))
+    (native-inputs
+     (list (list jemalloc "bin")
+           pkg-config
+           sparsehash))
+    (inputs
+     (list bamtools
+           boost
+           concurrentqueue
+           jemalloc
+           libdivsufsort
+           mummer
+           protobuf
+           sdsl-lite
+           zlib))
+    (properties '((tunable? . #t)))
+    (home-page "https://github.com/maickrau/GraphAligner")
+    (synopsis "Seed-and-extend program for aligning  genome graphs")
+    (description "Seed-and-extend program for aligning long error-prone reads to
+genome graphs.  For a description of the bitvector alignment extension
+algorithm, see
+@url{https://academic.oup.com/bioinformatics/advance-article/doi/10.1093/bioinformatics/btz162/5372677
+here}.")
+    (license license:expat)))
+
+(define-public mummer
+  (package
+    (name "mummer")
+    (version "4.0.1")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (string-append "https://github.com/mummer4/mummer/releases/"
+                            "download/v" version "/mummer-" version ".tar.gz"))
+        (sha256
+         (base32 "0gix9qay0bcv515q9xag9arhq3wal77vf5g5whiy7cm004ksw85w"))))
+    (build-system gnu-build-system)
+    (inputs
+     (list gnuplot
+           perl))
+    (properties '((tunable? . #t)))
+    (home-page "http://mummer.sourceforge.net/")
+    (synopsis "Efficient sequence alignment of full genomes")
+    (description "MUMmer is a versatil alignment tool for DNA and protein sequences.")
+    (license license:artistic2.0)))
+
diff --git a/gn/packages/check.scm b/gn/packages/check.scm
deleted file mode 100644
index 960e78e..0000000
--- a/gn/packages/check.scm
+++ /dev/null
@@ -1,61 +0,0 @@
-(define-module (gn packages check)
-  #:use-module (guix packages)
-  #:use-module (guix download)
-  #:use-module (guix build-system python)
-  #:use-module ((guix licenses) #:prefix license:)
-  #:use-module (gnu packages check)
-  #:use-module (gnu packages python-xyz)
-  #:use-module (past packages python27))
-
-(define-public python-nosexcover
-  (package
-    (name "python-nosexcover")
-    (version "1.0.11")
-    (source (origin
-              (method url-fetch)
-              (uri (pypi-uri "nosexcover" version))
-              (sha256
-               (base32
-                "10xqr12qv62k2flxwqhh8cr00cjhn7sfjrm6p35gd1x5bmjkr319"))))
-    (build-system python-build-system)
-    (propagated-inputs
-     (list python-coverage python-nose))
-    (home-page "https://github.com/cmheisel/nose-xcover")
-    (synopsis "Extends nose.plugins.cover to add Cobertura-style XML reports")
-    (description "Nose-xcover is a companion to the built-in
-@code{nose.plugins.cover}.  This plugin will write out an XML coverage report
-to a file named coverage.xml.
-
-It will honor all the options you pass to the Nose coverage plugin,
-especially -cover-package.")
-    (license license:expat)))
-
-(define-public python-unittest2
-  (package
-    (name "python-unittest2")
-    (version "1.1.0")
-    (source
-     (origin
-       (method url-fetch)
-       (uri (pypi-uri "unittest2" version))
-       (patches
-        (search-patches "python-unittest2-python3-compat.patch"
-                        "python-unittest2-remove-argparse.patch"))
-       (sha256
-        (base32
-         "0y855kmx7a8rnf81d3lh5lyxai1908xjp0laf4glwa4c8472m212"))))
-    (build-system python-build-system)
-    (arguments
-     '(#:phases
-       (modify-phases %standard-phases
-         (replace 'check
-           (lambda _
-             (zero? (system* "python" "-m" "unittest2" "discover" "--verbose")))))))
-    (propagated-inputs
-     (list python-six python-traceback2))
-    (home-page "https://pypi.org/project/unittest2/")
-    (synopsis "Python unit testing library")
-    (description
-     "Unittest2 is a replacement for the unittest module in the Python
-standard library.")
-    (license license:psfl)))
diff --git a/gn/packages/cran.scm b/gn/packages/cran.scm
deleted file mode 100644
index 34e781c..0000000
--- a/gn/packages/cran.scm
+++ /dev/null
@@ -1,54 +0,0 @@
-(define-module (gn packages cran)
-  #:use-module ((guix licenses) #:prefix license:)
-  #:use-module (guix packages)
-  #:use-module (guix download)
-  #:use-module (guix build-system r)
-  #:use-module (gnu packages)
-  #:use-module (gnu packages statistics)
-  #:use-module (gnu packages cran))
-
-(define-public r-tictoc
-  (package
-    (name "r-tictoc")
-    (version "1.0")
-    (source
-      (origin
-        (method url-fetch)
-        (uri (cran-uri "tictoc" version))
-        (sha256
-         (base32
-          "1zp2n8k2ax2jjw89dsri268asmm5ry3ijf32wbca5ji231y0knj7"))))
-    (build-system r-build-system)
-    (home-page "http://github.com/collectivemedia/tictoc")
-    (synopsis "Functions for timing R scripts")
-    (description
-     "This package provides the timing functions @code{tic} and @code{toc} that
-can be nested.  One can record all timings while a complex script is running,
-and examine the values later.  It is also possible to instrument the timing call
-with custom callbacks.  In addition, this package provides class 'Stack',
-implemented as a vector, and class 'List', implemented as a list, both of whic
-support operations 'push', 'pop', 'first', 'last' and 'clear'.")
-    (license license:asl2.0)))
-
-(define-public r-bracer
-  (package
-    (name "r-bracer")
-    (version "1.2.1")
-    (source (origin
-              (method url-fetch)
-              (uri (cran-uri "bracer" version))
-              (sha256
-               (base32 "0q47p43957nlaqsz0hhbica2hlar95c2i8avgq024yhccik5nx6f"))))
-    (properties `((upstream-name . "bracer")))
-    (build-system r-build-system)
-    (propagated-inputs (list r-stringr))
-    (home-page "https://trevorldavis.com/R/bracer/")
-    (synopsis "Brace Expansions")
-    (description
-     "Performs brace expansions on strings.  Made popular by Unix shells, brace
-expansion allows users to concisely generate certain character vectors by taking
-a single string and (recursively) expanding the comma-separated lists and
-double-period-separated integer and character sequences enclosed within braces
-in that string.  The double-period-separated numeric integer expansion also
-supports padding the resulting numbers with zeros.")
-    (license license:expat)))
diff --git a/gn/packages/crates-io.scm b/gn/packages/crates-io.scm
deleted file mode 100644
index ea87358..0000000
--- a/gn/packages/crates-io.scm
+++ /dev/null
@@ -1,714 +0,0 @@
-(define-module (gn packages crates-io)
-  #:use-module ((guix licenses) #:prefix license:)
-  #:use-module (guix packages)
-  #:use-module (guix utils)
-  #:use-module (guix download)
-  #:use-module (guix git-download)
-  #:use-module (guix build-system cargo)
-  #:use-module (past-crates packages crates-io)
-  #:use-module (gnu packages maths)
-  #:use-module (gnu packages python))
-
-(define-public rust-assert-cmd-0.12
-  (package
-    (name "rust-assert-cmd")
-    (version "0.12.2")
-    (source (origin
-              (method url-fetch)
-              (uri (crate-uri "assert_cmd" version))
-              (file-name (string-append name "-" version ".tar.gz"))
-              (sha256
-               (base32
-                "1xfn2spazxk3ljj9q3250a24gndja9vwa0h0rnbccdrbd4ncyvwk"))))
-    (build-system cargo-build-system)
-    (arguments
-     `(#:cargo-inputs
-       (("rust-doc-comment" ,rust-doc-comment-0.3)
-        ("rust-escargot" ,rust-escargot-0.5)
-        ("rust-predicates" ,rust-predicates-1)
-        ("rust-predicates-core" ,rust-predicates-core-1)
-        ("rust-predicates-tree" ,rust-predicates-tree-1)
-        ("rust-wait-timeout" ,rust-wait-timeout-0.2))))
-    (home-page "https://github.com/assert-rs/assert_cmd")
-    (synopsis "Test CLI Applications.")
-    (description "Test CLI Applications.")
-    (license (list license:expat license:asl2.0))))
-
-(define-public rust-bgzip-0.2
-  (package
-    (name "rust-bgzip")
-    (version "0.2.1")
-    (source (origin
-              (method url-fetch)
-              (uri (crate-uri "bgzip" version))
-              (file-name (string-append name "-" version ".tar.gz"))
-              (sha256
-               (base32
-                "1kssq4hp8csg27rhggabpfiyn9xp5rh5b8al63dghk11vqs7hk5j"))))
-    (build-system cargo-build-system)
-    (arguments
-     `(#:cargo-inputs
-       (("rust-flate2" ,rust-flate2-1)
-        ("rust-thiserror" ,rust-thiserror-1))
-       #:cargo-development-inputs
-       (("rust-clap" ,rust-clap-2)
-        ("rust-csv" ,rust-csv-1)
-        ("rust-tempfile" ,rust-tempfile-3))))
-    (home-page "https://github.com/informationsea/bgzip-rs")
-    (synopsis "Rust implementation of bgzip")
-    (description "Rust implementation of bgzip")
-    (license license:expat)))
-
-(define-public rust-boomphf-0.5
-  (package
-    (name "rust-boomphf")
-    (version "0.5.9")
-    (source
-      (origin
-        (method url-fetch)
-        (uri (crate-uri "boomphf" version))
-        (file-name
-         (string-append name "-" version ".tar.gz"))
-        (sha256
-         (base32 "0braniw72g9yq5006sfgc1g8d4317bb524c694jw6nggizrvg3sf"))))
-    (build-system cargo-build-system)
-    (arguments
-     `(#:cargo-inputs
-       (("rust-crossbeam-utils" ,rust-crossbeam-utils-0.8)
-        ("rust-log" ,rust-log-0.4)
-        ("rust-rayon" ,rust-rayon-1)
-        ("rust-serde" ,rust-serde-1)
-        ("rust-wyhash" ,rust-wyhash-0.5))
-       #:cargo-development-inputs
-       (("rust-bencher" ,rust-bencher-0.1)
-        ("rust-quickcheck" ,rust-quickcheck-1))))
-    (home-page "https://github.com/10XGenomics/rust-boomphf")
-    (synopsis "Scalable and Efficient Minimal Perfect Hash Functions")
-    (description "This package provides a Rust implementation of
-@url{https://arxiv.org/abs/1702.03154, fast and scalable minimal perfect hashing
-for massive key sets}.  It generates an @acronym{MPHF, minimal perfect hash
-functions} for a collection of hashable objects.")
-    (license license:expat)))
-
-(define-public rust-cuckoofilter-0.5
-  (package
-    (name "rust-cuckoofilter")
-    (version "0.5.0")
-    (source (origin
-              (method url-fetch)
-              (uri (crate-uri "cuckoofilter" version))
-              (file-name (string-append name "-" version ".tar.gz"))
-              (sha256
-               (base32
-                "067fkr9dc118rqddr72xdldq05d31yyipvvyrmj9yrrik52ah45q"))))
-    (build-system cargo-build-system)
-    (arguments
-     `(#:skip-build? #t     ; Not packaging dependencies
-       #:cargo-inputs
-       (("rust-byteorder" ,rust-byteorder-1)
-        ;("rust-clippy" ,rust-clippy-0.0.302)
-        ;("rust-farmhash" ,rust-farmhash-1)
-        ("rust-fnv" ,rust-fnv-1)
-        ("rust-rand" ,rust-rand-0.7)
-        ("rust-serde" ,rust-serde-1)
-        ("rust-serde-bytes" ,rust-serde-bytes-0.11)
-        ("rust-serde-derive" ,rust-serde-derive-1))
-       #:cargo-development-inputs
-       (("rust-serde-json" ,rust-serde-json-1))))
-    (home-page "http://axiom.co")
-    (synopsis "Cuckoo Filter: Practically Better Than Bloom")
-    (description "Cuckoo Filter: Practically Better Than Bloom")
-    (license license:expat)))
-
-(define-public rust-gfa-0.6
-  (package
-    (name "rust-gfa")
-    (version "0.6.2")
-    (source (origin
-              (method url-fetch)
-              (uri (crate-uri "gfa" version))
-              (file-name (string-append name "-" version ".tar.gz"))
-              (sha256
-               (base32
-                "0ghmy4r0324s6vvmj9nmh326346nkwm7nybnpcpswnjvf02b85gw"))))
-    (build-system cargo-build-system)
-    (arguments
-     `(#:cargo-inputs
-       (("rust-bstr" ,rust-bstr-0.2)
-        ("rust-bytemuck" ,rust-bytemuck-1)
-        ("rust-lazy-static" ,rust-lazy-static-1)
-        ("rust-nom" ,rust-nom-5)
-        ("rust-regex" ,rust-regex-1)
-        ("rust-serde" ,rust-serde-1))
-        #:cargo-development-inputs
-        (("rust-criterion" ,rust-criterion-0.3))))
-    (home-page "https://github.com/chfi/rs-gfa")
-    (synopsis
-     "Library for working with graphs in the GFA (Graphical Fragment Assembly) format")
-    (description
-     "Library for working with graphs in the GFA (Graphical Fragment Assembly) format")
-    (license license:expat)))
-
-(define-public rust-handlegraph-0.7.0-alpha.9
-  (package
-    (name "rust-handlegraph")
-    (version "0.7.0-alpha.9")
-    (source
-      (origin
-        (method url-fetch)
-        (uri (crate-uri "handlegraph" version))
-        (file-name
-         (string-append name "-" version ".tar.gz"))
-        (sha256
-         (base32
-          "1frlcdwhycjvizb0gfb0v36vxjdi0jxagl2l2v6dzdjxpaawv9rs"))))
-    (build-system cargo-build-system)
-    (arguments
-     `(#:cargo-inputs
-       (("rust-anyhow" ,rust-anyhow-1)
-        ("rust-boomphf" ,rust-boomphf-0.5)
-        ("rust-bstr" ,rust-bstr-0.2)
-        ("rust-crossbeam-channel" ,rust-crossbeam-channel-0.5)
-        ("rust-fnv" ,rust-fnv-1)
-        ("rust-gfa" ,rust-gfa-0.10)
-        ("rust-log" ,rust-log-0.4)
-        ("rust-rayon" ,rust-rayon-1)
-        ("rust-succinct" ,rust-succinct-0.5))
-       #:cargo-development-inputs
-       (("rust-quickcheck" ,rust-quickcheck-0.9)
-        ("rust-rand" ,rust-rand-0.7))))
-    (home-page "https://github.com/chfi/rs-handlegraph")
-    (synopsis "Library for use in variation graphs")
-    (description
-     "This package provides a Rust implementation of VG handle graph.")
-    (license license:expat)))
-
-(define-public rust-handlegraph-0.3
-  (package
-    (inherit rust-handlegraph-0.7.0-alpha.9)
-    (name "rust-handlegraph")
-    (version "0.3.0")
-    (source (origin
-              (method url-fetch)
-              (uri (crate-uri "handlegraph" version))
-              (file-name (string-append name "-" version ".tar.gz"))
-              (sha256
-               (base32
-                "1sj100w4lpj7798pws85qrfrzsily5hhzh6j118rwf56sgic1yml"))))
-    (arguments
-     `(#:cargo-inputs
-       (("rust-bstr" ,rust-bstr-0.2)
-        ("rust-gfa" ,rust-gfa-0.6))))))
-
-(define-public rust-kstring-1
-  (package
-    (name "rust-kstring")
-    (version "1.1.0")
-    (source
-      (origin
-        (method url-fetch)
-        (uri (crate-uri "kstring" version))
-        (file-name (string-append name "-" version ".tar.gz"))
-        (sha256
-         (base32 "1r4n9fa5scikqvl736nxghcfa6s3b07xz61w43hyzs2qb3wmd3nk"))))
-    (build-system cargo-build-system)
-    (arguments
-     `(;#:skip-build? #t     ; Uses unstable features.
-       #:cargo-inputs
-       (("rust-document-features" ,rust-document-features-0.2)
-        ("rust-serde" ,rust-serde-1)
-        ("rust-static-assertions" ,rust-static-assertions-1))
-       #:cargo-development-inputs
-       (("rust-criterion" ,rust-criterion-0.3)
-        ("rust-proptest" ,rust-proptest-1))))
-    (home-page "https://github.com/cobalt-org/kstring")
-    (synopsis "String optimized for map keys")
-    (description "Key String provides a Rust package optimized for map keys.")
-    (license (list license:expat license:asl2.0))))
-
-(define-public rust-line-drawing-0.8
-  (package
-    (name "rust-line-drawing")
-    (version "0.8.1")
-    (source (origin
-              (method url-fetch)
-              (uri (crate-uri "line-drawing" version))
-              (file-name (string-append name "-" version ".tar.gz"))
-              (sha256
-               (base32
-                "18a940s3mv8w5prpb99sdxykzhrvzrnymw3hvd7wisnkgbr11jqm"))))
-    (build-system cargo-build-system)
-    (arguments
-     `(#:cargo-inputs
-       (("rust-num-traits" ,rust-num-traits-0.2))
-       #:cargo-development-inputs
-       (("rust-bresenham" ,rust-bresenham-0.1)
-        ("rust-image" ,rust-image-0.23)
-        ("rust-rand" ,rust-rand-0.8))))
-    (home-page "https://github.com/expenses/line_drawing")
-    (synopsis
-     "A collection of line-drawing algorithms for use in graphics and video games.")
-    (description
-     "This package provides a collection of line-drawing algorithms for use in
-graphics and video games.")
-    (license license:expat)))
-
-(define-public rust-lodepng-3
-  (package
-    (name "rust-lodepng")
-    (version "3.8.0")
-    (source (origin
-              (method url-fetch)
-              (uri (crate-uri "lodepng" version))
-              (file-name (string-append name "-" version ".tar.gz"))
-              (sha256
-               (base32
-                "1f5d9bva17sq7npw9qh7h6sh02k0ycrjx5hr147q0jv4m0qd2970"))))
-    (build-system cargo-build-system)
-    (arguments
-     `(#:cargo-test-flags
-       (list "--release" "--"
-             ;; Not all files included.
-             "--skip=test::read_icc")
-       #:cargo-inputs
-       (("rust-crc32fast" ,rust-crc32fast-1)
-        ("rust-fallible-collections" ,rust-fallible-collections-0.4)
-        ("rust-flate2" ,rust-flate2-1)
-        ("rust-libc" ,rust-libc-0.2)
-        ("rust-rgb" ,rust-rgb-0.8))))
-    (home-page "https://lib.rs/crates/lodepng")
-    (synopsis
-     "Reading and writing PNG files without system dependencies. Pure Rust port of LodePNG.")
-    (description
-     "Reading and writing PNG files without system dependencies.  Pure Rust port of
-@code{LodePNG}.")
-    (license license:zlib)))
-
-(define-public rust-pyo3-0.14
-  (package
-    (name "rust-pyo3")
-    (version "0.14.5")
-    (source (origin
-              (method url-fetch)
-              (uri (crate-uri "pyo3" version))
-              (file-name (string-append name "-" version ".tar.gz"))
-              (sha256
-               (base32
-                "1j70b9bkncgpgnfxjxyvp4mk40rp55lk6qmacxm5c2k78y9hy41m"))))
-    (build-system cargo-build-system)
-    (arguments
-     `(#:cargo-inputs
-       (("rust-cfg-if" ,rust-cfg-if-1)
-        ("rust-hashbrown" ,rust-hashbrown-0.11)
-        ("rust-indexmap" ,rust-indexmap-1)
-        ("rust-indoc" ,rust-indoc-0.3)
-        ("rust-inventory" ,rust-inventory-0.1)
-        ("rust-libc" ,rust-libc-0.2)
-        ("rust-num-bigint" ,rust-num-bigint-0.4)
-        ("rust-num-complex" ,rust-num-complex-0.4)
-        ("rust-parking-lot" ,rust-parking-lot-0.11)
-        ("rust-paste" ,rust-paste-0.1)
-        ("rust-pyo3-build-config" ,rust-pyo3-build-config-0.14)
-        ("rust-pyo3-macros" ,rust-pyo3-macros-0.14)
-        ("rust-serde" ,rust-serde-1)
-        ("rust-unindent" ,rust-unindent-0.1))
-       #:cargo-development-inputs
-       (("rust-assert-approx-eq" ,rust-assert-approx-eq-1)
-        ("rust-criterion" ,rust-criterion-0.3)
-        ("rust-proptest" ,rust-proptest-0.10)
-        ("rust-rustversion" ,rust-rustversion-1)
-        ("rust-serde-json" ,rust-serde-json-1)
-        ("rust-trybuild" ,rust-trybuild-1))))
-    (inputs (list python))
-    (home-page "https://github.com/pyo3/pyo3")
-    (synopsis "Rust bindings for the Python interpreter")
-    (description
-     "This package provides Rust bindings for Python, including tools for
-creating native Python extension modules.  Running and interacting with
-Python code from a Rust binary is also supported.")
-    (license license:asl2.0)))
-
-(define-public rust-pyo3-build-config-0.14
-  (package
-    (name "rust-pyo3-build-config")
-    (version "0.14.5")
-    (source (origin
-              (method url-fetch)
-              (uri (crate-uri "pyo3-build-config" version))
-              (file-name (string-append name "-" version ".tar.gz"))
-              (sha256
-               (base32
-                "13vkcl49b2x81azb613ss256k8pazrfc4fy4ny8pzgdciirn2afi"))))
-    (build-system cargo-build-system)
-    (arguments
-     `(#:cargo-inputs (("rust-once-cell" ,rust-once-cell-1))))
-    (home-page "https://github.com/pyo3/pyo3")
-    (synopsis "Build configuration for the PyO3 ecosystem")
-    (description "Build configuration for the PyO3 ecosystem")
-    (license license:asl2.0)))
-
-(define-public rust-pyo3-macros-0.14
-  (package
-    (name "rust-pyo3-macros")
-    (version "0.14.5")
-    (source (origin
-              (method url-fetch)
-              (uri (crate-uri "pyo3-macros" version))
-              (file-name (string-append name "-" version ".tar.gz"))
-              (sha256
-               (base32
-                "1a4fh24c5q85f31n2rwbqrai2bjprf9kzh6xvpgj8j3hblhwa2zw"))))
-    (build-system cargo-build-system)
-    (arguments
-     `(#:cargo-inputs
-       (("rust-pyo3-macros-backend" ,rust-pyo3-macros-backend-0.14)
-        ("rust-quote" ,rust-quote-1)
-        ("rust-syn" ,rust-syn-1))))
-    (home-page "https://github.com/pyo3/pyo3")
-    (synopsis "Proc macros for PyO3 package")
-    (description "Proc macros for PyO3 package")
-    (license license:asl2.0)))
-
-(define-public rust-pyo3-macros-backend-0.14
-  (package
-    (name "rust-pyo3-macros-backend")
-    (version "0.14.5")
-    (source (origin
-              (method url-fetch)
-              (uri (crate-uri "pyo3-macros-backend" version))
-              (file-name (string-append name "-" version ".tar.gz"))
-              (sha256
-               (base32
-                "1ps068jqyq1275zxxbzn6hyz9lkfz35az8waj6mzlji2jg2kyqki"))))
-    (build-system cargo-build-system)
-    (arguments
-     `(#:cargo-inputs
-       (("rust-proc-macro2" ,rust-proc-macro2-1)
-        ("rust-pyo3-build-config" ,rust-pyo3-build-config-0.14)
-        ("rust-quote" ,rust-quote-1)
-        ("rust-syn" ,rust-syn-1))))
-    (home-page "https://github.com/pyo3/pyo3")
-    (synopsis "Code generation for PyO3 package")
-    (description "Code generation for PyO3 package")
-    (license license:asl2.0)))
-
-(define-public rust-quick-csv-0.1
-  (package
-    (name "rust-quick-csv")
-    (version "0.1.6")
-    (source (origin
-              (method url-fetch)
-              (uri (crate-uri "quick-csv" version))
-              (file-name (string-append name "-" version ".tar.gz"))
-              (sha256
-               (base32
-                "131k8zzlplk2h62wz813jbvm0sk7v3mixwhhq34y9lmp3mqbgx7d"))))
-    (build-system cargo-build-system)
-    (arguments
-     `(#:cargo-inputs (("rust-rustc-serialize" ,rust-rustc-serialize-0.3))))
-    (home-page "https://github.com/tafia/quick-csv")
-    (synopsis "quick csv reader and decoder")
-    (description "quick csv reader and decoder")
-    (license license:expat)))
-
-(define-public rust-succinct-0.5
-  (package
-    (name "rust-succinct")
-    (version "0.5.2")
-    (source
-      (origin
-        (method url-fetch)
-        (uri (crate-uri "succinct" version))
-        (file-name
-         (string-append name "-" version ".tar.gz"))
-        (sha256
-         (base32 "0654c9gq50x7djyf25zbzz3d2pc4x3z21wmjj3qbr6d9h4hbd63p"))))
-    (build-system cargo-build-system)
-    (arguments
-     `(#:cargo-inputs
-       (("rust-byteorder" ,rust-byteorder-1)
-        ("rust-num-traits" ,rust-num-traits-0.2))
-       #:cargo-development-inputs
-       (("rust-quickcheck" ,rust-quickcheck-0.9))))
-    (home-page "https://github.com/tov/succinct-rs")
-    (synopsis "Succinct data structures for Rust")
-    (description "This package provides succinct data structures for Rust.")
-    (license (list license:expat license:asl2.0))))
-
-(define-public rust-clap-for-jrep
-  (package
-    (name "rust-clap")
-    (version "2.33.0")
-    (source
-     (origin
-       (method url-fetch)
-       (uri (crate-uri "clap" version))
-       (file-name
-        (string-append name "-" version ".tar.gz"))
-       (sha256
-        (base32
-         "1nf6ld3bims1n5vfzhkvcb55pdzh04bbhzf8nil5vvw05nxzarsh"))))
-    (build-system cargo-build-system)
-    (arguments
-     `(#:cargo-inputs
-       (("rust-atty" ,rust-atty-0.2)
-        ("rust-bitflags" ,rust-bitflags-1)
-        ("rust-clap-derive" ,rust-clap-derive-3)
-        ("rust-indexmap" ,rust-indexmap-1)
-        ("rust-os-str-bytes" ,rust-os-str-bytes-2)
-        ("rust-strsim" ,rust-strsim-0.10)
-        ("rust-termcolor" ,rust-termcolor-1)
-        ("rust-ansi-term" ,rust-ansi-term-0.11)
-        ("rust-terminal-size" ,rust-terminal-size-0.1)
-        ("rust-textwrap" ,rust-textwrap-0.12)
-        ("rust-unicode-width" ,rust-unicode-width-0.1)
-        ("rust-vec-map" ,rust-vec-map-0.8)
-        ("rust-yaml-rust" ,rust-yaml-rust-0.4))
-       #:cargo-development-inputs
-       (("rust-criterion" ,rust-criterion-0.3)
-        ("rust-lazy-static" ,rust-lazy-static-1)
-        ("rust-regex" ,rust-regex-1)
-        ("rust-version-sync" ,rust-version-sync-0.8))))
-    (home-page "https://clap.rs/")
-    (synopsis "Command Line Argument Parser")
-    (description
-     "This package provides a simple to use, efficient, and full-featured
-Command Line Argument Parser.")
-    (license (list license:expat license:asl2.0))))
-
-(define-public jrep
-  (package
-    (name "jrep")
-    (version "0.1.3")
-    (source
-     (origin
-       (method git-fetch)
-       (uri (git-reference
-             (url "https://github.com/joshua-laughner/jrep")
-             (commit (string-append "v" version))))
-       (file-name (git-file-name name version))
-       (sha256
-        (base32
-         "0syvlc93w26v856hp5l8ik615dfrvax6hdfzw5kqhaww3siqjaj9"))))
-    (build-system cargo-build-system)
-    (arguments
-     `(#:cargo-inputs
-       (("rust-clap" ,rust-clap-for-jrep)
-        ("rust-exitcode" ,rust-exitcode-1)
-        ("rust-term" ,rust-term-0.7)
-        ("rust-regex" ,rust-regex-1)
-        ("rust-serde" ,rust-serde-1)
-        ("rust-serde-json" ,rust-serde-json-1))))
-    (home-page "https://github.com/joshua-laughner/jrep/")
-    (synopsis "grep for Jupyter notebooks")
-    (description
-"@code{jrep} is @code{grep} for Jupyter notebooks.  It is a command line
-program that can search across multiple notebooks for specific text,
-but limit itself to certain types of cells, source text, output data,
-or any combination.")
-    (license license:gpl3+)))
-
-(define-public notebook-tools
-  (let ((commit "a9db1f4f90f6df72d28bf1235ca16b988d7b86be")
-        (revision "0"))
-    (package
-      (name "notebook-tools")
-      (version commit)
-      (source
-       (origin
-         (method git-fetch)
-         (uri (git-reference
-               (url "https://github.com/CADLabs/notebook-tools")
-               (commit commit)))
-         (file-name (git-file-name name version))
-         (sha256
-          (base32
-           "0mmvqjfcsa6fq12rpay9w6ra1q8ijhmm1raqzi4d70y7wsbd20lw"))))
-      (build-system cargo-build-system)
-      (arguments
-       `(#:cargo-inputs
-         (("rust-clap" ,rust-clap-3)
-          ("rust-exitcode" ,rust-exitcode-1)
-          ("rust-term" ,rust-term-0.7)
-          ("rust-regex" ,rust-regex-1)
-          ("rust-serde" ,rust-serde-1)
-          ("rust-serde-json" ,rust-serde-json-1))))
-      (home-page "https://github.com/CADLabs/notebook-tools")
-      (synopsis "Rust CLI tools for manipulation of Jupyter Notebooks")
-      (description "Rust CLI tools for manipulation of Jupyter Notebooks.")
-      (license #f)))) ; There is no license.
-
-(define-public rust-trycmd-0.12
-  (package
-    (name "rust-trycmd")
-    (version "0.12.2")
-    (source
-      (origin
-        (method url-fetch)
-        (uri (crate-uri "trycmd" version))
-        (file-name (string-append name "-" version ".tar.gz"))
-        (sha256
-         (base32 "1rwa5nzq8c5zg7lqmpkf7hyib415yxshd9amp911y8w1zss4s38p"))))
-    (build-system cargo-build-system)
-    (arguments
-     `(#:cargo-inputs
-       (("rust-backtrace" ,rust-backtrace-0.3)
-        ("rust-concolor" ,rust-concolor-0.0.8)
-        ("rust-content-inspector" ,rust-content-inspector-0.2)
-        ("rust-difflib" ,rust-difflib-0.4)
-        ("rust-dunce" ,rust-dunce-1)
-        ("rust-escargot" ,rust-escargot-0.5)
-        ("rust-glob" ,rust-glob-0.3)
-        ("rust-humantime" ,rust-humantime-2)
-        ("rust-humantime-serde" ,rust-humantime-serde-1)
-        ("rust-normalize-line-endings" ,rust-normalize-line-endings-0.3)
-        ("rust-os-pipe" ,rust-os-pipe-1)
-        ("rust-rayon" ,rust-rayon-1)
-        ("rust-schemars" ,rust-schemars-0.8)
-        ("rust-serde" ,rust-serde-1)
-        ("rust-serde-json" ,rust-serde-json-1)
-        ("rust-shlex" ,rust-shlex-1)
-        ("rust-tempfile" ,rust-tempfile-3)
-        ("rust-toml-edit" ,rust-toml-edit-0.12)
-        ("rust-wait-timeout" ,rust-wait-timeout-0.2)
-        ("rust-walkdir" ,rust-walkdir-2)
-        ("rust-yansi" ,rust-yansi-0.5))))
-    (home-page "https://github.com/assert-rs/trycmd")
-    (synopsis "Snapshot testing for a herd of CLI tests")
-    (description "Snapshot testing for a herd of CLI tests")
-    (license (list license:expat license:asl2.0))))
-
-(define-public rust-toml-edit-0.12
-  (package
-    (name "rust-toml-edit")
-    (version "0.12.6")
-    (source
-      (origin
-        (method url-fetch)
-        (uri (crate-uri "toml-edit" version))
-        (file-name (string-append name "-" version ".tar.gz"))
-        (sha256
-         (base32 "0wx4wd849bmkqj0gdi041gmpfpvlyhy2ha4zpin69yw9d9npl8cl"))))
-    (build-system cargo-build-system)
-    (arguments
-     `(#:skip-build? #t     ; Not all inputs packaged
-       ;#:tests? #f          ; Skip tests for now
-       #:cargo-inputs
-       (("rust-combine" ,rust-combine-4)
-        ("rust-indexmap" ,rust-indexmap-1)
-        ("rust-itertools" ,rust-itertools-0.10)
-        ("rust-kstring" ,rust-kstring-1)
-        ("rust-serde" ,rust-serde-1))
-       #:cargo-development-inputs
-       (("rust-criterion" ,rust-criterion-0.3)
-        ;("rust-fs-snapshot" ,rust-fs-snapshot-0.1)
-        ;("rust-pretty-assertions" ,rust-pretty-assertions-1)
-        ("rust-serde-json" ,rust-serde-json-1)
-        ("rust-toml" ,rust-toml-0.5)
-        ;("rust-toml-test-harness" ,rust-toml-test-harness-0.3)
-        )))
-    (home-page "https://github.com/ordian/toml_edit")
-    (synopsis "Yet another format-preserving TOML parser.")
-    (description "Yet another format-preserving TOML parser.")
-    (license (list license:expat license:asl2.0))))
-
-(define-public rust-vcf-0.6
-  (package
-    (name "rust-vcf")
-    (version "0.6.1")
-    (source (origin
-              (method url-fetch)
-              (uri (crate-uri "vcf" version))
-              (file-name (string-append name "-" version ".tar.gz"))
-              (sha256
-               (base32
-                "0dc0p00a19rpmhrqcshrn2qg5l716b5s1fy8vpd3p32bw77vpbs0"))))
-    (build-system cargo-build-system)
-    (arguments
-     `(#:tests? #f      ; Not all files included
-       #:cargo-inputs
-       (("rust-nom" ,rust-nom-7)
-        ("rust-once-cell" ,rust-once-cell-1)
-        ("rust-thiserror" ,rust-thiserror-1))
-       #:cargo-development-inputs
-       (("rust-clap" ,rust-clap-2)
-        ("rust-flate2" ,rust-flate2-1))))
-    (home-page "https://github.com/informationsea/vcf-rs")
-    (synopsis "Rust implmentation of VCF parser")
-    (description "This package provides a rust implmentation of a VCF parser.")
-    (license license:asl2.0)))
-
-(define-public rust-gsl-sys
-  (package
-    (name "rust-gsl-sys")
-    (version "3.0.0")
-    (source
-     (origin
-       (method url-fetch)
-       (uri (crate-uri "GSL-sys" version))
-       (file-name (string-append name "-" version ".tar.gz"))
-       (sha256
-        (base32 "17dx066l1pbjwp9syjkzqb6fiajyb4wc814zqdfrj807rh6nfxs5"))))
-    (build-system cargo-build-system)
-    (native-inputs
-     (list gsl))
-    (arguments
-     `(#:cargo-inputs
-       (("rust-libc" ,rust-libc-0.2)
-	("rust-pkg-config"  ,rust-pkg-config-0.3))))
-    (home-page "https://github.com/GuillaumeGomez/rust-GSL")
-    (synopsis "A rust binding for the GSL (the GNU scientific library)")
-    (description "This is the FFI counter-part of the Rust GSL crate. It is better to use the GSL crate directly rather than this one (unless something is missing the Rust binding!).")
-    (license license:expat)))
-
-(define-public rust-gsl
-  (package
-    (name "rust-gsl")
-    (version "6.0.0")
-    (source
-     (origin
-       (method url-fetch)
-       (uri (crate-uri "GSL" version))
-       (file-name (string-append name "-" version ".tar.gz"))
-       (sha256
-        (base32 "1kpiivagrsk9ags7d4k2521jwix0lqgnd3i8ayj3dfniszvcmgn9"))))
-    (build-system cargo-build-system)
-    (native-inputs
-     (list gsl))
-    (arguments
-     `(#:tests? #false
-       #:cargo-inputs
-       (("GSL-sys" ,rust-gsl-sys)
-	("paste"  ,rust-paste-1))))
-    (home-page "https://github.com/GuillaumeGomez/rust-GSL")
-    (synopsis "A rust binding for the GSL (the GNU scientific library)")
-    (description "This package is wrapper for gsl")
-    (license license:gpl3+)))
-
-(define-public gn-rust-correlation
-  (let ((commit "48604d86471df965f189e46580578b24191add0e")
-        (revision "0"))
-    (package
-      (name "gn-rust-correlation")
-      (version (git-version "0.1.4" revision commit))
-      (source
-       (origin
-         (method git-fetch)
-         (uri (git-reference
-               (url "https://github.com/Alexanderlacuna/correlation_rust.git")
-               (commit commit)))
-         (file-name (git-file-name name version))
-         (sha256
-          (base32 "1x7zz0ldf9bmb4lmj3yrhbgcqanc64pl03dimrx5aw7cap006pjw"))))
-      (build-system cargo-build-system)
-      (native-inputs (list gsl))
-      (arguments
-       `(#:cargo-inputs (("rust-serde" ,rust-serde-1)
-                         ("rust-serde-json" ,rust-serde-json-1)
-                         ("GSL" ,rust-gsl)
-                         ("rust-assert-approx-eq" ,rust-assert-approx-eq-1))
-         #:cargo-development-inputs (("rust-criterion" ,rust-criterion-0.3))))
-      (home-page "https://github.com/Alexanderlacuna/correlation_rust")
-      (synopsis "Re-implementation of genenetwork/correlation in Rust")
-      (description "Re-implementation of genenetwork/correlation in Rust")
-      (license #f))))
diff --git a/gn/packages/cwl.scm b/gn/packages/cwl.scm
deleted file mode 100644
index fe5fcb2..0000000
--- a/gn/packages/cwl.scm
+++ /dev/null
@@ -1,112 +0,0 @@
-(define-module (gn packages cwl)
-  #:use-module ((guix licenses) #:prefix license:)
-  #:use-module (guix download)
-  #:use-module (guix gexp)
-  #:use-module (guix packages)
-  #:use-module (guix build-system pyproject)
-  #:use-module (guix build-system python)
-  #:use-module (gnu packages)
-  #:use-module (gnu packages bioinformatics)
-  #:use-module (gnu packages docker)
-  #:use-module (gnu packages node)
-  #:use-module (gnu packages python-web)
-  #:use-module (gnu packages python-xyz)
-  #:use-module (gnu packages serialization)
-  #:use-module (gnu packages time)
-  #:use-module (gn packages python))
-
-
-(define-public cwl-runner
-  (package
-    (name "cwl-runner")
-    (version "1.0")
-    (source
-      (origin
-        (method url-fetch)
-        (uri (pypi-uri "cwl_runner" version))
-        (sha256
-         (base32
-          "0011am2xqwchysdznayrmwhg4bfjl4wlq6m4k20z1m7gccyzjgw0"))))
-    (build-system python-build-system)
-    (propagated-inputs
-     `(("cwltool" ,cwltool)))
-    (home-page
-     "https://github.com/common-workflow-language/common-workflow-language")
-    (synopsis "Common workflow language reference implementation")
-    (description
-     "Common workflow language alternate entry point to allow cwl-runner 
-script as an implementation-agnostic script interpreter.") 
-     (license license:asl2.0)))
-
-;; python-toil tightly integrates with cwltool using it as a library. So,
-;; create a library version of cwltool where inputs become propagated inputs.
-(define-public python-cwltool
-  (package
-    (inherit cwltool)
-    (name "python-cwltool")
-    (inputs
-     (list node))
-    (propagated-inputs
-     (modify-inputs (package-inputs cwltool)
-       (delete "node")))))
-
-(define-public python-toil
-  (package
-    (name "python-toil")
-    (version "6.1.0")
-    (source (origin
-              (method url-fetch)
-              (uri (pypi-uri "toil" version))
-              (sha256
-               (base32
-                "0hwaihnncsfxw0sf3iigvgw6nylrb56lpk8qjadkgazr98dsp4ha"))))
-    (build-system pyproject-build-system)
-    (arguments
-     (list
-      #:phases
-      #~(modify-phases %standard-phases
-          (add-after 'unpack 'disable-optional-features
-            (lambda _
-              (substitute* "requirements-cwl.txt"
-                ;; Loosen version restrictions on ruamel.yaml.
-                (("ruamel.yaml[<>=.,[:digit:]]*\n") "ruamel.yaml\n")
-                ;; Remove optional dependency on galaxy-util and
-                ;; galaxy-tool-util. TODO: Package these and restore these
-                ;; dependencies.
-                (("galaxy-util[^\n]*") "")
-                (("galaxy-tool-util[^\n]*") ""))
-              ;; Disable optional wdl, wes and mesos features. We don't yet
-              ;; have dependencies packaged for them. TODO: Package these
-              ;; dependencies and enable these features.
-              (substitute* "setup.py"
-                (("\"wdl\",") "")
-                (("toil-cwl-runner = toil.cwl.cwltoil:main \\[cwl\\]")
-                 "toil-cwl-runner = toil.cwl.cwltoil:main")
-                (("'toil-wdl-runner = toil.wdl.wdltoil:main \\[wdl\\]',") "")
-                (("'toil-wes-cwl-runner = toil.server.cli.wes_cwl_runner:main \\[server\\]',") "")
-                (("'_toil_mesos_executor = toil.batchSystems.mesos.executor:main \\[mesos\\]',") "")))))))
-    (propagated-inputs
-     (list python-addict
-           python-cachecontrol
-           python-configargparse
-           python-cwltool
-           python-dateutil
-           python-dill
-           python-docker
-           python-enlighten
-           python-psutil
-           python-pypubsub
-           python-pytz
-           python-pyyaml
-           python-requests
-           python-ruamel.yaml
-           python-typing-extensions-4.10
-           python-urllib3))
-    (home-page "https://github.com/DataBiosphere/toil")
-    (synopsis "Scalable, efficient and cross-platform workflow engine")
-    (description "Toil is a scalable, efficient, cross-platform pipeline
-management system, written entirely in Python, and designed around the
-principles of functional programming.")
-    (license (list license:asl2.0    ;; main license
-                   license:expat)))) ;; src/toil/batchSystems/lsf.py and
-                                     ;; src/toil/batchSystems/lsfHelper.py
diff --git a/gn/packages/databases.scm b/gn/packages/databases.scm
index 20ea612..2b7c1a8 100644
--- a/gn/packages/databases.scm
+++ b/gn/packages/databases.scm
@@ -2,141 +2,8 @@
   #:use-module (gnu packages)
   #:use-module (guix packages)
   #:use-module (guix download)
-  #:use-module (guix utils)
-  #:use-module (guix build-system gnu)
   #:use-module (guix build-system python)
-  #:use-module (past packages tls)
-  #:use-module (gnu packages compression)
-  #:use-module (gnu packages databases)
-  #:use-module (gnu packages linux)
-  #:use-module (gnu packages ncurses)
-  #:use-module (gnu packages perl)
-  #:use-module (gnu packages readline)
-  ; #:use-module (gnu packages tls))
-  )
-
-(define-public mysql-5.0
-  (package
-    (inherit mysql)
-    (version "5.0.96")
-    (source
-      (origin
-        (method url-fetch)
-        (uri (string-append "https://downloads.mysql.com/archives/mysql-"
-                            (version-major+minor version)
-                            "/mysql-" version ".tar.gz"))
-        (sha256
-         (base32
-          "117w87bqj2vqxkiljcwyaxbkj5fygl5570zla0baln2ifwa3i1a3"))))
-    (build-system gnu-build-system)
-    (arguments
-     '(#:configure-flags
-       (list
-         "--with-unix-socket-path=/var/run/mysqld/mysqld.sock"
-         "--with-extra-charsets=all"
-         "--enable-thread-safe-client"
-         "--without-openssl"
-         "--without-docs"
-         ;; Use system readline.
-         "--without-readline"
-         "--without-libedit")
-       ;; TODO: Enable tests.
-       ;#:test-target "test-force"
-       ;#:test-target "test-bt"
-       #:make-flags '("CXXFLAGS=-Wno-narrowing -fpermissive")
-       #:phases
-       (modify-phases %standard-phases
-         (add-before 'check 'pre-check
-           (lambda _
-             (setenv "PERL5LIB" (string-append
-                                  (getcwd) "/mqsql-test"
-                                  ":" (getenv "PERL5LIB")))
-             #t))
-         (add-after 'install 'clean-install-directory
-           (lambda* (#:key outputs #:allow-other-keys)
-             (let ((out (assoc-ref outputs "out")))
-               (delete-file-recursively (string-append out "/mysql-test"))
-               (delete-file-recursively (string-append out "/sql-bench"))
-               (for-each delete-file
-                         (find-files (string-append out "/bin") "^mysqltest"))
-               #t))))))
-    (inputs
-     `(("ncurses" ,ncurses)
-       ("perl" ,perl)
-       ("procps" ,procps)
-       ("readline" ,readline)
-       ("zlib" ,zlib)))
-    (native-inputs `())))
-
-(define-public mysql-5.5
-  (package
-    (inherit mysql)
-    (version "5.5.62")
-    (source
-      (origin
-        (method url-fetch)
-        (uri (string-append "https://downloads.mysql.com/archives/mysql-"
-                            (version-major+minor version)
-                            "/mysql-" version ".tar.gz"))
-        (sha256
-         (base32
-          "1mwrzwk9ap09s430fpdkyhvx5j2syd3xj2hyfzvanjphq4xqbrxi"))))
-    (arguments
-     `(#:configure-flags
-       '("-DBUILD_CONFIG=mysql_release"
-         "-DWITH_SSL=system"
-         "-DWITH_ZLIB=system"
-         "-DWITH_READLINE=OFF"
-         "-DWITH_LIBEDIT=OFF"
-         "-DDEFAULT_CHARSET=utf8"
-         "-DDEFAULT_COLLATION=utf8_general_ci"
-         "-DMYSQL_DATADIR=/var/lib/mysql"
-         "-DMYSQL_UNIX_ADDR=/run/mysqld/mysqld.sock"
-         "-DINSTALL_INFODIR=share/mysql/docs"
-         "-DINSTALL_MANDIR=share/man"
-         "-DINSTALL_PLUGINDIR=lib/mysql/plugin"
-         "-DINSTALL_SCRIPTDIR=bin"
-         "-DINSTALL_INCLUDEDIR=include/mysql"
-         "-DINSTALL_DOCREADMEDIR=share/mysql/docs"
-         "-DINSTALL_SUPPORTFILESDIR=share/mysql"
-         "-DINSTALL_MYSQLSHAREDIR=share/mysql"
-         "-DINSTALL_DOCDIR=share/mysql/docs"
-         "-DINSTALL_SHAREDIR=share/mysql"
-         ;; Get rid of test data.
-         "-DINSTALL_MYSQLTESTDIR="
-         "-DINSTALL_SQLBENCHDIR=")
-       #:phases
-       (modify-phases %standard-phases
-         (add-after 'install 'clean-install-directories
-           (lambda* (#:key outputs #:allow-other-keys)
-             (let ((out (assoc-ref outputs "out")))
-               (delete-file-recursively (string-append out "/data"))
-               (for-each delete-file
-                         (find-files (string-append out "/bin") "_embedded$"))
-               #t))))))
-    (inputs
-     `(("libaio" ,libaio)
-       ("ncurses" ,ncurses)
-       ("openssl" ,openssl-1.0)
-       ("readline" ,readline)
-       ("zlib" ,zlib)))))
-
-(define-public python2-mysqlclient
-  (let ((base (package-with-python2 python-mysqlclient)))
-    (package
-      (inherit base)
-      (version "1.4.6")
-      (source
-        (origin
-          (method url-fetch)
-          (uri (pypi-uri "mysqlclient" version))
-          (sha256
-           (base32
-            "05ifrfz7rrl7j4gq4xz5acd76lrnmry9vrvg98hknakm72damzgk"))))
-      (inputs
-       `(("zlib" ,zlib)
-         ,@(package-inputs base))))))
-
+  #:use-module (gnu packages databases))
 
 (define-public python-mysqlclient-2.2.7
   (package
diff --git a/gn/packages/dlang.scm b/gn/packages/dlang.scm
deleted file mode 100644
index a7d76a2..0000000
--- a/gn/packages/dlang.scm
+++ /dev/null
@@ -1,264 +0,0 @@
-(define-module (gn packages dlang)
-  #:use-module ((guix licenses) #:prefix license:)
-  #:use-module (guix packages)
-  #:use-module (guix download)
-  #:use-module (guix git-download)
-  #:use-module (guix build-system gnu)
-  #:use-module (guix build-system cmake)
-  #:use-module (gnu packages)
-  #:use-module (gnu packages base)
-  #:use-module (gnu packages check)
-  #:use-module (gnu packages compression)
-  #:use-module (gnu packages curl)
-  #:use-module (gnu packages gdb)
-  #:use-module (gnu packages libedit)
-  #:use-module (gnu packages dlang)
-  #:use-module (gnu packages llvm)
-  #:use-module (gnu packages pkg-config)
-  #:use-module (gnu packages python)
-  #:use-module (gnu packages python-xyz)
-  #:use-module (gnu packages textutils)
-  #:use-module (gnu packages xorg))
-
-#!
-The following tests FAILED:
-        394 - std.socket (Failed)
-        793 - std.socket-debug (Failed)
-        1192 - std.socket-shared (Failed)
-        1591 - std.socket-debug-shared (Failed)
-        1608 - druntime-test-aa (Failed)
-        1610 - druntime-test-allocations (Failed)
-        1612 - druntime-test-betterc (Failed)
-        1614 - druntime-test-config (Failed)
-        1616 - druntime-test-coverage (Failed)
-        1618 - druntime-test-cpuid (Failed)
-        1620 - druntime-test-cycles (Failed)
-        1622 - druntime-test-exceptions (Failed)
-        1624 - druntime-test-gc (Failed)
-        1626 - druntime-test-hash (Failed)
-        1630 - druntime-test-init_fini (Failed)
-        1632 - druntime-test-profile (Failed)
-        1634 - druntime-test-shared (Failed)
-        1638 - druntime-test-thread (Failed)
-        1640 - druntime-test-typeinfo (Failed)
-        1642 - druntime-test-unittest (Failed)
-        1643 - build-run-dmd-testsuite (Failed)
-        1645 - dmd-testsuite-debug (Not Run)
-        1647 - dmd-testsuite (Not Run)
-        1648 - lit-tests (Failed)
-Errors while running CTest
-!#
-
-(define ldc-bootstrap-0.17
-  (package
-    (name "ldc")
-    (version "0.17.6")
-    (source
-     (origin
-       (method git-fetch)
-       (uri (git-reference
-             (url "https://github.com/ldc-developers/ldc")
-             (commit (string-append "v" version))))
-       (file-name (git-file-name name version))
-       (sha256
-        (base32 "1q6hm4fkrcwys83x0p4kfg9xrc1b9g2qicqif2zy5z4nsfsb5vgs"))))
-    (build-system cmake-build-system)
-    (supported-systems '("x86_64-linux" "i686-linux" "armhf-linux"))
-    (properties
-     ;; Some of the tests take a very long time on ARMv7.  See
-     ;; <https://lists.gnu.org/archive/html/guix-devel/2018-02/msg00312.html>.
-     `((max-silent-time . ,(* 3600 3))))
-    (arguments
-     `(#:tests? #f               ;requires obsolete python-lit test dependency
-       #:phases
-       (modify-phases %standard-phases
-         (add-after 'unpack 'unpack-submodule-sources
-           (lambda* (#:key inputs #:allow-other-keys)
-             (let ((unpack (lambda (input target)
-                             (let ((source (assoc-ref inputs input)))
-                               ;; Git checkouts are directories as long as
-                               ;; there are no patches; tarballs otherwise.
-                               (if (file-is-directory? source)
-                                   (copy-recursively source target)
-                                   (with-directory-excursion target
-                                     (invoke "tar" "xvf" source
-                                             "--strip-components=1")))))))
-               (unpack "phobos-src" "runtime/phobos")
-               (unpack "druntime-src" "runtime/druntime")
-               (unpack "dmd-testsuite-src" "tests/d2/dmd-testsuite"))))
-         (add-after 'unpack-submodule-sources 'patch-paths
-           (lambda* (#:key inputs #:allow-other-keys)
-             (substitute* "runtime/phobos/std/process.d"
-               (("/bin/sh") (which "sh"))
-               (("echo") (which "echo")))
-             (substitute* "runtime/phobos/std/datetime.d"
-               (("/usr/share/zoneinfo/")
-                (string-append (assoc-ref inputs "tzdata") "/share/zoneinfo"))
-               (("tzName == \"[+]VERSION\"")
-                "(tzName == \"+VERSION\" || \
-std.algorithm.endsWith(tzName, \"/leapseconds\"))")))))))
-    (inputs
-     `(("libconfig" ,libconfig)
-       ("libedit" ,libedit)
-       ("tzdata" ,tzdata)
-       ("zlib" ,zlib)))
-    (native-inputs
-     `(("llvm" ,llvm-12)
-       ("python-wrapper" ,python-wrapper)
-       ("unzip" ,unzip)
-       ("phobos-src"
-        ,(origin
-           (method git-fetch)
-           (uri (git-reference
-                 (url "https://github.com/ldc-developers/phobos")
-                 (commit (string-append "ldc-v" version))))
-           (file-name (git-file-name "phobos" version))
-           (sha256
-            (base32 "15jzs38wanks2jfp2izzl7zqrp4c8ai54ppsgm8ws86p3sbbkmj8"))))
-       ("druntime-src"
-        ,(origin
-           (method git-fetch)
-           (uri (git-reference
-                 (url "https://github.com/ldc-developers/druntime")
-                 (commit (string-append "ldc-v" version))))
-           (file-name (git-file-name "druntime" version))
-           (sha256
-            (base32 "00wr2kiggwnd8h7by51fhj1xc65hv1ysip5gbgdbkfar58p2d0bb"))))
-       ("dmd-testsuite-src"
-        ,(origin
-           (method git-fetch)
-           (uri (git-reference
-                 (url "https://github.com/ldc-developers/dmd-testsuite")
-                 (commit (string-append "ldc-v" version))))
-           (file-name (git-file-name "dmd-testsuite" version))
-           (sha256
-            (base32 "1d1c0979wbippldrkjf7szyj4n87hxz8dwqg1r5b3aai37g9kcky"))))))
-    (home-page "http://wiki.dlang.org/LDC")
-    (synopsis "LLVM-based compiler for the D programming language")
-    (description
-     "LDC is an LLVM compiler for the D programming language.  It is based on
-the latest DMD compiler that was written in C and is used for
-bootstrapping more recent compilers written in D.")
-    ;; Most of the code is released under BSD-3, except for code originally
-    ;; written for GDC, which is released under GPLv2+, and the DMD frontend,
-    ;; which is released under the "Boost Software License version 1.0".
-    (license (list license:bsd-3
-                   license:gpl2+
-                   license:boost1.0))))
-
-(define-public ldc
-  ;; Phobos, druntime and dmd-testsuite library dependencies do
-  ;; not always have a newer release than the compiler, hence we
-  ;; retain this variable.
-  (let ((older-version "1.26.0")) ;; retain this because sometimes the libs are older
-    (package
-      (inherit ldc-bootstrap-0.17)
-      (name "ldc")
-      (version "1.26.0")
-      (source
-       (origin
-         (method git-fetch)
-         (uri (git-reference
-               (url "https://github.com/ldc-developers/ldc")
-               (commit (string-append "v" version))))
-         (file-name (git-file-name name version))
-         (sha256
-          (base32 "1k9998w8zdm6l6ld8wzxvp5hj5jfqhnxmvs82vmrrh92ysrfjbp6"))))
-      (arguments
-       `(#:tests? #f ;; tests fail, see list above
-         #:phases
-         (modify-phases %standard-phases
-           (add-after 'unpack 'unpack-submodule-sources
-             (lambda* (#:key inputs #:allow-other-keys)
-               (let ((unpack (lambda (input target)
-                               (let ((source (assoc-ref inputs input)))
-                                 ;; Git checkouts are directories as long as
-                                 ;; there are no patches; tarballs otherwise.
-                                 (if (file-is-directory? source)
-                                     (copy-recursively source target)
-                                     (with-directory-excursion target
-                                       (invoke "tar" "xvf" source
-                                               "--strip-components=1")))))))
-                 (unpack "phobos-src" "runtime/phobos")
-                 (unpack "druntime-src" "runtime/druntime")
-                 (unpack "dmd-testsuite-src" "tests/d2/dmd-testsuite")
-                 #t)))
-           (add-after 'unpack-submodule-sources 'patch-phobos
-             (lambda* (#:key inputs #:allow-other-keys)
-               (substitute* '("runtime/phobos/std/process.d"
-                              "tests/linking/linker_switches.d")
-                 (("/bin/sh") (which "sh"))
-                 (("echo") (which "echo")))
-               (substitute* "tests/d2/dmd-testsuite/Makefile"
-                 (("/bin/bash") (which "bash")))
-               ;; disable unittests in the following files. We are discussing with
-               ;; upstream
-               (substitute* '("runtime/phobos/std/net/curl.d"
-                              "runtime/phobos/std/datetime/systime.d"
-                              "runtime/phobos/std/datetime/timezone.d"
-                              )
-                 (("version(unittest)") "version(skipunittest)")
-                 ((" unittest") " version(skipunittest) unittest"))
-               ;; the following tests require a more recent LLVM
-               (delete-file "tests/compilable/ctfe_math.d")
-               (delete-file "tests/debuginfo/nested_gdb.d")
-               (delete-file "tests/debuginfo/classtypes_gdb.d")
-               ;; the following tests plugins we don't have.
-               (delete-file "tests/plugins/addFuncEntryCall/testPlugin.d")
-               ;; the following tests requires AVX instruction set in the CPU.
-               ; (substitute* "tests/d2/dmd-testsuite/runnable/test_cdvecfill.d"
-               ;   (("^// DISABLED: ") "^// DISABLED: linux64 "))
-               #t))
-            ; (replace 'check
-            ;   (lambda* (#:key inputs outputs #:allow-other-keys)
-            ;     ;; some tests call into gdb binary which needs SHELL and CC set
-            ;    (setenv "SHELL" (which "sh"))
-            ;    (setenv "CC" (string-append (assoc-ref inputs "gcc") "/bin/gcc"))
-                                        ;    (invoke "make" "test" "-j" (number->string (parallel-job-count))))))))
-           )))
-      (native-inputs
-       `(("llvm" ,llvm)
-         ("clang" ,clang)
-         ("ldc" ,ldc-bootstrap-0.17)
-         ("python-lit" ,python-lit)
-         ("python-wrapper" ,python-wrapper)
-         ("unzip" ,unzip)
-         ("gdb" ,gdb)
-         ("phobos-src"
-          ,(origin
-             (method git-fetch)
-             (uri (git-reference
-                   (url "https://github.com/ldc-developers/phobos")
-                   (commit (string-append "ldc-v" older-version))))
-             (file-name (git-file-name "phobos" older-version))
-             (sha256
-              (base32 "0salwkm2kl9vyaqqjzxgqfd6k7grk2d8886g7vahl4mqm5nqc78w"))
-             ;; This patch deactivates some tests that depend on network access
-             ;; to pass.  It also deactivates some tests that have some reliance
-             ;; on timezone.
-             ;;
-             ;; For the network tests, there's an effort to get a version flag
-             ;; added to deactivate these tests for distribution packagers
-             ;; that is being pursued at
-             ;; <https://forum.dlang.org/post/zmdbdgnzrxyvtpqafvyg@forum.dlang.org>.
-             ;; It also deactivates a test that requires /root
-             ;; (patches (search-patches "ldc-disable-phobos-tests.patch"))
-             ))
-         ("druntime-src"
-          ,(origin
-             (method git-fetch)
-             (uri (git-reference
-                   (url "https://github.com/ldc-developers/druntime")
-                   (commit (string-append "ldc-v" older-version))))
-             (file-name (git-file-name "druntime" older-version))
-             (sha256
-              (base32 "07l71j3haafiglf8f0f5q5k84zsd61jgghsxqb4krs9rc1yxmr4s"))))
-         ("dmd-testsuite-src"
-          ,(origin
-             (method git-fetch)
-             (uri (git-reference
-                   (url "https://github.com/ldc-developers/dmd-testsuite")
-                   (commit (string-append "ldc-v" older-version))))
-             (file-name (git-file-name "dmd-testsuite" older-version))
-             (sha256
-              (base32 "0cvf6nk7yi3s800plx0j6765p3irqm2k6zwz2pmwallxjl21zbvq")))))))))
diff --git a/gn/packages/edash.scm b/gn/packages/edash.scm
deleted file mode 100644
index 42da046..0000000
--- a/gn/packages/edash.scm
+++ /dev/null
@@ -1,448 +0,0 @@
-(define-module (gn packages edash)
-  #:use-module ((guix licenses) #:prefix license:)
-  #:use-module (guix packages)
-  #:use-module (guix download)
-  #:use-module (guix build-system trivial)
-  #:use-module (guix build-system python)
-  #:use-module (gnu packages web)
-  #:use-module (gnu packages base)
-  #:use-module (gnu packages python)
-  #:use-module (gnu packages python-build)
-  #:use-module (gnu packages python-check)
-  #:use-module (gnu packages python-web)
-  #:use-module (gnu packages python-xyz)
-  #:use-module (gnu packages python-crypto)
-  #:use-module (gnu packages compression)
-  #:use-module (gnu packages time)
-  #:use-module (gnu packages databases)
-  #:use-module (gnu packages check)
-  #:use-module (gn packages web)
-  #:use-module (gnu packages sqlite)
-  #:use-module (gn packages python)
-  #:use-module (past packages python27))
-
-(define-public python-s3transfer-0.1.13
-  (package
-  (name "python-s3transfer")
-  (version "0.1.13")
-  (source
-    (origin
-      (method url-fetch)
-      (uri (pypi-uri "s3transfer" version))
-      (sha256
-        (base32
-          "1harvyn1s8v54n1w5h7c0lg4bgjh68aylhg28s8n174q53h1ip4h"))))
-  (build-system python-build-system)
-  (arguments
-   `(#:tests? #f))
-  (home-page "https://github.com/boto/s3transfer")
-  (synopsis "Amazon S3 Transfer Manager")
-  (description "S3transfer is a Python library for managing Amazon S3
-transfers.")
-  (license license:asl2.0)))
-
-(define-public python-botocore-1.10.48
-  (package
-    (name "python-botocore")
-    (version "1.10.48")
-    (source
-     (origin
-       (method url-fetch)
-       (uri (pypi-uri "botocore" version))
-       (sha256
-        (base32
-	 "1432drc7482nwrppwkk1i6ars3wz9w2g9rsxkz5nlxmyf9qm260j"))))
-    (build-system python-build-system)
-    (arguments
-    ;; FIXME: Many tests are failing.
-    '(#:tests? #f))
-    (propagated-inputs
-     `(("python-dateutil" ,python-dateutil)
-       ("python-docutils" ,python-docutils)
-       ("python-jmespath" ,python-jmespath)))
-    (native-inputs
-     `(("python-mock" ,python-mock)
-       ("python-nose" ,python-nose)
-       ("behave" ,behave)
-       ("python-tox" ,python-tox)
-       ("python-wheel" ,python-wheel)))
-    (home-page "https://github.com/boto/botocore")
-    (synopsis "Low-level interface to AWS")
-    (description "Botocore is a Python library that provides a low-level
-interface to the Amazon Web Services (AWS) API.")
-    (license license:asl2.0)))
-
-(define-public python-boto3
-  (package
-  (name "python-boto3")
-  (version "1.7.48")
-  (source
-    (origin
-      (method url-fetch)
-      (uri (pypi-uri "boto3" version))
-      (sha256
-        (base32
-	 "1pnm5pj70kaa8pbq39i2y70h17cazk8nkjqh12b8xqks7ywjr9f5"))))
-  (build-system python-build-system)
-  (arguments
-   `(#:tests? #f))
-  (propagated-inputs
-    `(("python-botocore" ,python-botocore-1.10.48)
-      ("python-jmespath" ,python-jmespath)
-      ("python-s3transfer" ,python-s3transfer-0.1.13)))
-  (home-page "https://github.com/boto/boto3")
-  (synopsis "The AWS SDK for Python")
-  (description "The AWS SDK for Python")
-  (license license:asl2.0)))
-
-(define-public python-speaklater
-  (package
-  (name "python-speaklater")
-  (version "1.3")
-  (source
-    (origin
-      (method url-fetch)
-      (uri (pypi-uri "speaklater" version))
-      (sha256
-        (base32
-          "1ab5dbfzzgz6cnz4xlwx79gz83id4bhiw67k1cgqrlzfs0va7zjr"))))
-  (build-system python-build-system)
-  (home-page
-    "http://github.com/mitsuhiko/speaklater")
-  (synopsis
-    "implements a lazy string for python useful for use with gettext")
-  (description
-    "implements a lazy string for python useful for use with gettext")
-  (license license:bsd-3)))
-
-(define-public python-flask-mail
-  (package
-   (name "python-flask-mail")
-   (version "0.9.1")
-   (source
-    (origin
-     (method url-fetch)
-     (uri (pypi-uri "flask-mail" version))
-     (sha256
-      (base32
-       "0hazjc351s3gfbhk975j8k65cg4gf31yq404yfy0gx0bjjdfpr92"))))
-   (build-system python-build-system)
-   (propagated-inputs
-    `(("python-mock" ,python-mock)
-      ("python-nose" ,python-nose)
-      ("python-flask" ,python-flask)
-      ("python-blinker" ,python-blinker)
-      ("python-speaklater" ,python-speaklater)))
-   (home-page
-    "https://github.com/rduplain/flask-mail")
-   (synopsis "Flask extension for sending email")
-   (description "Flask extension for sending email")
-   (license license:bsd-3)))
-
-(define-public python-python-version
-  (package
-   (name "python-python-version")
-   (version "0.0.2")
-   (source
-    (origin
-     (method url-fetch)
-     (uri (pypi-uri "python_version" version))
-     (sha256
-      (base32
-       "0rzy0jzh1w7rx7swgjb5qv7b7dhblbsyhs7l3ii19mpjqxbxw5jw"))))
-   (build-system python-build-system)
-   (home-page
-    "https://gitlab.com/halfak/python_version")
-   (synopsis
-    "Provides a simple utility for checking the python version.")
-   (description
-    "Provides a simple utility for checking the python version.")
-   (license license:expat)))
-
-(define-public python-tests
-  (package
-    (name "python-tests")
-    (version "0.007")
-    (source
-     (origin
-       (method url-fetch)
-       (uri (pypi-uri "tests" version ".zip"))
-       (sha256
-        (base32
-         "09nfrysnqivqhs7znync8k87v16anvnb02j9ikmr3i6hdqxjcd31"))))
-    (build-system python-build-system)
-    (inputs
-     `(("unzip" ,unzip)))
-    (home-page "http://www.propython.com/")
-    (synopsis "UNKNOWN")
-    (description "UNKNOWN")
-    (license #f)))
-
-(define-public python-clickclick
-  (package
-    (name "python-clickclick")
-    (version "1.2.2")
-    (source
-     (origin
-       (method url-fetch)
-       (uri (pypi-uri "clickclick" version))
-       (sha256
-        (base32
-         "08vd1whzr1gz3cfb9iqs200rgj1x9srlwaa6sjmwz41rkjm0m2aa"))))
-    (build-system python-build-system)
-    (propagated-inputs
-     `(("python-six" ,python-six)
-       ("python-click" ,python-click)
-       ("python-pyyaml" ,python-pyyaml)
-       ("python-pytest" ,python-pytest)
-       ("python-pyflakes" ,python-pyflakes)
-       ("python-flake8" ,python-flake8)
-       ("python-pytest-cov" ,python-pytest-cov)))
-    (arguments `(#:tests? #f))
-    (home-page
-     "https://github.com/zalando/python-clickclick")
-    (synopsis "Click utility functions")
-    (description "Utility functions (Python 3 only) for the wonderful
-Click library.  Click is a Python package for creating beautiful
-command line interfaces in a composable way with as little code as
-necessary.")
-    (license license:asl2.0)))
-
-(define-public python-testfixtures
-  (package
-    (name "python-testfixtures")
-    (version "6.3.0")
-    (source
-     (origin
-       (method url-fetch)
-       (uri (pypi-uri "testfixtures" version))
-       (sha256
-        (base32
-         "1x16xkw483nb1ngv74s7lgaj514pb1ldklal7kb7iwqbxcgnrh2k"))))
-    (build-system python-build-system)
-    (arguments `(#:tests? #f))
-    (home-page
-     "https://github.com/Simplistix/testfixtures")
-    (synopsis
-     "Collection of helpers and mock objects for unit tests and doc tests")
-    (description
-     "A collection of helpers and mock objects for unit tests and doc tests.")
-    (license license:expat)))
-
-(define-public python-aiohttp-jinja2
-  (package
-    (name "python-aiohttp-jinja2")
-    (version "1.1.0")
-    (source
-     (origin
-       (method url-fetch)
-       (uri (pypi-uri "aiohttp-jinja2" version))
-       (sha256
-        (base32
-         "031djiddn2yg50mkw60x1ql1qwqxnmghk46902nq48cnbxcvdydf"))))
-    (build-system python-build-system)
-    (propagated-inputs
-     `(("python-jinja2" ,python-jinja2)
-       ("python-aiohttp" ,python-aiohttp)))
-    (arguments `(#:tests? #f))
-    (home-page
-     "https://github.com/aio-libs/aiohttp_jinja2/")
-    (synopsis
-     "jinja2 template renderer for aiohttp.web (http server for asyncio)")
-    (description
-     "jinja2 template renderer for aiohttp.web (http server for asyncio)")
-    (license license:asl2.0)))
-
-(define-public python-openapi-spec-validator
-  (package
-    (name "python-openapi-spec-validator")
-    (version "0.2.4")
-    (source
-     (origin
-       (method url-fetch)
-       (uri (pypi-uri "openapi-spec-validator" version))
-       (sha256
-        (base32
-         "0khzsk1dqjfj2j8z8iqn4l47j133b0yavzrj268hxwy4qjp4ls0l"))))
-    (build-system python-build-system)
-    (propagated-inputs
-     `(("python-six" ,python-six)
-       ("python-tox" ,python-tox)
-       ("python-mock" ,python-mock)
-       ("python-pyyaml" ,python-pyyaml)
-       ("python-pytest-cov" ,python-pytest-cov)
-       ("python-jsonschema" ,python-jsonschema)
-       ("python-pytest-pycodestyle" ,python-pytest-pycodestyle)
-;;       ("python-pytest-flakes" ,python-pytest-flakes)
-       ))
-    (arguments `(#:tests? #f))
-    (home-page
-     "https://github.com/p1c2u/openapi-spec-validator")
-    (synopsis "OpenAPI Spec validator")
-    (description "OpenAPI Spec Validator is a Python library that
-validates OpenAPI Specs against the OpenAPI 2.0 (aka Swagger) and
-OpenAPI 3.0.0 specification.  The validator aims to check for full compliance
-with the Specification.")
-    (license license:asl2.0)))
-
-(define-public python-swagger-ui-bundle
-  (package
-    (name "python-swagger-ui-bundle")
-    (version "0.0.2")
-    (source
-     (origin
-       (method url-fetch)
-       (uri (pypi-uri "swagger_ui_bundle" version))
-       (sha256
-        (base32
-         "0kk6y8p1fhmnjnxfafdw6dm1xc5wj8101y5h7hcy3rb2bxc1i94q"))))
-    (build-system python-build-system)
-    (propagated-inputs
-     `(("python-tox" ,python-tox)
-       ("python-jinja2" ,python-jinja2)
-       ("python-pyflakes" ,python-pyflakes)
-       ("python-flake8" ,python-flake8)
-       ("python-pytest-cov" ,python-pytest-cov)
-       ("python-pytest-pycodestyle" ,python-pytest-pycodestyle)
-;;       ("python-pytest-flakes" ,python-pytest-flakes)
-       ))
-    (arguments `(#:tests? #f))
-    (home-page
-     "https://github.com/dtkav/swagger_ui_bundle")
-    (synopsis
-     "swagger_ui_bundle - swagger-ui files in a pip package")
-    (description
-     "swagger_ui_bundle - swagger-ui files in a pip package")
-    (license license:asl2.0)))
-
-(define-public python-connexion
-  (package
-  (name "python-connexion")
-  (version "2.1.0")
-  (source
-    (origin
-      (method url-fetch)
-      (uri (pypi-uri "connexion" version))
-      (sha256
-        (base32
-          "08xkjlvj8gb6sz4p4wjab6dag2sdvlfpaz4053k9nf7zj766j0bg"))))
-  (build-system python-build-system)
-  (propagated-inputs
-    `(;; ("python-six" ,python-six)
-      ;; ("python-mock" ,python-mock)
-      ("python-ujson" ,python-ujson)
-      ("python-flask" ,python-flask)
-      ;; ("python-tests" ,python-tests)
-      ;; ("python-pyyaml" ,python-pyyaml)
-      ;; ("python-pytest" ,python-pytest)
-      ;; ("python-typing" ,python-typing)
-      ;; ("python-pathlib" ,python-pathlib)
-      ("python-aiohttp" ,python-aiohttp)
-      ("python-requests" ,python-requests)
-      ;; ("python-pyflakes" ,python-pyflakes)
-      ("python-flake8" ,python-flake8)
-      ("python-decorator" ,python-decorator)
-      ("python-inflection" ,python-inflection)
-      ;; ("python-jsonschema" ,python-jsonschema)
-      ;; ("python-pytest-cov" ,python-pytest-cov)
-      ("python-clickclick" ,python-clickclick)
-      ("python-testfixtures" ,python-testfixtures)
-      ;; ("python-python-version" ,python-python-version)
-      ("python-pytest-aiohttp" ,python-pytest-aiohttp)
-      ("python-aiohttp-jinja2" ,python-aiohttp-jinja2)
-      ("python-swagger-ui-bundle" ,python-swagger-ui-bundle)
-      ("python-openapi-spec-validator" ,python-openapi-spec-validator)
-      ))
-  (arguments `(#:tests? #f))
-  (home-page
-    "https://github.com/zalando/connexion")
-  (synopsis
-    "Connexion - API first applications with OpenAPI/Swagger and Flask")
-  (description
-    "Connexion - API first applications with OpenAPI/Swagger and Flask")
-  (license license:asl2.0)))
-
-(define-public python-flask-cors
-  (package
-    (name "python-flask-cors")
-    (version "3.0.7")
-    (source
-     (origin
-       (method url-fetch)
-       (uri (pypi-uri "Flask-Cors" version))
-       (sha256
-        (base32
-         "1v6gq4vjgyxi8q8lxawpdfhq01adb4bznnabp08ks5nzbwibz43y"))))
-    (build-system python-build-system)
-    (inputs
-     `(("python-flask" ,python-flask)
-       ("python-six" ,python-six)
-       ("python-nose" ,python-nose)))
-    (home-page
-     "https://github.com/corydolphin/flask-cors")
-    (synopsis
-     "A Flask extension adding a decorator for CORS support")
-    (description
-     "A Flask extension adding a decorator for CORS support")
-    (license license:expat)))
-
-(define-public edash
-  (let ((md5 "93e745e9c"))
-    (package
-    (name "edash")
-    (version "0.0.1")
-    (source
-     (origin
-       (method url-fetch)
-       (uri "http://biogems.info/genenetwork2-2.0-a8fcff4.svg") ; any old file
-       (file-name (string-append name "-" md5))
-       (sha256
-        (base32 "0rir1mcn3a8i1mbw3ppgnjl7wg71mapljik7n3v5i8j5ic95mqr5"))))
-    (build-system trivial-build-system)
-    (native-inputs `(("unzip" ,unzip)
-                     ("source" ,source)))
-    ;;(inputs `(("sassc" ,sassc)))
-    (propagated-inputs
-     `(("python" ,python)
-       ("glibc-locales" ,glibc-locales)
-       ("gunicorn" ,gunicorn)
-       ("python-wrapper" ,python-wrapper)
-       ("python-elasticsearch" ,python-elasticsearch)
-       ("python-flask" ,python-flask)
-       ("python-jinja2" ,python-jinja2)
-       ("python-markdown" ,python-markdown)
-       ("python-misaka" ,python-misaka)
-       ;; ("python-pygit2" ,python-pygit2)
-       ("web-bootstrap" ,web-bootstrap)
-       ;;("sassc" ,sassc)
-       ("python-boto3" ,python-boto3)
-       ("python-pytest" ,python-pytest)
-       ("python-flask-login" ,python-flask-login)
-       ("python-passlib" ,python-passlib)
-       ("python-pyjwt" ,python-pyjwt)
-       ("python-sqlalchemy" ,python-sqlalchemy)
-       ("python-flask-sqlalchemy" ,python-flask-sqlalchemy)
-       ("python-flask-mail" ,python-flask-mail)
-       ("python-flask-wtf" ,python-flask-wtf)
-       ("sqlite" ,sqlite)
-       ;; ("python-ipython" ,python-ipython)
-       ("python-swagger-ui-bundle" ,python-swagger-ui-bundle)
-       ("python-connexion" ,python-connexion)
-       ("python-schedule" ,python-schedule)
-       ("python-flask-cors" ,python-flask-cors)))
-    (arguments
-     `(#:modules ((guix build utils))
-       #:builder
-       (begin
-         (use-modules (guix build utils))
-         (let ((target (string-append (assoc-ref %outputs "out")
-                                      "/share")))
-             (write target)
-             (mkdir-p target)
-             ; (copy-recursively (assoc-ref %build-inputs "source") target)
-             #t))))
-
-    (home-page "https://gitlab.com/unless-emtec/live-service")
-    (synopsis "EMTech's edash service")
-    (description "EMTech's edash service package.")
-    (license license:agpl3+))))
diff --git a/gn/packages/elixir.scm b/gn/packages/elixir.scm
index f4b1ece..f7dda47 100644
--- a/gn/packages/elixir.scm
+++ b/gn/packages/elixir.scm
@@ -27,94 +27,3 @@
   #:use-module (gnu packages base)
   #:use-module (gnu packages erlang)
   #:use-module (gnu packages version-control))
-
-(define-public elixir
-  (package
-    (name "elixir")
-    (version "1.5.1")
-    (source (origin
-              (method url-fetch)
-              (uri (string-append "https://github.com/elixir-lang/elixir"
-                                  "/archive/v" version ".tar.gz"))
-              (file-name (string-append name "-" version ".tar.gz"))
-              (sha256
-               (base32
-                "0shznrblh51s87b8z5a3hbk36d4yhkja312b9y7wxih0333kv44s"))
-              ;; FIXME: 27 tests (out of 4K) had to be disabled as
-              ;; they fail in the build environment.  Common failures
-              ;; are:
-              ;; - Mix.Shell.cmd() fails with error 130
-              ;; - The git_repo fixture cannot be found
-              ;; - Communication with spawned processes fails with EPIPE
-              ;; - Failure to copy files
-                                        ; (patches (search-patches "elixir-disable-failing-tests.patch"))))
-              ;;
-              ))
-    (build-system gnu-build-system)
-    (arguments
-     `(#:test-target "test"
-       #:tests? #f
-       #:make-flags (list (string-append "PREFIX="
-                                         (assoc-ref %outputs "out")))
-       #:phases
-       (modify-phases %standard-phases
-         (add-after 'unpack 'replace-paths
-           (lambda* (#:key inputs #:allow-other-keys)
-             (substitute* '("lib/elixir/lib/system.ex"
-                            "lib/mix/lib/mix/scm/git.ex"
-                            "lib/mix/test/test_helper.exs")
-               (("(cmd\\(['\"])git" _ prefix)
-                (string-append prefix (which "git"))))
-             (substitute* "bin/elixir"
-               (("ERL_EXEC=\"erl\"")
-                (string-append "ERL_EXEC=" (which "erl"))))
-             #t))
-         (add-after 'unpack 'fix-or-disable-tests
-           (lambda* (#:key inputs #:allow-other-keys)
-             ;; Some tests require access to a home directory.
-             (setenv "HOME" "/tmp")
-
-             ;; FIXME: These tests fail because the "git_repo" fixture does
-             ;; not exist or cannot be found.
-             (for-each delete-file '("lib/mix/test/mix/dep_test.exs"
-                                     "lib/mix/test/mix/tasks/deps.git_test.exs"
-                                     "lib/mix/test/mix/tasks/deps_test.exs"
-                                     "lib/mix/test/mix/tasks/cmd_test.exs"
-                                     "lib/mix/test/mix/tasks/escript_test.exs"
-                                     "lib/mix/test/mix/tasks/deps.tree_test.exs"
-                                     "lib/mix/test/mix/tasks/archive_test.exs"
-                                     "lib/mix/test/mix/umbrella_test.exs"
-                                     "lib/mix/test/mix/rebar_test.exs"
-                                     "lib/mix/test/mix/local/installer_test.exs"
-                                     "lib/mix/test/mix/shell/quiet_test.exs"
-                                     "lib/mix/test/mix/shell/io_test.exs"
-                                     "lib/iex/test/iex/helpers_test.exs"))
-
-             ;; FIXME: Mix.Shell.cmd() always fails with error code 130.
-             (delete-file "lib/mix/test/mix/shell_test.exs")
-             #t))
-         ; (add-before 'build 'break (lambda () (#f)))
-         (add-before 'build 'make-current
-           ;; The Elixir compiler checks whether or not to compile files by
-           ;; inspecting their timestamps.  When the timestamp is equal to the
-           ;; epoch no compilation will be performed.  Some tests fail when
-           ;; files are older than Jan 1, 2000.
-           (lambda _
-             (for-each (lambda (file)
-                         (let ((recent 1400000000))
-                           (utime file recent recent 0 0)))
-                       (find-files "." ".*"))
-             #t))
-         (delete 'configure))))
-    (propagated-inputs
-     `(("erlang" ,erlang)
-       ("git" ,git)
-       ("glibc-utf8-locales" ,glibc-utf8-locales)
-       ))
-    (home-page "http://elixir-lang.org/")
-    (synopsis "Elixir programming language")
-    (description "Elixir is a dynamic, functional language used to build
-scalable and maintainable applications.  Elixir leverages the Erlang VM, known
-for running low-latency, distributed and fault-tolerant systems, while also
-being successfully used in web development and the embedded software domain.")
-    (license license:asl2.0)))
diff --git a/gn/packages/file-systems.scm b/gn/packages/file-systems.scm
index bf92ed9..dbf79c3 100644
--- a/gn/packages/file-systems.scm
+++ b/gn/packages/file-systems.scm
@@ -1,163 +1,38 @@
 (define-module (gn packages file-systems)
   #:use-module ((guix licenses) #:prefix license:)
-  #:use-module (gnu packages)
   #:use-module (guix packages)
   #:use-module (guix git-download)
-  #:use-module (guix utils)
-  #:use-module (guix build-system cmake)
-  #:use-module (gnu packages boost)
-  #:use-module (gnu packages check)
+  #:use-module (guix build-system gnu)
+  #:use-module (gnu packages autotools)
   #:use-module (gnu packages compression)
-  #:use-module (gnu packages dbm)
-  #:use-module (gnu packages documentation)
+  #:use-module (gnu packages admin)
   #:use-module (gnu packages linux)
-  #:use-module (gnu packages logging)
   #:use-module (gnu packages pkg-config)
   #:use-module (gnu packages python))
 
-(define-public lizardfs
+(define-public moosefs
   (package
-    (name "lizardfs")
-    (version "3.12.0")
+    (name "moosefs")
+    (version "4.58.3")
     (source
       (origin
         (method git-fetch)
         (uri (git-reference
-               (url "https://github.com/lizardfs/lizardfs")
+               (url "https://github.com/moosefs/moosefs")
                (commit (string-append "v" version))))
         (file-name (git-file-name name version))
         (sha256
          (base32
-          "0zk73wmx82ari3m2mv0zx04x1ggsdmwcwn7k6bkl5c0jnxffc4ax"))
-        (patches (search-patches "lizardfs-issues-found-on-Fedora-34-using-GCC-11.patch"))))
-    (build-system cmake-build-system)
-    (arguments
-     `(#:configure-flags
-       (list "-DENABLE_CLIENT_LIB=YES"
-             "-DENABLE_TESTS=YES"
-             "-DENABLE_STATIC=NO"
-             "-DENABLE_VERBOSE_ASCIIDOC=YES"
-             "-DENABLE_TCMALLOC=NO"
-             ;"-DLIB_SUBDIR=lib" ; no 64 suffix
-             ;; Some directories need to be changed
-             ;"-DRUN_SUBDIR=/var/run/lizardfs"
-             ;"-DDATA_SUBDIR=/var/lib/lizardfs"
-             ;"-DETC_SUBDIR=/etc/lizardfs"
-             "-DENABLE_UTILS=YES")
-       ;; Tests involve setting up a lizardfs instance and run as root.
-       ;; We will make do with just building the tests.
-       #:tests? #f
-       #:phases
-       (modify-phases %standard-phases
-         (add-after 'unpack 'configure-through-cmakelists.txt
-           (lambda _
-             ;; For some reason some configure flags don't work.
-             (substitute* "CMakeLists.txt"
-               (("\"64\"") "\"\"")
-               (("var/run/mfs") "/var/run/lizardfs")
-               (("var/lib/mfs") "/var/lib/lizardfs")
-               (("etc/mfs") "/etc/lizardfs"))
-             ;; Then adjust the install instructions.
-             (substitute* "src/data/CMakeLists.txt"
-               (("^install.*") ""))))
-         (add-after 'unpack 'use-system-libraries
-           (lambda* (#:key inputs #:allow-other-keys)
-             (let ((gtest  (assoc-ref inputs "googletest"))
-                   (spdlog (assoc-ref inputs "spdlog")))
-               ;; Don't attempt to download any sources.
-               (substitute* "cmake/Libraries.cmake"
-                 (("ENABLE_TESTS") "DOWNLOAD_GTEST")
-                 (("# Find GoogleTest" all)
-                  (string-append "set(GTEST_NAME gtest)\n" all))
-                 (("GTEST_INCLUDE_DIRS.*")
-                  (string-append "GTEST_INCLUDE_DIRS " gtest "/include)\n"))
-                 (("download_external\\(SPDLOG" all)
-                  (string-append "if(DOWNLOAD_SPDLOG)\n" all))
-                 (("\"spdlog-1\")")
-                  (string-append "\"spdlog-1\")\n"
-                                 "endif()\n"
-                                 "find_package(spdlog CONFIG REQUIRED)"))
-                 (("include_directories(external/spdlog-0.14.0/include)") ""))
-
-               ;; Configure the location of the googletest sources.
-               (copy-recursively gtest "external/googletest")
-               (substitute* "external/CMakeLists.txt"
-                 (("add_subdirectory.*") "add_subdirectory(googletest)\n"))
-
-               ;; Compatability with spdlog1.2.0+
-               ;; https://github.com/lizardfs/lizardfs/issues/774
-               (substitute* "src/common/slogger.h"
-                 (("spdlog/spdlog.h\"")
-                  (string-append "spdlog/spdlog.h\"\n"
-                                 "#include \"spdlog/sinks/rotating_file_sink.h\"\n"
-                                 "#include \"spdlog/sinks/syslog_sink.h\"\n"
-                                 "#include \"spdlog/sinks/stdout_color_sinks.h\"")))
-               (substitute* "src/common/slogger.cc"
-                 (("spdlog::syslog_logger\\(\"syslog\"\\);")
-                  "spdlog::syslog_logger_mt(\"syslog\");"))
-
-               ;; fix FTBFS with glibc-2.28; for makedev
-               ;; https://github.com/lizardfs/lizardfs/issues/655
-               (substitute* "src/chunkserver/iostat.h"
-                 (("sys/stat.h>") "sys/stat.h>\n#include <sys/sysmacros.h>")))))
-         (add-after 'install 'install-extras
-           ;; This got broken by changing the directories above.
-           (lambda* (#:key outputs #:allow-other-keys)
-             (with-directory-excursion "../source"
-             (let* ((out  (assoc-ref outputs "out"))
-                    (etc  (string-append out "/etc"))
-                    (var  (string-append out "/var/lib/lizardfs"))
-                    (data "src/data"))
-               (mkdir-p (string-append etc "/bash_completion.d"))
-               (mkdir-p var)
-               (copy-file (string-append data "/lizardfs.completion")
-                          (string-append etc "/bash_completion.d/lizardfs"))
-               (copy-file (string-append data "/metadata.mfs")
-                          (string-append var "/metadata.mfs.empty"))
-               (for-each
-                 (lambda (file)
-                   (copy-file file
-                              (string-append etc "/" (basename file) ".dist")))
-                 (find-files data "\\.cfg(\\.in)?$")))))))))
+          "163x7ziamqy79xaiy5fhr8afbj65ssnyqki5v6wxanciwczw4jcl"))))
+    (build-system gnu-build-system)
     (inputs
-     (list bdb
-           boost
-           fuse-2
-           linux-pam
-           python-2
-           spdlog
-           zlib))
+     (list
+       autoconf automake fuse libpcap zlib python libtool))
     (native-inputs
-     `(("asciidoc" ,asciidoc)
-       ("googletest" ,(package-source googletest-1.7))
-       ("pkg-config" ,pkg-config)))
-    (home-page "https://lizardfs.com/")
+     `(("pkg-config" ,pkg-config)))
+    (home-page "https://moosefs.com/")
     (synopsis "Distributed, scalable, fault-tolerant, highly available file system")
     (description
-     "LizardFS makes files secure by keeping all the data in many replicas
-spread over all available servers. It can be used also to build affordable
-storage because it runs without any problems on commodity hardware.  Disk and
-server failures are handled transparently and most of all without any downtime
-or loss of data.  If storage requirements grow, it's possible to scale an
-existing LizardFS installation just by adding new servers at any time, without
-any downtime.  The system will automatically move data across to the newly
-added servers, as it continuously takes care of balancing disk usage across all
-connected nodes.")
+     "MooseFS is a Petabyte Open Source Network Distributed File System. It is easy to deploy and maintain, highly reliable, fault tolerant, highly performing, easily scalable and POSIX compliant.")
     (license (list license:asl2.0   ; external/crcutil
-                   license:gpl3))))
-
-(define-public googletest-1.7
-  ;; Source only package
-  (hidden-package
-    (package
-      (inherit googletest)
-      (version "1.7.0")
-      (source (origin
-                (method git-fetch)
-                (uri (git-reference
-                       (url "https://github.com/google/googletest")
-                       (commit (string-append "release-" version))))
-                (file-name (git-file-name "googletest" version))
-                (sha256
-                 (base32
-                  "1yqnzrr7bgnnnwq02c5gy559mmb52pap7m1h7zd6w58dj9yvg72n")))))))
+                   license:gpl2+))))
diff --git a/gn/packages/fpga.scm b/gn/packages/fpga.scm
deleted file mode 100644
index b8c3537..0000000
--- a/gn/packages/fpga.scm
+++ /dev/null
@@ -1,17 +0,0 @@
-(define-module (gn packages fpga)
-  #:use-module (gnu packages electronics)
-  #:use-module (guix git-download)
-  #:use-module (guix packages))
-
-(define-public verilator-4.110
-  (package
-   (inherit verilator)
-   (version "4.110")
-   (source (origin
-            (method git-fetch)
-            (uri (git-reference
-                  (inherit (origin-uri (package-source verilator)))
-                  (commit (string-append "v" version))))
-            (sha256
-             (base32
-              "1lm2nyn7wzxj5y0ffwazhb4ygnmqf4d61sl937vmnmrpvdihsrrq"))))))
diff --git a/gn/packages/gemma.scm b/gn/packages/gemma.scm
index e8c5194..58ff673 100644
--- a/gn/packages/gemma.scm
+++ b/gn/packages/gemma.scm
@@ -100,7 +100,7 @@ genome-wide association studies (GWAS).")
                   (lambda* (#:key outputs #:allow-other-keys)
                            (let ((out (assoc-ref outputs "out")))
                              (install-file "bin/gemma" (string-append out "/bin"))))))
-       ; #:tests? #f
+       #:tests? #f
        #:parallel-tests? #f))
    ))
 
diff --git a/gn/packages/genecup.scm b/gn/packages/genecup.scm
index 88e0879..225f495 100644
--- a/gn/packages/genecup.scm
+++ b/gn/packages/genecup.scm
@@ -23,102 +23,6 @@
   #:use-module (gn packages web)
   #:use-module (gn packages machine-learning))
 
-(define use-corrected-inputs
-  (package-input-rewriting/spec
-    ;; Tensorflow-native provides much improved speeds. python-h5py@2 provides
-    ;; compatibility with our version of tensorflow.
-    `(("tensorflow" . ,(const tensorflow-native))
-      ("python-h5py" . ,(const python-h5py-2)))))
-
-
-(define-public hrdp-project
-  (package
-    (name "hrdp-project")
-    (version "0.1")
-    (source (origin
-              (method git-fetch)
-              (uri (git-reference
-                     (url "https://github.com/noderboarder/hrdp-project")
-                     (commit (string-append "v" version))))
-              (file-name (git-file-name name version))
-              (sha256
-               (base32
-                "1ag7jm43p35yh0cqcn53wg4iw7sgfypw10mxq5klxvhgj3r6cf7i"))))
-    (build-system python-build-system)
-    (arguments
-     `(#:tests? #f  ; no test suite
-       #:phases
-       (modify-phases %standard-phases
-         (delete 'configure)
-         (delete 'build)
-         (add-after 'unpack 'patch-sources
-           (lambda _
-             (substitute* "./app/templates/layout.html"
-               (("https://.*.bootstrapcdn.com/bootstrap/4.*/css/bootstrap.min.css.*")
-                "/static/bootstrap.min.css\">\n")
-               (("https://.*.bootstrapcdn.com/bootstrap/4.*/js/bootstrap.min.js.*")
-                "/static/bootstrap.min.js\"></script>\n")
-               (("https://code.jquery.com/jquery-3.*.slim.min.js.*")
-                "/static/jquery.slim.min.js\"></script>\n")
-               ;(("https://cdn.jsdelivr.net/npm/popper.js@1.16.0/dist/umd/popper.min.js.*")
-               ; "/static/popper.min.js\"></script>\n")
-               )))
-         (replace 'install
-           (lambda* (#:key inputs outputs #:allow-other-keys)
-             (let ((out (assoc-ref outputs "out"))
-                   (python (assoc-ref inputs "python")))
-               (delete-file "main.py")
-               (with-output-to-file "main.py"
-                 (lambda ()
-                   (format #t "#!~a/bin/python
-from app import create_app
-
-app = create_app()
-
-if __name__ == '__main__':
-    app.run(debug=True, port=4222)~%"
-                   python)))
-               (chmod "main.py" #o555)
-               (copy-recursively "." out))))
-         (add-after 'install 'install-javascript
-           (lambda* (#:key inputs outputs #:allow-other-keys)
-             (let ((out       (assoc-ref outputs "out"))
-                   (bootstrap (assoc-ref inputs "bootstrap"))
-                   (jquery    (assoc-ref inputs "jquery"))
-                   ;(js-popper (assoc-ref inputs "js-popper"))
-                   )
-               (symlink (string-append bootstrap
-                                       "/share/web/bootstrap/css/bootstrap.min.css")
-                        (string-append out "/app/static/bootstrap.min.css"))
-               (symlink (string-append bootstrap
-                                       "/share/web/bootstrap/js/bootstrap.min.js")
-                        (string-append out "/app/static/bootstrap.min.js"))
-               (symlink (string-append jquery
-                                       "/share/web/jquery/jquery.slim.min.js")
-                        (string-append out "/app/static/jquery.slim.min.js"))
-               ;(symlink (string-append js-popper
-               ;                        "/share/web/popper/popper.min.js")
-               ;         (string-append out "/static/popper.min.js"))
-               )))
-         (add-after 'install 'wrap-executable
-           (lambda* (#:key inputs outputs #:allow-other-keys)
-             (let ((out  (assoc-ref outputs "out"))
-                   (path (getenv "GUIX_PYTHONPATH")))
-               (wrap-program (string-append out "/main.py")
-                `("GUIX_PYTHONPATH" ":" prefix (,path)))))))))
-    (inputs
-     `(("python" ,python)
-       ("python-flask-sqlalchemy" ,python-flask-sqlalchemy)))
-    (native-inputs
-     `(("bootstrap" ,web-bootstrap)
-       ("jquery" ,web-jquery)
-       ;("js-popper" ,js-popper)    ; empty output
-       ))
-    (home-page "https://github.com/noderboarder/hrdp-project")
-    (synopsis "")
-    (description "")
-    (license license:expat)))
-
 (define-public genecup
   (package
     (name "genecup")
@@ -267,14 +171,3 @@ concepts and a list of keywords for each concept.")
         (url "https://git.genenetwork.org/genecup")
         (branch "master")))))
 
-(define-public genecup-with-tensorflow-native
-  (package
-    (inherit
-      (use-corrected-inputs genecup))
-    (name "genecup-with-tensorflow-native")))
-
-(define-public genecup-latest-with-tensorflow-native
-  (package
-    (inherit
-      (use-corrected-inputs genecup-master))
-    (name "genecup-latest-with-tensorflow-native")))
diff --git a/gn/packages/genenetwork-rust.scm b/gn/packages/genenetwork-rust.scm
new file mode 100644
index 0000000..78e9130
--- /dev/null
+++ b/gn/packages/genenetwork-rust.scm
@@ -0,0 +1,605 @@
+;;; GeneNetwork Rust packages
+
+(define-module (gn packages genenetwork-rust)
+  #:use-module ((guix licenses) #:prefix license:)
+  #:use-module (guix packages)
+  #:use-module (guix utils)
+  #:use-module (guix download)
+  #:use-module (guix git-download)
+  #:use-module (guix build-system cargo)
+  #:use-module (guix gexp)
+  #:use-module (gnu packages maths)
+  #:export (lookup-cargo-inputs))
+
+;;; Crate sources for rust-qtlreaper (guix import crate -f Cargo.lock qtlreaper)
+
+(define rust-ansi-term-0.12.1
+  (crate-source "ansi_term" "0.12.1"
+                "1ljmkbilxgmhavxvxqa7qvm6f3fjggi7q2l3a72q9x0cxjvrnanm"))
+
+(define rust-atty-0.2.14
+  (crate-source "atty" "0.2.14"
+                "1s7yslcs6a28c5vz7jwj63lkfgyx8mx99fdirlhi9lbhhzhrpcyr"))
+
+(define rust-autocfg-0.1.8
+  (crate-source "autocfg" "0.1.8"
+                "0y4vw4l4izdxq1v0rrhvmlbqvalrqrmk60v1z0dqlgnlbzkl7phd"))
+
+(define rust-autocfg-1.5.0
+  (crate-source "autocfg" "1.5.0"
+                "1s77f98id9l4af4alklmzq46f21c980v13z2r1pcxx6bqgw0d1n0"))
+
+(define rust-bitflags-1.3.2
+  (crate-source "bitflags" "1.3.2"
+                "12ki6w8gn1ldq7yz9y680llwk5gmrhrzszaa17g1sbrw2r2qvwxy"))
+
+(define rust-clap-2.34.0
+  (crate-source "clap" "2.34.0"
+                "071q5d8jfwbazi6zhik9xwpacx5i6kb2vkzy060vhf0c3120aqd0"))
+
+(define rust-cloudabi-0.0.3
+  (crate-source "cloudabi" "0.0.3"
+                "0kxcg83jlihy0phnd2g8c2c303px3l2p3pkjz357ll6llnd5pz6x"))
+
+(define rust-crossbeam-deque-0.8.6
+  (crate-source "crossbeam-deque" "0.8.6"
+                "0l9f1saqp1gn5qy0rxvkmz4m6n7fc0b3dbm6q1r5pmgpnyvi3lcx"))
+
+(define rust-crossbeam-epoch-0.9.18
+  (crate-source "crossbeam-epoch" "0.9.18"
+                "03j2np8llwf376m3fxqx859mgp9f83hj1w34153c7a9c7i5ar0jv"))
+
+(define rust-crossbeam-utils-0.8.21
+  (crate-source "crossbeam-utils" "0.8.21"
+                "0a3aa2bmc8q35fb67432w16wvi54sfmb69rk9h5bhd18vw0c99fh"))
+
+(define rust-either-1.15.0
+  (crate-source "either" "1.15.0"
+                "069p1fknsmzn9llaizh77kip0pqmcwpdsykv2x30xpjyija5gis8"))
+
+(define rust-fuchsia-cprng-0.1.1
+  (crate-source "fuchsia-cprng" "0.1.1"
+                "1fnkqrbz7ixxzsb04bsz9p0zzazanma8znfdqjvh39n14vapfvx0"))
+
+(define rust-heck-0.3.3
+  (crate-source "heck" "0.3.3"
+                "0b0kkr790p66lvzn9nsmfjvydrbmh9z5gb664jchwgw64vxiwqkd"))
+
+(define rust-hermit-abi-0.1.19
+  (crate-source "hermit-abi" "0.1.19"
+                "0cxcm8093nf5fyn114w8vxbrbcyvv91d4015rdnlgfll7cs6gd32"))
+
+(define rust-itertools-0.7.11
+  (crate-source "itertools" "0.7.11"
+                "03cpsj26xmyamcalclqzr1i700vwx8hnbgxbpjvs354f8mnr8iqd"))
+
+(define rust-itoa-1.0.18
+  (crate-source "itoa" "1.0.18"
+                "10jnd1vpfkb8kj38rlkn2a6k02afvj3qmw054dfpzagrpl6achlg"))
+
+(define rust-libc-0.2.184
+  (crate-source "libc" "0.2.184"
+                "1bz4525m7lwzr63iidh7lp9ppz2c9va1pn6fyjh5wsp1ajjd5xa8"))
+
+(define rust-matrixmultiply-0.1.15
+  (crate-source "matrixmultiply" "0.1.15"
+                "00p0fpjhm45qdzi37mgv7ggsy8b9gqvq4999yrbgyn1dxkf6gbfw"))
+
+(define rust-memchr-2.8.0
+  (crate-source "memchr" "2.8.0"
+                "0y9zzxcqxvdqg6wyag7vc3h0blhdn7hkq164bxyx2vph8zs5ijpq"))
+
+(define rust-ndarray-0.12.1
+  (crate-source "ndarray" "0.12.1"
+                "0a5rfwcbqnvbwi3nw5sfz6kf0flhmjxs64s0b4kxc6lhmyl81wvw"))
+
+(define rust-num-complex-0.2.4
+  (crate-source "num-complex" "0.2.4"
+                "15dwaksw729r3v14sgzc9723s3fnfixiir8jzwx7b7kim48r9cdn"))
+
+(define rust-num-traits-0.2.19
+  (crate-source "num-traits" "0.2.19"
+                "0h984rhdkkqd4ny9cif7y2azl3xdfb7768hb9irhpsch4q3gq787"))
+
+(define rust-proc-macro2-0.4.30
+  (crate-source "proc-macro2" "0.4.30"
+                "0nd71fl24sys066jrha6j7i34nfkjv44yzw8yww9742wmc8j0gfg"))
+
+(define rust-proc-macro2-1.0.106
+  (crate-source "proc-macro2" "1.0.106"
+                "0d09nczyaj67x4ihqr5p7gxbkz38gxhk4asc0k8q23g9n85hzl4g"))
+
+(define rust-quote-0.6.13
+  (crate-source "quote" "0.6.13"
+                "1qgqq48jymp5h4y082aanf25hrw6bpb678xh3zw993qfhxmkpqkc"))
+
+(define rust-quote-1.0.45
+  (crate-source "quote" "1.0.45"
+                "095rb5rg7pbnwdp6v8w5jw93wndwyijgci1b5lw8j1h5cscn3wj1"))
+
+(define rust-rand-0.6.5
+  (crate-source "rand" "0.6.5"
+                "1jl4449jcl4wgmzld6ffwqj5gwxrp8zvx8w573g1z368qg6xlwbd"))
+
+(define rust-rand-chacha-0.1.1
+  (crate-source "rand_chacha" "0.1.1"
+                "1vxwyzs4fy1ffjc8l00fsyygpiss135irjf7nyxgq2v0lqf3lvam"))
+
+(define rust-rand-core-0.3.1
+  (crate-source "rand_core" "0.3.1"
+                "0jzdgszfa4bliigiy4hi66k7fs3gfwi2qxn8vik84ph77fwdwvvs"))
+
+(define rust-rand-core-0.4.2
+  (crate-source "rand_core" "0.4.2"
+                "1p09ynysrq1vcdlmcqnapq4qakl2yd1ng3kxh3qscpx09k2a6cww"))
+
+(define rust-rand-hc-0.1.0
+  (crate-source "rand_hc" "0.1.0"
+                "1i0vl8q5ddvvy0x8hf1zxny393miyzxkwqnw31ifg6p0gdy6fh3v"))
+
+(define rust-rand-isaac-0.1.1
+  (crate-source "rand_isaac" "0.1.1"
+                "027flpjr4znx2csxk7gxb7vrf9c7y5mydmvg5az2afgisp4rgnfy"))
+
+(define rust-rand-jitter-0.1.4
+  (crate-source "rand_jitter" "0.1.4"
+                "16z387y46bfz3csc42zxbjq89vcr1axqacncvv8qhyy93p4xarhi"))
+
+(define rust-rand-os-0.1.3
+  (crate-source "rand_os" "0.1.3"
+                "0wahppm0s64gkr2vmhcgwc0lij37in1lgfxg5rbgqlz0l5vgcxbv"))
+
+(define rust-rand-pcg-0.1.2
+  (crate-source "rand_pcg" "0.1.2"
+                "0i0bdla18a8x4jn1w0fxsbs3jg7ajllz6azmch1zw33r06dv1ydb"))
+
+(define rust-rand-xorshift-0.1.1
+  (crate-source "rand_xorshift" "0.1.1"
+                "0p2x8nr00hricpi2m6ca5vysiha7ybnghz79yqhhx6sl4gkfkxyb"))
+
+(define rust-rawpointer-0.1.0
+  (crate-source "rawpointer" "0.1.0"
+                "06ghpm9y7gacks78s3maakha07kbnwrxif5q37r2l7z1sali3b7b"))
+
+(define rust-rayon-1.11.0
+  (crate-source "rayon" "1.11.0"
+                "13x5fxb7rn4j2yw0cr26n7782jkc7rjzmdkg42qxk3xz0p8033rn"))
+
+(define rust-rayon-core-1.13.0
+  (crate-source "rayon-core" "1.13.0"
+                "14dbr0sq83a6lf1rfjq5xdpk5r6zgzvmzs5j6110vlv2007qpq92"))
+
+(define rust-rdrand-0.4.0
+  (crate-source "rdrand" "0.4.0"
+                "1cjq0kwx1bk7jx3kzyciiish5gqsj7620dm43dc52sr8fzmm9037"))
+
+(define rust-serde-1.0.228
+  (crate-source "serde" "1.0.228"
+                "17mf4hhjxv5m90g42wmlbc61hdhlm6j9hwfkpcnd72rpgzm993ls"))
+
+(define rust-serde-core-1.0.228
+  (crate-source "serde_core" "1.0.228"
+                "1bb7id2xwx8izq50098s5j2sqrrvk31jbbrjqygyan6ask3qbls1"))
+
+(define rust-serde-derive-1.0.228
+  (crate-source "serde_derive" "1.0.228"
+                "0y8xm7fvmr2kjcd029g9fijpndh8csv5m20g4bd76w8qschg4h6m"))
+
+(define rust-serde-json-1.0.149
+  (crate-source "serde_json" "1.0.149"
+                "11jdx4vilzrjjd1dpgy67x5lgzr0laplz30dhv75lnf5ffa07z43"))
+
+(define rust-strsim-0.8.0
+  (crate-source "strsim" "0.8.0"
+                "0sjsm7hrvjdifz661pjxq5w4hf190hx53fra8dfvamacvff139cf"))
+
+(define rust-structopt-0.2.18
+  (crate-source "structopt" "0.2.18"
+                "1mvfv1l8vp3y402fkl2wcl34hi7gmr4bqha13dfz2xf3kjzwvhhn"))
+
+(define rust-structopt-derive-0.2.18
+  (crate-source "structopt-derive" "0.2.18"
+                "01sis9z5kqmyhvzbnmlzpdxcry99a0b9blypksgnhdsbm1hh40ak"))
+
+(define rust-syn-0.15.44
+  (crate-source "syn" "0.15.44"
+                "1id5g6x6zihv3j7hwrw3m1jp636bg8dpi671r7zy3jvpkavb794w"))
+
+(define rust-syn-2.0.117
+  (crate-source "syn" "2.0.117"
+                "16cv7c0wbn8amxc54n4w15kxlx5ypdmla8s0gxr2l7bv7s0bhrg6"))
+
+(define rust-textwrap-0.11.0
+  (crate-source "textwrap" "0.11.0"
+                "0q5hky03ik3y50s9sz25r438bc4nwhqc6dqwynv4wylc807n29nk"))
+
+(define rust-unicode-ident-1.0.24
+  (crate-source "unicode-ident" "1.0.24"
+                "0xfs8y1g7syl2iykji8zk5hgfi5jw819f5zsrbaxmlzwsly33r76"))
+
+(define rust-unicode-segmentation-1.13.2
+  (crate-source "unicode-segmentation" "1.13.2"
+                "135a26m4a0wj319gcw28j6a5aqvz00jmgwgmcs6szgxjf942facn"))
+
+(define rust-unicode-width-0.1.14
+  (crate-source "unicode-width" "0.1.14"
+                "1bzn2zv0gp8xxbxbhifw778a7fc93pa6a1kj24jgg9msj07f7mkx"))
+
+(define rust-unicode-xid-0.1.0
+  (crate-source "unicode-xid" "0.1.0"
+                "1z57lqh4s18rr4x0j4fw4fmp9hf9346h0kmdgqsqx0fhjr3k0wpw"))
+
+(define rust-vec-map-0.8.2
+  (crate-source "vec_map" "0.8.2"
+                "1481w9g1dw9rxp3l6snkdqihzyrd2f8vispzqmwjwsdyhw8xzggi"))
+
+(define rust-winapi-0.3.9
+  (crate-source "winapi" "0.3.9"
+                "06gl025x418lchw1wxj64ycr7gha83m44cjr5sarhynd9xkrm0sw"))
+
+(define rust-winapi-i686-pc-windows-gnu-0.4.0
+  (crate-source "winapi-i686-pc-windows-gnu" "0.4.0"
+                "1dmpa6mvcvzz16zg6d5vrfy4bxgg541wxrcip7cnshi06v38ffxc"))
+
+(define rust-winapi-x86-64-pc-windows-gnu-0.4.0
+  (crate-source "winapi-x86_64-pc-windows-gnu" "0.4.0"
+                "0gqq64czqb64kskjryj8isp62m2sgvx25yyj3kpc2myh85w24bki"))
+
+(define rust-zmij-1.0.21
+  (crate-source "zmij" "1.0.21"
+                "1amb5i6gz7yjb0dnmz5y669674pqmwbj44p4yfxfv2ncgvk8x15q"))
+
+
+
+;;; Crate sources for gn-rust-correlation
+
+(define rust-gsl-6.0.0
+  (crate-source "GSL" "6.0.0"
+                "1kpiivagrsk9ags7d4k2521jwix0lqgnd3i8ayj3dfniszvcmgn9"))
+
+(define rust-gsl-sys-3.0.0
+  ;; TODO REVIEW: Check bundled sources.
+  (crate-source "GSL-sys" "3.0.0"
+                "17dx066l1pbjwp9syjkzqb6fiajyb4wc814zqdfrj807rh6nfxs5"))
+
+(define rust-aho-corasick-1.1.4
+  (crate-source "aho-corasick" "1.1.4"
+                "00a32wb2h07im3skkikc495jvncf62jl6s96vwc7bhi70h9imlyx"))
+
+(define rust-assert-approx-eq-1.1.0
+  (crate-source "assert_approx_eq" "1.1.0"
+                "1zagfwfad5wssmr830gk3489f97ppczv6xs627jxniwm6ssdl1rw"))
+
+(define rust-bumpalo-3.20.2
+  (crate-source "bumpalo" "3.20.2"
+                "1jrgxlff76k9glam0akhwpil2fr1w32gbjdf5hpipc7ld2c7h82x"))
+
+(define rust-cast-0.3.0
+  (crate-source "cast" "0.3.0"
+                "1dbyngbyz2qkk0jn2sxil8vrz3rnpcj142y184p9l4nbl9radcip"))
+
+(define rust-cfg-if-1.0.4
+  (crate-source "cfg-if" "1.0.4"
+                "008q28ajc546z5p2hcwdnckmg0hia7rnx52fni04bwqkzyrghc4k"))
+
+(define rust-criterion-0.3.6
+  (crate-source "criterion" "0.3.6"
+                "13yd64ah93gkbdv7qq4cr6rhgl9979jjcjk3gkhnav1b7glns7dh"))
+
+(define rust-criterion-plot-0.4.5
+  (crate-source "criterion-plot" "0.4.5"
+                "0xhq0jz1603585h7xvm3s4x9irmifjliklszbzs4cda00y1cqwr6"))
+
+(define rust-csv-1.4.0
+  (crate-source "csv" "1.4.0"
+                "0f7r2ip0rbi7k377c3xmsh9xd69sillffhpfmbgnvz3yrxl9vkaj"))
+
+(define rust-csv-core-0.1.13
+  (crate-source "csv-core" "0.1.13"
+                "10lppd3fdb1i5npgx9xqjs5mjmy2qbdi8n16i48lg03ak4k3qjkh"))
+
+(define rust-half-1.8.3
+  (crate-source "half" "1.8.3"
+                "00q4ki8ycdswapw6xn1q89vr7rzi1c8m99igps0lx1i1gzhyshqv"))
+
+(define rust-itertools-0.10.5
+  (crate-source "itertools" "0.10.5"
+                "0ww45h7nxx5kj6z2y6chlskxd1igvs4j507anr6dzg99x1h25zdh"))
+
+(define rust-js-sys-0.3.94
+  ;; TODO REVIEW: Check bundled sources.
+  (crate-source "js-sys" "0.3.94"
+                "1nb4fr7c78mrrdhmg04nbac1zvd5z3panvqka8sy30nfh3py411f"))
+
+(define rust-lazy-static-1.5.0
+  (crate-source "lazy_static" "1.5.0"
+                "1zk6dqqni0193xg6iijh7i3i44sryglwgvx20spdvwk3r6sbrlmv"))
+
+(define rust-once-cell-1.21.4
+  (crate-source "once_cell" "1.21.4"
+                "0l1v676wf71kjg2khch4dphwh1jp3291ffiymr2mvy1kxd5kwz4z"))
+
+(define rust-oorandom-11.1.5
+  (crate-source "oorandom" "11.1.5"
+                "07mlf13z453fq01qff38big1lh83j8l6aaglf63ksqzzqxc0yyfn"))
+
+(define rust-paste-1.0.15
+  (crate-source "paste" "1.0.15"
+                "02pxffpdqkapy292harq6asfjvadgp1s005fip9ljfsn9fvxgh2p"))
+
+(define rust-pkg-config-0.3.32
+  (crate-source "pkg-config" "0.3.32"
+                "0k4h3gnzs94sjb2ix6jyksacs52cf1fanpwsmlhjnwrdnp8dppby"))
+
+(define rust-plotters-0.3.7
+  (crate-source "plotters" "0.3.7"
+                "0ixpy9svpmr2rkzkxvvdpysjjky4gw104d73n7pi2jbs7m06zsss"))
+
+(define rust-plotters-backend-0.3.7
+  (crate-source "plotters-backend" "0.3.7"
+                "0ahpliim4hrrf7d4ispc2hwr7rzkn6d6nf7lyyrid2lm28yf2hnz"))
+
+(define rust-plotters-svg-0.3.7
+  (crate-source "plotters-svg" "0.3.7"
+                "0w56sxaa2crpasa1zj0bhxzihlapqfkncggavyngg0w86anf5fji"))
+
+(define rust-regex-1.12.3
+  (crate-source "regex" "1.12.3"
+                "0xp2q0x7ybmpa5zlgaz00p8zswcirj9h8nry3rxxsdwi9fhm81z1"))
+
+(define rust-regex-automata-0.4.14
+  (crate-source "regex-automata" "0.4.14"
+                "13xf7hhn4qmgfh784llcp2kzrvljd13lb2b1ca0mwnf15w9d87bf"))
+
+(define rust-regex-syntax-0.8.10
+  (crate-source "regex-syntax" "0.8.10"
+                "02jx311ka0daxxc7v45ikzhcl3iydjbbb0mdrpc1xgg8v7c7v2fw"))
+
+(define rust-rustversion-1.0.22
+  (crate-source "rustversion" "1.0.22"
+                "0vfl70jhv72scd9rfqgr2n11m5i9l1acnk684m2w83w0zbqdx75k"))
+
+(define rust-ryu-1.0.23
+  (crate-source "ryu" "1.0.23"
+                "0zs70sg00l2fb9jwrf6cbkdyscjs53anrvai2hf7npyyfi5blx4p"))
+
+(define rust-same-file-1.0.6
+  (crate-source "same-file" "1.0.6"
+                "00h5j1w87dmhnvbv9l8bic3y7xxsnjmssvifw2ayvgx9mb1ivz4k"))
+
+(define rust-serde-cbor-0.11.2
+  (crate-source "serde_cbor" "0.11.2"
+                "1xf1bq7ixha30914pd5jl3yw9v1x6car7xgrpimvfvs5vszjxvrb"))
+
+(define rust-tinytemplate-1.2.1
+  (crate-source "tinytemplate" "1.2.1"
+                "1g5n77cqkdh9hy75zdb01adxn45mkh9y40wdr7l68xpz35gnnkdy"))
+
+(define rust-walkdir-2.5.0
+  (crate-source "walkdir" "2.5.0"
+                "0jsy7a710qv8gld5957ybrnc07gavppp963gs32xk4ag8130jy99"))
+
+(define rust-wasm-bindgen-0.2.117
+  (crate-source "wasm-bindgen" "0.2.117"
+                "1c6hi55mq70546hrvrx7wa27sn3yvf04gg6hf8riwn8mnhdzql85"))
+
+(define rust-wasm-bindgen-macro-0.2.117
+  (crate-source "wasm-bindgen-macro" "0.2.117"
+                "1gl6gqy60khhyqv354m0kmgk541sass8kzymxim7hi6zbaizkgbz"))
+
+(define rust-wasm-bindgen-macro-support-0.2.117
+  (crate-source "wasm-bindgen-macro-support" "0.2.117"
+                "1wlza8xdr18cac2wm3ahxdwx1nnqa01m0d3jf3kd9dmsy8z6kafw"))
+
+(define rust-wasm-bindgen-shared-0.2.117
+  (crate-source "wasm-bindgen-shared" "0.2.117"
+                "0frxrdi1w0cswv8v7n1972hd23nbwm8hr7a2dhdq8bbd59l9l4ir"))
+
+(define rust-web-sys-0.3.94
+  ;; TODO REVIEW: Check bundled sources.
+  (crate-source "web-sys" "0.3.94"
+                "02nxnhv349r2gcy8w71cjj6nimww1g2zy20y8r4hhbxi75z04w6d"))
+
+(define rust-winapi-util-0.1.11
+  (crate-source "winapi-util" "0.1.11"
+                "08hdl7mkll7pz8whg869h58c1r9y7in0w0pk8fm24qc77k0b39y2"))
+
+(define rust-windows-link-0.2.1
+  (crate-source "windows-link" "0.2.1"
+                "1rag186yfr3xx7piv5rg8b6im2dwcf8zldiflvb22xbzwli5507h"))
+
+(define rust-windows-sys-0.61.2
+  ;; TODO REVIEW: Check bundled sources.
+  (crate-source "windows-sys" "0.61.2"
+                "1z7k3y9b6b5h52kid57lvmvm05362zv1v8w0gc7xyv5xphlp44xf"))
+
+(define-cargo-inputs lookup-cargo-inputs
+  (qtlreaper =>
+    (list rust-ansi-term-0.12.1
+          rust-atty-0.2.14
+          rust-autocfg-0.1.8
+          rust-autocfg-1.5.0
+          rust-bitflags-1.3.2
+          rust-clap-2.34.0
+          rust-cloudabi-0.0.3
+          rust-crossbeam-deque-0.8.6
+          rust-crossbeam-epoch-0.9.18
+          rust-crossbeam-utils-0.8.21
+          rust-either-1.15.0
+          rust-fuchsia-cprng-0.1.1
+          rust-heck-0.3.3
+          rust-hermit-abi-0.1.19
+          rust-itertools-0.7.11
+          rust-itoa-1.0.18
+          rust-libc-0.2.184
+          rust-matrixmultiply-0.1.15
+          rust-memchr-2.8.0
+          rust-ndarray-0.12.1
+          rust-num-complex-0.2.4
+          rust-num-traits-0.2.19
+          rust-proc-macro2-0.4.30
+          rust-proc-macro2-1.0.106
+          rust-quote-0.6.13
+          rust-quote-1.0.45
+          rust-rand-0.6.5
+          rust-rand-chacha-0.1.1
+          rust-rand-core-0.3.1
+          rust-rand-core-0.4.2
+          rust-rand-hc-0.1.0
+          rust-rand-isaac-0.1.1
+          rust-rand-jitter-0.1.4
+          rust-rand-os-0.1.3
+          rust-rand-pcg-0.1.2
+          rust-rand-xorshift-0.1.1
+          rust-rawpointer-0.1.0
+          rust-rayon-1.11.0
+          rust-rayon-core-1.13.0
+          rust-rdrand-0.4.0
+          rust-serde-1.0.228
+          rust-serde-core-1.0.228
+          rust-serde-derive-1.0.228
+          rust-serde-json-1.0.149
+          rust-strsim-0.8.0
+          rust-structopt-0.2.18
+          rust-structopt-derive-0.2.18
+          rust-syn-0.15.44
+          rust-syn-2.0.117
+          rust-textwrap-0.11.0
+          rust-unicode-ident-1.0.24
+          rust-unicode-segmentation-1.13.2
+          rust-unicode-width-0.1.14
+          rust-unicode-xid-0.1.0
+          rust-vec-map-0.8.2
+          rust-winapi-0.3.9
+          rust-winapi-i686-pc-windows-gnu-0.4.0
+          rust-winapi-x86-64-pc-windows-gnu-0.4.0
+          rust-zmij-1.0.21
+          ))
+  (correlation_rust =>
+    (list rust-aho-corasick-1.1.4
+          rust-assert-approx-eq-1.1.0
+          rust-atty-0.2.14
+          rust-autocfg-1.5.0
+          rust-bitflags-1.3.2
+          rust-bumpalo-3.20.2
+          rust-cast-0.3.0
+          rust-cfg-if-1.0.4
+          rust-clap-2.34.0
+          rust-crossbeam-deque-0.8.6
+          rust-crossbeam-epoch-0.9.18
+          rust-crossbeam-utils-0.8.21
+          rust-criterion-0.3.6
+          rust-criterion-plot-0.4.5
+          rust-csv-1.4.0
+          rust-csv-core-0.1.13
+          rust-either-1.15.0
+          rust-gsl-6.0.0
+          rust-gsl-sys-3.0.0
+          rust-half-1.8.3
+          rust-heck-0.3.3
+          rust-hermit-abi-0.1.19
+          rust-itertools-0.10.5
+          rust-itoa-1.0.18
+          rust-js-sys-0.3.94
+          rust-lazy-static-1.5.0
+          rust-libc-0.2.184
+          rust-memchr-2.8.0
+          rust-num-traits-0.2.19
+          rust-once-cell-1.21.4
+          rust-oorandom-11.1.5
+          rust-paste-1.0.15
+          rust-pkg-config-0.3.32
+          rust-plotters-0.3.7
+          rust-plotters-backend-0.3.7
+          rust-plotters-svg-0.3.7
+          rust-proc-macro2-1.0.106
+          rust-quote-1.0.45
+          rust-rayon-1.11.0
+          rust-rayon-core-1.13.0
+          rust-regex-1.12.3
+          rust-regex-automata-0.4.14
+          rust-regex-syntax-0.8.10
+          rust-rustversion-1.0.22
+          rust-ryu-1.0.23
+          rust-same-file-1.0.6
+          rust-serde-1.0.228
+          rust-serde-cbor-0.11.2
+          rust-serde-core-1.0.228
+          rust-serde-derive-1.0.228
+          rust-serde-json-1.0.149
+          rust-strsim-0.8.0
+          rust-structopt-0.2.18
+          rust-structopt-derive-0.2.18
+          rust-syn-0.15.44
+          rust-syn-2.0.117
+          rust-textwrap-0.11.0
+          rust-tinytemplate-1.2.1
+          rust-unicode-ident-1.0.24
+          rust-unicode-segmentation-1.13.2
+          rust-unicode-width-0.1.14
+          rust-unicode-xid-0.1.0
+          rust-vec-map-0.8.2
+          rust-walkdir-2.5.0
+          rust-wasm-bindgen-0.2.117
+          rust-wasm-bindgen-macro-0.2.117
+          rust-wasm-bindgen-macro-support-0.2.117
+          rust-wasm-bindgen-shared-0.2.117
+          rust-web-sys-0.3.94
+          rust-winapi-0.3.9
+          rust-winapi-i686-pc-windows-gnu-0.4.0
+          rust-winapi-util-0.1.11
+          rust-winapi-x86-64-pc-windows-gnu-0.4.0
+          rust-windows-link-0.2.1
+          rust-windows-sys-0.61.2
+          rust-zmij-1.0.21))
+)
+
+(define-public rust-qtlreaper
+  (let ((commit "4dafa7289432d10685b6b235e3552ac3d681bb03")
+        (revision "0"))
+  (package
+    (name "rust-qtlreaper")
+    (version (git-version "0.1.4" revision commit))
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://github.com/genenetwork/rust-qtlreaper")
+                    (commit commit)))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32 "1p7dmxh43ly0k7q6va0lzisqnk1i7af3dy5aw1sr4y5s7z0h6i0y"))))
+    (build-system cargo-build-system)
+    (arguments (list #:install-source? #f
+                     #:tests? #f)) ; test results vary by machine
+    (inputs (cargo-inputs 'qtlreaper
+                          #:module '(gn packages genenetwork-rust)))
+    (home-page "https://github.com/genenetwork/rust-qtlreaper")
+    (synopsis "Rust implementation of QTL Reaper")
+    (description
+     "Rust-qtlreaper is a Rust implementation of QTL Reaper for mapping
+quantitative trait loci (QTL) in genetic datasets.")
+    (license license:agpl3+))))
+
+(define-public gn-rust-correlation
+  (let ((commit "473ad82b6f4477bbbeeef977e3e9f830f59a9b7f")
+        (revision "1"))
+    (package
+      (name "gn-rust-correlation")
+      (version (git-version "0.1.4" revision commit))
+      (source (origin
+                (method git-fetch)
+                (uri (git-reference
+                      (url "https://github.com/Alexanderlacuna/correlation_rust")
+                      (commit commit)))
+                (file-name (git-file-name name version))
+                (sha256
+                 (base32 "1xlasa4ggyynmnm890i7zlsqds7jfclmh5s6p582xlfdf75k9h5z"))))
+      (build-system cargo-build-system)
+      (native-inputs (list gsl))
+      (arguments (list #:install-source? #f))
+      (inputs (cargo-inputs 'correlation_rust
+                            #:module '(gn packages genenetwork-rust)))
+      (home-page "https://github.com/Alexanderlacuna/correlation_rust")
+      (synopsis "Re-implementation of genenetwork/correlation in Rust")
+      (description "Re-implementation of genenetwork/correlation in Rust.")
+      (license #f))))
diff --git a/gn/packages/genenetwork.scm b/gn/packages/genenetwork.scm
index f8db089..4690ffb 100644
--- a/gn/packages/genenetwork.scm
+++ b/gn/packages/genenetwork.scm
@@ -7,7 +7,6 @@
   #:use-module (guix download)
   #:use-module (guix git)
   #:use-module (guix git-download)
-  #:use-module (guix build-system cargo)
   #:use-module (guix build-system gnu)
   #:use-module (guix build-system python)
   #:use-module (guix build-system trivial)
@@ -24,7 +23,6 @@
   #:use-module (gnu packages bioinformatics)
   #:use-module (gnu packages check)
   #:use-module (gnu packages cran)
-  #:use-module (past-crates packages crates-io)
   #:use-module (gnu packages compression)
   #:use-module (gnu packages databases)
   #:use-module (gnu packages ghostscript)
@@ -52,70 +50,17 @@
   #:use-module (gnu packages xml)
   #:use-module (gnu packages serialization)
   #:use-module (gn packages bioinformatics)
-  #:use-module (gn packages crates-io)
   #:use-module (gn packages gemma)
   #:use-module (gn packages javascript)
   #:use-module (gn packages node)
   #:use-module (gn packages python)
   #:use-module (gn packages statistics)
   #:use-module (gn packages web)
+  #:use-module (gn packages genenetwork-rust)
   #:use-module (srfi srfi-1)
   #:use-module (gn packages databases))
 
 
-(define-public rust-qtlreaper
-  (let ((commit "4dafa7289432d10685b6b235e3552ac3d681bb03")
-        (revision "1"))
-    (package
-      (name "rust-qtlreaper")
-      (version "0.1.4")
-      (source
-        (origin
-          (method git-fetch)
-          (uri (git-reference
-                 (url "https://github.com/genenetwork/rust-qtlreaper.git")
-                 (commit commit)))
-          (file-name (git-file-name name version))
-          (sha256
-           (base32
-            "1p7dmxh43ly0k7q6va0lzisqnk1i7af3dy5aw1sr4y5s7z0h6i0y"))))
-      (build-system cargo-build-system)
-      (arguments
-       `(#:cargo-inputs
-         (("rust-rand" ,rust-rand-0.6)
-          ("rust-structopt" ,rust-structopt-0.2)
-          ("rust-rayon" ,rust-rayon-1)
-          ("rust-serde" ,rust-serde-1)
-          ("rust-serde-json" ,rust-serde-json-1)
-          ("rust-ndarray" ,rust-ndarray-0.12))
-         #:phases
-         (modify-phases %standard-phases
-           ;; Test results vary based on the machine running them.
-           (replace 'check
-             (lambda _
-               (or (assoc-ref %standard-phases 'check)
-                   (begin
-                     (substitute* "src/geneobject.rs"
-                       ;; array![Genotype::Unk, Genotype::Unk, Genotype::Pat]
-                       (("0.3421367343627405") "0.3421367343627406")
-                       ;; array![Genotype::Unk, Genotype::Unk, Genotype::Unk]
-                       (("-0.3223330030526561") "-0.32233300305265566"))
-                     (assoc-ref %standard-phases 'check)))
-               #t)))))
-      (home-page "https://github.com/genenetwork/rust-qtlreaper")
-      (synopsis "Reimplementation of genenetwork/QTLReaper in Rust")
-      (description "Reimplementation of genenetwork/QTLReaper in Rust")
-      (license #f))))
-
-; Tests on the upstream python-pengouin package are broken. So, we
-; create this temporary workaround.
-(define python-pingouin-without-tests
- (package
-   (inherit python-pingouin)
-   (arguments
-    (substitute-keyword-arguments (package-arguments python-pingouin)
-      ((#:tests? _ #f) #f)))))
-
 (define-public genenetwork3
   (let ((commit "e6c44577b2489f7b1523cb6a5fd332015bde25c5")
         (revision "5"))
@@ -158,7 +103,7 @@
              python-mysqlclient-2.2.7
              python-numpy
              python-pandas
-             python-pingouin-without-tests
+             python-pingouin
              python-plotly
              python-pyld
              python-pymonad
@@ -429,7 +374,7 @@ storage.")
      (source
       (git-checkout
        (url "https://github.com/genenetwork/genenetwork3")
-       (branch "prod"))))))
+       (branch "main"))))))
 
 (define-public genenetwork2-stable
   (let ((commit "95e634ca90d52922812b93df162686b348288651")
@@ -618,77 +563,6 @@ storage.")
 GeneNetwork projects.")
       (license license:agpl3+))))
 
-;; ./pre-inst-env guix download http://files.genenetwork.org/raw_database/db_webqtl_s.zip
-;; 0sscjh0wml2lx0mb43vf4chg9gpbfi7abpjxb34n3kyny9ll557x
-
-(define-public genenetwork2-files-small
-  (let ((pfff "xx"))
-    (package
-      (name "genenetwork2-files-small")
-      (version "1.0")
-      (source
-       (origin
-         (method url-fetch)
-         (uri "http://files.genenetwork.org/data_files/gn2_data_s-20160303-C9E672ECED1F51B915DE419B5B2C524E.tar.lz4")
-         (file-name (string-append name "-" pfff))
-         (sha256
-          (base32 "058ymx3af6abdhdxyxj0i9qfvb6v7j091frjpp6jh4ahks7r23lj"))))
-      (build-system trivial-build-system)
-      (native-inputs `(("lz4" ,lz4)
-                       ("tar" ,tar)
-                       ("source" ,source)))
-
-      (arguments
-       `(#:modules ((guix build utils))
-         #:builder
-         (let* ((out (assoc-ref %outputs "out"))
-                (name "gn2_data_s")
-                (tarfn (string-append name ".tar"))
-                (targetdir (string-append out "/share/genenetwork2/")))
-           (begin
-             (use-modules (guix build utils))
-             (let ((source (assoc-ref %build-inputs "source"))
-                   (lz4unpack (string-append (assoc-ref %build-inputs "lz4") "/bin/lz4"))
-                   (tar (string-append (assoc-ref %build-inputs "tar") "/bin/tar")))
-               (and
-                (zero? (system* lz4unpack source "-d" tarfn))
-                (zero? (system* tar "xf" tarfn))
-                (mkdir-p targetdir)
-                (copy-recursively name targetdir)))))))
-      (home-page "http://genenetwork.org/")
-      (synopsis "Small file archive to run on genenetwork")
-      (description "Genenetwork genotype and mapping files.")
-      (license license:agpl3+))))
-
-(define-public genenetwork2-database-small
-  (let ((md5 "93e745e9c"))
-    (package
-    (name "genenetwork2-database-small")
-    (version "1.0")
-    (source
-     (origin
-       (method url-fetch)
-       (uri "http://files.genenetwork.org/raw_database/db_webqtl_s.zip")
-       (file-name (string-append name "-" md5))
-       (sha256
-        (base32 "0sscjh0wml2lx0mb43vf4chg9gpbfi7abpjxb34n3kyny9ll557x"))))
-    (build-system trivial-build-system)
-    (native-inputs `(("unzip" ,unzip)
-                     ("source" ,source)))
-
-    (arguments
-     `(#:modules ((guix build utils))
-       #:builder (begin
-                   (use-modules (guix build utils))
-                   (let ((source (assoc-ref %build-inputs "source"))
-                         (unzip (string-append (assoc-ref %build-inputs "unzip") "/bin/unzip")))
-                   (and (mkdir "db")
-                        (zero? (system* unzip source "-d" "db"))
-                        (chdir "db"))))))
-    (home-page "http://genenetwork.org/")
-    (synopsis "Small database to run on genenetwork")
-    (description "Genenetwork installation + database.")
-    (license license:agpl3+))))
 
 
 
@@ -729,27 +603,6 @@ GeneNetwork projects.")
                               #:node-type %package-node-type
                               #:backend %d3js-backend))))))))))))))
 
-;(define (computed-genenetwork-graph)
-;  (with-imported-modules '((guix build utils))
-;    (computed-file "genenetwork-graph"
-;      #~(begin
-;          (use-modules (guix build utils))
-;            (call-with-output-file #$output
-;              (lambda (port)
-;                (format
-;                  port "~a"
-;                  #$(call-with-output-string
-;                      (lambda (p)
-;                        (with-output-to-port p
-;                          (lambda ()
-;                            (run-with-store
-;                              (open-connection)
-;                              (export-graph
-;                                (list genenetwork1)
-;                                p
-;                                #:node-type %package-node-type
-;                                #:backend %d3js-backend)))))))))))))
-
 (define (dag-svg-file)
   (with-imported-modules '((guix build utils))
     (gexp->derivation "dag-svg-file"
diff --git a/gn/packages/gitea.scm b/gn/packages/gitea.scm
deleted file mode 100644
index 6a6e8a9..0000000
--- a/gn/packages/gitea.scm
+++ /dev/null
@@ -1,79 +0,0 @@
-(define-module (gn packages gitea)
-  #:use-module ((guix licenses) #:prefix license:)
-  #:use-module (guix packages)
-  #:use-module (guix download)
-  #:use-module (guix gexp)
-  #:use-module (guix build-system go)
-  #:use-module (gnu packages bash)
-  #:use-module (gnu packages node)
-  #:use-module (gnu packages version-control))
-
-(define-public gitea
-  (package
-    (name "gitea")
-    (version "1.15.11")
-    (source (origin
-              (method url-fetch)
-              (uri (string-append "https://github.com/go-gitea/gitea/releases"
-                                  "/download/v" version
-                                  "/gitea-src-" version ".tar.gz"))
-              (sha256
-               (base32 "0ihw68qy36xdwp6kiardxlbp1x0s10gjdkg51b6p93c0r9pm9501"))))
-    (build-system go-build-system)
-    (arguments
-     `(#:install-source? #f
-       #:phases
-       (modify-phases %standard-phases
-         (add-after 'patch-source-shebangs 'unpatch-example-shebangs
-           ;; If we don't do this then git repos created with this version of
-           ;; gitea will use the build environment's bash for the different
-           ;; git repo hooks.
-           (lambda _
-             (substitute*
-               (find-files "src/integrations/gitea-repositories-meta"
-                           "(\\.sample|gitea|(post|pre)-receive|update)")
-               (("#!/gnu/store/.*/bin/bash") "#!/bin/bash")
-               (("#!/gnu/store/.*/bin/sh") "#!/bin/sh"))))
-         (add-before 'build 'prepare-build
-           (lambda _
-             (setenv "TAGS" "bindata sqlite sqlite_unlock_notify")))
-         (replace 'build
-           (lambda _
-             (with-directory-excursion "src"
-               (invoke "make" "build")
-               (invoke "make" "generate-manpage"))))
-         (replace 'check
-           (lambda* (#:key tests? #:allow-other-keys)
-             (when tests?
-               (with-directory-excursion "src"
-                 (invoke "make" "test-backend")
-                 ;; Gitea requires git with lfs support to run tests.
-                 ;(invoke "make" "test-sqlite")
-                 (invoke "make" "test-sqlite-migration")))))
-         (replace 'install
-           (lambda* (#:key outputs #:allow-other-keys)
-             (let ((out (assoc-ref outputs "out")))
-               (with-directory-excursion "src"
-                 (invoke "make" "install")
-                 (install-file "man/man1/gitea.1.gz"
-                               (string-append out "/share/man/man1"))))))
-         (add-after 'install 'wrap-program
-           (lambda* (#:key outputs inputs #:allow-other-keys)
-             (let* ((out (assoc-ref outputs "out"))
-                    (bin (string-append out "/bin/gitea")))
-               (wrap-program bin
-                 `("PATH" ":" prefix
-                   (,(dirname (search-input-file inputs "/bin/git")))))))))))
-    ;(native-inputs
-    ; (list node-lts))
-    (inputs
-     (list bash-minimal
-           git))
-    (home-page "https://gitea.io/")
-    (synopsis "Self-hosted git service")
-    (description "Gitea is an open-source forge software package for hosting
-software development version control using Git as well as other collaborative
-features like bug tracking, wikis and code review.")
-    (properties
-      '((release-monitoring-url . "https://github.com/go-gitea/gitea/releases")))
-    (license license:expat)))
diff --git a/gn/packages/globus.scm b/gn/packages/globus.scm
deleted file mode 100644
index 6cc5d9e..0000000
--- a/gn/packages/globus.scm
+++ /dev/null
@@ -1,76 +0,0 @@
-(define-module (gn packages globus)
-  #:use-module (gnu packages check)
-  #:use-module (gnu packages python-build)
-  #:use-module (gnu packages python-crypto)
-  #:use-module (gnu packages python-web)
-  #:use-module (gnu packages python-xyz)
-  #:use-module (guix build-system pyproject)
-  #:use-module (guix build-system python)
-  #:use-module (guix download)
-  #:use-module ((guix licenses) #:prefix license:)
-  #:use-module (guix packages))
-
-(define-public python-globus-sdk
-  (package
-    (name "python-globus-sdk")
-    (version "3.37.0")
-    (source (origin
-              (method url-fetch)
-              (uri (pypi-uri "globus-sdk" version))
-              (sha256
-               (base32
-                "19w3pjzfycaqvvr11nq8c91i6pkkkic95yf170hr39dwj70lrkc7"))))
-    (build-system pyproject-build-system)
-    (propagated-inputs (list python-cryptography python-pyjwt python-requests
-                             python-typing-extensions))
-    (home-page "https://github.com/globus/globus-sdk-python")
-    (synopsis "Globus SDK for Python")
-    (description "@code{python-globus-sdk} provides a convenient Pythonic interface to
-Globus APIs.")
-    (license license:asl2.0)))
-
-(define-public python-click-type-test
-  (package
-    (name "python-click-type-test")
-    (version "0.0.7")
-    (source (origin
-              (method url-fetch)
-              (uri (pypi-uri "click-type-test" version))
-              (sha256
-               (base32
-                "1i3z7akiz7s8jy6x0vzrak88m55ac1spq88vziwryzr7355y3hgq"))))
-    (build-system pyproject-build-system)
-    (native-inputs (list python-pytest))
-    (propagated-inputs (list python-click))
-    (home-page "https://github.com/sirosen/click-type-test")
-    (synopsis "Test that type annotations match click parameter types")
-    (description "@code{python-click-type-test} allows you to test that your click
-options and arguments match your type annotations.")
-    (license license:expat)))
-
-(define-public globus-cli
-  (package
-    (name "globus-cli")
-    (version "3.25.0")
-    (source (origin
-              (method url-fetch)
-              (uri (pypi-uri "globus-cli" version))
-              (sha256
-               (base32
-                "05div2psajmqdy9md804q4x6ha4yfp4w6yrxz0ynsq3i62a6cl5v"))))
-    (build-system pyproject-build-system)
-    (arguments
-     (list #:tests? #f))
-    (propagated-inputs
-     (list python-click
-           python-cryptography
-           python-globus-sdk
-           python-jmespath
-           python-packaging
-           python-requests
-           python-typing-extensions))
-    (home-page "https://docs.globus.org/cli")
-    (synopsis "Globus CLI")
-    (description "@code{globus-cli} provides a command-line interface to
-Globus APIs.")
-    (license license:asl2.0)))
diff --git a/gn/packages/gn-proxy.scm b/gn/packages/gn-proxy.scm
index b4726d2..f4a5ec7 100644
--- a/gn/packages/gn-proxy.scm
+++ b/gn/packages/gn-proxy.scm
@@ -25,7 +25,15 @@
                 "1qfz6wz1f977pgpq74vn60va9szdanc8dm37fi7g34vzcqyskmfa"))))
     (build-system gnu-build-system)
     (arguments
-     `(#:tests? #f))
+     `(#:tests? #f
+       #:phases
+       (modify-phases %standard-phases
+         (delete 'configure)
+         (delete 'build)
+         (replace 'install
+           (lambda* (#:key outputs #:allow-other-keys)
+             (let ((out (string-append (assoc-ref outputs "out") "/share/gn-proxy")))
+               (copy-recursively "." out)))))))
     (inputs
      `(("racket-minimal" ,racket-minimal)))
     (home-page "https://github.com/genenetwork/gn-proxy")
diff --git a/gn/packages/gnulib.scm b/gn/packages/gnulib.scm
index e9a1c15..12379ea 100644
--- a/gn/packages/gnulib.scm
+++ b/gn/packages/gnulib.scm
@@ -4,7 +4,6 @@
   #:use-module (guix git-download)
   #:use-module (guix build-system gnu)
   #:use-module (gnu packages texinfo))
-
 (define-public gnulib
   (let ((commit "de255f87357354e0f2422d9321fe9701b776ead5")
         (revision "2877")) ; as reported from gnulib
diff --git a/gn/packages/gtest.scm b/gn/packages/gtest.scm
index f11935a..88f644e 100644
--- a/gn/packages/gtest.scm
+++ b/gn/packages/gtest.scm
@@ -66,6 +66,7 @@
           (base32
            "1v73r7wm9q9kpjbpbk0qs15703y2caaz6dkvz9bkn7nnv98jbqqc"))))
       (build-system cmake-build-system)
+      (arguments (list #:tests? #f))
       (native-inputs
        `(("python" ,python-wrapper)))
       (synopsis "")
diff --git a/gn/packages/hyphy.scm b/gn/packages/hyphy.scm
deleted file mode 100644
index d0e9127..0000000
--- a/gn/packages/hyphy.scm
+++ /dev/null
@@ -1,71 +0,0 @@
-;;; GNU Guix --- Functional package management for GNU
-;;; Copyright © 2016 Dennis Mungai <dmngaie@gmail.com>
-;;; Copyright © 2019 Efraim Flashner <efraim@flashner.co.il>
-;;;
-;;; This file is part of GNU Guix.
-;;;
-;;; GNU Guix is free software; you can redistribute it and/or modify it
-;;; under the terms of the GNU General Public License as published by
-;;; the Free Software Foundation; either version 3 of the License, or (at
-;;; your option) any later version.
-;;;
-;;; GNU Guix is distributed in the hope that it will be useful, but
-;;; WITHOUT ANY WARRANTY; without even the implied warranty of
-;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-;;; GNU General Public License for more details.
-;;;
-;;; You should have received a copy of the GNU General Public License
-;;; along with GNU Guix.  If not, see <http://www.gnu.org/licenses/>.
-
-(define-module (gn packages hyphy)
-  #:use-module ((guix licenses) #:prefix license:)
-  #:use-module (guix git-download)
-  #:use-module (guix build-system cmake)
-  #:use-module (guix packages)
-  #:use-module (gnu packages algebra)
-  #:use-module (gnu packages curl)
-  #:use-module (gnu packages mpi)
-  #:use-module (gnu packages python)
-  #:use-module (gnu packages tls))
-
-;; TODO: Unbundle sqlite, gtest
-(define-public hyphy ; guix: check
-  (package
-    (name "hyphy")
-    (version "2.5.0")
-    (source (origin
-              (method git-fetch)
-              (uri (git-reference
-                     (url "https://github.com/veg/hyphy.git")
-                     (commit version)))
-              (file-name (git-file-name name version))
-              (sha256
-               (base32
-                "1fvmwg2rxkz3abhhldiir69vmyc4i85vdvy64bizgxd0g2k2bikm"))))
-    (inputs
-     `(("curl" ,curl)
-       ("fftw-openmpi" ,fftw-openmpi)
-       ("openmpi" ,openmpi)
-       ("openssl" ,openssl)
-       ("python" ,python-2)))
-    (build-system cmake-build-system)
-    (arguments
-     '(#:make-flags '("MPI") ; Add "GTEST" for tests, currently fails to compile.
-       #:configure-flags (list "-DCMAKE_BUILD_TYPE=Release"
-                               (string-append "-DINSTALL_PREFIX="
-                                              (assoc-ref %outputs "out")))
-       #:tests? #f
-       #:test-target "HYPHYGTEST"))
-    (synopsis "hyphy: an open-source software package for the analysis
-of genetic sequences using techniques in phylogenetics, molecular
-evolution, and machine learning.")
-    (description "HyPhy is an open-source software package for the
-analysis of genetic sequences using techniques in phylogenetics,
-molecular evolution, and machine learning.  It features a complete
-graphical user interface (GUI) and a rich scripting language for
-limitless customization of analyses. Additionally, HyPhy features
-support for parallel computing environments (via message passing
-interface (MPI)) and it can be compiled as a shared library and called
-from other programming environments such as Python and R. ")
-    (home-page "http://hyphy.org")
-    (license license:expat)))
diff --git a/gn/packages/java.scm b/gn/packages/java.scm
deleted file mode 100644
index 2a3b07b..0000000
--- a/gn/packages/java.scm
+++ /dev/null
@@ -1,408 +0,0 @@
-;;; GNU Guix --- Functional package management for GNU
-;;; Copyright © 2016 Roel Janssen <roel@gnu.org>
-;;;
-;;; This file is part of GNU Guix.
-;;;
-;;; GNU Guix is free software; you can redistribute it and/or modify it
-;;; under the terms of the GNU General Public License as published by
-;;; the Free Software Foundation; either version 3 of the License, or (at
-;;; your option) any later version.
-;;;
-;;; GNU Guix is distributed in the hope that it will be useful, but
-;;; WITHOUT ANY WARRANTY; without even the implied warranty of
-;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-;;; GNU General Public License for more details.
-;;;
-;;; You should have received a copy of the GNU General Public License
-;;; along with GNU Guix.  If not, see <http://www.gnu.org/licenses/>.
-
-(define-module (gn packages java)
-  #:use-module ((guix licenses) #:prefix license:)
-  #:use-module (guix packages)
-  #:use-module (guix gexp)
-  #:use-module (guix utils)
-  #:use-module (guix download)
-  #:use-module (guix git-download)
-  #:use-module (guix svn-download)
-  #:use-module (guix build-system gnu)
-  #:use-module (guix build-system ant)
-  #:use-module (gnu packages)
-  #:use-module (gnu packages autotools)
-  #:use-module (gnu packages bash)
-  #:use-module (gnu packages bioinformatics)
-  #:use-module ((gnu packages nss) #:select (nss-certs))
-  #:use-module (gnu packages compression)
-  #:use-module (gnu packages cups)
-  #:use-module (gnu packages gcc)
-  #:use-module (gnu packages java)
-  #:use-module (gnu packages java-compression)
-  #:use-module (gnu packages perl)
-  #:use-module (srfi srfi-1))
-
-;; This is an attempt to make a smaller version of openjdk
-(define openjdk11-minimal
-  (package/inherit openjdk11
-    (inputs
-      (modify-inputs (package-inputs openjdk11)
-                     (replace "cups" cups-minimal)))))
-
-;; ----------------------------------------------------------------------------
-;; WORKING PACKAGES
-;; ----------------------------------------------------------------------------
-
-(define-public xz-java
-  (package
-   (name "xz-java")
-   (version "1.5")
-   (source (origin
-     (method url-fetch)
-     (uri (string-append "http://tukaani.org/xz/"
-                         name "-" version ".zip"))
-     (sha256
-      (base32 "0x6vn9dp9kxk83x2fp3394n95dk8fx9yg8jns9371iqsn0vy8ih1"))))
-   (build-system ant-build-system)
-   (arguments
-    `(#:tests? #f ; There's no test target.
-      #:jdk ,icedtea-7
-      #:phases
-      (modify-phases %standard-phases
-        (replace 'unpack
-          (lambda _
-            (mkdir-p "source")
-            (chdir "source")
-            (zero? (system* "unzip" (assoc-ref %build-inputs "source")))))
-        (replace 'install
-          (lambda _
-            (let ((out (string-append (assoc-ref %outputs "out")
-                                      "/share/java/xz/")))
-              (mkdir-p out)
-              (copy-file "build/jar/xz.jar" (string-append out "/xz-1.5.jar"))))))))
-   (native-inputs
-    `(("unzip" ,unzip)))
-   (home-page "http://tukaani.org/xz/java.html")
-   (synopsis "Implementation of XZ data compression in pure Java")
-   (description "This aims to be a complete implementation of XZ data
-compression in pure Java.  Single-threaded streamed compression and
-decompression and random access decompression have been fully implemented.")
-   (license license:public-domain)))
-
-(define-public jakarta-oro
-  (package
-    (name "jakarta-oro")
-    (version "2.0.8")
-    (source (origin
-      (method url-fetch)
-      (uri (string-append "http://archive.apache.org/dist/jakarta/oro/"
-                          name "-" version ".tar.gz"))
-      (sha256
-       (base32 "0rpmnsskiwmsy8r0sckz5n5dbvh3vkxx8hpm177c754r8xy3qksc"))))
-    (build-system ant-build-system)
-    (arguments
-     `(#:tests? #f ; There is no 'check' target
-       #:phases
-       (modify-phases %standard-phases
-         (replace 'install
-           (lambda _
-             (let ((out (string-append (assoc-ref %outputs "out")
-                                       "/share/java/oro/")))
-               (mkdir-p out)
-               (copy-file "jakarta-oro-2.0.8.jar" (string-append out "/oro-2.0.8.jar"))))))
-                ))
-    (home-page "http://jakarta.apache.org/oro/")
-    (synopsis "Set of text-processing Java classes")
-    (description "The Jakarta-ORO Java classes are a set of text-processing
-Java classes that provide Perl5 compatible regular expressions, AWK-like regular
-expressions, glob expressions, and utility classes for performing substitutions,
-splits, filtering filenames, etc.")
-    (license license:asl1.1)))
-
-;; ----------------------------------------------------------------------------
-;; IN PROGRESS
-;; ----------------------------------------------------------------------------
-
-(define-public jsch
-  (package
-    (name "jsch")
-    (version "0.1.53")
-    (source (origin
-              (method url-fetch)
-              (uri (string-append "mirror://sourceforge.net/jsch/" name "/"
-                                  version "/" name "-" version ".zip"))
-              (sha256
-               (base32 "1729j7khwj6yvkr26fjaf273i3krhz2n1m3mbv5ms4x00qrhrxdn"))))
-    (build-system ant-build-system)
-    (home-page "http://www.jcraft.com/jsch/")
-    (synopsis "JSch is a pure Java implementation of SSH2")
-    (description "JSch is a pure Java implementation of SSH2.  JSch allows you
-to connect to an sshd server and use port forwarding, X11 forwarding, file
-transfer, etc., and you can integrate its functionality into your own Java
-programs.")
-    (license license:bsd-3)))
-
-(define-public commons-vfs
-  (package
-    (name "commons-vfs")
-    (version "2.0")
-    (source (origin
-      (method url-fetch)
-      (uri (string-append
-            "http://mirrors.supportex.net/apache/commons/vfs/source/"
-            name "-" version "-src.tar.gz"))
-      (sha256
-       (base32 "1gkfg9g14kjkh2kf041ssdz9xnw7hpfmdsyrs1bbhyzikwg4s3d9"))))
-    (build-system ant-build-system)
-    (home-page "https://commons.apache.org/proper/commons-vfs/")
-    (synopsis "Commons Virtual File System API for Java")
-    (description "Commons VFS provides a single API for accessing various
-different file systems.  It presents a uniform view of the files from various
-different sources, such as the files on local disk, on an HTTP server, or
-inside a Zip archive. ")
-    (license license:asl2.0)))
-
-(define-public ivy
-;; Ivy tries to download the following packages:
-;; - https://repo1.maven.org/maven2/org/apache/ant/ant/1.7.1/ant-1.7.1.jar               => We have ant-1.9.6
-;; - https://repo1.maven.org/maven2/org/apache/ant/ant-nodeps/1.7.1/ant-nodeps-1.7.1.jar => Probably not needed
-;; - https://repo1.maven.org/maven2/org/apache/ant/ant-trax/1.7.1/ant-trax-1.7.1.jar     => Classes moved to ant.jar
-;; - https://repo1.maven.org/maven2/commons-httpclient/commons-httpclient/3.0/commons-httpclient-3.0.jar
-;; - https://repo1.maven.org/maven2/oro/oro/2.0.8/oro-2.0.8.jar                          => Packaged
-;; - https://repo1.maven.org/maven2/commons-vfs/commons-vfs/1.0/commons-vfs-1.0.jar
-;; - https://repo1.maven.org/maven2/com/jcraft/jsch/0.1.50/jsch-0.1.50.jar
-;; - https://repo1.maven.org/maven2/com/jcraft/jsch.agentproxy/0.0.6/jsch.agentproxy-0.0.6.jar
-;; - https://repo1.maven.org/maven2/com/jcraft/jsch.agentproxy.connector-factory/0.0.6/jsch.agentproxy.connector-factory-0.0.6.jar
-;; - https://repo1.maven.org/maven2/com/jcraft/jsch.agentproxy.jsch/0.0.6/jsch.agentproxy.jsch-0.0.6.jar
-;; - https://repo1.maven.org/maven2/org/bouncycastle/bcpg-jdk14/1.45/bcpg-jdk14-1.45.jar
-;; - https://repo1.maven.org/maven2/org/bouncycastle/bcprov-jdk14/1.45/bcprov-jdk14-1.45.jar
-;; - https://repo1.maven.org/maven2/junit/junit/3.8.2/junit-3.8.2.jar
-;; - https://repo1.maven.org/maven2/commons-lang/commons-lang/2.6/commons-lang-2.6.jar
-;; - https://repo1.maven.org/maven2/org/apache/ant/ant-testutil/1.7.0/ant-testutil-1.7.0.jar
-;; - https://repo1.maven.org/maven2/ant/ant-launcher/1.6.2/ant-launcher-1.6.2.jar
-;; - https://repo1.maven.org/maven2/ant-contrib/ant-contrib/1.0b3/ant-contrib-1.0b3.jar
-;; - https://repo1.maven.org/maven2/xerces/xercesImpl/2.6.2/xercesImpl-2.6.2.jar
-;; - https://repo1.maven.org/maven2/xerces/xmlParserAPIs/2.6.2/xmlParserAPIs-2.6.2.jar
-  (package
-    (name "ivy")
-    (version "2.4.0")
-    (source (origin
-      (method url-fetch)
-      (uri (string-append "http://ftp.nluug.nl/internet/apache/ant/" name "/"
-                          version "/apache-" name "-" version "-src.tar.gz"))
-      (sha256
-       (base32 "1xkfn57g2m7l6y0xdq75x5rnrgk52m9jx2xah70g3ggl8750hbr0"))))
-    (build-system ant-build-system)
-    (inputs
-     `(("nss-certs" ,nss-certs)))
-    (home-page "http://ant.apache.org/ivy/")
-    (synopsis "Dependency manager for Ant")
-    (description "Apache Ivy is a popular dependency manager focusing on
-flexibility and simplicity.")
-    (license license:asl2.0)))
-
-
-;; ----------------------------------------------------------------------------
-;; ON HOLD: WAITING FOR MAVEN PACKAGES
-;; ----------------------------------------------------------------------------
-
-;; TODO: Needs commons-compress
-;; (define-public ant-compress
-;;   (package
-;;     (name "ant-compress")
-;;     (version "1.4")
-;;     (source (origin
-;;               (method url-fetch)
-;;               (uri "https://www.apache.org/dist/ant/antlibs/compress/source/apache-ant-compress-1.4-src.tar.gz"))
-;;             (sha256
-;;              (base32 "17v5i11srmi12ckgrvhlwn0gvapgizs5672x252h143r0ya4c04d")))
-;;       ))
-
-;; TODO: Needs Maven.
-;; (define-public commons-compress
-;;   (package
-;;     (name "apache-commons-compress")
-;;     (version "1.10")
-;;     (source (origin
-;;               (method url-fetch)
-;;               (uri ("http://ftp.tudelft.nl/apache//commons/compress/source/commons-compress-1.10-src.tar.gz")))
-;;             (sha256
-;;              (base32 "06b40k9dmgqkga3qmfpgzq87jf3fkcxnwaiyczclh58yibg19604")))
-;;     ))
-
-;; TODO: Needs Maven.
-;; (define-public jcommander
-;;   (package
-;;     (name "jcommander")
-;;     (version "1.48")
-;;     (source (origin
-;;       (method url-fetch)
-;;       (uri (string-append "https://github.com/cbeust/jcommander/archive/"
-;;                           name "-" version ".tar.gz"))
-;;       (sha256
-;;        (base32 "1qn56hd6sxkfdv9j6pwf8c7ia00n39zry236a6achc87wq2kmfnw"))))
-;;     (build-system ant-build-system)
-;;     (home-page "http://jcommander.org/")
-;;     (synopsis "Java framework for parsing command line parameters")
-;;     (description "JCommander is a very small Java framework that makes it
-;; trivial to parse command line parameters. ")
-;;     (license license:asl2.0)))
-
-;; TODO: Needs Maven.
-;; (define-public maven-remote-resources-plugin
-;;   (package
-;;     (name "maven-remote-resources-plugin")
-;;     (version "1.5")
-;;     (source (origin
-;;       (method svn-fetch)
-;;       (uri (svn-reference
-;;             (url (string-append "http://svn.apache.org/viewvc/maven/plugins/tags/"
-;;                                 name "-" version))
-;;             (revision 1513840)))
-;;       (file-name (string-append name "-" version "-checkout"))
-;;       (sha256
-;;        (base32 "1g0iavyb34kvs3jfrx2hfnr8lr11m39sj852cy7528wva1glfl4i"))))
-;;     (build-system ant-build-system)
-;;     (home-page "https://maven.apache.org/plugins/maven-remote-resources-plugin/")
-;;     (synopsis "")
-;;     (description "")
-;;     (license license:asl2.0)))
-
-;; TODO: Needs Maven.
-;; (define-public junit
-;;   (package
-;;     (name "junit")
-;;     (version "4.12")
-;;     (source (origin
-;;       (method url-fetch)
-;;       (uri (string-append "https://github.com/junit-team/"
-;;                           name "/archive/r" version ".tar.gz"))
-;;       (sha256
-;;        (base32 "1r6ww2y3jpbpqh03r0966xxiz2vs8n72g6n6l0sjs3aspy56v8b1"))))
-;;     (build-system ant-build-system)
-;;     (home-page "http://junit.org/")
-;;     (synopsis "Framework to write repeatable tests")
-;;     (description "JUnit is a simple framework to write repeatable tests.  It is
-;; an instance of the xUnit architecture for unit testing frameworks.")
-;;     (license license:asl2.0)))
-
-(define-public maven
-  (package
-    (name "maven")
-    (version "3.3.9")
-    (source (origin
-      (method url-fetch)
-      (uri (string-append "http://apache.proserve.nl/maven/maven-3/"
-                          version "/source/apache-maven-" version "-src.tar.gz"))
-      (sha256
-       (base32 "1g0iavyb34kvs3jfrx2hfnr8lr11m39sj852cy7528wva1glfl4i"))))
-    (build-system ant-build-system)
-    (arguments
-     `(#:make-flags "-Dmaven.home=build/"
-       #:phases
-       (modify-phases %standard-phases
-         (add-before 'build 'set-m2-variable
-           (lambda _
-             (setenv "M2_HOME" (string-append (assoc-ref %outputs "out") "/maven-3.3.9")))))))
-    (home-page "https://maven.apache.org/")
-    (synopsis "")
-    (description "Apache Maven is a software project management and
-comprehension tool. Based on the concept of a project object model (POM),
-Maven can manage a project's build, reporting and documentation from a central
-piece of information.")
-    (license license:asl2.0)))
-
-;; TODO: Remove bundled jars from buildLib, lib, testLib and javascript
-(define-public rtg-tools
-  (package
-    (name "rtg-tools")
-    (version "3.11")
-    (source (origin
-              (method git-fetch)
-              (uri (git-reference
-                     (url "https://github.com/RealTimeGenomics/rtg-tools")
-                     (commit version)))
-              (file-name (git-file-name name version))
-              (sha256
-               (base32 "13fjhhcjgnynxscaymkn3rpdciplbg2m2qmihc7fxsylgn4m6gxk"))))
-    (build-system ant-build-system)
-    (arguments
-     `(#:jdk ,openjdk11-minimal
-       #:build-target "zip-nojre"
-       #:test-target "runalltests"
-       #:phases
-       (modify-phases %standard-phases
-         (add-after 'unpack 'adjust-source
-           (lambda _
-             (substitute* "build.xml"
-               (("\"git\"") "\"echo\"")
-               (("\\$\\{vcs\\.cmd\\.out\\}") "${product.version}")
-               (("\\$\\{build\\.time\\}") "1970-01-01")
-               (("-\\$\\{rtg\\.vcs\\.commit\\.revision\\}") ""))))
-         (replace 'install
-           (lambda* (#:key outputs #:allow-other-keys)
-             (let ((out (assoc-ref outputs "out"))
-                   (pkg (string-append ,name "-" ,version)))
-               (install-file (string-append "dist/" pkg "-nojre.zip")
-                             out)
-               (with-directory-excursion out
-                 (invoke "unzip" (string-append pkg "-nojre.zip"))
-                 (copy-recursively (string-append pkg "/") ".")
-                 (delete-file-recursively pkg)
-                 (delete-file (string-append pkg "-nojre.zip"))))))
-         (add-after 'install 'create-rtg.cfg
-           (lambda* (#:key inputs outputs #:allow-other-keys)
-             (let ((out (assoc-ref outputs "out")))
-               (with-output-to-file (string-append out "/rtg.cfg")
-                 (lambda _
-                   (format #t "RTG_JAVA=\"~a\"~@
-                           RTG_TALKBACK=false~@
-                           RTG_USAGE=false~%"
-                           (search-input-file inputs "/bin/java")))))))
-         (add-after 'install 'create-wrapper-script
-           (lambda* (#:key inputs outputs #:allow-other-keys)
-             (let* ((out (assoc-ref outputs "out"))
-                    (wrapper (string-append out "/bin/rtg")))
-               ;; We want an executable in the bin directory without rewriting
-               ;; the existing wrapper script.
-               (mkdir-p (dirname wrapper))
-               (with-output-to-file wrapper
-                 (lambda _
-                   (format #t "#!~a~@
-                           exec -a \"$0\" \"~a/rtg\" \"$@\"~%"
-                           (search-input-file inputs "/bin/bash")
-                           out)))
-               (chmod wrapper #o555))))
-         (add-after 'install 'install-completions
-           (lambda* (#:key outputs #:allow-other-keys)
-             (install-file "installer/resources/common/scripts/rtg-bash-completion"
-                           (string-append (assoc-ref outputs "out")
-                                          "/share/bash-completion/completions"))))
-         (delete 'generate-jar-indices))))  ; manually installed
-    (inputs
-     (list bash-minimal     ; for the wrapper script
-           java-commons-collections
-           java-commons-compress
-           java-commons-lang
-           ;java-gzipfix
-           ;java-sam-rtg
-           ;java-json-simple
-           ;java-rplot
-           java-snappy
-           ;java-velocity
-           ;java-velocity-tools-generic
-           ))
-    (native-inputs
-     (list ;java-findbugs-annotations
-           ;java-findbugs-jsr305
-           ;java-jumble-annotations
-           ;; for tests
-           java-hamcrest-core
-           java-junit
-           ;java-spelling
-           ;; For the 'install phase.
-           unzip))
-    (home-page "https://github.com/RealTimeGenomics/rtg-tools/")
-    (synopsis "Utilities for accurate VCF comparison and manipulation")
-    (description "RTG Tools is a subset of RTG Core that includes several useful
-utilities for dealing with VCF files and sequence data.  Probably the most
-interesting is the @code{vcfeval} command which performs sophisticated
-comparison of VCF files.")
-    (license license:bsd-2)))
diff --git a/gn/packages/javascript.scm b/gn/packages/javascript.scm
index 059999b..6ba75ca 100644
--- a/gn/packages/javascript.scm
+++ b/gn/packages/javascript.scm
@@ -8,8 +8,7 @@
   #:use-module (guix download)
   #:use-module (guix git-download)
   #:use-module (guix build-system minify)
-  #:use-module (guix build-system trivial)
-  #:use-module ((srfi srfi-1) #:hide (zip)))
+  #:use-module (guix build-system trivial))
 
 ;; see color-make package for great example - also install-file and invoke
 
@@ -85,38 +84,6 @@ for programmers and scientists to use graph theory in their apps, whether it's
 for server-side analysis in a Node.js app or for a rich user interface.")
     (license license:expat)))
 
-(define-public javascript-cytoscape-3.17
-  (package
-    (inherit javascript-cytoscape)
-    (name "javascript-cytoscape")
-    (version "3.17.1")
-    (source
-     (origin
-       (method git-fetch)
-       (uri (git-reference
-              (url "https://github.com/cytoscape/cytoscape.js")
-              (commit (string-append "v" version))))
-       (file-name (git-file-name name version))
-       (sha256
-        (base32
-         "0fp4bv3gq9vj0517h61jvg7bxk8fyrhrq0jr1v4d0lzp164sgxln"))))))
-
-(define-public javascript-cytoscape-2
-  (package
-    (inherit javascript-cytoscape)
-    (name "javascript-cytoscape")
-    (version "2.7.29")
-    (source
-     (origin
-       (method git-fetch)
-       (uri (git-reference
-              (url "https://github.com/cytoscape/cytoscape.js")
-              (commit (string-append "v" version))))
-       (file-name (git-file-name name version))
-       (sha256
-        (base32
-         "00y0h6kdkw2x6lyf9c16fxmg8iagfl77dz8nqb337v3ljifkb4z8"))))))
-
 (define-public javascript-cytoscape-panzoom
   (package
     (name "javascript-cytoscape-panzoom")
@@ -278,37 +245,6 @@ positioned on or around Cytoscape elements.  It is useful for tooltips and
 overlays, for example.")
     (license license:expat)))
 
-(define-public js-cytoscape-svg-vendor-0.3.1
-  (package
-    (name "js-cytoscape-svg-vendor")
-    (version "0.3.1")
-    (source
-      (origin
-        (method url-fetch)
-        (uri (string-append "https://unpkg.com/cytoscape-svg@" version
-                            "/cytoscape-svg.js"))
-        (sha256
-         (base32
-          "0ic0m91a4a4517c6f8nwf649yyq6xma57rxp8cyk4261qhk70494"))))
-    (build-system trivial-build-system)
-    (arguments
-     `(#:modules ((guix build utils))
-       #:builder
-       (begin
-         (use-modules (guix build utils))
-         (let* ((out  (assoc-ref %outputs "out"))
-                (dest (string-append out "//share/javascript")))
-           (mkdir-p dest)
-           (copy-file (assoc-ref %build-inputs "source")
-                      (string-append dest "/cytoscape-svg.js"))
-           #t))))
-    (home-page "https://kinimesi.github.io/cytoscape-svg")
-    (synopsis "Cytoscape.js extension to export the current graph view as an SVG")
-    (description
-     "A Cytoscape.js extension to export the current graph view as an SVG.")
-    (license license:gpl3)
-    (properties `((hidden? . #t)))))
-
 (define-public javascript-qtip2
   (package
     (name "javascript-qtip2")
@@ -373,42 +309,6 @@ Javascript library, adding sorting, paging and filtering abilities to plain HTML
 tables with minimal effort.")
     (license license:expat)))
 
-
-(define-public javascript-datatables-2.2.2
-  (package
-    (name "javascript-datatables-2.2.2")
-    (version "2.2.2")
-    (source
-      (origin
-        (method git-fetch)
-        (uri (git-reference
-               (url "https://github.com/DataTables/Dist-DataTables.git")
-               (commit version)))
-        (file-name (git-file-name name version))
-        (sha256
-         (base32 "1pzpkpybcf9p81j8afyhrmq11l9lskzxhikdv7h7sb55vx98xn9s"))))
-    (build-system trivial-build-system)
-    (arguments
-     `(#:modules ((guix build utils))
-       #:builder
-       (begin
-         (use-modules (guix build utils))
-         (let* ((out (assoc-ref %outputs "out"))
-                (targetdir (string-append out "/share/genenetwork2/javascript/DataTables"))
-                (source (assoc-ref %build-inputs "source")))
-           (copy-recursively source targetdir)))))
-    (propagated-inputs (list javascript-jquery-1))
-    (home-page "https://www.datatables.net/")
-    (synopsis "Tables plug-in for jQuery")
-    (description "DataTables is a table enhancing plug-in for the jQuery
-Javascript library, adding sorting, paging and filtering abilities to plain HTML
-tables with minimal effort.")
-    (license license:expat)))
-
-(define-public javascript-datatables-2.2 javascript-datatables-2.2.2)
-
-(define-public javascript-datatables-2 javascript-datatables-2.2)
-
 (define-public javascript-datatables-bootstrap5
   (package
     (name "javascript-datatables-bootstrap5")
@@ -503,32 +403,6 @@ tables with minimal effort.  This package comes with Bootstrap5 integration
     (description "Scroller is a virtual rendering plug-in for DataTables which allows large datasets to be drawn on screen very quickly. Virtual rendering means is that only the visible portion of the table is drawn, while the scrolling container gives the visual impression that the whole table is visible, allowing excellent browser performance.")
     (license license:expat)))
 
-
-(define-public javascript-datatables-scroller-style-2.4.3
-  (package
-    (inherit javascript-datatables-scroller-style)
-    (name "javascript-datatables-scroller-style-2.4.3")
-    (version "2.4.3")
-    (source
-      (origin
-        (method git-fetch)
-        (uri (git-reference
-              (url "https://github.com/DataTables/Dist-DataTables-Scroller-DataTables.git")
-               (commit version)))
-        (file-name (git-file-name name version))
-        (sha256
-         (base32 "1b7m8xwbr05hglfy00kzv1vmqvvp9y8n1kyb3ka95gf7sllihhf9"))))
-    (propagated-inputs
-     (modify-inputs
-      (package-propagated-inputs javascript-datatables-scroller-style)
-      (delete "javascript-datatables")))))
-
-(define-public javascript-datatables-scroller-style-2.4
-  javascript-datatables-scroller-style-2.4.3)
-
-(define-public javascript-datatables-scroller-style-2
-  javascript-datatables-scroller-style-2.4)
-
 (define-public javascript-datatables-scroller
   (package
     (name "javascript-datatables-scroller")
@@ -560,34 +434,6 @@ tables with minimal effort.  This package comes with Bootstrap5 integration
     (description "Scroller is a virtual rendering plug-in for DataTables which allows large datasets to be drawn on screen very quickly. Virtual rendering means is that only the visible portion of the table is drawn, while the scrolling container gives the visual impression that the whole table is visible, allowing excellent browser performance.")
     (license license:expat)))
 
-
-(define-public javascript-datatables-scroller-2.4.3
-  (package
-    (inherit javascript-datatables-scroller)
-    (name "javascript-datatables-scroller-2.4.3")
-    (version "2.4.3")
-    (source
-      (origin
-        (method git-fetch)
-        (uri (git-reference
-              (url "https://github.com/DataTables/Dist-DataTables-Scroller.git")
-               (commit version)))
-        (file-name (git-file-name name version))
-        (sha256
-         (base32 "0ziwnwc0xbf8rsm6ibikc3a49hyq18l8ya0wmrwyba24pixhajxn"))))
-    (propagated-inputs
-     (modify-inputs
-      (package-propagated-inputs javascript-datatables-scroller-style)
-      (delete "javascript-datatables")
-      (delete "javascript-datatables-scroller-style")))))
-
-(define-public javascript-datatables-scroller-2.4
-  javascript-datatables-scroller-2.4.3)
-
-(define-public javascript-datatables-scroller-2
-  javascript-datatables-scroller-2.4)
-
-
 (define-public javascript-xterm
   (package
     (name "javascript-xterm")
@@ -670,11 +516,11 @@ tables with minimal effort.  This package comes with Bootstrap5 integration
     (description "Style sheets for xtermjs")
     (license license:expat)))
 
-
 (define-public javascript-xterm-addon-fit
   (package
     (inherit javascript-xterm)
     (name "javascript-xterm-addon-fit")
+    (build-system trivial-build-system)
     (version "0.5.0") ; Nov 16 2021
     (source
      (origin
@@ -683,7 +529,7 @@ tables with minimal effort.  This package comes with Bootstrap5 integration
                    "/lib/xterm-addon-fit.min.js"))
        (sha256
         (base32
-         "0x47zj8wknisjjjqz6sasjn94nm803h5br8frypsbwhmdw6v9nak"))))
+         "0sx5cqbyww1n6n408z6hwirr9lifnl1lmdis9n07rg58bx70y6b3"))))
     (arguments
      `(#:modules ((guix build utils))
        #:builder
@@ -729,30 +575,6 @@ tables with minimal effort.  This package comes with Bootstrap5 integration
     (description "The Buttons extension for DataTables provides a common set of options, API methods and styling to display buttons on a page that will interact with a DataTable. It also provides plug-ins for file export (HTML5 and Flash), print view and column visibility. Other libraries, such as Editor and Select also provide buttons specific to their use cases.")
     (license license:expat)))
 
-(define-public javascript-datatables-buttons-3.2.2
-  (package
-    (inherit javascript-datatables-buttons)
-    (name "javascript-datatables-buttons-3.2.2")
-    (version "3.2.2")
-    (source
-      (origin
-        (method git-fetch)
-        (uri (git-reference
-              (url "https://github.com/DataTables/Dist-DataTables-Buttons.git")
-               (commit version)))
-        (file-name (git-file-name name version))
-        (sha256
-         (base32 "1186xxj6yhjqh0p13nczj25pc3c15n1f5nirl6fy649rhp4q26xc"))))
-    (propagated-inputs
-     (modify-inputs (package-propagated-inputs javascript-datatables-buttons)
-       (delete "javascript-datatables")))))
-
-(define-public javascript-datatables-buttons-3.2
-  javascript-datatables-buttons-3.2.2)
-
-(define-public javascript-datatables-buttons-3
-  javascript-datatables-buttons-3.2)
-
 (define-public javascript-datatables-buttons-styles
   (package
     (name "javascript-datatables-buttons-styles")
@@ -1065,52 +887,6 @@ visualization components and a data-driven approach to DOM manipulation.")
                (dist (string-append source "/dist")))
           (copy-recursively dist targetdir)))))))
 
-(define-public javascript-jquery-1.12.4
-  (package
-    (inherit javascript-jquery)
-    (name "javascript-jquery-1.12.4")
-    (version "1.12.4")
-    (source
-     (origin
-       (method git-fetch)
-       (uri (git-reference
-             (url "https://github.com/jquery/jquery.git")
-             (commit version)))
-       (file-name (git-file-name name version))
-       (sha256
-        (base32 "02qgvwsyvvr6liijj1xyypq02svbwjlk8m9yr9dgd4hzfs50rlhq"))))))
-
-(define-public javascript-jquery-1.12 javascript-jquery-1.12.4)
-
-(define-public javascript-jquery-1 javascript-jquery-1.12)
-
-(define-public javascript-d3js-4
-  (package
-    (inherit javascript-d3js)
-    (version "4.13.0")
-    (source
-      (origin
-        (method url-fetch)
-        (uri (string-append "https://github.com/d3/d3/releases/download/v"
-                            version "/d3.zip"))
-        (sha256
-         (base32 "06yqgyvkpvh0lg7rsh4hjzq72fylkd8ziqcf7yhgy510x0mqla19"))))
-    (arguments
-     `(#:modules ((guix build utils))
-       #:builder
-       (begin
-         (use-modules (guix build utils))
-         (let* ((out (assoc-ref %outputs "out"))
-                (name "d3js")
-                (unzip (string-append (assoc-ref %build-inputs "unzip")
-                                      "/bin/unzip"))
-                (targetdir (string-append out "/share/genenetwork/javascript/" name))
-                (source (assoc-ref %build-inputs "source")))
-           (invoke unzip source)
-           (install-file "d3.js" targetdir)
-           (install-file "d3.min.js" targetdir)
-           (install-file "LICENSE" (string-append out "/share/doc/d3js-" ,version))))))))
-
 (define-public javascript-d3js-7
   (package
     (name "javascript-d3js-7")
@@ -1257,31 +1033,6 @@ not natively support it.")
 client-side, and is perfect for web apps that generates files on the client.")
     (license license:expat)))
 
-(define-public js-filesaver-1.3.2
-  (package
-    (inherit js-filesaver)
-    (name "js-filesaver")
-    (version "1.3.2")
-    (source (origin
-              (method git-fetch)
-              (uri (git-reference
-                     (url "https://github.com/eligrey/FileSaver.js")
-                     (commit version)))
-              (file-name (git-file-name name version))
-              (sha256
-               (base32
-                "02f34yr56i5fyppna52bhn6i9wj0zhvj4vp9vkg9v74yls1hdczz"))))
-    (arguments
-     `(#:javascript-files '("FileSaver.js")
-       #:phases
-       (modify-phases %standard-phases
-         (add-after 'install 'install-unminified-version
-           (lambda* (#:key outputs #:allow-other-keys)
-             (install-file "FileSaver.js"
-                           (string-append (assoc-ref outputs "out")
-                                          "/share/javascript"))
-             #t)))))))
-
 (define-public javascript-underscore
   (package
     (name "javascript-underscore")
@@ -1612,52 +1363,7 @@ a sample function, allowing for more complex calculations.")
     (arguments `(#:javascript-files '("dist/jstat.js")))
     (build-system minify-build-system)))
 
-(define-public javascript-ckeditor	; version 4
-  (package
-    (name "javascript-ckeditor")
-    (version "4.13.0")			; Sept. 26, 2019
-    (source
-     (origin
-       (method url-fetch)
-       (uri (string-append "http://download.cksource.com/CKEditor/CKEditor/CKEditor%20" version
-			   "/ckeditor_4.13.0_standard.zip"))
-       (sha256
-	(base32
-	 "1n2xynmbr2v4wm2g2vqcqd16n93phsbq4sqrnljzb7wzjq9svl36"))))
-    (build-system trivial-build-system)
-    (arguments
-     `(#:modules ((guix build utils))
-       #:builder
-       (begin
-	 (use-modules (guix build utils))
-	 (let* ((out (assoc-ref %outputs "out"))
-		(name "ckeditor")
-		(unzip (string-append (assoc-ref %build-inputs "unzip")
-				      "/bin/unzip"))
-		(targetdir
-		 (string-append (string-append out "/share/genenetwork2/javascript/" name)))
-		(source (assoc-ref %build-inputs "source")))
-	   (mkdir-p targetdir)
-	   (invoke unzip source)
-	   (copy-recursively "ckeditor" targetdir)))))
-    (native-inputs
-     `(("source" ,source)
-       ("unzip" ,unzip)))
-    (home-page "https://ckeditor.com/")
-    (synopsis "Smart WYSIWYG HTML editor")
-    (description
-     "CKEditor is a proven, enterprise-grade WYSIWYG HTML editor with wide
-browser compatibility, including legacy browsers.
-@enumerate
-@item Paste from Word and Excel, spell check, accessibility checker, tables.
-@item Autocomplete, mentions, widgets, code snippets, emoji plugins.
-@item Full control over content: HTML filtering, view source mode.
-@item Great accessibility: WCAG 2.0 AA and Section 508 compliant.
-@item Long-term support (LTS) until 2023.
-@end enumerate")
-    (license (list license:gpl2+
-		   license:lgpl2.1+
-		   license:mpl1.1)))) ; Any of these three
+ ; Any of these three
 
 (define-public javascript-parsley
   (package
@@ -1966,7 +1672,7 @@ experience.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/BonfaceKilz/Dist-Purestript-Genome-Browser")
+             (url "https://github.com/genenetwork/purescript-genetics-browser")
              (commit "93d45a55ca5053bb87b6d4627ae5c7d973c046ea")))
        (file-name (git-file-name name version))
        (sha256
@@ -1983,7 +1689,7 @@ experience.")
                 (source (assoc-ref %build-inputs "source")))
            (copy-recursively source targetdir)))))
     (native-inputs `(("source" ,source)))
-    (home-page "https://github.com/chfi/purescript-genetics-browser")
+    (home-page "https://github.com/genenetwork/purescript-genetics-browser")
     (synopsis "Dist files for the purescript genetics browser")
     (description
      "Dist files for the purescript genetics browser")
@@ -2023,61 +1729,6 @@ experience.")
 widgets, and themes built on top of the jQuery JavaScript Library.")
     (license license:expat)))
 
-(define-public js-jquery-ui
-  (package
-    (inherit javascript-jquery-ui)
-    (name "js-jquery-ui")
-    (arguments `(#:javascript-files '("ui/jquery-ui.js")))
-    (build-system minify-build-system)))
-
-(define-public js-popper
-  (package
-    (name "js-popper")
-    (version "2.0.6")
-    (source
-     (origin
-       (method git-fetch)
-       (uri (git-reference
-              (url "https://github.com/popperjs/popper-core")
-              (commit (string-append "v" version))))
-       (file-name (git-file-name name version))
-       (sha256
-        (base32
-         "0lzy981p9nja2l3xa2zvals6q31v3bzpxxa85yn9pm7wkj3vglf2"))))
-    (build-system minify-build-system)
-    (arguments
-     `(#:javascript-files '("src/popper.js")))
-    (home-page "https://popper.js.org/")
-    (synopsis "Tooltip and popover positioning engine")
-    (description
-     "Given an element, such as a button, and a tooltip element describing it,
-Popper will automatically put the tooltip in the right place near the button.")
-    (license license:expat)))
-
-(define-public js-popper-1.12.9
-  (package
-    (name "js-popper")
-    (version "1.12.9")
-    (source
-     (origin
-       (method git-fetch)
-       (uri (git-reference
-              (url "https://github.com/popperjs/popper-core")
-              (commit (string-append "v" version))))
-       (file-name (git-file-name name version))
-       (sha256
-        (base32
-         "0j7gfb7agvvzxv09vq8yr5h04pls5a8md2qw62qyn20112p0hdzs"))))
-    (build-system minify-build-system)
-    (arguments
-     `(#:javascript-files '("dist/umd/popper.js")))
-    (home-page "https://popper.js.org/")
-    (synopsis "Tooltip and popover positioning engine")
-    (description
-     "Given an element, such as a button, and a tooltip element describing it,
-Popper will automatically put the tooltip in the right place near the button.")
-    (license license:expat)))
-
 (define-public javascript-zxcvbn
   (package
    (name "javascript-zxcvbn")
@@ -2141,7 +1792,6 @@ Popper will automatically put the tooltip in the right place near the button.")
    (description "A simple, lightweight jQuery plugin for reading, writing and deleting cookies. No longer maintained, superseded by JS Cookie: https://github.com/js-cookie/js-cookie")
    (license license:expat)))
 
-
 ;; See https://debbugs.gnu.org/cgi/bugreport.cgi?bug=32916 on why font-awesome
 ;; cannot be upstreamed
 (define-public javascript-font-awesome
@@ -2178,7 +1828,6 @@ Popper will automatically put the tooltip in the right place near the button.")
 vector graphics.")
     (license license:silofl1.1)))
 
-
 (define-public javascript-htmx
   (package
     (name "javascript-htmx")
@@ -2243,7 +1892,6 @@ vector graphics.")
     "A low-level markdown compiler for parsing markdown without caching or blocking for long periods of time.")
    (license license:expat)))
 
-
 (define-public javascript-marked-highlight
   (package
     (name "javascript-marked-highlight")
@@ -2290,7 +1938,6 @@ vector graphics.")
 syntax highlighting support for fenced code blocks.")
     (license license:expat)))
 
-
 (define-public javascript-ace
   (package
     (name "javascript-ace")
@@ -2554,3 +2201,302 @@ for developing fast and powerful web interfaces.")
                      (copy-file source
                                 (string-append targetdir "/default.min.css"))))))
     (native-inputs `(("source" ,source)))))
+
+(define-public javascript-ckeditor	; version 4
+  (package
+    (name "javascript-ckeditor")
+    (version "4.13.0")			; Sept. 26, 2019
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "http://download.cksource.com/CKEditor/CKEditor/CKEditor%20" version
+			   "/ckeditor_4.13.0_standard.zip"))
+       (sha256
+	(base32
+	 "1n2xynmbr2v4wm2g2vqcqd16n93phsbq4sqrnljzb7wzjq9svl36"))))
+    (build-system trivial-build-system)
+    (arguments
+     `(#:modules ((guix build utils))
+       #:builder
+       (begin
+	 (use-modules (guix build utils))
+	 (let* ((out (assoc-ref %outputs "out"))
+		(name "ckeditor")
+		(unzip (string-append (assoc-ref %build-inputs "unzip")
+				      "/bin/unzip"))
+		(targetdir
+		 (string-append (string-append out "/share/genenetwork2/javascript/" name)))
+		(source (assoc-ref %build-inputs "source")))
+	   (mkdir-p targetdir)
+	   (invoke unzip source)
+	   (copy-recursively "ckeditor" targetdir)))))
+    (native-inputs
+     `(("source" ,source)
+       ("unzip" ,unzip)))
+    (home-page "https://ckeditor.com/")
+    (synopsis "Smart WYSIWYG HTML editor")
+    (description
+     "CKEditor is a proven, enterprise-grade WYSIWYG HTML editor with wide
+browser compatibility, including legacy browsers.
+@enumerate
+@item Paste from Word and Excel, spell check, accessibility checker, tables.
+@item Autocomplete, mentions, widgets, code snippets, emoji plugins.
+@item Full control over content: HTML filtering, view source mode.
+@item Great accessibility: WCAG 2.0 AA and Section 508 compliant.
+@item Long-term support (LTS) until 2023.
+@end enumerate")
+    (license (list license:gpl2+
+		   license:lgpl2.1+
+		   license:mpl1.1))))
+
+(define-public javascript-cytoscape-3.17
+  (package
+    (inherit javascript-cytoscape)
+    (name "javascript-cytoscape")
+    (version "3.17.1")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+              (url "https://github.com/cytoscape/cytoscape.js")
+              (commit (string-append "v" version))))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32
+         "0fp4bv3gq9vj0517h61jvg7bxk8fyrhrq0jr1v4d0lzp164sgxln"))))))
+
+(define-public js-cytoscape-svg-vendor-0.3.1
+  (package
+    (name "js-cytoscape-svg-vendor")
+    (version "0.3.1")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (string-append "https://unpkg.com/cytoscape-svg@" version
+                            "/cytoscape-svg.js"))
+        (sha256
+         (base32
+          "0ic0m91a4a4517c6f8nwf649yyq6xma57rxp8cyk4261qhk70494"))))
+    (build-system trivial-build-system)
+    (arguments
+     `(#:modules ((guix build utils))
+       #:builder
+       (begin
+         (use-modules (guix build utils))
+         (let* ((out  (assoc-ref %outputs "out"))
+                (dest (string-append out "//share/javascript")))
+           (mkdir-p dest)
+           (copy-file (assoc-ref %build-inputs "source")
+                      (string-append dest "/cytoscape-svg.js"))
+           #t))))
+    (home-page "https://kinimesi.github.io/cytoscape-svg")
+    (synopsis "Cytoscape.js extension to export the current graph view as an SVG")
+    (description
+     "A Cytoscape.js extension to export the current graph view as an SVG.")
+    (license license:gpl3)
+    (properties `((hidden? . #t)))))
+
+(define-public javascript-datatables-scroller-style-2.4.3
+  (package
+    (inherit javascript-datatables-scroller-style)
+    (name "javascript-datatables-scroller-style-2.4.3")
+    (version "2.4.3")
+    (source
+      (origin
+        (method git-fetch)
+        (uri (git-reference
+              (url "https://github.com/DataTables/Dist-DataTables-Scroller-DataTables.git")
+               (commit version)))
+        (file-name (git-file-name name version))
+        (sha256
+         (base32 "1b7m8xwbr05hglfy00kzv1vmqvvp9y8n1kyb3ka95gf7sllihhf9"))))
+    (propagated-inputs
+     (modify-inputs
+      (package-propagated-inputs javascript-datatables-scroller-style)
+      (delete "javascript-datatables")))))
+
+(define-public javascript-datatables-scroller-style-2.4
+  javascript-datatables-scroller-style-2.4.3)
+
+(define-public javascript-datatables-scroller-style-2
+  javascript-datatables-scroller-style-2.4)
+
+(define-public javascript-datatables-scroller-2.4.3
+  (package
+    (inherit javascript-datatables-scroller)
+    (name "javascript-datatables-scroller-2.4.3")
+    (version "2.4.3")
+    (source
+      (origin
+        (method git-fetch)
+        (uri (git-reference
+              (url "https://github.com/DataTables/Dist-DataTables-Scroller.git")
+               (commit version)))
+        (file-name (git-file-name name version))
+        (sha256
+         (base32 "0ziwnwc0xbf8rsm6ibikc3a49hyq18l8ya0wmrwyba24pixhajxn"))))
+    (propagated-inputs
+     (modify-inputs
+      (package-propagated-inputs javascript-datatables-scroller-style)
+      (delete "javascript-datatables")
+      (delete "javascript-datatables-scroller-style")))))
+
+(define-public javascript-datatables-scroller-2.4
+  javascript-datatables-scroller-2.4.3)
+
+(define-public javascript-datatables-scroller-2
+  javascript-datatables-scroller-2.4)
+
+(define-public javascript-datatables-buttons-3.2.2
+  (package
+    (inherit javascript-datatables-buttons)
+    (name "javascript-datatables-buttons-3.2.2")
+    (version "3.2.2")
+    (source
+      (origin
+        (method git-fetch)
+        (uri (git-reference
+              (url "https://github.com/DataTables/Dist-DataTables-Buttons.git")
+               (commit version)))
+        (file-name (git-file-name name version))
+        (sha256
+         (base32 "1186xxj6yhjqh0p13nczj25pc3c15n1f5nirl6fy649rhp4q26xc"))))
+    (propagated-inputs
+     (modify-inputs (package-propagated-inputs javascript-datatables-buttons)
+       (delete "javascript-datatables")))))
+
+(define-public javascript-datatables-buttons-3.2
+  javascript-datatables-buttons-3.2.2)
+
+(define-public javascript-datatables-buttons-3
+  javascript-datatables-buttons-3.2)
+
+(define-public javascript-jquery-1.12.4
+  (package
+    (inherit javascript-jquery)
+    (name "javascript-jquery-1.12.4")
+    (version "1.12.4")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/jquery/jquery.git")
+             (commit version)))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32 "02qgvwsyvvr6liijj1xyypq02svbwjlk8m9yr9dgd4hzfs50rlhq"))))))
+
+(define-public javascript-jquery-1.12 javascript-jquery-1.12.4)
+
+(define-public javascript-jquery-1 javascript-jquery-1.12)
+
+(define-public javascript-d3js-4
+  (package
+    (inherit javascript-d3js)
+    (version "4.13.0")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (string-append "https://github.com/d3/d3/releases/download/v"
+                            version "/d3.zip"))
+        (sha256
+         (base32 "06yqgyvkpvh0lg7rsh4hjzq72fylkd8ziqcf7yhgy510x0mqla19"))))
+    (arguments
+     `(#:modules ((guix build utils))
+       #:builder
+       (begin
+         (use-modules (guix build utils))
+         (let* ((out (assoc-ref %outputs "out"))
+                (name "d3js")
+                (unzip (string-append (assoc-ref %build-inputs "unzip")
+                                      "/bin/unzip"))
+                (targetdir (string-append out "/share/genenetwork/javascript/" name))
+                (source (assoc-ref %build-inputs "source")))
+           (invoke unzip source)
+           (install-file "d3.js" targetdir)
+           (install-file "d3.min.js" targetdir)
+           (install-file "LICENSE" (string-append out "/share/doc/d3js-" ,version))))))))
+
+(define-public js-filesaver-1.3.2
+  (package
+    (inherit js-filesaver)
+    (name "js-filesaver")
+    (version "1.3.2")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                     (url "https://github.com/eligrey/FileSaver.js")
+                     (commit version)))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32
+                "02f34yr56i5fyppna52bhn6i9wj0zhvj4vp9vkg9v74yls1hdczz"))))
+    (arguments
+     `(#:javascript-files '("FileSaver.js")
+       #:phases
+       (modify-phases %standard-phases
+         (add-after 'install 'install-unminified-version
+           (lambda* (#:key outputs #:allow-other-keys)
+             (install-file "FileSaver.js"
+                           (string-append (assoc-ref outputs "out")
+                                          "/share/javascript"))
+             #t)))))))
+
+(define-public js-popper-1.12.9
+  (package
+    (name "js-popper")
+    (version "1.12.9")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+              (url "https://github.com/popperjs/popper-core")
+              (commit (string-append "v" version))))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32
+         "0j7gfb7agvvzxv09vq8yr5h04pls5a8md2qw62qyn20112p0hdzs"))))
+    (build-system minify-build-system)
+    (arguments
+     `(#:javascript-files '("dist/umd/popper.js")))
+    (home-page "https://popper.js.org/")
+    (synopsis "Tooltip and popover positioning engine")
+    (description
+     "Given an element, such as a button, and a tooltip element describing it,
+Popper will automatically put the tooltip in the right place near the button.")
+    (license license:expat)))
+
+(define-public javascript-datatables-2.2.2
+  (package
+    (name "javascript-datatables-2.2.2")
+    (version "2.2.2")
+    (source
+      (origin
+        (method git-fetch)
+        (uri (git-reference
+               (url "https://github.com/DataTables/Dist-DataTables.git")
+               (commit version)))
+        (file-name (git-file-name name version))
+        (sha256
+         (base32 "1pzpkpybcf9p81j8afyhrmq11l9lskzxhikdv7h7sb55vx98xn9s"))))
+    (build-system trivial-build-system)
+    (arguments
+     `(#:modules ((guix build utils))
+       #:builder
+       (begin
+         (use-modules (guix build utils))
+         (let* ((out (assoc-ref %outputs "out"))
+                (targetdir (string-append out "/share/genenetwork2/javascript/DataTables"))
+                (source (assoc-ref %build-inputs "source")))
+           (copy-recursively source targetdir)))))
+    (propagated-inputs (list javascript-jquery-1))
+    (home-page "https://www.datatables.net/")
+    (synopsis "Tables plug-in for jQuery")
+    (description "DataTables is a table enhancing plug-in for the jQuery
+Javascript library, adding sorting, paging and filtering abilities to plain HTML
+tables with minimal effort.")
+    (license license:expat)))
+
+(define-public javascript-datatables-2.2 javascript-datatables-2.2.2)
+
+(define-public javascript-datatables-2 javascript-datatables-2.2)
diff --git a/gn/packages/julia.scm b/gn/packages/julia.scm
index 0557dfc..0d79a0c 100644
--- a/gn/packages/julia.scm
+++ b/gn/packages/julia.scm
@@ -5,21 +5,12 @@
   #:use-module (guix packages)
   #:use-module (guix download)
   #:use-module (guix git-download)
-  #:use-module (guix build-system gnu)
   #:use-module (guix build-system julia)
-  #:use-module (guix build-system trivial)
   #:use-module (gnu packages)
-  #:use-module (gn packages cran)
-  #:use-module (gnu packages bioinformatics)
   #:use-module (gnu packages compression)
-  #:use-module (gnu packages cran)
   #:use-module (gnu packages julia-jll)
   #:use-module (gnu packages julia-xyz)
-  #:use-module (gnu packages python)
-  #:use-module (gnu packages statistics)
-  #:use-module (gnu packages version-control)
-  #:use-module (gnu packages video)
-  #:use-module (ice-9 match))
+  #:use-module (gnu packages version-control))
 
 (define S specification->package)
 
@@ -164,50 +155,6 @@
       (description "Visualizations using Pluto.jl notebooks.")
       (license #f))))
 
-(define-public julia-liteqtl
-  (let ((commit "696218524a57a4ab5a933e516850c010915650d5")
-        (revision "1"))
-    (package
-      (name "julia-liteqtl")
-      ;(version (git-version "0.2.1" revision commit))
-      (version "0.2.1")
-      (source (origin
-                (method git-fetch)
-                (uri (git-reference
-                       (url "https://github.com/senresearch/LiteQTL.jl")
-                       ;(commit commit)))
-                       (commit (string-append "v" version))))
-                (file-name (git-file-name name version))
-                (sha256
-                 (base32 "0hincjnr56wpcgnd9r1m939gng8ac46zw1fv99ij920w3dpxwhq3"))))
-      (build-system julia-build-system)
-      (propagated-inputs
-       `(;("julia-csv" ,julia-csv)
-         ;("julia-cuda" ,julia-cuda)
-         ("julia-dataframes" ,julia-dataframes)
-         ("julia-distributions" ,julia-distributions)
-         ("julia-docstringextensions" ,julia-docstringextensions)))
-      (native-inputs
-       `(("julia-documenter" ,julia-documenter)
-         ("julia-safetestsets" ,julia-safetestsets)
-         ;("r" ,r-minimal)
-         ;("r-data-table" ,r-data-table)
-         ;("r-parallel" ,r-parallel)    ; what is this package called?
-         ;("r-qtl" ,r-qtl)
-         ;("r-qtl2" ,r-qtl2)
-         ;("r-tidyverse" ,r-tidyverse)
-         ))
-      (home-page "https://github.com/senresearch/LiteQTL.jl")
-      (synopsis "Julia package for eQTL genome scans near real-time")
-      (description "LiteQTL is a package that runs whole genome QTL scans near
-real-time, utilizing the computation power of GPU.  LiteQTL uses new algorithms
-that enables near-real time whole genome QTL scans for up to 1 million traits.
-By using easily parallelizable operations including matrix multiplication,
-vectorized operations, and element-wise operations, our method is about 300
-times faster than a R/qtl linear model genome scan using 16 threads.")
-      (license license:expat))))
-
-;; contains bundled libraries?
 (define-public julia-packagecompiler
   (package
     (name "julia-packagecompiler")
@@ -237,102 +184,6 @@ can be sent and run on other machines without Julia being installed on that mach
 @end itemize")
     (license license:expat)))
 
-(define-public julia-flxqtl
-  (package
-    (name "julia-flxqtl")
-    (version "0.3.0")
-    (source
-      (origin
-        (method git-fetch)
-        (uri (git-reference
-               (url "https://github.com/senresearch/FlxQTL.jl")
-               (commit (string-append "v" version))))
-        (file-name (git-file-name name version))
-        (sha256
-         (base32 "06mzbiv8bp0hgkz2i67ax63xcs5wkbyw80cz3s9snwd1426v2r41"))))
-    (build-system julia-build-system)
-    (arguments
-     `(#:tests? #f
-       ))
-    (propagated-inputs
-     `(
-       ("julia-distributions" ,julia-distributions)
-       ;("julia-lossfunctions" ,julia-lossfunctions)
-       ("julia-pyplot" ,julia-pyplot)
-       ;("julia-revise" ,julia-revise)
-       ("julia-staticarrays" ,julia-staticarrays)
-       ("julia-statsbase" ,julia-statsbase)
-       ))
-    (home-page "https://github.com/senresearch/FlxQTL.jl")
-    (synopsis "QTL analysis tool by multivariate mixed linear model")
-    (description "FlxQTL.jl is a a package for a multivariate linear mixed model
-based QTL analysis tool that supports incorporating information from trait
-covariates such as time or different environments.  The package supports
-computation of one-dimensional and two-dimensional multivariate genome scans,
-visualization of genome scans, support for @acronym{LOCO,
-leave-one-chromosome-out}, computation of kinship matrices, and support for
-distributed computing.")
-    (license license:gpl3)))
-
-(define-public julia-conda
-  (package
-    (name "julia-conda")
-    (version "1.5.2")
-    (source
-      (origin
-        (method git-fetch)
-        (uri (git-reference
-               (url "https://github.com/JuliaPy/Conda.jl")
-               (commit (string-append "v" version))))
-        (file-name (git-file-name name version))
-        (sha256
-         (base32
-          "01qxrv3xv7b979j760iyn28w3hlls29b2parjginwi81jbzr1vgd"))))
-    (build-system julia-build-system)
-    (arguments
-     `(#:tests? #f  ; Tests involve downloading Conda packages.
-       #:phases
-       (modify-phases %standard-phases
-         ;(delete 'precompile)
-         (add-after 'link-depot 'hardcode-conda-path
-           (lambda* (#:key inputs #:allow-other-keys)
-             (substitute* "src/Conda.jl"
-               (("bin_dir\\(ROOTENV\\), \"conda\"") (string-append "\"" (assoc-ref inputs "conda") "/bin/\", \"conda\"")))))
-         (add-before 'check 'pre-check
-           (lambda* (#:key inputs #:allow-other-keys)
-             ;(setenv "CONDA_JL_HOME" (string-append (assoc-ref inputs "conda") ))
-             ;(setenv "CONDA_JL_VERSION" "3")
-             ;(setenv "CONDA_JL_USE_MINIFORGE" "false")
-             ;(display (getcwd))
-             ;(setenv "HOME" (getcwd))
-             ;(invoke "conda" "create" "--offline" "--use-local" "-n" "conda_jl" "python" "conda")
-             ;(invoke "ls")
-             ;(invoke "pwd")
-             ;(with-output-to-file "deps/deps.jl"
-             ;  (lambda () #t))
-             ;(invoke "touch" "deps/deps.jl")
-             ;(invoke "julia" "-e" "using Pkg; Pkg.add(\"Conda\")")
-             ;(invoke "julia" "-e" "using Pkg; Pkg.build(\"Conda\")")
-             ;; From .travis.yml
-             ;(setenv "CONDA_JL_VERSION" "3")
-             ;(setenv "CONDA_JL_USE_MINIFORGE" "false")
-             #t)))
-       ))
-    (native-inputs
-     `(
-       ("conda" ,(S "conda"))
-       ;("python" ,(S "python-wrapper"))
-       ))
-    (propagated-inputs
-     `(
-       ("julia-json" ,julia-json)
-       ("julia-versionparsing" ,julia-versionparsing)
-       ))
-    (home-page "https://github.com/JuliaPy/Conda.jl")
-    (synopsis "Conda managing Julia binary dependencies")
-    (description "This package allows one to use @code{conda} as a cross-platform binary provider for Julia for other Julia packages, especially to install binaries that have complicated dependencies like Python.")
-    (license license:expat)))
-
 (define-public julia-distributions
   (package
     (name "julia-distributions")
@@ -571,29 +422,6 @@ zeros, of scalar functions of a single real variable using floating-point
 math.")
     (license license:expat)))
 
-(define-public julia-commonsolve
-  (package
-    (name "julia-commonsolve")
-    (version "0.2.4")
-    (source
-      (origin
-        (method git-fetch)
-        (uri (git-reference
-               (url "https://github.com/SciML/CommonSolve.jl")
-               (commit (string-append "v" version))))
-        (file-name (git-file-name name version))
-        (sha256
-         (base32 "1w05fp02g5cmqzqp96hcpriwjpqx61sl481rj92gf4y4xpinmdf5"))))
-    (build-system julia-build-system)
-    (home-page "https://docs.sciml.ai/CommonSolve/stable")
-    (synopsis "Common solve function for scientific machine learning")
-    (description "This holds the common @code{solve}, @code{init},
-@code{step!}, and @code{solve!} commands.  By using the same definition, solver
-libraries from other completely different ecosystems can extend the functions
-and thus not clash with SciML if both ecosystems export the @code{solve}
-command.  The rules are that you must dispatch on one of your own types.")
-    (license license:expat)))
-
 (define-public julia-setfield
   (package
     (name "julia-setfield")
@@ -619,26 +447,6 @@ command.  The rules are that you must dispatch on one of your own types.")
     (description "Update deeply nested immutable structs.")
     (license license:expat)))
 
-(define-public julia-staticarrayscore
-  (package
-    (name "julia-staticarrayscore")
-    (version "1.4.2")
-    (source
-      (origin
-        (method git-fetch)
-        (uri (git-reference
-               (url "https://github.com/JuliaArrays/StaticArraysCore.jl")
-               (commit (string-append "v" version))))
-        (file-name (git-file-name name version))
-        (sha256
-         (base32 "0m573mxvf0y9h7y8rxrk35haphhqisplx159r77g30qvw7zwpgar"))))
-    (build-system julia-build-system)
-    (home-page "https://github.com/JuliaArrays/StaticArraysCore.jl")
-    (synopsis "Interface package for StaticArrays.jl")
-    (description
-     "This package provides an interface package for @code{StaticArrays.jl}.")
-    (license license:expat)))
-
 (define-public julia-progresslogging
   (package
     (name "julia-progresslogging")
@@ -712,93 +520,6 @@ sibling.")
 densities and objects associated with a density in Julia.")
     (license license:expat)))
 
-(define-public julia-plots
-  (package
-    (name "julia-plots")
-    (version "1.35.6")
-    (source
-      (origin
-        (method git-fetch)
-        (uri (git-reference
-               (url "https://github.com/JuliaPlots/Plots.jl")
-               (commit (string-append "v" version))))
-        (file-name (git-file-name name version))
-        (sha256
-         (base32 "005za8a8al822xr0cz4yi1rm23qj1lzy9iw93vvhwq76x3n8bfpy"))))
-    (build-system julia-build-system)
-    (arguments
-     `(#:tests? #f  ; for now
-       #:phases
-       (modify-phases %standard-phases
-         (add-after 'unpack 'adjust-tests
-           (lambda _
-             ;; Decrease the number of tests we're running.
-             (substitute* "test/runtests.jl"
-               ((".*VisualRegressionTests.*") "")
-               ((".*pgfplotsx.*") "")
-               ((".*plotlyjs.*") "")
-               ))))
-       ))
-    (propagated-inputs
-     (list julia-contour
-           julia-ffmpeg
-           julia-fixedpointnumbers
-           julia-gr
-           julia-geometrybasics
-           julia-jlfzf
-           julia-json
-           ;julia-latexify
-           julia-measures
-           julia-nanmath
-           julia-plotthemes
-           julia-plotutils
-           julia-recipesbase
-           julia-recipespipeline
-           julia-reexport
-           julia-relocatablefolders
-           julia-requires
-           julia-scratch
-           julia-showoff
-           julia-snoopprecompile
-           julia-statsbase
-           julia-unicodefun
-           julia-unzip))
-    (native-inputs
-     (list julia-aqua
-           julia-colors
-           ;julia-conda
-           julia-distributions
-           julia-fileio
-           julia-filepathsbase
-           ;julia-gaston
-           julia-geometrybasics
-           ;julia-gtk
-           ;julia-hdf5
-           julia-imagemagick
-           ;julia-images
-           ;julia-inspectdr
-           julia-offsetarrays
-           ;julia-pgfplotsx
-           ;julia-plotlybase
-           ;julia-plotlyjs
-           ;julia-plotlykaleido
-           julia-pycall
-           julia-pyplot
-           ;julia-rdatasets
-           julia-sentinelarrays
-           julia-stablerngs
-           julia-staticarrays
-           ;julia-statsplots
-           julia-testimages
-           julia-unicodeplots
-           julia-unitful
-           ;julia-visualregressiontests
-           ))
-    (home-page "http://docs.juliaplots.org/")
-    (synopsis "Powerful convenience for Julia visualizations and data analysis")
-    (description "Plots is a plotting API and toolset.")
-    (license license:expat)))
-
 (define-public julia-contour
   (package
     (name "julia-contour")
@@ -826,75 +547,6 @@ densities and objects associated with a density in Julia.")
 algorithm for tracing contour curves on a scalar 2D field.")
     (license license:expat)))
 
-(define-public julia-unicodeplots
-  (package
-    (name "julia-unicodeplots")
-    (version "2.12.4")
-    (source
-      (origin
-        (method git-fetch)
-        (uri (git-reference
-               (url "https://github.com/JuliaPlots/UnicodePlots.jl")
-               (commit (string-append "v" version))))
-        (file-name (git-file-name name version))
-        (sha256
-         (base32 "0plkczznx1297m1lviczkm4873yl29anr5csgyhh9vnvyf1606y2"))))
-    (build-system julia-build-system)
-    (arguments
-     (list
-       #:phases
-       #~(modify-phases %standard-phases
-           (add-after 'unpack 'adjust-tests
-             (lambda _
-               ;; It is unclear why these tests fail and why some
-               ;; have a suprise dependency on AstroIO (from FileIO)
-               (substitute* "test/runtests.jl"
-                 ((".*tst_world_age.*") "")
-                 ((".*tst_io.*") "")
-                 ((".*tst_densityplot.*") ""))
-               (substitute* "test/tst_canvas.jl"
-                 ((".*HeatmapCanvas, \"heatmap\".*") ""))
-               (substitute* "test/tst_histogram.jl"
-                 (("testset.*keyword.*" all)
-                  (string-append all " return;\n"))
-                 (("testset.*vertical\".*" all)
-                  (string-append all " return;\n")))
-               (substitute* "test/tst_barplot.jl"
-                 (("testset.*maximum.*" all)
-                  (string-append all " return;\n")))
-               (substitute* "test/tst_spy.jl"
-                 (("testset.*parameters.*" all)
-                  (string-append all " return;\n")))
-               (substitute* "test/tst_boxplot.jl"
-                 (("testset.*default.*" all)
-                  (string-append all " return;\n"))
-                 (("testset.*scaling.*" all)
-                  (string-append all " return;\n")))
-               (substitute* "test/tst_volume.jl"
-                 (("testset.*cube.*" all)
-                  (string-append all " return;\n"))))))))
-    (propagated-inputs
-     (list julia-colortypes
-           julia-contour
-           julia-crayons
-           julia-fileio
-           julia-freetypeabstraction
-           julia-lazymodules
-           julia-marchingcubes
-           julia-nanmath
-           julia-staticarrays
-           julia-statsbase
-           julia-unitful))
-    (native-inputs
-     (list julia-colortypes
-           julia-imagemagick
-           julia-referencetests
-           julia-stablerngs))
-    (home-page "https://github.com/JuliaPlots/UnicodePlots.jl")
-    (synopsis "Unicode-based scientific plotting for working in the terminal")
-    (description "Advanced Unicode plotting library designed for use in Julia's REPL.")
-    (license license:expat)))
-
 (define-public julia-lazymodules
   (package
     (name "julia-lazymodules")
@@ -995,6 +647,7 @@ precompile code needed by your package, particularly on Julia 1.8 and higher.")
     (build-system julia-build-system)
     (arguments
      (list
+       #:tests? #f
        #:phases
        #~(modify-phases %standard-phases
            (add-after 'unpack 'adjust-test-suite
@@ -1410,214 +1063,7 @@ dependencies between them and takes care of execution.")
 native to Julia.  Use it with the @code{@@bind} macro in Pluto.")
     (license license:unlicense)))
 
-(define-public julia-http-1.5
-  (package
-    (inherit julia-http)
-    (name "julia-http")
-    (version "1.5.5")
-    (source
-     (origin
-       (method git-fetch)
-       (uri (git-reference
-             (url "https://github.com/JuliaWeb/HTTP.jl")
-             (commit (string-append "v" version))))
-       (file-name (git-file-name name version))
-       (sha256
-        (base32 "0qcfixsq65g8hdimygam7cd8nvcz6w7nzkkjk98mvf65dcby4593"))))
-    (arguments
-     (list
-      #:phases
-      #~(modify-phases %standard-phases
-          (add-before 'install 'disable-network-tests
-            (lambda _
-              #;(substitute* "test/runtests.jl"
-                (("\"async.jl") "# \"async.jl")
-                (("\"client.jl") "# \"client.jl"))
-              #;(substitute* "test/aws4.jl"
-                (("@testset.*HTTP.request with AWS authentication.*" all)
-                 (string-append all "return\n")))
-              #;(substitute* "test/insert_layers.jl"
-                (("@testset.*Inserted final layer runs handler.*" all)
-                 (string-append all "return\n")))
-              #;(substitute* "test/multipart.jl"
-                (("@testset \"Setting of Content-Type.*" all)
-                 (string-append all "return\n"))
-                (("@testset \"Deprecation of .*" all)
-                 (string-append all "return\n")))
-              #;(substitute* "test/websockets.jl"
-                (("@testset.*External Host.*" all)
-                 (string-append all "return\n")))
-              #;(substitute* "test/messages.jl"
-                (("@testset.*Read methods.*" all)
-                 (string-append all "return\n"))
-                (("@testset.*Body - .*" all)
-                 (string-append all "return\n"))
-                (("@testset.*Write to file.*" all)
-                 (string-append all "return\n")))
-              #;(substitute* "test/cookies.jl"
-                (("@testset.*Set-Cookie casing.*" all)
-                 (string-append all "return\n")))
-#t)))))
-    (propagated-inputs
-     (list julia-codeczlib
-           julia-inifile
-           julia-loggingextras
-           julia-mbedtls
-           julia-openssl
-           julia-simplebufferstream
-           julia-uris))
-    ;; required for tests
-    (native-inputs
-     (list julia-bufferedstreams
-           julia-json))))
-
-(define-public julia-http-1.0
-  (package
-    (inherit julia-http)
-    (name "julia-http")
-    (version "1.0.5")
-    (source
-     (origin
-       (method git-fetch)
-       (uri (git-reference
-             (url "https://github.com/JuliaWeb/HTTP.jl")
-             (commit (string-append "v" version))))
-       (file-name (git-file-name name version))
-       (sha256
-        (base32 "15bqf0gv4qz3990cv1s2nj9mjqaka1pkhzymgwc19wxqvacwvwqr"))))
-    (arguments
-     (list
-      #:phases
-      #~(modify-phases %standard-phases
-          (add-before 'install 'disable-network-tests
-            (lambda _
-              (substitute* "test/runtests.jl"
-                (("\"async.jl") "# \"async.jl")
-                (("\"client.jl") "# \"client.jl")
-                (("\"websockets") "# \"websockets")
-                (("\"server") "# \"server"))
-              (substitute* "test/multipart.jl"
-                (("@testset \"Setting of Content-Type.*" all)
-                 (string-append all "return\n"))
-                (("@testset \"Deprecation of .*" all)
-                 (string-append all "return\n")))
-              (substitute* "test/messages.jl"
-                (("@testset.*Read methods.*" all)
-                 (string-append all "return\n"))
-                (("@testset.*Body - .*" all)
-                 (string-append all "return\n"))
-                (("@testset.*Write to file.*" all)
-                 (string-append all "return\n")))
-              (substitute* "test/cookies.jl"
-                (("@testset.*Set-Cookie casing.*" all)
-                 (string-append all "return\n")))
-)))))
-    (propagated-inputs
-     (list julia-codeczlib
-           julia-inifile
-           julia-loggingextras
-           julia-mbedtls
-           julia-simplebufferstream
-           julia-uris))
-    ;; required for tests
-    (native-inputs
-     (list julia-bufferedstreams
-           julia-json))))
-
 ;; TODO: Unbundle fonts, more?
-(define-public julia-makie
-  (package
-    (name "julia-makie")
-    (version "0.17.13")
-    (source
-      (origin
-        (method git-fetch)
-        (uri (git-reference
-               (url "https://github.com/MakieOrg/Makie.jl")
-               (commit (string-append "v" version))))
-        (file-name (git-file-name name version))
-        (sha256
-         (base32 "0s9rkfmshl3nz82zkgia6fxmfhz4v26ixam6ybqw8swlshdfijrd"))))
-    (build-system julia-build-system)
-    (propagated-inputs
-     (list ;julia-animations
-           ;julia-colorbrewer
-           julia-colorschemes
-           julia-colortypes
-           julia-colors
-           julia-contour
-           julia-distributions
-           julia-docstringextensions
-           julia-ffmpeg
-           julia-fileio
-           julia-fixedpointnumbers
-           julia-formatting
-           julia-freetype
-           julia-freetypeabstraction
-           julia-geometrybasics
-           ;julia-gridlayout
-           ;julia-imageio
-           julia-intervalsets
-           ;julia-isoband
-           ;julia-kerneldensity
-           julia-latexstrings
-           julia-makiecore
-           ;julia-match
-           ;julia-mathtexengine
-           julia-observables
-           julia-offsetarrays
-           ;julia-packing
-           julia-plotutils
-           ;julia-polygonops
-           julia-relocatablefolders
-           julia-showoff
-           ;julia-signeddistancefields
-           julia-statsbase
-           julia-statsfuns
-           julia-structarrays
-           julia-unicodefun))
-    (home-page "https://docs.makie.org/stable")
-    (synopsis "Interactive data visualizations and plotting in Julia")
-    (description "Makie is a data visualization ecosystem for the Julia
-programming language.")
-    (license license:expat)))
-
-(define-public julia-makiecore
-  (package/inherit julia-makie
-    (name "julia-makiecore")
-    (version "0.4.0")       ; Same source, different version
-    (arguments
-     (list
-       #:phases
-       #~(modify-phases %standard-phases
-           (add-after 'unpack 'chdir
-             (lambda _
-               (chdir "MakieCore"))))))
-    (propagated-inputs
-     (list julia-observables))
-    (synopsis "Backend core for Makie")))
-
-(define-public julia-cairomakie
-  (package/inherit julia-makie
-    (name "julia-cairomakie")
-    (version "0.8.13")      ; Same source, different version
-    (arguments
-     (list
-       #:phases
-       #~(modify-phases %standard-phases
-           (add-after 'unpack 'chdir
-             (lambda _
-               (chdir "CairoMakie"))))))
-    (propagated-inputs
-     (list ;julia-cairo
-           julia-colors
-           ;julia-fftw
-           julia-fileio
-           julia-freetype
-           julia-geometrybasics
-           julia-makie))
-    (synopsis "Cairo Backend for Makie")))
-
 (define-public julia-freetype
   (package
     (name "julia-freetype")
@@ -1743,122 +1189,6 @@ which are like @code{Ref}s but you can listen to changes.")
     (description "This is what I wish Base.BufferStream was.")
     (license license:expat)))
 
-(define-public julia-openssl
-  (package
-    (name "julia-openssl")
-    (version "1.4.1")
-    (source
-      (origin
-        (method git-fetch)
-        (uri (git-reference
-               (url "https://github.com/JuliaWeb/OpenSSL.jl")
-               (commit (string-append "v" version))))
-        (file-name (git-file-name name version))
-        (sha256
-         (base32 "1s2h4qh9y3alhkf18p4pjqp77mvsb47qagmk68pq0wsx8r3hzhzx"))))
-    (build-system julia-build-system)
-    (arguments
-     (list
-      #:phases
-      #~(modify-phases %standard-phases
-          (add-before 'install 'disable-network-tests
-            (lambda _
-              (substitute* "test/runtests.jl"
-                ;; No /etc/ssl/certs/ca-certificates.crt in the build environment.
-                (("@testset.*(ReadPEMCert|X509Certificate|X509Store).*" all)
-                 (string-append all "return\n"))
-                ;; No network connection
-                (("@testset.*(HttpsConnect|ClosedStream|NoCloseStream).*" all)
-                 (string-append all "return\n"))
-                ;; undefined symbol.
-                ;; XXX: THIS BREAKS THE PACKAGE!
-                (("@testset.*ErrorTaskTLS.*" all)
-                 (string-append all "return\n"))))))))
-    (propagated-inputs
-     (list julia-bitflags
-           julia-openssl-jll))
-    (home-page "https://github.com/JuliaWeb/OpenSSL.jl")
-    (synopsis "Openssl Julia bindings")
-    (description "This package provides Openssl Julia bindings.")
-    (license license:expat)))
-
-#;(define-public julia-openssl-jll
-  (package
-    (name "julia-openssl-jll")
-    (version "3.0.8+0")
-    (source
-      (origin
-        (method git-fetch)
-        (uri (git-reference
-               (url "https://github.com/JuliaBinaryWrappers/OpenSSL_jll.jl")
-               (commit (string-append "OpenSSL-v" version))))
-        (file-name (git-file-name name version))
-        (sha256
-         (base32 "1d9kcx7a3yv3rgkggq7h436sfjafr66pq8d0lmlcjxdpl46hx3j7"))))
-    (build-system julia-build-system)
-    (arguments
-     '(#:tests? #f ; no runtests
-       #:phases
-       (modify-phases %standard-phases
-         (add-after 'link-depot 'override-binary-path
-           (lambda* (#:key inputs #:allow-other-keys)
-             (map
-               (lambda (wrapper)
-                 (substitute* wrapper
-                   (("lib64") "lib")
-                   (("generate_wrapper_header.*")
-                   (string-append
-                    "generate_wrapper_header(\"OpenSSL\", \""
-                    (assoc-ref inputs "openssl") "\")\n"))))
-               ;; There's a Julia file for each platform, override them all
-               (find-files "src/wrappers/" "\\.jl$")))))))
-    (inputs
-     (list (@ (gnu packages tls) openssl)))
-    (propagated-inputs
-     (list julia-jllwrappers))
-    (home-page "https://github.com/JuliaBinaryWrappers/OpenSSL_jll.jl")
-    (synopsis "Openssl library wrappers")
-    (description "This package provides a wrapper for openssl.")
-    (license license:expat)))
-
-#;(define-public julia-openssl-jll-1.1
-  (package
-    (name "julia-openssl-jll")
-    (version "1.1.21+0")
-    (source
-      (origin
-        (method git-fetch)
-        (uri (git-reference
-               (url "https://github.com/JuliaBinaryWrappers/OpenSSL_jll.jl")
-               (commit (string-append "OpenSSL-v" version))))
-        (file-name (git-file-name name version))
-        (sha256
-         (base32 "05wgsvy0iviffkcq4w1dg8gaafyxknnk26c1gpcgma5yhfia8yfs"))))
-    (build-system julia-build-system)
-    (arguments
-     '(#:tests? #f ; no runtests
-       #:phases
-       (modify-phases %standard-phases
-         (add-after 'link-depot 'override-binary-path
-           (lambda* (#:key inputs #:allow-other-keys)
-             (map
-               (lambda (wrapper)
-                 (substitute* wrapper
-                   (("generate_wrapper_header.*")
-                   (string-append
-                    "generate_wrapper_header(\"OpenSSL\", \""
-                    (assoc-ref inputs "openssl") "\")\n"))))
-               ;; There's a Julia file for each platform, override them all
-               (find-files "src/wrappers/" "\\.jl$")))))))
-    (inputs
-     (list (@ (gnu packages tls) openssl-1.1)))
-    (propagated-inputs
-     (list julia-jllwrappers))
-    (home-page "https://github.com/JuliaBinaryWrappers/OpenSSL_jll.jl")
-    (synopsis "Openssl library wrappers")
-    (description "This package provides a wrapper for openssl.")
-    (license license:expat)))
-
 (define-public julia-bitflags
   (package
     (name "julia-bitflags")
@@ -2096,60 +1426,6 @@ definition of your logging system.")
 generates precompile directives for any concrete signature that it can find.")
     (license license:expat)))
 
-(define-public julia-precompiletools
-  (package
-    (name "julia-precompiletools")
-    (version "1.1.2")
-    (source
-      (origin
-        (method git-fetch)
-        (uri (git-reference
-               (url "https://github.com/JuliaLang/PrecompileTools.jl")
-               (commit (string-append "v" version))))
-        (file-name (git-file-name name version))
-        (sha256
-         (base32 "124qzflwnn34d8x8vz3cmj2m4a55mg5qf8i8jdcwyyrnag3si7zr"))))
-    (build-system julia-build-system)
-    (arguments
-     (list #:tests? #f))        ; Tries to download the Julia registry.
-    (propagated-inputs
-     (list julia-preferences))
-    (home-page "https://github.com/JuliaLang/PrecompileTools.jl")
-    (synopsis "Reduce time-to-first-execution of Julia code")
-    (description "PrecompileTools allows you to reduce the latency of the first
-execution of Julia code.  It is applicable for package developers and for
-\"ordinary users\" in their personal workflows.")
-    (license license:expat)))
-
-(define-public julia-timeroutputs
-  (package
-    (name "julia-timeroutputs")
-    (version "0.5.23")
-    (source
-      (origin
-        (method git-fetch)
-        (uri (git-reference
-               (url "https://github.com/KristofferC/TimerOutputs.jl")
-               (commit (string-append "v" version))))
-        (file-name (git-file-name name version))
-        (sha256
-         (base32 "031m7d837cw4c7iz4arrm1a1ppqihhj5jsldvm7z1bc72jxgfrcv"))))
-    (build-system julia-build-system)
-    (propagated-inputs
-     (list julia-exprtools))
-    (home-page "https://github.com/KristofferC/TimerOutputs.jl")
-    (synopsis "Formatted output of timed sections in Julia")
-    (description "TimerOutputs is a small Julia package that is used to generate
-formatted output from timings made in different sections of a program.  It's
-main functionality is the @code{@@timeit} macro, similar to the @code{@@time}
-macro in Base except one also assigns a label to the code section being timed.
-Multiple calls to code sections with the same label (and in the same \"scope\")
-will accumulate the data for that label.  After the program has executed, it is
-possible to print a nicely formatted table presenting how much time,
-allocations and number of calls were made in each section.  The output can be
-customized as to only show the things you are interested in.")
-    (license license:expat)))
-
 (define-public julia-memoize
   (package
     (name "julia-memoize")
@@ -2253,28 +1529,6 @@ and numerical functions for statistical computing.")
     (license license:expat)))
 
 ;; ready to upstream
-(define-public julia-inversefunctions
-  (package
-    (name "julia-inversefunctions")
-    (version "0.1.8")
-    (source
-      (origin
-        (method git-fetch)
-        (uri (git-reference
-               (url "https://github.com/JuliaMath/InverseFunctions.jl")
-               (commit (string-append "v" version))))
-        (file-name (git-file-name name version))
-        (sha256
-         (base32 "05g9f6i735x7syfr56l4yf4fy71kgdisjc6cfxi4jkf46iq86a69"))))
-    (build-system julia-build-system)
-    (native-inputs
-     (list julia-documenter))
-    (home-page "https://github.com/JuliaMath/InverseFunctions.jl")
-    (synopsis "Interface for function inversion in Julia")
-    (description
-     "This package provides an interface to invert functions in Julia.")
-    (license license:expat)))
-
 ;; ready to upstream
 (define-public rmath-for-julia-rmath-jll
   ;; More recent commits fix various build issues
@@ -2397,142 +1651,6 @@ R's d-p-q-r functions for probability distributions.  It is a wrapper around
     (license license:expat)))
 
 ;; ready to upstream
-(define-public julia-doublefloats
-  (package
-    (name "julia-doublefloats")
-    (version "1.1.25")
-    (source
-      (origin
-        (method git-fetch)
-        (uri (git-reference
-               (url "https://github.com/JuliaMath/DoubleFloats.jl")
-               (commit (string-append "v" version))))
-        (file-name (git-file-name name version))
-        (sha256
-         (base32 "0cd3wxa2q77d9cxmi8gp5hpc95bfdf195mw03p6r1z543sfcfg0d"))))
-    (build-system julia-build-system)
-    (propagated-inputs
-     (list julia-genericlinearalgebra
-           julia-polynomials
-           julia-quadmath
-           julia-requires
-           julia-specialfunctions))
-    (native-inputs
-     (list julia-genericlinearalgebra
-           julia-genericschur
-           julia-specialfunctions))
-    (home-page "https://github.com/JuliaMath/DoubleFloats.jl")
-    (synopsis "Extended precision float and complex types")
-    (description "This package provides a math library with extended precision
-floats and complex types.")
-    (license license:expat)))
-
-;; ready to upstream
-;; This package depends on TimeZones.jl.
-(define-public julia-polynomials
-  (package
-    (name "julia-polynomials")
-    (version "2.0.24")
-    (source
-      (origin
-        (method git-fetch)
-        (uri (git-reference
-               (url "https://github.com/JuliaMath/Polynomials.jl")
-               (commit (string-append "v" version))))
-        (file-name (git-file-name name version))
-        (sha256
-         (base32 "1wpnk8m4l3ai7ggiim23xlvaxgbsjhprk614pva2pb4xi2jmclgq"))))
-    (build-system julia-build-system)
-    (propagated-inputs
-     (list julia-intervals
-           julia-mutablearithmetics
-           julia-recipesbase))
-    (native-inputs
-     (list julia-dualnumbers
-           julia-offsetarrays
-           julia-specialfunctions
-           julia-staticarrays))
-    (home-page "https://github.com/JuliaMath/Polynomials.jl")
-    (synopsis "Polynomial manipulations in Julia")
-    (description "This package provides basic arithmetic, integration,
-differentiation, evaluation, and root finding over dense univariate
-polynomials.")
-    (license license:expat)))
-
-;; This package depends on TimeZones.jl.
-(define-public julia-intervals
-  (package
-    (name "julia-intervals")
-    (version "1.5.0")
-    (source
-      (origin
-        (method git-fetch)
-        (uri (git-reference
-               (url "https://github.com/invenia/Intervals.jl")
-               (commit (string-append "v" version))))
-        (file-name (git-file-name name version))
-        (sha256
-         (base32 "1nj40fjx0q3gszq0r8h6scnzyldp68yv1y2lpmmbxraf47644q0n"))))
-    (build-system julia-build-system)
-    (arguments
-     `(#:tests? #f))    ; TODO: Fix! broken with timezone stuff
-    (propagated-inputs
-     (list julia-infinity
-           julia-recipesbase
-           julia-timezones))
-    (native-inputs
-     (list julia-documenter
-           julia-imagemagick
-           julia-infinity
-           ;julia-plots
-           ;julia-visualregressiontests
-           ))
-    (home-page "https://github.com/invenia/Intervals.jl")
-    (synopsis "Non-iterable ranges")
-    (description "This package defines:
-
-                     AbstractInterval, along with its subtypes Interval and AnchoredInterval, and also Bound.")
-    (license license:expat)))
-
-(define-public julia-infinity
-  (package
-    (name "julia-infinity")
-    (version "0.2.4")
-    (source
-      (origin
-        (method git-fetch)
-        (uri (git-reference
-               (url "https://github.com/cjdoris/Infinity.jl")
-               (commit (string-append "v" version))))
-        (file-name (git-file-name name version))
-        (sha256
-         (base32 "1941lwvrdjnrynigzixxin3chpg1ba6xplvcwc89x0f6z658hwmm"))))
-    (build-system julia-build-system)
-    (arguments
-     (list
-      #:tests? #f           ; TODO: Fix tests!
-      #:phases
-      #~(modify-phases %standard-phases
-          (add-after 'link-depot 'remove-timezones.jl
-            (lambda _
-              (substitute* "test/runtests.jl"
-                (("using TimeZones.*") "")
-                ((".*infextendedtime.*") "")))))))
-    (propagated-inputs
-     (list julia-requires))
-    (native-inputs
-     (list julia-compat))
-    (home-page "https://docs.juliahub.com/Infinity/")
-    (synopsis "Representation of infinity in Julia")
-    (description "This package provides representations for infinity and
-negative infinity in Julia.")
-    (license license:expat)))
-
-;; TODO: There is talk upstream about separating out the timezone data into a
-;; separate package which can allow this to actually be packaged in a sane way.
-;; As of 1.7.1 there are 257 items in Artifact.toml
-;; https://github.com/JuliaTime/TimeZones.jl/issues/359
-;; Versions after 1.5.x introduce a dependency on julia-inlinestrings, which needs help with its test suite.
 (define-public julia-timezones
   (package
     (name "julia-timezones")
@@ -2564,41 +1682,6 @@ language.  @code{TimeZones.jl} extends the Date/DateTime support for Julia to
 include a new time zone aware @code{TimeType: ZonedDateTime}.")
     (license license:expat)))
 
-(define-public julia-inlinestrings
-  (package
-    (name "julia-inlinestrings")
-    (version "1.1.2")
-    (source
-      (origin
-        (method git-fetch)
-        (uri (git-reference
-               (url "https://github.com/JuliaStrings/InlineStrings.jl")
-               (commit (string-append "v" version))))
-        (file-name (git-file-name name version))
-        (sha256
-         (base32 "1fwbnjrsig0fbi9vjn8apbn186xvzhk7vnw3g661q3g8f2j0snp9"))))
-    (build-system julia-build-system)
-    (arguments
-     (list
-       #:tests? #f      ; TODO: Fix skipping the test in question
-       ;#:phases
-       ;#~(modify-phases %standard-phases
-       ;    (add-after 'unpack 'adjust-tests
-       ;      (lambda _
-       ;        (substitute* "test/runtests.jl"
-       ;          ;; Need to skip lines 165, 166?
-       ;          ((".*a,\".*") "")  ; 165, 167
-       ;          ((".*a__\".*") "") ; 166, 168
-       ;          ))))
-       ))
-    (propagated-inputs
-     (list julia-parsers))
-    (home-page "https://github.com/JuliaStrings/InlineStrings.jl")
-    (synopsis "Fixed-width string types for Julia")
-    (description "This package provides fixed-width string types for
-facilitating certain string workflows in Julia.")
-    (license license:expat)))
-
 ;; ready to upstream, if we want
 (define-public julia-lazyartifacts
   (package
@@ -2621,144 +1704,6 @@ that want to use the @code{LazyArtifacts} stdlib as a dependency within packages
 that still support Julia versions older than 1.6.")
     (license license:expat)))
 
-(define-public julia-visualregressiontests
-  (package
-    (name "julia-visualregressiontests")
-    (version "1.0.0")
-    (source
-      (origin
-        (method git-fetch)
-        (uri (git-reference
-               (url "https://github.com/JuliaPlots/VisualRegressionTests.jl")
-               (commit (string-append "v" version))))
-        (file-name (git-file-name name version))
-        (sha256
-         (base32 "0fsqm89dqrn9bd466v79544hcd5ljn5ikg6x94hfcashjwa5y0g2"))))
-    (build-system julia-build-system)
-    (arguments
-     `(#:tests? #f))   ; GTK.jl not packaged yet
-    (propagated-inputs
-     `(("julia-colortypes" ,julia-colortypes)
-       ("julia-colorvectorspace" ,julia-colorvectorspace)
-       ("julia-fileio" ,julia-fileio)
-       ;("julia-imagefiltering" ,julia-imagefiltering)
-       ("julia-imagemagick" ,julia-imagemagick)
-       ;("julia-quartzimageio" ,julia-quartzimageio)    ; for macOS
-       ("julia-requires" ,julia-requires)))
-    ;(native-inputs
-    ; `(;("julia-gtk" ,julia-gtk)
-    ;   ("julia-plots" ,julia-plots)
-    ;   ("julia-testimages" ,julia-testimages)))
-    (home-page "https://github.com/JuliaPlots/VisualRegressionTests.jl")
-    (synopsis "Automated integrated regression tests for graphics libraries")
-    (description "Easy regression testing for visual packages.  Automated tests compare similarity between a newly generated image and a reference image using the Images package.  While in interactive mode, the tests can optionally pop up a Gtk GUI window showing a side-by-side comparison of the test and reference image, and then optionally overwrite the reference image with the test image.  This allows for straightforward regression testing of image data, even when the \"correct\" images change over time.")
-    (license license:expat)))
-
-;; https://github.com/JuliaPackaging/Yggdrasil/tree/7e9ec714d786c4c841a80bdf75b84570c5bda7a1/E/EarCut
-(define-public julia-earcut-jll
-  ;; The only release tag contains just a license file.
-  (let ((commit "b234ae0c064af12eb5482c7474a64af8be0f511e")
-        (revision "1"))
-  (package
-    (name "julia-earcut-jll")
-    (version (git-version "2.1.5+1" revision commit))
-    (source
-     (origin
-       (method git-fetch)
-       (uri (git-reference
-             (url "https://github.com/JuliaBinaryWrappers/EarCut_jll.jl")
-             (commit commit)))
-       (file-name (git-file-name name version))
-       (sha256
-        (base32 "0x1zjmsm4kcccwhd1fmnz0w4m0f2na1d2vcc0pj2cf5ccprx7miw"))))
-    (build-system julia-build-system)
-    (arguments
-     `(#:tests? #f                      ; no runtests.jl
-       #:phases
-       (modify-phases %standard-phases
-         (add-after 'link-depot 'override-binary-path
-           (lambda* (#:key inputs #:allow-other-keys)
-             (map
-              (lambda (wrapper)
-                (substitute* wrapper
-                  (("generate_wrapper_header.*")
-                   (string-append
-                    "generate_wrapper_header(\"EarCut\", \""
-                    (assoc-ref inputs "earcut") "\")\n"))))
-              ;; There's a Julia file for each platform, override them all.
-              (find-files "src/wrappers/" "\\.jl$")))))))
-    (inputs                             ;required by artifacts
-     `(("earcut" ,earcut-for-julia-earcut-jll)))
-    (propagated-inputs
-     `(("julia-jllwrappers" ,julia-jllwrappers)))
-    (home-page "https://github.com/JuliaBinaryWrappers/EarCut_jll.jl")
-    (synopsis "")
-    (description "")
-    (license license:expat))))
-
-(define-public earcut-for-julia-earcut-jll
-  (package
-    (name "earcut-for-julia-earcut-jll")
-    (version "2.2.3")
-    (source
-      (origin
-        (method git-fetch)
-        (uri (git-reference
-               (url "https://github.com/mapbox/earcut.hpp")
-               (commit (string-append "v" version))))
-        (file-name (git-file-name name version))
-        (sha256
-         (base32 "19qpmpz2sh80lqpvvn08r0k28s3v0vlzb72kg3b56rcwxxknkk5l"))
-        (modules '((guix build utils)))
-        (snippet
-         '(begin
-            (substitute* "CMakeLists.txt"
-              ((".*add_subdirectory.*") ""))))))
-    (build-system trivial-build-system)
-    (arguments
-     `(#:modules ((guix build utils))
-       #:builder
-       (let ((out (assoc-ref %outputs "out"))
-             (source (assoc-ref %build-inputs "source"))
-             (cwrapper.cpp (assoc-ref %build-inputs "cwrapper.cpp")))
-         (begin
-           (use-modules (guix build utils))
-           (setenv "PATH"
-                   (string-append
-                     (assoc-ref %build-inputs "gcc-toolchain") "/bin:"
-                     (assoc-ref %build-inputs "xz") "/bin"))
-           (invoke
-             (string-append (assoc-ref %build-inputs "tar") "/bin/tar") "xvf" source)
-           (copy-file
-             (string-append ,name "-" ,version "-checkout/include/mapbox/earcut.hpp")
-             "earcut.h")
-           (copy-file cwrapper.cpp "cwrapper.cpp")
-           (invoke ,(cxx-for-target)
-                  "-std=c++11"
-                  "-fPIC"
-                  "-shared"
-                  "-o" "libearcut.so"
-                  "cwrapper.cpp")
-           (install-file "libearcut.so"
-                         (string-append out "/lib"))))))
-    (inputs
-     `(("gcc-toolchain" ,(S "gcc-toolchain"))
-       ("cwrapper.cpp"
-        ,(origin
-           (method url-fetch)
-           (uri "https://raw.githubusercontent.com/JuliaPackaging/Yggdrasil/7e9ec714d786c4c841a80bdf75b84570c5bda7a1/E/EarCut/bundled/cwrapper.cpp")
-           (file-name (string-append "cwrapper-for-earcut-for-julia-earcut-jll-" version ".cpp"))
-           (sha256
-            (base32 "0yf0r20306qsk1yrls5cz34vpfiazfdqc44f3mqmi76yq1ii0n09"))))))
-    (native-inputs
-     `(("tar" ,(S "tar"))
-       ("xz" ,(S "xz"))))
-    (home-page "https://github.com/mapbox/earcut.hpp")
-    (synopsis "Header version of EarCut.js")
-    (description "")
-    (properties '((hidden? . #t)))
-    (license license:expat)))
-
 (define-public julia-binaryprovider
   (package
     (name "julia-binaryprovider")
@@ -2831,3 +1776,77 @@ for long-running computations.")
  written in Julia for Bayesian multiple regression methods applied to
 genomic prediction and genome-wide association studies.")
     (license license:gpl2)))
+
+(define-public julia-staticarrayscore
+  (package
+    (name "julia-staticarrayscore")
+    (version "1.4.2")
+    (source
+      (origin
+        (method git-fetch)
+        (uri (git-reference
+               (url "https://github.com/JuliaArrays/StaticArraysCore.jl")
+               (commit (string-append "v" version))))
+        (file-name (git-file-name name version))
+        (sha256
+         (base32 "0m573mxvf0y9h7y8rxrk35haphhqisplx159r77g30qvw7zwpgar"))))
+    (build-system julia-build-system)
+    (home-page "https://github.com/JuliaArrays/StaticArraysCore.jl")
+    (synopsis "Interface package for StaticArrays.jl")
+    (description
+     "This package provides an interface package for @code{StaticArrays.jl}.")
+    (license license:expat)))
+
+(define-public julia-precompiletools
+  (package
+    (name "julia-precompiletools")
+    (version "1.1.2")
+    (source
+      (origin
+        (method git-fetch)
+        (uri (git-reference
+               (url "https://github.com/JuliaLang/PrecompileTools.jl")
+               (commit (string-append "v" version))))
+        (file-name (git-file-name name version))
+        (sha256
+         (base32 "124qzflwnn34d8x8vz3cmj2m4a55mg5qf8i8jdcwyyrnag3si7zr"))))
+    (build-system julia-build-system)
+    (arguments
+     (list #:tests? #f))        ; Tries to download the Julia registry.
+    (propagated-inputs
+     (list julia-preferences))
+    (home-page "https://github.com/JuliaLang/PrecompileTools.jl")
+    (synopsis "Reduce time-to-first-execution of Julia code")
+    (description "PrecompileTools allows you to reduce the latency of the first
+execution of Julia code.  It is applicable for package developers and for
+\"ordinary users\" in their personal workflows.")
+    (license license:expat)))
+
+(define-public julia-timeroutputs
+  (package
+    (name "julia-timeroutputs")
+    (version "0.5.23")
+    (source
+      (origin
+        (method git-fetch)
+        (uri (git-reference
+               (url "https://github.com/KristofferC/TimerOutputs.jl")
+               (commit (string-append "v" version))))
+        (file-name (git-file-name name version))
+        (sha256
+         (base32 "031m7d837cw4c7iz4arrm1a1ppqihhj5jsldvm7z1bc72jxgfrcv"))))
+    (build-system julia-build-system)
+    (propagated-inputs
+     (list julia-exprtools))
+    (home-page "https://github.com/KristofferC/TimerOutputs.jl")
+    (synopsis "Formatted output of timed sections in Julia")
+    (description "TimerOutputs is a small Julia package that is used to generate
+formatted output from timings made in different sections of a program.  It's
+main functionality is the @code{@@timeit} macro, similar to the @code{@@time}
+macro in Base except one also assigns a label to the code section being timed.
+Multiple calls to code sections with the same label (and in the same \"scope\")
+will accumulate the data for that label.  After the program has executed, it is
+possible to print a nicely formatted table presenting how much time,
+allocations and number of calls were made in each section.  The output can be
+customized as to only show the things you are interested in.")
+    (license license:expat)))
diff --git a/gn/packages/jupyterhub.scm b/gn/packages/jupyterhub.scm
deleted file mode 100644
index 2779d3e..0000000
--- a/gn/packages/jupyterhub.scm
+++ /dev/null
@@ -1,301 +0,0 @@
-(define-module (gn packages jupyterhub)
-  #:use-module ((guix licenses) #:prefix license:)
-  #:use-module (guix packages)
-  #:use-module (guix download)
-  #:use-module (guix git-download)
-  #:use-module (guix build-system python)
-  #:use-module (gnu packages check)
-  #:use-module (gnu packages databases)
-  #:use-module (gnu packages docker)
-  #:use-module (gnu packages jupyter)
-  #:use-module (gnu packages libffi)
-  #:use-module (gnu packages linux)
-  #:use-module (gnu packages monitoring)
-  #:use-module (gnu packages openstack)
-  #:use-module (gnu packages protobuf)
-  #:use-module (gnu packages python-build)
-  #:use-module (gnu packages python-crypto)
-  #:use-module (gnu packages python-web)
-  #:use-module (gnu packages python-xyz)
-  #:use-module (gnu packages jupyter)
-  #:use-module (gnu packages rpc)
-  #:use-module (gnu packages serialization)
-  #:use-module (gnu packages time)
-  #:use-module (gn packages node))
-
-(define-public jupyterhub
-  (package
-    (name "jupyterhub")
-    (version "1.0.0")
-    (source
-      (origin
-        (method url-fetch)
-        (uri (pypi-uri "jupyterhub" version))
-        (sha256
-         (base32
-          "0zx6gw9yhgki05j21p6x1x2sf5a2mg2c2mx0ii8rl6q4b98ilm1k"))
-        (patches
-          (list
-            (origin
-              (method url-fetch)
-              (uri "https://github.com/jupyterhub/jupyterhub/commit/b624116be79168f37af728195af663498f3c55c0.patch")
-              (file-name "jupyterhub-fix-first-launch-errors.patch")
-              (sha256
-               (base32
-                "00rbqz0rz2642ypfgpd49fv7wzpc9n0pdfqixqp3zxs6vqf3x372")))))))
-    (build-system python-build-system)
-    (arguments
-     '(#:tests? #f ; Tests require a webserver, postgresql database and npm.
-       #:phases
-       (modify-phases %standard-phases
-         (replace 'check
-           (lambda* (#:key tests? inputs #:allow-other-keys)
-             (if tests?
-               ((let* ((postgres (assoc-ref inputs "postgresql"))
-                       (initdb   (string-append postgres "/bin/initdb"))
-                       (pg_ctl   (string-append postgres "/bin/pg_ctl"))
-                       (psql     (string-append postgres "/bin/psql"))
-                       )
-                  ;; From .travis.yml
-                  (invoke initdb "main")
-                  (invoke pg_ctl "-D" "main" "start")
-                  (invoke psql "--list")
-                  ;; From ci/init-db.sh
-                  (invoke psql "-d" "postgres" "-c"
-                          "CREATE DATABASE jupyterhub_upgrade_072;")
-                  (invoke psql "-d" "postgres" "-c"
-                          "CREATE DATABASE jupyterhub_upgrade_081;")
-                  (invoke psql "-d" "postgres" "-c"
-                          "CREATE DATABASE jupyterhub_upgrade_094;")
-                  (invoke "pytest" "-v" "--maxfail=2" "jupyterhub/tests"))
-                )
-               #t))))))
-    (propagated-inputs
-     `(;("node-configurable-http-proxy" ,node-configurable-http-proxy)
-       ("python-alembic" ,python-alembic)
-       ("python-async-generator" ,python-async-generator)
-       ("python-certipy" ,python-certipy)
-       ("python-dateutil" ,python-dateutil)
-       ("python-entrypoints" ,python-entrypoints)
-       ("python-jinja2" ,python-jinja2)
-       ("python-oauthlib" ,python-oauthlib)
-       ("python-pamela" ,python-pamela)
-       ("python-prometheus-client" ,python-prometheus-client)
-       ("python-requests" ,python-requests)
-       ("python-sqlalchemy" ,python-sqlalchemy)
-       ("python-tornado" ,python-tornado)
-       ("python-traitlets" ,python-traitlets)
-       ;; Recommended but not required:
-       ("python-pycurl" ,python-pycurl)))
-    (native-inputs
-     `(
-       ("postgresql" ,postgresql)
-       ("python-psycopg2" ,python-psycopg2)
-
-       ("python-beautifulsoup4" ,python-beautifulsoup4)
-       ("python-jupyter-client" ,python-jupyter-client)
-       ("python-notebook" ,python-notebook)
-       ("python-pytest" ,python-pytest)
-       ("python-pyzmq" ,python-pyzmq)
-       ("python-requests-mock" ,python-requests-mock)))
-    (home-page "https://jupyter.org")
-    (synopsis "Multi-user server for Jupyter notebooks")
-    (description
-     "JupyterHub is the best way to serve Jupyter notebook for multiple users.
-It can be used in a classes of students, a corporate data science group or
-scientific research group. It is a multi-user Hub that spawns, manages, and
-proxies multiple instances of the single-user Jupyter notebook server.")
-    (license license:bsd-3)))
-
-(define-public the-littlest-jupyterhub
-  (let ((commit "29e8bcc4865d26ef67910862a567f55f46f96593") ; Dec 6, 2019
-        (revision "2"))
-    (package
-      (name "the-littlest-jupyterhub")
-      (version (git-version "0.0.0" revision commit))
-      (source
-        (origin
-          (method git-fetch)
-          (uri (git-reference
-                 (url "https://github.com/jupyterhub/the-littlest-jupyterhub.git")
-                 (commit commit)))
-          (file-name (git-file-name name version))
-          (sha256
-           (base32
-            "10xrmia8w9vd9zmgww426kyd95jx81l5c4zpq84gqbvkibq61rsa"))))
-      (build-system python-build-system)
-      (arguments
-       '(#:phases
-         (modify-phases %standard-phases
-           (add-after 'unpack 'loosen-input-requirements
-             (lambda _
-               (substitute* "setup.py"
-                 (("==.*'") "'"))
-               #t))
-           (add-after 'unpack 'patch-some-sources
-             (lambda* (#:key inputs #:allow-other-keys)
-               (let ((python (assoc-ref inputs "python")))
-                 ;; Delete some tests that we're not going to run.
-                 (delete-file "tests/test_conda.py")
-                 (delete-file "tests/test_user.py")
-                 (delete-file "tests/test_utils.py")
-                 ;; No need to make node available for the test suite.
-                 (substitute* "tests/test_installer.py"
-                   (("installer.ensure_node.*") "")
-                   (("/usr/bin/node") (string-append python "/bin/python")))
-                 ;; Don't download traefik.
-                 (substitute* "tests/test_traefik.py"
-                   (("traefik.ensure_traefik_binary")
-                    "#traefik.ensure_traefik_binary")
-                   (("assert traefik") "#assert traefik")
-                   (("assert \\(traefik") "#assert (traefik"))
-                 #t)))
-           (replace 'check
-             (lambda _
-               (invoke "python3" "-m" "pytest" "-v" "tests/"))))))
-      (propagated-inputs
-       `(("python-ruamel.yaml" ,python-ruamel.yaml)
-         ("python-jinja2" ,python-jinja2)
-         ("python-pluggy" ,python-pluggy)
-         ("python-passlib" ,python-passlib)
-         ("python-backoff" ,python-backoff)
-         ("python-requests" ,python-requests)
-         ("python-jupyterhub-traefik-proxy" ,python-jupyterhub-traefic-proxy)))
-      (native-inputs
-       `(("python-pytest" ,python-pytest)
-         ("python-pytoml" ,python-pytoml)))
-      (home-page "https://the-littlest-jupyterhub.readthedocs.io/en/latest/")
-      (synopsis "JupyterHub server for a single server")
-      (description
-       "The Littlest JupyterHub (TLJH) distribution helps you provide Jupyter
-Notebooks to 1-50 users on a single server.  Administrators who do not consider
-themselves 'system administrators' but would like to provide hosted Jupyter
-Notebooks for their students / users are the primary audience.  All users are
-provided with the same environment, and administrators can easily install
-libraries into this environment without any specialized knowledge.")
-      (license license:bsd-3))))
-
-(define-public python-backoff
-  (package
-    (name "python-backoff")
-    (version "1.8.1")
-    (source
-      (origin
-        (method url-fetch)
-        (uri (pypi-uri "backoff" version))
-        (sha256
-         (base32
-          "0g2s4p34ml8dnldbj5qkg7ni5bwsq492nhry2inc2pn66qyx47iz"))))
-    (build-system python-build-system)
-    (home-page "https://github.com/litl/backoff")
-    (synopsis "Function decoration for backoff and retry")
-    (description
-     "Function decoration for backoff and retry")
-    (license license:expat)))
-
-(define-public python-jupyterhub-traefic-proxy
-  (package
-    (name "python-jupyterhub-traefic-proxy")
-    (version "0.1.4")
-    (source
-      (origin
-        (method git-fetch)
-        (uri (git-reference
-               (url "https://github.com/jupyterhub/traefik-proxy.git")
-               (commit version)))
-        (file-name (git-file-name name version))
-        (sha256
-         (base32
-          "021lqll3b84qmyw417wj15wpvs8ckvabx8ygm4fjy9bdllaxmmag"))))
-    (build-system python-build-system)
-    (propagated-inputs
-     `(("jupyterhub" ,jupyterhub)
-       ("python-etcd3" ,python-etcd3)
-       ("python-aiohttp" ,python-aiohttp)
-       ("python-passlib" ,python-passlib)
-       ("python-consul" ,python-consul)
-       ("python-toml" ,python-toml)
-       ("python-escapism" ,python-escapism)))
-    (native-inputs
-     `(("python-jupyter-client" ,python-jupyter-client)
-       ("python-notebook" ,python-notebook)
-       ("python-numpy" ,python-numpy)
-       ("python-pyzmq" ,python-pyzmq)
-       ("python-websockets" ,python-websockets)))
-    (home-page "https://jupyterhub-traefik-proxy.readthedocs.io/")
-    (synopsis "JupyterHub proxy implementation with traefik")
-    (description "An implementation of the JupyterHub proxy api with traefik: an
-extremely lightweight, portable reverse proxy implementation, that supports load
-balancing and can configure itself automatically and dynamically.")
-    (license license:bsd-3)))
-
-(define-public python-etcd3
-  (package
-    (name "python-etcd3")
-    (version "0.10.0")
-    (source
-      (origin
-        (method url-fetch)
-        (uri (pypi-uri "etcd3" version))
-        (sha256
-         (base32
-          "11qf9v69h5gx212p9hv3m8z290gagn834x89y0gn7iijy2wj9995"))))
-    (build-system python-build-system)
-    (arguments '(#:tests? #f)) ; Tests require running etcd.
-    (propagated-inputs
-     `(("python-grpcio" ,python-grpcio)
-       ("python-protobuf" ,python-protobuf)
-       ("python-tenacity" ,python-tenacity)))
-    (home-page "https://github.com/kragniz/python-etcd3")
-    (synopsis "Python client for the etcd3 API")
-    (description "Python client for the etcd3 API")
-    (license license:asl2.0)))
-
-(define-public python-escapism
-  (package
-    (name "python-escapism")
-    (version "1.0.0")
-    (source
-      (origin
-        (method url-fetch)
-        (uri (pypi-uri "escapism" version))
-        (sha256
-         (base32
-          "11lv1kqlk2brx1i2yczajga4c657z184f6fsnf2mnpx90kxc272z"))))
-    (build-system python-build-system)
-    (home-page "https://github.com/minrk/escapism")
-    (synopsis "Simple, generic API for escaping strings")
-    (description
-     "Simple, generic API for escaping strings.")
-    (license license:expat)))
-
-(define-public python-jupyter-repo2docker
-  (package
-    (name "python-jupyter-repo2docker")
-    (version "0.10.0")
-    (source
-      (origin
-        (method url-fetch)
-        (uri (pypi-uri "jupyter-repo2docker" version))
-        (sha256
-         (base32
-          "0nn0vcm3pmsrb0hhjwkqy80kgyab7mgny0f8ch7fcsxy2cljcrbr"))))
-    (build-system python-build-system)
-    (propagated-inputs
-     `(("python-docker" ,python-docker)
-       ("python-escapism" ,python-escapism)
-       ("python-jinja2" ,python-jinja2)
-       ("python-json-logger" ,python-json-logger)
-       ("python-ruamel.yaml" ,python-ruamel.yaml)
-       ("python-semver" ,python-semver)
-       ("python-toml" ,python-toml)
-       ("python-traitlets" ,python-traitlets)))
-    (native-inputs
-     `(("python-requests" ,python-requests)
-       ("python-websocket-client" ,python-websocket-client)))
-    (home-page "https://repo2docker.readthedocs.io/en/latest/")
-    (synopsis "Turn git repositories into Jupyter enabled Docker Images")
-    (description
-     "@code{repo2docker} fetches a git repository and builds a container image
-based on the configuration files found in the repository.")
-    (license license:bsd-3)))
diff --git a/gn/packages/kubernetes.scm b/gn/packages/kubernetes.scm
deleted file mode 100644
index e762895..0000000
--- a/gn/packages/kubernetes.scm
+++ /dev/null
@@ -1,347 +0,0 @@
-(define-module (gn packages kubernetes)
-  #:use-module ((guix licenses) #:prefix license:)
-  #:use-module (guix packages)
-  #:use-module (guix git-download)
-  #:use-module (guix download)
-  #:use-module (guix utils)
-  #:use-module (guix build-system go)
-  #:use-module (guix build-system trivial)
-  #:use-module (gnu packages base)
-  #:use-module (gnu packages compression)
-  #:use-module (gnu packages linux)
-  #:use-module (gnu packages rsync))
-
-(define-public kubernetes
-  (package
-    (name "kubernetes")
-    (version "1.16.4")
-    (source (origin
-              (method git-fetch)
-              (uri (git-reference
-                     (url "https://github.com/kubernetes/kubernetes.git")
-                     (commit (string-append "v" version))))
-              (file-name (git-file-name name version))
-              (sha256
-               (base32
-                "0snk4jr5is8rwx0px2kwx802dg770mrgp11irnwy2z50p327jrcs"))))
-    (build-system go-build-system)
-    (arguments
-     `(#:import-path "k8s.io/kubernetes"
-       #:install-source? #f
-       #:tests? #f ; Skip tests for now.
-       #:phases
-       (modify-phases %standard-phases
-         (add-after 'unpack 'make-files-writable
-           (lambda _
-             (for-each make-file-writable (find-files "."))
-             #t))
-         (add-before 'build 'prepare-build
-           (lambda* (#:key inputs #:allow-other-keys)
-             (with-directory-excursion "src/k8s.io/kubernetes"
-               (substitute* '("build/root/Makefile"
-                              "build/root/Makefile.generated_files"
-                              "build/pause/Makefile")
-                 (("/bin/bash") (which "bash")))
-               (substitute* "pkg/util/mount/mount.go"
-                 (("defaultMountCommand.*")
-                  (string-append "defaultMountCommand = \""
-                                 (assoc-ref inputs "util-linux")
-                                 "/bin/mount\"\n"))))
-             #t))
-         (add-before 'build 'fix-version-numbers
-           (lambda _
-             (with-directory-excursion "src/k8s.io/kubernetes"
-               (substitute* '("cmd/kubeadm/app/version/base.go"
-                              "staging/src/k8s.io/client-go/pkg/version/base.go"
-                              "staging/src/k8s.io/kubectl/pkg/version/base.go"
-                              "staging/src/k8s.io/component-base/version/base.go"
-                              "staging/src/k8s.io/component-base/metrics/version_parser_test.go"
-                              "pkg/version/base.go"
-                              "vendor/k8s.io/client-go/pkg/version/base.go"
-                              "vendor/k8s.io/kubectl/pkg/version/base.go"
-                              "vendor/k8s.io/component-base/metrics/version_parser_test.go")
-                 (("v0.0.0-master\\+\\$Format:\\%h\\$") (string-append "v" ,version))
-                 (("v0.0.0-master") (string-append "v" ,version))
-                 (("gitMajor string = \"\"")
-                  (string-append "gitMajor string = \"" ,(version-major version) "\""))
-                 (("gitMinor string = \"\"")
-                  (string-append "gitMinor string = \""
-                                 ,(string-drop (version-major+minor version) 2) "\""))))
-             #t))
-         (replace 'build
-           (lambda _
-             (with-directory-excursion "src/k8s.io/kubernetes"
-               ;; Cannot find go-bindata otherwise.
-               (setenv "PATH" (string-append (getcwd) "/_output/bin:"
-                                             (getenv "PATH")))
-               (invoke "make"))))
-         (replace 'install
-           (lambda* (#:key outputs #:allow-other-keys)
-             (let ((out (assoc-ref outputs "out")))
-               (with-directory-excursion "src/k8s.io/kubernetes"
-                 ;; This saves more than 350MiB.
-                 (delete-file "_output/local/go/bin/e2e.test")
-                 (delete-file "_output/local/go/bin/e2e_node.test")
-                 (for-each
-                   (lambda (file)
-                     (install-file file (string-append out "/bin")))
-                   (find-files "_output/local/go/bin" ".*"))
-                 ;(mkdir-p (string-append out "/share/bash-completion/completions"))
-                 ;(call-with-output-file (string-append out "/share/bash-completion/completions/kubectl")
-                 ;  (lambda (port)
-                 ;    (format port (invoke "_output/local/go/bin/kubectl" "completion" "bash"))))
-                 ;(mkdir-p (string-append out "/share/zsh/site-function"))
-                 ;(call-with-output-file (string-append out "/share/zsh/site-functions/_kubectl")
-                 ;  (lambda (port)
-                 ;    (format port (invoke "_output/local/go/bin/kubectl" "completion" "zsh"))))
-                 (install-file "LICENSE"
-                               (string-append out "/share/doc/"
-                                              ,name "-" ,version)))
-               #t)))
-         (add-after 'install 'install-man-pages
-           (lambda* (#:key outputs #:allow-other-keys)
-             (let ((out (assoc-ref outputs "out")))
-               (mkdir-p (string-append out "/share/man/man1"))
-               (with-directory-excursion "src/k8s.io/kubernetes"
-                 (for-each
-                   (lambda (file)
-                     (invoke "_output/local/go/bin/genman"
-                             (string-append out "/share/man/man1") file))
-                   '("kube-apiserver" "kube-controller-manager" "kube-proxy"
-                     "kube-scheduler" "kubelet" "kubectl")))
-               #t))))))
-    (native-inputs
-     `(("which" ,which)))
-    (inputs
-     `(("rsync" ,rsync)
-       ("util-linux" ,util-linux)))
-    (propagated-inputs
-     `(("crictl" ,crictl))) ; Must be the same major+minor version as kubernetes.
-    (home-page "https://kubernetes.io/")
-    (synopsis "Production-Grade Container Scheduling and Management")
-    (description "Kubernetes is an open source system for managing containerized
-applications across multiple hosts.  It provides basic mechanisms for
-deployment, maintenance, and scaling of applications.")
-    (license license:asl2.0)))
-
-(define-public kubernetes-1.15
-  (package
-    (inherit kubernetes)
-    (name "kubernetes")
-    (version "1.15.7")
-    (source (origin
-              (method git-fetch)
-              (uri (git-reference
-                     (url "https://github.com/kubernetes/kubernetes.git")
-                     (commit (string-append "v" version))))
-              (file-name (git-file-name name version))
-              (sha256
-               (base32
-                "0xk5cx0ihvnfb3y6s0xhkfyb7a62dy2bkxsarq4wdis5nkc2jdim"))))
-    (arguments
-     (substitute-keyword-arguments (package-arguments kubernetes)
-       ((#:phases phases)
-        `(modify-phases ,phases
-           (delete 'fix-version-numbers)))))
-    (propagated-inputs
-     `(("crictl" ,crictl-1.15)))))
-
-(define-public kubernetes-1.14
-  (package
-    (inherit kubernetes-1.15)
-    (name "kubernetes")
-    (version "1.14.10")
-    (source (origin
-              (method git-fetch)
-              (uri (git-reference
-                     (url "https://github.com/kubernetes/kubernetes.git")
-                     (commit (string-append "v" version))))
-              (file-name (git-file-name name version))
-              (sha256
-               (base32
-                "09p3w64f7spcj2mg1gw32g2mwjpii4zmpd2ychazdq7zrc85lxdq"))))
-    (propagated-inputs
-     `(("crictl" ,crictl-1.14)))))
-
-(define-public kubernetes-1.13
-  (package
-    (inherit kubernetes-1.15)
-    (name "kubernetes")
-    (version "1.13.12")
-    (source (origin
-              (method git-fetch)
-              (uri (git-reference
-                     (url "https://github.com/kubernetes/kubernetes.git")
-                     (commit (string-append "v" version))))
-              (file-name (git-file-name name version))
-              (sha256
-               (base32
-                "1drbd0qdj7pala78hda1aag2vq791sbk5a13c060a15d77ppnzwr"))))
-    (propagated-inputs
-     `(("crictl" ,crictl-1.13)))))
-
-(define-public minikube
-  (package
-    (name "minikube")
-    (version "1.5.2")
-    (source (origin
-              (method url-fetch)
-              (uri (string-append "https://github.com/kubernetes/minikube/"
-                                  "releases/download/v"
-                                  version "/" name "-linux-amd64"))
-              (sha256
-               (base32
-                "1sgpb5k3i6g1slz9f6lvp4br5llgm2wcklpn2804hpp8dnlsjwhr"))))
-    (build-system trivial-build-system)
-    (arguments
-     `(#:modules ((guix build utils))
-       #:builder
-       (begin
-         (use-modules (guix build utils))
-         (let* ((out     (assoc-ref %outputs "out"))
-                (bin     (string-append out "/bin"))
-                (target  (string-append bin "/minikube"))
-                (source  (assoc-ref %build-inputs "source")))
-           (mkdir-p bin)
-           (copy-file source target)
-           (chmod target #o555))
-         #t)))
-    (home-page "https://minikube.sigs.k8s.io/")
-    (synopsis "Run Kubernetes locally")
-    (description "Minikube implements a local Kubernetes cluster.  Minikube's
-primary goals are to be the best tool for local Kubernetes application
-development and to support all Kubernetes features that fit.")
-    (supported-systems '("x86_64-linux"))
-    (license license:asl2.0)))
-
-(define-public crictl
-  (package
-    (name "crictl")
-    (version "1.16.1")
-    (source (origin
-              (method git-fetch)
-              (uri (git-reference
-                     (url "https://github.com/kubernetes-sigs/cri-tools.git")
-                     (commit (string-append "v" version))))
-              (file-name (git-file-name name version))
-              (sha256
-               (base32
-                "0qsbqml7jlhf73hlpqrh10bidz4v219bi2m5xg7914dzi0mzm733"))))
-    (build-system go-build-system)
-    (arguments
-     `(;#:import-path "github.com/kubernetes-sigs/cri-tools"
-       #:install-source? #f
-       #:tests? #f ; tests require 'framwork' from kubernetes
-       #:phases
-       (modify-phases %standard-phases
-         (add-after 'unpack 'change-directory
-           (lambda _
-             (chdir "src") #t))
-         (add-before 'build 'prepare-source
-           (lambda* (#:key outputs #:allow-other-keys)
-             (let ((out (assoc-ref outputs "out")))
-               (substitute* "Makefile"
-                 (("/usr/local") out)
-                 (("^VERSION .*") (string-append "VERSION := " ,version "\n")))
-               #t)))
-         (replace 'build
-           (lambda _
-             (invoke "make")))
-         ;(replace 'check
-         ;  (lambda _
-         ;    (invoke "make" "test-e2e")))
-         (replace 'install
-           (lambda* (#:key outputs #:allow-other-keys)
-             (let ((out (assoc-ref outputs "out")))
-               (setenv "BINDIR" (string-append out "/bin"))
-               (invoke "make" "install")))))))
-    (home-page "https://github.com/kubernetes-sigs/cri-tools")
-    (synopsis "CLI and validation tools for Kubelet Container Runtime Interface")
-    (description "Cri-tools aims to provide a series of debugging and validation
-tools for Kubelet CRI.")
-    (license license:asl2.0)))
-
-(define-public crictl-1.15
-  (package
-    (inherit crictl)
-    (name "crictl")
-    (version "1.15.0")
-    (source (origin
-              (method git-fetch)
-              (uri (git-reference
-                     (url "https://github.com/kubernetes-sigs/cri-tools.git")
-                     (commit (string-append "v" version))))
-              (file-name (git-file-name name version))
-              (sha256
-               (base32
-                "03fhddncwqrdyxz43m3bak9dlrsqzibqqja3p94nic4ydk2hry62"))))
-    (arguments
-     (substitute-keyword-arguments (package-arguments crictl)
-       ((#:phases phases)
-        `(modify-phases ,phases
-           (replace 'build
-             (lambda _
-               (invoke "make" "windows"))) ; This is the correct invocation
-           (add-after 'prepare-source 'update-version
-             (lambda _
-               (substitute* "Makefile"
-                 (("^VERSION .*") (string-append "VERSION := " ,version "\n")))
-               #t))
-           (replace 'prepare-source
-             (lambda* (#:key outputs #:allow-other-keys)
-               (let ((out (assoc-ref outputs "out")))
-                 (substitute* "Makefile"
-                   (("/usr/local") out)
-                   ;; So we can use 'make windows'.
-                   ((".exe") "")
-                   (("GOOS=windows") "CGO_ENABLED=0")
-                   (("_output") "../bin"))
-                 #t)))))))))
-
-(define-public crictl-1.14
-  (package
-    (inherit crictl-1.15)
-    (name "crictl")
-    (version "1.14.0")
-    (source (origin
-              (method git-fetch)
-              (uri (git-reference
-                     (url "https://github.com/kubernetes-sigs/cri-tools.git")
-                     (commit (string-append "v" version))))
-              (file-name (git-file-name name version))
-              (sha256
-               (base32
-                "0yzb2vpypf2psrmbaqfh1fw6nba5mzdqr99lkga1204xygs863by"))))
-    (arguments
-     (substitute-keyword-arguments (package-arguments crictl-1.15)
-       ((#:phases phases)
-        `(modify-phases ,phases
-           (replace 'update-version
-             (lambda _
-               (substitute* "Makefile"
-                 (("^VERSION .*") (string-append "VERSION := " ,version "\n")))
-               #t))))))))
-
-(define-public crictl-1.13
-  (package
-    (inherit crictl-1.15)
-    (name "crictl")
-    (version "1.13.0")
-    (source (origin
-              (method git-fetch)
-              (uri (git-reference
-                     (url "https://github.com/kubernetes-sigs/cri-tools.git")
-                     (commit (string-append "v" version))))
-              (file-name (git-file-name name version))
-              (sha256
-               (base32
-                "0xq3fvarx1x2bjyg3cj2jh3vz4lghb5mw2hhqb8ylflr8phd22cx"))))
-    (arguments
-     (substitute-keyword-arguments (package-arguments crictl-1.15)
-       ((#:phases phases)
-        `(modify-phases ,phases
-           (replace 'update-version
-             (lambda _
-               (substitute* "Makefile"
-                 (("^VERSION .*") (string-append "VERSION := " ,version "\n")))
-               #t))))))))
diff --git a/gn/packages/lisp.scm b/gn/packages/lisp.scm
deleted file mode 100644
index 111ee52..0000000
--- a/gn/packages/lisp.scm
+++ /dev/null
@@ -1,259 +0,0 @@
-(define-module (gn packages lisp)
-  #:use-module (gnu packages)
-  #:use-module ((guix licenses) #:prefix license:)
-  #:use-module (guix packages)
-  #:use-module (gnu packages lisp-xyz)
-  #:use-module (gnu packages lisp-check)
-  #:use-module (guix download)
-  #:use-module (guix git-download)
-  #:use-module (guix utils)
-  #:use-module (guix build-system asdf)
-  #:use-module (srfi srfi-1)
-  #:use-module (srfi srfi-19))
-
-(define-public sbcl-rollbar
-  (let ((commit "fbaf644e3a0b077f6853d25874de6a5827b4094c")
-        (revision "0"))
-    (package
-      (name "sbcl-rollbar")
-      (version "0.0.2")
-      (source
-        (origin
-          (method git-fetch)
-          (uri (git-reference
-                (url "https://github.com/adventuring/rollbar.lisp")
-                (commit commit)))
-          (sha256
-           (base32 "01lax9qkb4xcd56ck88ickgpisw30zwg0s3y7rm6cnxv4qgamhzg"))
-          (file-name (git-file-name name version))))
-      (build-system asdf-build-system/source) ; FIXME?
-      (inputs
-        (list sbcl-alexandria
-              sbcl-drakma
-              sbcl-jonathan
-              sbcl-trivial-backtrace))
-      (home-page "https://github.com/adventuring/rollbar.lisp")
-      (synopsis "Rollbar.com interface for Common Lisp")
-      (description
-  "Rollbar.com is a service for collecting automated telemetry (ie, bug
-  reports, mostly) through their web service.")
-      (license license:bsd-3))))
-
-(define-public sbcl-defstar
-  (let ((commit "132829dac9f84fa7202a0c5793aa6accb8d2662a")
-        (revision "0"))
-    (package
-      (name "sbcl-defstar")
-      (version "0.4.2")
-      (source
-        (origin
-          (method git-fetch)
-          (uri (git-reference
-                (url "https://github.com/lisp-maintainers/defstar")
-                (commit commit)))
-          (sha256
-           (base32 "0n6m3aqvdfnsrhlhqjcy72d1i55lbkjg13ij5c7vw003p1n78wxi"))
-          (file-name (git-file-name name commit))))
-      (build-system asdf-build-system/sbcl)
-      (home-page "https://github.com/lisp-maintainers/defstar")
-      (synopsis "Type declarations for defun et all")
-      (description
-"@code{defstar} is a collection of Common Lisp macros that can be used in
-place of @code{defun}, @code{defmethod}, @code{defgeneric}, @code{defvar},
-@code{defparameter}, @code{flet}, @code{labels}, @code{let}* and
-@code{lambda}. Each macro has the same name as the form it replaces,
-with a star added at the end.")
-      (license license:gpl3))))
-
-(define-public cl-defstar
-  (sbcl-package->cl-source-package sbcl-defstar))
-
-(define-public ecl-defstar
-  (sbcl-package->ecl-package sbcl-defstar))
-
-(define-public sbcl-2am
-  (let ((commit "1d2fd21bbd8f26ec91b962705cab098dd7b5f11c")
-        (revision "0"))
-    (package
-      (name "sbcl-2am")
-      (version "0.4.2")
-      (source
-        (origin
-          (method git-fetch)
-          (uri (git-reference
-                (url "https://gitlab.common-lisp.net/dkochmanski/2am")
-                (commit commit)))
-          (sha256
-           (base32 "0zgx4ymyzvfg44z36yr4l87cd9mprajd7sycr2zc67ab6330rynf"))
-          (file-name (git-file-name name commit))))
-      (build-system asdf-build-system/sbcl)
-      (home-page "https://gitlab.common-lisp.net/dkochmanski/2am")
-      (synopsis "Small testing framework based on 1am")
-      (description
-"Small testing framework for Common Lisp.  The entire API consists of:
-@code{test}, @code{is}, @code{signals}, @code{finishes}, @code{run},
-suite and @code{setf} suite.")
-      (license license:expat))))
-
-(define-public cl-2am
-  (sbcl-package->cl-source-package sbcl-2am))
-
-(define-public ecl-2am
-  (sbcl-package->ecl-package sbcl-2am))
-
-(define-public sbcl-fwoar-lisputils
-  (let ((commit "7093110d43e91bc1685ad430da99785d9ec61dae")
-        (revision "0"))
-    (package
-      (name "sbcl-fwoar-lisputils")
-      (version "0.4.2")
-      (source
-        (origin
-          (method git-fetch)
-          (uri (git-reference
-                (url "https://github.com/fiddlerwoaroof/fwoar.lisputils")
-                (commit commit)))
-          (sha256
-           (base32 "0wfy4k2xpnadzy6yfn5iavc8hv1m688942sc1yp8xkdm7pk0mvvi"))
-          (file-name (git-file-name name commit))))
-      (build-system asdf-build-system/source) ; FIXME
-      (home-page "https://github.com/fiddlerwoaroof/fwoar.lisputils")
-      (synopsis "Hodgepodge of useful Lisp snippets")
-      (description "A hodgepodge of useful Lisp snippets.")
-      (license license:expat))))
-
-(define-public sbcl-lorem-ipsum
-  (let ((commit "04a1839a03b53c954e799b9cf570ac915b032ce8")
-        (revision "0"))
-    (package
-      (name "sbcl-lorem-ipsum")
-      (version "0.4.2")
-      (source
-        (origin
-          (method git-fetch)
-          (uri (git-reference
-                (url "https://github.com/phoe/lorem-ipsum")
-                (commit commit)))
-          (sha256
-           (base32 "1530qq0bk3xr25m77q96pbi1idnxdkax8cwmvq4ch03rfjy34j7n"))
-          (file-name (git-file-name name commit))))
-      (build-system asdf-build-system/sbcl)
-      (home-page "https://github.com/phoe/lorem-ipsum")
-      (synopsis "Lorem ipsum generator in portable Common Lisp")
-      (description 
-"Lorem ipsum dolor sit amet, consectetur adipiscing elit erat, id eget
-tellus et turpis, incididunt. Purus mollis penatibus, odio facilisis
-sit. Quisque sagittis quisque. Incididunt commodo mi non. Lectus facilisi
-suscipit duis ultricies sem quis. Lorem massa volutpat quis suspendisse
-turpis, netus hac elementum. At do. Ac integer metus potenti scelerisque
-fringilla labore. Tellus penatibus arcu ligula nisi.")
-      (license license:expat))))
-
-(define-public cl-lorem-ipsum
-  (sbcl-package->cl-source-package sbcl-lorem-ipsum))
-
-(define-public ecl-lorem-ipsum
-  (sbcl-package->ecl-package sbcl-lorem-ipsum))
-
-(define-public sbcl-fare-memoization
-  (let ((commit "8b43ac6bcc0057d1a92052e39b6d34c05c2eb7e4")
-        (revision "0"))
-    (package
-      (name "sbcl-fare-memoization")
-      (version "0.4.2")
-      (source
-        (origin
-          (method git-fetch)
-          (uri (git-reference
-                (url "https://gitlab.common-lisp.net/frideau/fare-memoization")
-                (commit commit)))
-          (sha256
-           (base32 "1blmrb4c9gsxj87scz74z1s8w9d1w2r48fyxj0y1sw3vr6bsbb8f"))
-          (file-name (git-file-name name commit))))
-      (build-system asdf-build-system/sbcl)
-      (native-inputs
-        (list sbcl-hu.dwim.stefil))
-      (inputs
-        (list sbcl-named-readtables))
-      (home-page "https://gitlab.common-lisp.net/frideau/fare-memoization")
-      (synopsis "Memoization library for common-lisp")
-      (description
-"The @code{fare-memoization} library builds on an age-old idea:
-dynamically memoizing Lisp functions.  A memoized function remembers
-results from previous computations, and returns cached results when called
-with the same arguments again, rather than re-doing the computation.")
-      (license license:expat))))
-
-(define-public cl-fare-memoization
-  (sbcl-package->cl-source-package sbcl-fare-memoization))
-
-(define-public ecl-fare-memoization
-  (sbcl-package->ecl-package sbcl-fare-memoization))
-
-(define-public sbcl-meta
-  (let ((commit "74faea662139fbbfb9c99341aaed989f5b0e9da3")
-        (revision "0"))
-    (package
-      (name "sbcl-meta")
-      (version "0.4.2")
-      (source
-        (origin
-          (method git-fetch)
-          (uri (git-reference
-                (url "https://gitlab.common-lisp.net/frideau/meta")
-                (commit commit)))
-          (sha256
-           (base32 "08s53zj3mcx82kszp1bg2vsb4kydvkc70kj4hpq9h1l5a1wh44cy"))
-          (file-name (git-file-name name commit))))
-      (build-system asdf-build-system/sbcl)
-      (inputs
-        (list sbcl-named-readtables))
-      (home-page "https://gitlab.common-lisp.net/frideau/meta")
-      (synopsis "Recursive-descent parser DSL for common-lisp")
-      (description 
-"Recursive-descent parser DSL that is a simpler alternative to parser
-generators.")
-      (license license:bsd-3))))
-
-(define-public cl-meta
-  (sbcl-package->cl-source-package sbcl-meta))
-
-(define-public ecl-meta
-  (sbcl-package->ecl-package sbcl-meta))
-
-(define-public sbcl-scribble
-  (let ((commit "4e5369bec6d5e4eed4f99c3dc009fce3e3427cd3")
-        (revision "0"))
-    (package
-      (name "sbcl-scribble")
-      (version "0.4.2")
-      (source
-        (origin
-          (method git-fetch)
-          (uri (git-reference
-                (url "https://gitlab.common-lisp.net/frideau/scribble")
-                (commit commit)))
-          (sha256
-           (base32 "056qi6vw9bk19s42mapyg55mimhhvhlwgny080v9mhv4fhnqi196"))
-          (file-name (git-file-name name commit))))
-      (build-system asdf-build-system/sbcl)
-      (native-inputs
-        (list sbcl-babel))
-      (inputs
-        (list sbcl-fare-utils
-              ;; sbcl-fare-matcher
-              sbcl-fare-memoization
-              sbcl-fare-quasiquote
-              sbcl-meta
-              sbcl-named-readtables))
-      (home-page "https://gitlab.common-lisp.net/frideau/scribble")
-      (synopsis "SCRibe-like reader extension for Common Lisp")
-      (description "SCRibe-like reader extension for Common Lisp.")
-      (license license:llgpl))))
-
-(define-public cl-scribble
-  (sbcl-package->cl-source-package sbcl-scribble))
-
-(define-public ecl-scribble
-  (sbcl-package->ecl-package sbcl-scribble))
-
diff --git a/gn/packages/lmm.scm b/gn/packages/lmm.scm
index 0b6ad5b..334188f 100644
--- a/gn/packages/lmm.scm
+++ b/gn/packages/lmm.scm
@@ -42,29 +42,6 @@
   #:use-module (srfi srfi-1))
 
 
-(define-public r-lmmlite
-  (package
-    (name "r-lmmlite")
-    (version "0.1-11")
-    (source (origin
-              ;; We use the git reference, because there's no CRAN package (yet)
-              (method git-fetch)
-              (uri (git-reference
-                    (url "https://github.com/kbroman/lmmlite.git")
-                    (commit "7c0d6316e10b4c2e4384a495e437698d57a4df4a")))
-              (file-name (string-append name "-" version "-checkout"))
-              (sha256
-               (base32
-                "0ka55frvwi1xmkflflg6kgpf5qrxhrl2gmfyhryygb0ghlamlani"))))
-    (build-system r-build-system)
-    (propagated-inputs
-     `(("r-rcppeigen" ,r-rcppeigen)))
-    (synopsis "R/lmmlite")
-    (description
-     "R/lmmlite")
-    (home-page "https://github.com/kbroman/")
-    (license license:asl2.0)))
-
 (define-public r-emma ; guix potential candidate (not in CRAN)
   (package
    (name "r-emma")
diff --git a/gn/packages/machine-learning.scm b/gn/packages/machine-learning.scm
index 541b3b6..49039c2 100644
--- a/gn/packages/machine-learning.scm
+++ b/gn/packages/machine-learning.scm
@@ -9,27 +9,10 @@
   #:use-module (gnu packages graphviz)
   #:use-module (gnu packages python-science)
   #:use-module (gnu packages check)
+  #:use-module (gnu packages python-build)
   #:use-module (gnu packages python-check)
   #:use-module (gnu packages sphinx)
-  #:use-module (gnu packages python-web)
-  #:use-module (past packages python27))
-
-(define-public tensorflow-native
-  (package
-    (inherit tensorflow-lite)
-    (name "tensorflow-native")
-    (arguments
-     (substitute-keyword-arguments (package-arguments tensorflow-lite)
-       ((#:substitutable? _ #f) #f)
-       ((#:configure-flags flags)
-        `(cons
-           "-Dtensorflow_OPTIMIZE_FOR_NATIVE_ARCH=ON"
-           (delete "-Dtensorflow_OPTIMIZE_FOR_NATIVE_ARCH=OFF"
-                   ,flags)))))))
-
-(define-public tensowflow-native-instead-of-tensorflow
-  (package-input-rewriting/spec `(("tensorflow" . ,(const tensorflow-native)))))
-
+  #:use-module (gnu packages python-web))
 
 (define-public python-keras-applications
   (package
@@ -57,7 +40,6 @@
 models for use with the Keras deep learning framework.")
     (license license:expat)))
 
-
 (define-public python-keras-preprocessing
   (package
     (name "python-keras-preprocessing")
@@ -70,6 +52,7 @@ models for use with the Keras deep learning framework.")
         (base32
          "1r98nm4k1svsqjyaqkfk23i31bl1kcfcyp7094yyj3c43phfp3as"))))
     (build-system python-build-system)
+    (arguments (list #:tests? #f))
     (propagated-inputs
      (list python-numpy python-six))
     (native-inputs
@@ -87,7 +70,6 @@ module of the Keras deep learning library.  It provides utilities for working
 with image data, text data, and sequence data.")
     (license license:expat)))
 
-
 (define-public python-keras-no-tests
   (package
     (name "python-keras-no-tests")
@@ -152,7 +134,8 @@ with image data, text data, and sequence data.")
            (lambda _
              (delete-file "keras/backend/theano_backend.py")
              (delete-file "keras/backend/cntk_backend.py")))
-         (delete 'check))))
+         (delete 'check)
+         (delete 'sanity-check))))
     (propagated-inputs
      (list python-h5py
            python-keras-applications
@@ -172,7 +155,6 @@ with image data, text data, and sequence data.")
            python-pytest-cov
            python-pytest-timeout
            python-pytest-xdist
-           python-pyux
            python-sphinx
            python-requests))
     (home-page "https://keras.io/")
diff --git a/gn/packages/mail.scm b/gn/packages/mail.scm
new file mode 100644
index 0000000..dc2f2a3
--- /dev/null
+++ b/gn/packages/mail.scm
@@ -0,0 +1,20 @@
+(define-module (gn packages mail)
+  #:use-module ((guix licenses) #:prefix license:)
+  #:use-module (guix gexp)
+  #:use-module (guix packages)
+  #:use-module (guix utils)
+  #:use-module (gnu packages)
+  #:use-module (gnu packages mail))
+
+(define-public opensmtpd-patched
+  (package
+    (inherit opensmtpd)
+    (name "opensmtpd-patched")
+    (source
+     (origin
+       (inherit (package-source opensmtpd))
+       (patches (search-patches "opensmtpd-gn-fixes.patch"))))
+    (synopsis "Lightweight SMTP daemon (with GN patches)")
+    (description
+     "OpenSMTPD with patches for missing grp.h include, TLS option
+parsing fix, and timezone fallback for systems without tm_gmtoff.")))
diff --git a/gn/packages/maths.scm b/gn/packages/maths.scm
index 7dfb896..6f7091c 100644
--- a/gn/packages/maths.scm
+++ b/gn/packages/maths.scm
@@ -4,135 +4,9 @@
   #:use-module (guix download)
   #:use-module (guix utils)
   #:use-module (guix gexp)
-  #:use-module (gnu packages gcc)
-  #:use-module (gnu packages gperf)
   #:use-module (gnu packages maths)
-  #:use-module (gnu packages texinfo)
-  #:use-module (gn packages gnulib)
   #:use-module (srfi srfi-1))
 
-(define-public octave-3.4.3
-  (package
-    (inherit octave-cli)
-    (name "octave")
-    (version "3.4.3")
-    (source
-      (origin
-        (method url-fetch)
-        (uri (string-append "mirror://gnu/octave/octave-"
-                            version ".tar.gz"))
-        (sha256
-         (base32
-          "04lh3crzwpramvfvxq34n2r29pmfl37rssj853nz9a3pyq7wrrir"))
-        (patches (search-patches "gnulib-gets.patch"
-                                 "octave-nested-class.patch"))))
-    (arguments
-     (substitute-keyword-arguments (package-arguments octave-cli)
-       ((#:configure-flags cf)
-        `(cons "--enable-docs=no" ; docs fail to build
-               ,cf))
-       ((#:tests? _ #f) #f) ; tests hang
-       ((#:phases phases)
-        `(modify-phases ,phases
-           (add-after 'unpack 'patch-configure-script
-             (lambda _
-               (substitute* '("configure"
-                              "src/DLD-FUNCTIONS/__delaunayn__.cc"
-                              "src/DLD-FUNCTIONS/__voronoi__.cc"
-                              "src/DLD-FUNCTIONS/convhulln.cc")
-                 (("qhull/qhull.h") "libqhull/libqhull.h")
-                 (("qhull/qhull_a.h") "libqhull/qhull_a.h"))
-               #t))
-           (add-after 'unpack 'update-gnulib
-             (lambda* (#:key inputs #:allow-other-keys)
-               (let ((gnulib (assoc-ref inputs "gnulib")))
-                 (install-file (string-append gnulib "/lib/fseeko.c") "libgnu")
-                 #t)))
-           (replace 'configure-makeinfo
-             (lambda* (#:key inputs #:allow-other-keys)
-               (substitute* "src/help.cc"
-                 (("\"makeinfo\"")
-                  (string-append
-                    "\"" (assoc-ref inputs "texinfo") "/bin/makeinfo\"")))
-               #t))))))
-    (native-inputs
-     `(("gnulib" ,(package-source gnulib))
-       ("gcc-5" ,gcc-5)
-       ,@(fold alist-delete (package-native-inputs octave-cli)
-               '("lzip"))))
-    (inputs
-     `(("glpk" ,glpk-4.48)
-       ("gperf" ,gperf)
-       ,@(fold alist-delete (package-inputs octave-cli)
-               ;; suitesparse provides cholmod_common_struct, may need older version
-               '("glpk" "suitesparse"))))))
-
-;; 4.49 is the last version with _glp_lpx_simplex exported
-;; 4.49 is the version where all lpx_ routines were removed
-(define-public glpk-4.48
-  (package
-    (inherit glpk)
-    (version "4.48")
-    (source
-     (origin
-      (method url-fetch)
-      (uri (string-append "mirror://gnu/glpk/glpk-"
-                          version ".tar.gz"))
-      (sha256
-       (base32
-        "1cddqsdcfwavdklg7hsfifppsry81dx3c17wzk6r22mjjpwcihmb"))))))
-
-(define-public suitesparse-3.5.0
-  (package
-    (inherit suitesparse)
-    (version "3.5.0")
-    (source
-     (origin
-       (method url-fetch)
-       (uri (string-append
-             "http://faculty.cse.tamu.edu/davis/SuiteSparse/SuiteSparse-"
-             version ".tar.gz"))
-       (sha256
-        (base32
-         "0npn7c1j5qag5m2r0cmh3bwc42c1jk8k2yg2cfyxlcrp0h7wn4rc"))))
-    (arguments
-     (substitute-keyword-arguments (package-arguments suitesparse)
-       ((#:phases phases)
-        `(modify-phases ,phases
-           (add-after 'unpack 'unpack-metis
-             (lambda* (#:key inputs #:allow-other-keys)
-               (let ((metis (assoc-ref inputs "metis-source")))
-                 (invoke "tar" "xvf" metis)
-                 ;; backported from 4.0.3
-                 (substitute* (find-files "metis-4.0")
-                              (("log2") "ilog2")))
-               #t))
-           (add-after 'unpack 'fix-source
-             (lambda _
-               (substitute* "UFconfig/Makefile"
-                 (("Lib/") ""))
-               ;; octave-3.4.3 expects it to be built with -fPIC
-               (substitute* "UFconfig/UFconfig.mk"
-                 (("-O3") "-O3 -fPIC"))
-               #t))
-           (add-before 'install 'prepare-directories
-             (lambda* (#:key outputs #:allow-other-keys)
-               (let ((out (assoc-ref outputs "out")))
-                 (mkdir-p (string-append out "/lib"))
-                 (mkdir-p (string-append out "/include")))
-               #t))))))
-    (native-inputs
-     `(("metis-source" ,(origin
-                          (method url-fetch)
-                          (uri "http://glaros.dtc.umn.edu/gkhome/fetch/sw/metis/OLD/metis-4.0.1.tar.gz")
-                          (sha256
-                           (base32
-                            "0lnkdfdrmmyy67h356bgdc06acvmcr26av9kdvqlws12znrr5iv0"))))
-       ,@(package-native-inputs suitesparse)))
-    (inputs
-     `(,@(fold alist-delete (package-inputs suitesparse)
-               '("metis"))))))
-
 (define-public gsl-x86-64-v2
   (package/inherit gsl
     (name "gsl-x86-64-v2")
@@ -150,6 +24,7 @@
        ((#:tests? _ #t) #f)
        ((#:phases phases #~%standard-phases)
         #~(modify-phases #$phases
+            (delete 'move-static-library)
             (add-after 'install 'remove-extra-files
               (lambda _
                 (delete-file-recursively (string-append #$output "/bin"))
@@ -175,6 +50,7 @@
        ((#:tests? _ #t) #f)
        ((#:phases phases #~%standard-phases)
         #~(modify-phases #$phases
+            (delete 'move-static-library)
             (add-after 'install 'remove-extra-files
               (lambda _
                 (delete-file-recursively (string-append #$output "/bin"))
@@ -201,6 +77,7 @@
        ((#:tests? _ #t) #f)
        ((#:phases phases #~%standard-phases)
         #~(modify-phases #$phases
+            (delete 'move-static-library)
             (add-after 'install 'remove-extra-files
               (lambda _
                 (delete-file-recursively (string-append #$output "/bin"))
@@ -218,6 +95,7 @@
      (substitute-keyword-arguments (package-arguments gsl)
        ((#:phases phases #~%standard-phases)
         #~(modify-phases #$phases
+            (delete 'move-static-library)
             (add-after 'install 'install-optimized-libraries
               (lambda* (#:key inputs outputs #:allow-other-keys)
                 (let ((hwcaps "/lib/glibc-hwcaps"))
diff --git a/gn/packages/mouse-longevity.scm b/gn/packages/mouse-longevity.scm
deleted file mode 100644
index f11a7b9..0000000
--- a/gn/packages/mouse-longevity.scm
+++ /dev/null
@@ -1,87 +0,0 @@
-;;; guix-bioinformatics --- Bioinformatics packages for GNU Guix
-;;; Copyright © 2024 jgart <jgart@dismail.de>
-;;;
-;;; This file is part of guix-bioinformatics.
-;;;
-;;; genenetwork-machines is free software: you can redistribute it
-;;; and/or modify it under the terms of the GNU General Public License
-;;; as published by the Free Software Foundation, either version 3 of
-;;; the License, or (at your option) any later version.
-;;;
-;;; genenetwork-machines is distributed in the hope that it will be
-;;; useful, but WITHOUT ANY WARRANTY; without even the implied
-;;; warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
-;;; See the GNU General Public License for more details.
-;;;
-;;; You should have received a copy of the GNU General Public License
-;;; along with genenetwork-machines.  If not, see
-;;; <https://www.gnu.org/licenses/>.
-
-(define-module (gn packages mouse-longevity)
-  #:use-module (guix)
-  #:use-module (gnu)
-  #:use-module (gnu services shepherd)
-  #:use-module (gn services rshiny)
-  #:use-module (guix git-download)
-  #:use-module (guix modules)
-  #:use-module (guix records)
-  #:use-module (srfi srfi-1)
-  #:use-module (ice-9 match)
-  #:use-module (gnu packages cran)
-  #:use-module (gnu packages statistics)
-  #:use-module ((guix licenses) #:prefix license:)
-  #:use-module (guix build-system trivial)
-  #:use-module ((gnu packages admin) #:select (shepherd))
-  #:use-module ((gnu packages web) #:select (nginx)))
-
-(define-public mouse-longevity-app
-  (let ((commit "8a7fdd353e1babcdc3c0453bdfba2aa0dead7c3f")
-        (revision "2"))
-    (package
-      (name "mouse-longevity-app")
-      (version (git-version "0.0.0" revision commit))
-      (source (origin
-                (method git-fetch)
-                (uri (git-reference
-                      (url "https://git.genenetwork.org/mouse-longevity-app/")
-                      (commit commit)))
-                (file-name (git-file-name name version))
-                (sha256
-                 (base32 "1bmiq9xmsq8wgxv3nqg3r2j1kwy2m6pw8agapj31agbyw81agyna"))))
-      (build-system trivial-build-system)
-      (arguments
-       (list #:modules '((guix build utils))
-             #:builder
-             #~(begin
-                 (use-modules (guix build utils))
-                 (let* ((source    (assoc-ref %build-inputs "source"))
-                        (targetdir (string-append #$output "/share/" #$name))
-                        (app       (string-append #$output "/bin/" #$name))
-                        (Rbin      (search-input-file %build-inputs "/bin/Rscript")))
-                   (copy-recursively source targetdir)
-                   (mkdir-p (string-append #$output "/bin"))
-                   (call-with-output-file app
-                     (lambda (port)
-                       (format port
-                               "#!~a
-library(shiny)
-setwd(\"~a\")
-runApp(launch.browser=0, port=3979)~%\n"
-                               Rbin targetdir)))
-                   (chmod app #o555)))))
-      (propagated-inputs
-       (list r
-             r-ggplot2
-             r-dplyr
-             r-plotly
-             r-shinydashboard
-             ;; TODO: https://ci.genenetwork.org/jobs/genenetwork3/581
-             ;; r-shinydashboardplus
-             r-shinyjs
-             r-shiny))
-      (home-page "https://github.com/Dashbrook/Mouse_Longevity_app/")
-      (synopsis "R shiny app to visualize mouse lifespan data")
-      (description
-       "This package provides an R shiny app to visualize mouse strain
-longevity data.")
-      (license license:gpl3+))))
diff --git a/gn/packages/node.scm b/gn/packages/node.scm
index 4e12781..76a373a 100644
--- a/gn/packages/node.scm
+++ b/gn/packages/node.scm
@@ -22,21 +22,17 @@
          (base32
           "0yclfxrfxlq7daxjfw40y37gbad3y4p4ia79wgycq4g6lrhqvlww"))))
     (build-system node-build-system)
-    (arguments '(#:tests? #f))
-    (native-inputs
-     `(
-       ;("node-events" ,node-events)
-       ;("node-jshint" ,node-jshint)
-       ;("node-knox" ,node-knox)
-       ;("node-mr" ,node-mr)
-       ;("node-opener" ,node-opener)
-       ;("node-q" ,node-q)
-       ;("node-q-io" ,node-q-io)
-       ;("node-saucelabs" ,node-saucelabs)
-       ;("node-wd" ,node-wd)
-       ;("node-weak-map" ,node-weak-map)
-       ;("node-benchmark" ,node-benchmark)
-       ))
+    (arguments
+     '(#:tests? #f
+       #:phases
+       (modify-phases %standard-phases
+         (add-before 'configure 'remove-dev-dependencies
+           (lambda _
+             (invoke "node" "-e" "
+var p=JSON.parse(require('fs').readFileSync('package.json'));
+delete p.devDependencies;
+if(p.dependencies)Object.keys(p.dependencies).forEach(function(k){try{require.resolve(k)}catch(e){delete p.dependencies[k]}});
+require('fs').writeFileSync('package.json',JSON.stringify(p,null,2));"))))))
     (home-page "https://github.com/kriskowal/asap")
     (synopsis "High-priority task queue for Node.js and browsers")
     (description "High-priority task queue for Node.js and browsers.")
@@ -67,6 +63,13 @@
          ;    ;; make build
          ;    (invoke "make" "build-bundle")
          ;    ))
+         (add-before 'configure 'remove-dev-dependencies
+           (lambda _
+             (invoke "node" "-e" "
+var p=JSON.parse(require('fs').readFileSync('package.json'));
+delete p.devDependencies;
+if(p.dependencies)Object.keys(p.dependencies).forEach(function(k){try{require.resolve(k)}catch(e){delete p.dependencies[k]}});
+require('fs').writeFileSync('package.json',JSON.stringify(p,null,2));")))
          (delete 'build)
          )
        ))
@@ -119,125 +122,6 @@
     (description "Async is a utility module which provides straight-forward, powerful functions for working with asynchronous JavaScript.")
     (license license:expat)))
 
-(define-public node-async-2
-  (package
-    (inherit node-async)
-    (name "node-async")
-    (version "2.6.3")
-    (source
-      (origin
-        (method git-fetch)
-        (uri (git-reference
-               (url "https://github.com/caolan/async")
-               (commit (string-append "v" version))))
-        (file-name (git-file-name name version))
-        (sha256
-         (base32
-          "0lxr8m00f7723p5qpg5b5wlqv5a0y9a301r6rmhy1cv64jnznpxk"))))
-    (arguments
-     '(#:tests? #f
-       #:phases
-       (modify-phases %standard-phases
-         ;(replace 'build
-         ;  (lambda _
-         ;    ;; make build
-         ;    (invoke "make" "build-bundle")
-         ;    ))
-         (delete 'build)))) ; Runs tests by default during 'make all'.
-    (inputs
-     `(
-       ;("node-lodash" ,node-lodash)
-       ;("node-lodash-es" ,node-lodash-es)
-       ))
-    (native-inputs
-     `(
-       ;("node-babel-cli" ,node-babel-cli)
-       ;("node-babel-core" ,node-babel-core)
-       ;("node-babel-plugin-add-module-exports" ,node-babel-plugin-add-module-exports)
-       ;("node-babel-plugin-instanbul" ,node-babel-plugin-instanbul)
-       ;("node-babel-plugin-transform-es2015-modules-commonjs" ,babel-plugin-transform-es2015-modules-commonjs)
-       ;("node-babel-preset-es2015" ,node-babel-preset-es2015)
-       ;("node-babel-preset-es2017" ,node-babel-preset-es2017)
-       ;("node-babelify" ,noce-babelify)
-       ;("node-benchmark" ,node-benchmark)
-       ;("node-bluebird" ,node-bluebird)
-       ;("node-browserify" ,node-browserify)
-       ;("node-chai" ,node-chai)
-       ;("node-cheerio" ,noce-cheerio)
-       ;("node-coveralls" ,node-coveralls)
-       ;("node-es6-promise" ,node-es6-promise)
-       ;("node-eslint" ,node-eslint)
-       ;("node-fs-extra" ,node-fs-extra)
-       ;("node-gh-pages-deploy" ,node-gh-pages-deploy)
-       ;("node-jsdoc" ,node-jsdoc)
-       ;("node-karma" ,node-karma)
-       ;("node-karma-browserify" ,node-karma-browserify)
-       ;("node-karma-firefox-launcher" ,node-karma-firefox-launcher)
-       ;("node-karma-mocha" ,node-karma-mocha)
-       ;("node-karma-mocha-reporter" ,node-karma-mocha-reporter)
-       ;("node-mocha" ,node-mocha)
-       ;("node-native-promises-only" ,node-native-promises-only)
-       ;("node-nyc" ,node-nyc)
-       ;("node-rimraf" ,node-rimraf)
-       ;("node-rollup" ,node-rollup)
-       ;("node-rollup-plugin-node-resolve" ,node-rollup-plugin-node-resolve)
-       ;("node-rollup-plugin-npm" ,node-rollup-plugin-npm)
-       ;("node-rsvp" ,node-rsvp)
-       ;("node-semver" ,node-semver)
-       ;("node-yargs" ,node-yargs)
-       ;("uglify-js" ,uglify-js)
-       ))))
-
-(define-public node-async-1
-  (package
-    (inherit node-async)
-    (name "node-async")
-    (version "1.5.2")
-    (source
-      (origin
-        (method git-fetch)
-        (uri (git-reference
-               (url "https://github.com/caolan/async")
-               (commit (string-append "v" version))))
-        (file-name (git-file-name name version))
-        (sha256
-         (base32
-          "17ai1ymw6i13zpls4hj267qmf7wwrdlf8zqvkip6q4kvrjmxhhgq"))))
-    (arguments
-     '(#:tests? #f
-       #:phases
-       (modify-phases %standard-phases
-         (replace 'build
-           (lambda _
-             (invoke "make" "clean")
-             (invoke "make" "build"))))))
-    (native-inputs
-     `(
-       ;("node-benchmark" ,node-benchmark)
-       ;("node-bluebird" ,node-bluebird)
-       ;("node-chai" ,node-chai)
-       ;("node-coveralls" ,node-coveralls)
-       ;("node-es6-promise" ,node-es6-promise)
-       ;("node-jscs" ,node-jscs)
-       ;("node-jshint" ,node-jshint)
-       ;("node-karma" ,node-karma)
-       ;("node-karma-browserify" ,node-karma-browserify)
-       ;("node-karma-firefox-launcher" ,node-karma-firefox-launcher)
-       ;("node-karma-mocha" ,node-karma-mocha)
-       ;("node-karma-mocha-reporter" ,node-karma-mocha-reporter)
-       ;("node-lodash" ,node-lodash)
-       ;("node-mkdirp" ,node-mkdirp)
-       ;("node-mocha" ,node-mocha)
-       ;("node-native-promises-only" ,node-native-promises-only)
-       ;("node-nodeunit" ,node-nodeunit)
-       ;("node-nyc" ,node-nyc)
-       ;("node-rsvp" ,node-rsvp)
-       ;("node-semver" ,node-semver)
-       ("node-uglify-js" ,node-uglify-js)
-       ;("node-xyz" ,node-xyz)
-       ;("node-yargs" ,node-yargs)
-       ))))
-
 (define-public node-closure-library
   (package
     (name "node-closure-library")
@@ -253,7 +137,17 @@
          (base32
           "1wiknd263wsn7b8dn3i2lv6m1m9b8wvb8r4x4cm3acpnk9rniy09"))))
     (build-system node-build-system)
-    (arguments '(#:tests? #f))
+    (arguments
+     '(#:tests? #f
+       #:phases
+       (modify-phases %standard-phases
+         (add-before 'configure 'remove-dev-dependencies
+           (lambda _
+             (invoke "node" "-e" "
+var p=JSON.parse(require('fs').readFileSync('package.json'));
+delete p.devDependencies;
+if(p.dependencies)Object.keys(p.dependencies).forEach(function(k){try{require.resolve(k)}catch(e){delete p.dependencies[k]}});
+require('fs').writeFileSync('package.json',JSON.stringify(p,null,2));"))))))
     (inputs
      `(
        ("node-promise" ,node-promise)
@@ -284,7 +178,17 @@ Google Maps, and others.")
          (base32
           "1r1v7l6nkmdi81qm670vz33qz5h2agxvd990km7afc4syd2qqc9l"))))
     (build-system node-build-system)
-    (arguments '(#:tests? #f))
+    (arguments
+     '(#:tests? #f
+       #:phases
+       (modify-phases %standard-phases
+         (add-before 'configure 'remove-dev-dependencies
+           (lambda _
+             (invoke "node" "-e" "
+var p=JSON.parse(require('fs').readFileSync('package.json'));
+delete p.devDependencies;
+if(p.dependencies)Object.keys(p.dependencies).forEach(function(k){try{require.resolve(k)}catch(e){delete p.dependencies[k]}});
+require('fs').writeFileSync('package.json',JSON.stringify(p,null,2));"))))))
     (inputs
      `(("node-color-convert" ,node-color-convert)
        ("node-color-string" ,node-color-string)))
@@ -313,7 +217,17 @@ Google Maps, and others.")
          (base32
           "0gr892xvcn24ph2wdxbh7g5vpv644hjiyhhxh7d1jwzr2wj5zxkk"))))
     (build-system node-build-system)
-    (arguments '(#:tests? #f))
+    (arguments
+     '(#:tests? #f
+       #:phases
+       (modify-phases %standard-phases
+         (add-before 'configure 'remove-dev-dependencies
+           (lambda _
+             (invoke "node" "-e" "
+var p=JSON.parse(require('fs').readFileSync('package.json'));
+delete p.devDependencies;
+if(p.dependencies)Object.keys(p.dependencies).forEach(function(k){try{require.resolve(k)}catch(e){delete p.dependencies[k]}});
+require('fs').writeFileSync('package.json',JSON.stringify(p,null,2));"))))))
     (inputs
      `(("node-color-name" ,node-color-name)))
     (native-inputs
@@ -341,7 +255,17 @@ Google Maps, and others.")
          (base32
           "0nzg0ayvdqvnn7v0v2dnfj7myqca9ylndnqa6bqkj0l6553i1w1r"))))
     (build-system node-build-system)
-    (arguments '(#:tests? #f))
+    (arguments
+     '(#:tests? #f
+       #:phases
+       (modify-phases %standard-phases
+         (add-before 'configure 'remove-dev-dependencies
+           (lambda _
+             (invoke "node" "-e" "
+var p=JSON.parse(require('fs').readFileSync('package.json'));
+delete p.devDependencies;
+if(p.dependencies)Object.keys(p.dependencies).forEach(function(k){try{require.resolve(k)}catch(e){delete p.dependencies[k]}});
+require('fs').writeFileSync('package.json',JSON.stringify(p,null,2));"))))))
     (inputs
      `(("node-color-name" ,node-color-name)
        ("node-simple-swizzle" ,node-simple-swizzle)))
@@ -367,7 +291,17 @@ Google Maps, and others.")
          (base32
           "1ih98ycxjprlxn72ygqgkgcp9wkpd20apndjd11270qyyifvkr8y"))))
     (build-system node-build-system)
-    (arguments '(#:tests? #f))
+    (arguments
+     '(#:tests? #f
+       #:phases
+       (modify-phases %standard-phases
+         (add-before 'configure 'remove-dev-dependencies
+           (lambda _
+             (invoke "node" "-e" "
+var p=JSON.parse(require('fs').readFileSync('package.json'));
+delete p.devDependencies;
+if(p.dependencies)Object.keys(p.dependencies).forEach(function(k){try{require.resolve(k)}catch(e){delete p.dependencies[k]}});
+require('fs').writeFileSync('package.json',JSON.stringify(p,null,2));"))))))
     (native-inputs
      `(
        ;("node-eslint" ,node-eslint)
@@ -393,7 +327,17 @@ Google Maps, and others.")
          (base32
           "0rv01da38hkxyx4q8gs31v0sj9xsclfwq5n2h43nyracs23mqi8r"))))
     (build-system node-build-system)
-    (arguments '(#:tests? #f))
+    (arguments
+     '(#:tests? #f
+       #:phases
+       (modify-phases %standard-phases
+         (add-before 'configure 'remove-dev-dependencies
+           (lambda _
+             (invoke "node" "-e" "
+var p=JSON.parse(require('fs').readFileSync('package.json'));
+delete p.devDependencies;
+if(p.dependencies)Object.keys(p.dependencies).forEach(function(k){try{require.resolve(k)}catch(e){delete p.dependencies[k]}});
+require('fs').writeFileSync('package.json',JSON.stringify(p,null,2));"))))))
     (inputs
      `(("node-color" ,node-color)
        ("node-text-hex" ,node-text-hex)))
@@ -423,7 +367,17 @@ Google Maps, and others.")
          (base32
           "10lwicm3kppbnwkcl4z6v6ix0dp5m1ny88wmli8084f3wxb1j3ds"))))
     (build-system node-build-system)
-    (arguments '(#:tests? #f))
+    (arguments
+     '(#:tests? #f
+       #:phases
+       (modify-phases %standard-phases
+         (add-before 'configure 'remove-dev-dependencies
+           (lambda _
+             (invoke "node" "-e" "
+var p=JSON.parse(require('fs').readFileSync('package.json'));
+delete p.devDependencies;
+if(p.dependencies)Object.keys(p.dependencies).forEach(function(k){try{require.resolve(k)}catch(e){delete p.dependencies[k]}});
+require('fs').writeFileSync('package.json',JSON.stringify(p,null,2));"))))))
     (native-inputs
      `(
        ;("node-eslint" ,node-eslint)
@@ -453,7 +407,17 @@ Google Maps, and others.")
          (base32
           "1w3kf0g66sq56y6q191w1am99fwhmlfjgc6kmffmphcfl6gkw9ax"))))
     (build-system node-build-system)
-    (arguments '(#:tests? #f))
+    (arguments
+     '(#:tests? #f
+       #:phases
+       (modify-phases %standard-phases
+         (add-before 'configure 'remove-dev-dependencies
+           (lambda _
+             (invoke "node" "-e" "
+var p=JSON.parse(require('fs').readFileSync('package.json'));
+delete p.devDependencies;
+if(p.dependencies)Object.keys(p.dependencies).forEach(function(k){try{require.resolve(k)}catch(e){delete p.dependencies[k]}});
+require('fs').writeFileSync('package.json',JSON.stringify(p,null,2));"))))))
     (inputs
      `(("node-commander" ,node-commander)
        ("node-http-proxy" ,node-http-proxy)
@@ -481,39 +445,6 @@ implementing components such as reverse proxies and load balancers.  By wrapping
 functionality to JupyterHub deployments.")
     (license license:bsd-3)))
 
-(define-public node-configurable-http-proxy-3
-  (package
-    (inherit node-configurable-http-proxy)
-    (name "node-configurable-http-proxy")
-    (version "3.1.1")
-    (source
-      (origin
-        (method git-fetch)
-        (uri (git-reference
-               (url "https://github.com/jupyterhub/configurable-http-proxy")
-               (commit version)))
-        (file-name (git-file-name name version))
-        (sha256
-         (base32
-          "0rzyppyzbgmmkxa5v17rpvlh27ygr0wi5cnn01ajdqn9cfc70j4f"))))
-    (arguments '(#:tests? #f))
-    (inputs
-     `(("node-commander" ,node-commander)
-       ("node-http-proxy" ,node-http-proxy)
-       ("node-lynx" ,node-lynx)
-       ("node-strftime" ,node-strftime)
-       ("node-winston" ,node-winston-2)))
-    (native-inputs
-     `(
-       ;("node-jasmine" ,node-jasmine)
-       ;("node-jshint" ,node-jshint)
-       ;("node-nyc" ,node-nyc)
-       ;("node-prettier" ,node-prettier)
-       ;("node-request" ,node-request)
-       ;("node-request-promise-native" ,node-request-promise-native)
-       ;("node-ws" ,node-ws)
-       ))))
-
 (define-public node-core-util-is
   (package
     (name "node-core-util-is")
@@ -529,7 +460,17 @@ functionality to JupyterHub deployments.")
          (base32
           "11avvk8bp9sp8qrn9fms3d562sc7bsyr3caqn1sc140f0zijh6rz"))))
     (build-system node-build-system)
-    (arguments '(#:tests? #f))
+    (arguments
+     '(#:tests? #f
+       #:phases
+       (modify-phases %standard-phases
+         (add-before 'configure 'remove-dev-dependencies
+           (lambda _
+             (invoke "node" "-e" "
+var p=JSON.parse(require('fs').readFileSync('package.json'));
+delete p.devDependencies;
+if(p.dependencies)Object.keys(p.dependencies).forEach(function(k){try{require.resolve(k)}catch(e){delete p.dependencies[k]}});
+require('fs').writeFileSync('package.json',JSON.stringify(p,null,2));"))))))
     ;(native-inputs
     ; `(("node-tap" ,node-tap)))
     (home-page "https://github.com/isaacs/core-util-is")
@@ -552,7 +493,17 @@ functionality to JupyterHub deployments.")
          (base32
           "04ia9sqg8s50wwralpdqlmni4bzh0225a6pp159ivfij9zcw47ss"))))
     (build-system node-build-system)
-    (arguments '(#:tests? #f))
+    (arguments
+     '(#:tests? #f
+       #:phases
+       (modify-phases %standard-phases
+         (add-before 'configure 'remove-dev-dependencies
+           (lambda _
+             (invoke "node" "-e" "
+var p=JSON.parse(require('fs').readFileSync('package.json'));
+delete p.devDependencies;
+if(p.dependencies)Object.keys(p.dependencies).forEach(function(k){try{require.resolve(k)}catch(e){delete p.dependencies[k]}});
+require('fs').writeFileSync('package.json',JSON.stringify(p,null,2));"))))))
     ;(inputs
     ; `(("node-xregexp" ,node-xregexp)))
     (native-inputs
@@ -585,6 +536,13 @@ functionality to JupyterHub deployments.")
      '(#:tests? #f
        #:phases
        (modify-phases %standard-phases
+         (add-before 'configure 'remove-dev-dependencies
+           (lambda _
+             (invoke "node" "-e" "
+var p=JSON.parse(require('fs').readFileSync('package.json'));
+delete p.devDependencies;
+if(p.dependencies)Object.keys(p.dependencies).forEach(function(k){try{require.resolve(k)}catch(e){delete p.dependencies[k]}});
+require('fs').writeFileSync('package.json',JSON.stringify(p,null,2));")))
          (delete 'build)))) ; Runs tests by default during 'make all'.
     (inputs
      `(("node-colorspace" ,node-colorspace)
@@ -625,7 +583,17 @@ functionality to JupyterHub deployments.")
          (base32
           "0cxck167l6pv73imvgnz6rdrjdwym5p1sh6w37ayy6l19kpgj3gz"))))
     (build-system node-build-system)
-    (arguments '(#:tests? #f))
+    (arguments
+     '(#:tests? #f
+       #:phases
+       (modify-phases %standard-phases
+         (add-before 'configure 'remove-dev-dependencies
+           (lambda _
+             (invoke "node" "-e" "
+var p=JSON.parse(require('fs').readFileSync('package.json'));
+delete p.devDependencies;
+if(p.dependencies)Object.keys(p.dependencies).forEach(function(k){try{require.resolve(k)}catch(e){delete p.dependencies[k]}});
+require('fs').writeFileSync('package.json',JSON.stringify(p,null,2));"))))))
     (native-inputs
      `(
        ;("node-assume" ,node-assume)
@@ -653,7 +621,17 @@ functionality to JupyterHub deployments.")
          (base32
           "0hj37wxbw0ddfwrhkm9qx3qcziksz21ga07m7n608bica997djy9"))))
     (build-system node-build-system)
-    (arguments '(#:tests? #f))
+    (arguments
+     '(#:tests? #f
+       #:phases
+       (modify-phases %standard-phases
+         (add-before 'configure 'remove-dev-dependencies
+           (lambda _
+             (invoke "node" "-e" "
+var p=JSON.parse(require('fs').readFileSync('package.json'));
+delete p.devDependencies;
+if(p.dependencies)Object.keys(p.dependencies).forEach(function(k){try{require.resolve(k)}catch(e){delete p.dependencies[k]}});
+require('fs').writeFileSync('package.json',JSON.stringify(p,null,2));"))))))
     (native-inputs
      `(
        ;("node-assume" ,node-assume)
@@ -697,7 +675,17 @@ are some slight differences:
          (base32
           "1x5bpd55q1xagh4kzviy30skfiwb5qb2n39qbpwyd0sn0jl9fw51"))))
     (build-system node-build-system)
-    (arguments '(#:tests? #f))
+    (arguments
+     '(#:tests? #f
+       #:phases
+       (modify-phases %standard-phases
+         (add-before 'configure 'remove-dev-dependencies
+           (lambda _
+             (invoke "node" "-e" "
+var p=JSON.parse(require('fs').readFileSync('package.json'));
+delete p.devDependencies;
+if(p.dependencies)Object.keys(p.dependencies).forEach(function(k){try{require.resolve(k)}catch(e){delete p.dependencies[k]}});
+require('fs').writeFileSync('package.json',JSON.stringify(p,null,2));"))))))
     (native-inputs
      `(
        ;("node-benchmark" ,node-benchmark)
@@ -730,6 +718,13 @@ are some slight differences:
      '(#:tests? #f
        #:phases
        (modify-phases %standard-phases
+         (add-before 'configure 'remove-dev-dependencies
+           (lambda _
+             (invoke "node" "-e" "
+var p=JSON.parse(require('fs').readFileSync('package.json'));
+delete p.devDependencies;
+if(p.dependencies)Object.keys(p.dependencies).forEach(function(k){try{require.resolve(k)}catch(e){delete p.dependencies[k]}});
+require('fs').writeFileSync('package.json',JSON.stringify(p,null,2));")))
          (delete 'build)) ; 'npm run build' requires rollup
        ))
     (native-inputs
@@ -760,7 +755,17 @@ are some slight differences:
          (base32
           "1r0pgf3ra6wglqy8pvz61kjj5kx3f40ghpni3vbv8dy4jp7bpyyi"))))
     (build-system node-build-system)
-    (arguments '(#:tests? #f))
+    (arguments
+     '(#:tests? #f
+       #:phases
+       (modify-phases %standard-phases
+         (add-before 'configure 'remove-dev-dependencies
+           (lambda _
+             (invoke "node" "-e" "
+var p=JSON.parse(require('fs').readFileSync('package.json'));
+delete p.devDependencies;
+if(p.dependencies)Object.keys(p.dependencies).forEach(function(k){try{require.resolve(k)}catch(e){delete p.dependencies[k]}});
+require('fs').writeFileSync('package.json',JSON.stringify(p,null,2));"))))))
     (native-inputs
      `(
        ;("node-assume" ,node-assume)
@@ -788,7 +793,17 @@ are some slight differences:
          (base32
           "1h0fikr6wwrcbc3g1wrv5cn84qn7icby2v0wwybhwd7h0ih6g5nm"))))
     (build-system node-build-system)
-    (arguments '(#:tests? #f))
+    (arguments
+     '(#:tests? #f
+       #:phases
+       (modify-phases %standard-phases
+         (add-before 'configure 'remove-dev-dependencies
+           (lambda _
+             (invoke "node" "-e" "
+var p=JSON.parse(require('fs').readFileSync('package.json'));
+delete p.devDependencies;
+if(p.dependencies)Object.keys(p.dependencies).forEach(function(k){try{require.resolve(k)}catch(e){delete p.dependencies[k]}});
+require('fs').writeFileSync('package.json',JSON.stringify(p,null,2));"))))))
     (inputs
      `(("node-debug" ,node-debug)))
     (native-inputs
@@ -820,7 +835,17 @@ are some slight differences:
          (base32
           "1mgr7cm4smsrvx2jqlagsldz0h1mqc2by59qdhidcpkgbk7xj8h2"))))
     (build-system node-build-system)
-    (arguments '(#:tests? #f))
+    (arguments
+     '(#:tests? #f
+       #:phases
+       (modify-phases %standard-phases
+         (add-before 'configure 'remove-dev-dependencies
+           (lambda _
+             (invoke "node" "-e" "
+var p=JSON.parse(require('fs').readFileSync('package.json'));
+delete p.devDependencies;
+if(p.dependencies)Object.keys(p.dependencies).forEach(function(k){try{require.resolve(k)}catch(e){delete p.dependencies[k]}});
+require('fs').writeFileSync('package.json',JSON.stringify(p,null,2));"))))))
     (inputs
      `(("node-eventemitter3" ,node-eventemitter3)
        ("node-requires-port" ,node-requires-port)
@@ -861,7 +886,17 @@ such as reverse proxies and load balancers.")
          (base32
           "0j0w190b52ysizc3xl2pykbm3iln1x5yis3mb9hsyscv0174w047"))))
     (build-system node-build-system)
-    (arguments '(#:tests? #f))
+    (arguments
+     '(#:tests? #f
+       #:phases
+       (modify-phases %standard-phases
+         (add-before 'configure 'remove-dev-dependencies
+           (lambda _
+             (invoke "node" "-e" "
+var p=JSON.parse(require('fs').readFileSync('package.json'));
+delete p.devDependencies;
+if(p.dependencies)Object.keys(p.dependencies).forEach(function(k){try{require.resolve(k)}catch(e){delete p.dependencies[k]}});
+require('fs').writeFileSync('package.json',JSON.stringify(p,null,2));"))))))
     (native-inputs
      `(
        ;("node-coffee-script" ,node-coffee-script)
@@ -891,7 +926,17 @@ such as reverse proxies and load balancers.")
          (base32
           "0vpr89p5zx16jbqz9bhj22x8112v7hfn4nx1kz68mbczcild0p0s"))))
     (build-system node-build-system)
-    (arguments '(#:tests? #f))
+    (arguments
+     '(#:tests? #f
+       #:phases
+       (modify-phases %standard-phases
+         (add-before 'configure 'remove-dev-dependencies
+           (lambda _
+             (invoke "node" "-e" "
+var p=JSON.parse(require('fs').readFileSync('package.json'));
+delete p.devDependencies;
+if(p.dependencies)Object.keys(p.dependencies).forEach(function(k){try{require.resolve(k)}catch(e){delete p.dependencies[k]}});
+require('fs').writeFileSync('package.json',JSON.stringify(p,null,2));"))))))
     (native-inputs
      `(
        ;("node-ava" ,node-ava)
@@ -923,6 +968,13 @@ such as reverse proxies and load balancers.")
      '(#:tests? #f
        #:phases
        (modify-phases %standard-phases
+         (add-before 'configure 'remove-dev-dependencies
+           (lambda _
+             (invoke "node" "-e" "
+var p=JSON.parse(require('fs').readFileSync('package.json'));
+delete p.devDependencies;
+if(p.dependencies)Object.keys(p.dependencies).forEach(function(k){try{require.resolve(k)}catch(e){delete p.dependencies[k]}});
+require('fs').writeFileSync('package.json',JSON.stringify(p,null,2));")))
          (delete 'build)))) ; 'make' runs the tests by default.
     ;(native-inputs
     ; `(("node-tape" ,node-tape)))
@@ -946,7 +998,17 @@ such as reverse proxies and load balancers.")
          (base32
           "03513djgh0mp1lfi28gn1a72jx7b17hdb5p3y6pz127vd8afj3az"))))
     (build-system node-build-system)
-    (arguments '(#:tests? #f))
+    (arguments
+     '(#:tests? #f
+       #:phases
+       (modify-phases %standard-phases
+         (add-before 'configure 'remove-dev-dependencies
+           (lambda _
+             (invoke "node" "-e" "
+var p=JSON.parse(require('fs').readFileSync('package.json'));
+delete p.devDependencies;
+if(p.dependencies)Object.keys(p.dependencies).forEach(function(k){try{require.resolve(k)}catch(e){delete p.dependencies[k]}});
+require('fs').writeFileSync('package.json',JSON.stringify(p,null,2));"))))))
     (native-inputs
      `(
        ;("node-assume" ,node-assume)
@@ -972,7 +1034,18 @@ such as reverse proxies and load balancers.")
          (base32
           "1hp04cg3b59j3dpnvzixd5p6wpv34mj2pnq8wp60csv3p2s0qk4y"))))
     (build-system node-build-system)
-    (arguments '(#:tests? #f))
+    (arguments
+     '(#:tests? #f
+       #:phases
+       (modify-phases %standard-phases
+         (add-before 'configure 'remove-dev-dependencies
+           (lambda _
+             (invoke "node" "-e" "
+var p=JSON.parse(require('fs').readFileSync('package.json'));
+delete p.devDependencies;
+delete p.scripts;
+if(p.dependencies)Object.keys(p.dependencies).forEach(function(k){try{require.resolve(k)}catch(e){delete p.dependencies[k]}});
+require('fs').writeFileSync('package.json',JSON.stringify(p,null,2));"))))))
     (native-inputs
      `(
        ;("node-async" ,node-async)
@@ -1027,6 +1100,13 @@ such as reverse proxies and load balancers.")
      '(#:tests? #f
        #:phases
        (modify-phases %standard-phases
+         (add-before 'configure 'remove-dev-dependencies
+           (lambda _
+             (invoke "node" "-e" "
+var p=JSON.parse(require('fs').readFileSync('package.json'));
+delete p.devDependencies;
+if(p.dependencies)Object.keys(p.dependencies).forEach(function(k){try{require.resolve(k)}catch(e){delete p.dependencies[k]}});
+require('fs').writeFileSync('package.json',JSON.stringify(p,null,2));")))
          (delete 'build)))) ; 'build needs rimraf and babel.
     (inputs
      `(("node-colors" ,node-colors)
@@ -1056,14 +1136,24 @@ such as reverse proxies and load balancers.")
       (origin
         (method git-fetch)
         (uri (git-reference
-               (url "git://github.com/dscape/lynx.git")
+               (url "https://github.com/dscape/lynx.git")
                (commit (string-append "v" version))))
         (file-name (git-file-name name version))
         (sha256
          (base32
           "1l7pl8qm7kcafsafh8iyzb4cwh344kwlg6gp9ab0bmwaqby6vhzp"))))
     (build-system node-build-system)
-    (arguments '(#:tests? #f))
+    (arguments
+     '(#:tests? #f
+       #:phases
+       (modify-phases %standard-phases
+         (add-before 'configure 'remove-dev-dependencies
+           (lambda _
+             (invoke "node" "-e" "
+var p=JSON.parse(require('fs').readFileSync('package.json'));
+delete p.devDependencies;
+if(p.dependencies)Object.keys(p.dependencies).forEach(function(k){try{require.resolve(k)}catch(e){delete p.dependencies[k]}});
+require('fs').writeFileSync('package.json',JSON.stringify(p,null,2));"))))))
     (inputs
      `(("node-mersenne" ,node-mersenne)
        ("node-statsd-parser" ,node-statsd-parser)))
@@ -1093,6 +1183,13 @@ such as reverse proxies and load balancers.")
      '(#:tests? #f
        #:phases
        (modify-phases %standard-phases
+         (add-before 'configure 'remove-dev-dependencies
+           (lambda _
+             (invoke "node" "-e" "
+var p=JSON.parse(require('fs').readFileSync('package.json'));
+delete p.devDependencies;
+if(p.dependencies)Object.keys(p.dependencies).forEach(function(k){try{require.resolve(k)}catch(e){delete p.dependencies[k]}});
+require('fs').writeFileSync('package.json',JSON.stringify(p,null,2));")))
          (delete 'build)))) ; 'build needs rimraf and babel.
     (inputs
      `(("node-fn.name" ,node-fn.name)))
@@ -1122,7 +1219,17 @@ such as reverse proxies and load balancers.")
          (base32
           "00g4294ijw12mfq5jjicn9q2f6s4hgxmwb7vng09lzmbhhd8jss2"))))
     (build-system node-build-system)
-    (arguments '(#:tests? #f))
+    (arguments
+     '(#:tests? #f
+       #:phases
+       (modify-phases %standard-phases
+         (add-before 'configure 'remove-dev-dependencies
+           (lambda _
+             (invoke "node" "-e" "
+var p=JSON.parse(require('fs').readFileSync('package.json'));
+delete p.devDependencies;
+if(p.dependencies)Object.keys(p.dependencies).forEach(function(k){try{require.resolve(k)}catch(e){delete p.dependencies[k]}});
+require('fs').writeFileSync('package.json',JSON.stringify(p,null,2));"))))))
     ;(native-inputs
     ; `(("node-tap" ,node-tap)))
     (home-page "https://github.com/calvinmetcalf/process-nextick-args")
@@ -1145,7 +1252,17 @@ such as reverse proxies and load balancers.")
          (base32
           "1bwfmhvmj9mmkqawpqf09n4b1gnlmbvkjn9gfm2n8i51vsw12ffz"))))
     (build-system node-build-system)
-    (arguments '(#:tests? #f))
+    (arguments
+     '(#:tests? #f
+       #:phases
+       (modify-phases %standard-phases
+         (add-before 'configure 'remove-dev-dependencies
+           (lambda _
+             (invoke "node" "-e" "
+var p=JSON.parse(require('fs').readFileSync('package.json'));
+delete p.devDependencies;
+if(p.dependencies)Object.keys(p.dependencies).forEach(function(k){try{require.resolve(k)}catch(e){delete p.dependencies[k]}});
+require('fs').writeFileSync('package.json',JSON.stringify(p,null,2));"))))))
     (inputs
      `(("node-asap" ,node-asap)))
     (native-inputs
@@ -1180,7 +1297,17 @@ Google Maps, and others.")
          (base32
           "051ii93g03np6pnlmjkpqhikq1awqaybqbm85pz1x78wb8synkx0"))))
     (build-system node-build-system)
-    (arguments '(#:tests? #f))
+    (arguments
+     '(#:tests? #f
+       #:phases
+       (modify-phases %standard-phases
+         (add-before 'configure 'remove-dev-dependencies
+           (lambda _
+             (invoke "node" "-e" "
+var p=JSON.parse(require('fs').readFileSync('package.json'));
+delete p.devDependencies;
+if(p.dependencies)Object.keys(p.dependencies).forEach(function(k){try{require.resolve(k)}catch(e){delete p.dependencies[k]}});
+require('fs').writeFileSync('package.json',JSON.stringify(p,null,2));"))))))
     (native-inputs
      `(
        ;("node-assume" ,node-assume)
@@ -1208,7 +1335,17 @@ Google Maps, and others.")
          (base32
           "1j6gyqax3w675q1c8gxh2fmk9swkyplhkci96b2qxhkl1aads8qi"))))
     (build-system node-build-system)
-    (arguments '(#:tests? #f))
+    (arguments
+     '(#:tests? #f
+       #:phases
+       (modify-phases %standard-phases
+         (add-before 'configure 'remove-dev-dependencies
+           (lambda _
+             (invoke "node" "-e" "
+var p=JSON.parse(require('fs').readFileSync('package.json'));
+delete p.devDependencies;
+if(p.dependencies)Object.keys(p.dependencies).forEach(function(k){try{require.resolve(k)}catch(e){delete p.dependencies[k]}});
+require('fs').writeFileSync('package.json',JSON.stringify(p,null,2));"))))))
     (inputs
      `(("node-is-arrayish" ,node-is-arrayish)))
     (native-inputs
@@ -1244,6 +1381,13 @@ Google Maps, and others.")
      '(#:tests? #f
        #:phases
        (modify-phases %standard-phases
+         (add-before 'configure 'remove-dev-dependencies
+           (lambda _
+             (invoke "node" "-e" "
+var p=JSON.parse(require('fs').readFileSync('package.json'));
+delete p.devDependencies;
+if(p.dependencies)Object.keys(p.dependencies).forEach(function(k){try{require.resolve(k)}catch(e){delete p.dependencies[k]}});
+require('fs').writeFileSync('package.json',JSON.stringify(p,null,2));")))
          (delete 'build)))) ; build wants babel
     (inputs
      `(("node-enabled" ,node-enabled)
@@ -1271,7 +1415,7 @@ Google Maps, and others.")
       (origin
         (method git-fetch)
         (uri (git-reference
-               (url "git://github.com/samsonjs/strftime.git")
+               (url "https://github.com/samsonjs/strftime.git")
                (commit (string-append "v" version))))
         (file-name (git-file-name name version))
         (sha256
@@ -1282,6 +1426,13 @@ Google Maps, and others.")
      '(#:tests? #f
        #:phases
        (modify-phases %standard-phases
+         (add-before 'configure 'remove-dev-dependencies
+           (lambda _
+             (invoke "node" "-e" "
+var p=JSON.parse(require('fs').readFileSync('package.json'));
+delete p.devDependencies;
+if(p.dependencies)Object.keys(p.dependencies).forEach(function(k){try{require.resolve(k)}catch(e){delete p.dependencies[k]}});
+require('fs').writeFileSync('package.json',JSON.stringify(p,null,2));")))
          (delete 'build)))) ; wants 'closure' binary to minify strftime.js.
     ;(native-inputs
     ; `(("node-closure" ,node-closure)))
@@ -1307,7 +1458,17 @@ from C are supported as well as some other extensions from Ruby.")
          (base32
           "10qk72yq7l8zrs099b88k4nag43bamqp5wilv6hg8601qdgbnh2w"))))
     (build-system node-build-system)
-    (arguments '(#:tests? #f))
+    (arguments
+     '(#:tests? #f
+       #:phases
+       (modify-phases %standard-phases
+         (add-before 'configure 'remove-dev-dependencies
+           (lambda _
+             (invoke "node" "-e" "
+var p=JSON.parse(require('fs').readFileSync('package.json'));
+delete p.devDependencies;
+if(p.dependencies)Object.keys(p.dependencies).forEach(function(k){try{require.resolve(k)}catch(e){delete p.dependencies[k]}});
+require('fs').writeFileSync('package.json',JSON.stringify(p,null,2));"))))))
     (native-inputs
      `(
        ;("node-assume" ,node-assume)
@@ -1334,7 +1495,17 @@ from C are supported as well as some other extensions from Ruby.")
          (base32
           "03dk13shq6780mmsx4c6y22v5zhf4800b4w92pd2j82w905s9vv5"))))
     (build-system node-build-system)
-    (arguments '(#:tests? #f))
+    (arguments
+     '(#:tests? #f
+       #:phases
+       (modify-phases %standard-phases
+         (add-before 'configure 'remove-dev-dependencies
+           (lambda _
+             (invoke "node" "-e" "
+var p=JSON.parse(require('fs').readFileSync('package.json'));
+delete p.devDependencies;
+if(p.dependencies)Object.keys(p.dependencies).forEach(function(k){try{require.resolve(k)}catch(e){delete p.dependencies[k]}});
+require('fs').writeFileSync('package.json',JSON.stringify(p,null,2));"))))))
     (native-inputs
      `(
        ;("node-assume" ,node-assume)
@@ -1366,6 +1537,13 @@ from C are supported as well as some other extensions from Ruby.")
      '(#:tests? #f
        #:phases
        (modify-phases %standard-phases
+         (add-before 'configure 'remove-dev-dependencies
+           (lambda _
+             (invoke "node" "-e" "
+var p=JSON.parse(require('fs').readFileSync('package.json'));
+delete p.devDependencies;
+if(p.dependencies)Object.keys(p.dependencies).forEach(function(k){try{require.resolve(k)}catch(e){delete p.dependencies[k]}});
+require('fs').writeFileSync('package.json',JSON.stringify(p,null,2));")))
          (delete 'build)))) ; 'build needs rimraf and babel.
     (inputs
      `(("node-async" ,node-async)
@@ -1387,37 +1565,6 @@ from C are supported as well as some other extensions from Ruby.")
     (description "A logger for just about everything.")
     (license license:expat)))
 
-(define-public node-winston-2
-  (package
-    (inherit node-winston)
-    (name "node-winston")
-    (version "2.4.4")
-    (source
-      (origin
-        (method git-fetch)
-        (uri (git-reference
-               (url "https://github.com/winstonjs/winston.git")
-               (commit version)))
-        (file-name (git-file-name name version))
-        (sha256
-         (base32
-          "0wiihp0n1pygjynlky4751wfn2x5d46f18diahgnaq1ryppvxjj1"))))
-    (arguments '(#:tests? #f))
-    (inputs
-     `(("node-async" ,node-async-1)
-       ("node-colors" ,node-colors)
-       ;("node-cycle" ,node-cycle)
-       ;("node-eyes" ,node-eyes)
-       ;("node-isstream" ,node-isstream)
-       ("node-stack-trace" ,node-stack-trace)))
-    (native-inputs
-     `(
-       ;("node-cross-spawn-async" ,node-cross-spawn-async)
-       ;("node-hock" .node-hock)
-       ;("node-std-mocks" ,node-mocks)
-       ;("node-vows" ,node-vows)
-       ))))
-
 (define-public node-winston-transport
   (package
     (name "node-winston-transport")
@@ -1437,6 +1584,13 @@ from C are supported as well as some other extensions from Ruby.")
      '(#:tests? #f
        #:phases
        (modify-phases %standard-phases
+         (add-before 'configure 'remove-dev-dependencies
+           (lambda _
+             (invoke "node" "-e" "
+var p=JSON.parse(require('fs').readFileSync('package.json'));
+delete p.devDependencies;
+if(p.dependencies)Object.keys(p.dependencies).forEach(function(k){try{require.resolve(k)}catch(e){delete p.dependencies[k]}});
+require('fs').writeFileSync('package.json',JSON.stringify(p,null,2));")))
          (delete 'build)))) ; 'build needs rimraf and babel.
     (inputs
      `(("node-readable-stream" ,node-readable-stream)
@@ -1474,7 +1628,18 @@ from C are supported as well as some other extensions from Ruby.")
          (base32
           "1pwbr8j6g561kp5980gk4l45azn4q14ab1vhxl2ib8fp44nhyphl"))))
     (build-system node-build-system)
-    (arguments '(#:tests? #f))
+    (arguments
+     '(#:tests? #f
+       #:phases
+       (modify-phases %standard-phases
+         (add-before 'configure 'remove-dev-dependencies
+           (lambda _
+             (invoke "node" "-e" "
+var p=JSON.parse(require('fs').readFileSync('package.json'));
+delete p.devDependencies;
+delete p.scripts;
+if(p.dependencies)Object.keys(p.dependencies).forEach(function(k){try{require.resolve(k)}catch(e){delete p.dependencies[k]}});
+require('fs').writeFileSync('package.json',JSON.stringify(p,null,2));"))))))
     ;(inputs
     ; `(("node-babel-runtime-corejs2" ,node-babel-runtime-corejs2)))
     (native-inputs
@@ -1514,7 +1679,17 @@ from C are supported as well as some other extensions from Ruby.")
          (base32
           "0lfgph477cchjm4qrab9ni0wj9i6psbhy4mvpzn2jkrcfcffgvfi"))))
     (build-system node-build-system)
-    (arguments '(#:tests? #f))
+    (arguments
+     '(#:tests? #f
+       #:phases
+       (modify-phases %standard-phases
+         (add-before 'configure 'remove-dev-dependencies
+           (lambda _
+             (invoke "node" "-e" "
+var p=JSON.parse(require('fs').readFileSync('package.json'));
+delete p.devDependencies;
+if(p.dependencies)Object.keys(p.dependencies).forEach(function(k){try{require.resolve(k)}catch(e){delete p.dependencies[k]}});
+require('fs').writeFileSync('package.json',JSON.stringify(p,null,2));"))))))
     (inputs
      `(
        ;("node-cliui" ,node-cliui)
@@ -1565,7 +1740,17 @@ from C are supported as well as some other extensions from Ruby.")
          (base32
           "066wl3609ymg9wmrjlcya3c7sv9ba03dzg8qqmzvqxrkz894s89x"))))
     (build-system node-build-system)
-    (arguments '(#:tests? #f))
+    (arguments
+     '(#:tests? #f
+       #:phases
+       (modify-phases %standard-phases
+         (add-before 'configure 'remove-dev-dependencies
+           (lambda _
+             (invoke "node" "-e" "
+var p=JSON.parse(require('fs').readFileSync('package.json'));
+delete p.devDependencies;
+if(p.dependencies)Object.keys(p.dependencies).forEach(function(k){try{require.resolve(k)}catch(e){delete p.dependencies[k]}});
+require('fs').writeFileSync('package.json',JSON.stringify(p,null,2));"))))))
     (inputs
      `(
        ;("node-camelcase" ,node-camelcase)
@@ -1585,7 +1770,6 @@ from C are supported as well as some other extensions from Ruby.")
     (description "the mighty option parser used by yargs.")
     (license license:isc)))
 
-
 (define-public node-resumablejs
   (let ((commit "b7580789f4d19bb180c08389538e0733f0f811d8"))
     (package
@@ -1602,7 +1786,17 @@ from C are supported as well as some other extensions from Ruby.")
           (base32
            "0d0883jmsr2ydchx10y9a2vcijix7g65k1243s5ryl3i3jacm1bm"))))
       (build-system node-build-system)
-      (arguments '(#:tests? #f))
+      (arguments
+     '(#:tests? #f
+       #:phases
+       (modify-phases %standard-phases
+         (add-before 'configure 'remove-dev-dependencies
+           (lambda _
+             (invoke "node" "-e" "
+var p=JSON.parse(require('fs').readFileSync('package.json'));
+delete p.devDependencies;
+if(p.dependencies)Object.keys(p.dependencies).forEach(function(k){try{require.resolve(k)}catch(e){delete p.dependencies[k]}});
+require('fs').writeFileSync('package.json',JSON.stringify(p,null,2));"))))))
       (home-page "https://github.com/23/resumable.js/")
       (synopsis "JavaScript library providing multiple simultaneous, stable and resumable uploads via the HTML5 File API")
       (description "A JavaScript library providing multiple simultaneous, stable and resumable uploads via the HTML5 File API.")
diff --git a/gn/packages/notebooks.scm b/gn/packages/notebooks.scm
deleted file mode 100644
index 89f1360..0000000
--- a/gn/packages/notebooks.scm
+++ /dev/null
@@ -1,83 +0,0 @@
-(define-module (gn packages notebooks)
-  #:use-module ((guix licenses) #:prefix license:)
-  #:use-module (guix packages)
-  #:use-module (guix utils)
-  #:use-module (guix download)
-  #:use-module (guix git-download)
-  #:use-module (guix build-system python)
-  #:use-module (guix build-system asdf)
-  #:use-module (gnu packages python-web)
-  #:use-module (gnu packages python-xyz)
-  #:use-module (gnu packages lisp-check)
-  #:use-module (gnu packages lisp-xyz)
-  #:use-module (gnu packages))
-
-(define-public nb-upload
-  (let ((commit "b2853028a2ef2b1670074aa08c9e25d799ba4cb4")
-        (revision "2"))
-    (package
-      (name "nb-upload")
-      (version (git-version "20220414" revision commit))
-      (source
-       (origin
-         (method git-fetch)
-         (uri (git-reference
-                (url "https://git.genenetwork.org/jgart/nb-upload")
-                (commit commit)))
-         (file-name (git-file-name name commit))
-         (sha256
-           (base32
-            "1wdghsq4wj1bgcvxx604q7piknbwapj7facc1xfn1fqvw0cra7wg"))))
-         (build-system python-build-system)
-         (arguments
-           (list #:tests? #f)) ; There are no tests.
-         (inputs
-           (list python-requests
-                 python-yaspin
-                 python-rich))
-         (synopsis "Upload notebooks via CLI")
-         (description
-"@code{nb-upload} allows a user to upload notebooks to a @code{nb}
-instance.")
-         (home-page "https://git.genenetwork.org/jgart/nb-upload/")
-         (license license:unlicense))))
-
-(define-public sbcl-nb
-  (let ((commit "bb9bb6cd2ac8e9aac48e97a4c68b4b9811aa817a")
-        (revision "0"))
-    (package
-      (name "sbcl-nb")
-      (version (git-version "20220414" revision commit))
-      (source
-        (origin
-          (method git-fetch)
-          (uri (git-reference
-                (url "https://git.genenetwork.org/jgart/nb")
-                (commit commit)))
-          (sha256
-           (base32 "03wnfb2g9b9kawd9iw5hsdkzdlj0r7pkzwshhjiwn1cc04rqdi5m"))
-          (file-name (git-file-name name commit))))
-      (build-system asdf-build-system/sbcl)
-      (arguments
-        `(#:tests? #f)) ; There are no tests.
-      (inputs
-        (list sbcl-ningle
-              sbcl-clack
-              sbcl-drakma
-              sbcl-find-port
-              sbcl-jzon
-              sbcl-legit
-              sbcl-cl-interpol))
-      (home-page "https://git.genenetwork.org/jgart/nb/")
-      (synopsis "Launching interactive notebooks in GNU Guix containers")
-      (description
-"{cl-nb} is a Common Lisp system and API for launching interactive
-notebooks in GNU Guix containers.")
-      (license license:unlicense))))
-
-(define-public cl-nb
-  (sbcl-package->cl-source-package sbcl-nb))
-
-(define-public ecl-nb
-  (sbcl-package->ecl-package sbcl-nb))
-
diff --git a/gn/packages/ocaml.scm b/gn/packages/ocaml.scm
deleted file mode 100644
index cb97868..0000000
--- a/gn/packages/ocaml.scm
+++ /dev/null
@@ -1,50 +0,0 @@
-(define-module (gn packages ocaml)
-  #:use-module (guix packages)
-  #:use-module (guix download)
-  #:use-module (guix git-download)
-  #:use-module (guix build-system ocaml)
-  #:use-module (gnu packages)
-  #:use-module (gnu packages ocaml)
-  #:use-module (gnu packages maths))
-
-;; This is the last version supported by ocaml-4.07.
-(define-public ocaml4.07-lwt-5.5.0
-  (package-with-ocaml4.07
-    (package
-      (inherit ocaml-lwt)
-      (name "ocaml-lwt")
-      (version "5.5.0")
-      (source
-        (origin
-          (method git-fetch)
-          (uri (git-reference
-                 (url "https://github.com/ocsigen/lwt")
-                 (commit version)))
-          (file-name (git-file-name name version))
-          (sha256 (base32
-                   "1jbjz2rsz3j56k8vh5qlmm87hhkr250bs2m3dvpy9vsri8rkzj9z"))))
-      (properties '()))))
-
-(define-public ocaml4.07-gsl-1
-  (package-with-ocaml4.07
-   (package
-     (inherit ocaml-gsl)
-     (version "1.19.3")
-     (source (origin
-               (method url-fetch)
-               (uri (string-append "https://github.com/mmottl/gsl-ocaml"
-                                   "/releases/download/v"
-                                   version "/gsl-ocaml-" version ".tar.gz"))
-               (sha256
-                (base32
-                 "0nzp43hp8pbjqkrxnwp5lgjrabxayf61h18fjaydi0s5faq6f3xh"))))
-     (build-system ocaml-build-system)
-     (inputs
-      (list (list gsl "static")))
-     (native-inputs
-      (list ocamlbuild))
-     (arguments '())
-     (propagated-inputs '()))))
-
-(define-public build-with-ocaml4.07
-  (package-input-rewriting/spec `(("ocaml4.07-lwt" . ,(const ocaml4.07-lwt-5.5.0)))))
diff --git a/gn/packages/opencl-icd-loader.scm b/gn/packages/opencl-icd-loader.scm
deleted file mode 100644
index bbccea0..0000000
--- a/gn/packages/opencl-icd-loader.scm
+++ /dev/null
@@ -1,95 +0,0 @@
-;;; GNU Guix --- Functional package management for GNU
-;;; Copyright © 2016 Dennis Mungai <dmngaie@gmail.com>
-;;;
-;;; This file is part of GNU Guix.
-;;;
-;;; GNU Guix is free software; you can redistribute it and/or modify it
-;;; under the terms of the GNU General Public License as published by
-;;; the Free Software Foundation; either version 3 of the License, or (at
-;;; your option) any later version.
-;;;
-;;; GNU Guix is distributed in the hope that it will be useful, but
-;;; WITHOUT ANY WARRANTY; without even the implied warranty of
-;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-;;; GNU General Public License for more details.
-;;;
-;;; You should have received a copy of the GNU General Public License
-;;; along with GNU Guix.  If not, see <http://www.gnu.org/licenses/>.
-
-(define-module (gn packages opencl-icd-loader)
-  #:use-module ((guix licenses) #:prefix license:)
-  #:use-module (guix git-download)
-  #:use-module (guix download)
-  #:use-module (guix build-system gnu)
-  #:use-module (guix build-system cmake)
-  #:use-module (guix packages)
-  #:use-module (gnu packages algebra)
-  #:use-module (gnu packages autotools)
-  #:use-module (gnu packages curl)
-  #:use-module (gnu packages boost)
-  #:use-module (gnu packages gawk)
-  #:use-module (gnu packages cmake)
-  #:use-module (gnu packages glib)
-  #:use-module (gnu packages image)
-  #:use-module (gnu packages video)
-  #:use-module (gnu packages textutils)
-  #:use-module (gnu packages gl)
-  #:use-module (gnu packages llvm)
-  #:use-module (gnu packages pkg-config)
-  #:use-module (gnu packages maths)
-  #:use-module (gnu packages mpi)
-  #:use-module (gnu packages web)
-  #:use-module (gnu packages perl)
-  #:use-module (gnu packages python)
-  #:use-module (gnu packages xorg)
-  #:use-module (gnu packages version-control)  
-  #:use-module (gnu packages linux))
-
-(define-public opencl-icd-loader
-(let ((commit "bf894eb"))
-  (package
-    (name "opencl-icd-loader")
-    (version (string-append "2.1-" commit ))
-    (source (origin
-              (method git-fetch)
-              (uri (git-reference
-              (url "https://github.com/KhronosGroup/OpenCL-ICD-Loader.git")
-              (commit commit)))
-              (file-name (string-append name "-" commit))
-              (sha256
-               (base32
-                "1sbxdd9vgl3m8j39kwvvk5cflyj7480pq0s307zg1ssidvj98v3g"))))
-(native-inputs `(("autoconf" ,autoconf)
-                ("automake" ,automake)
-                ("libtool" ,libtool)
-                ("cmake" ,cmake)
-                ("pkg-config" ,pkg-config)))
-(inputs        `(("python" ,python-2)
-               ("boost" ,boost)
-               ("dbus" ,dbus)
-               ("clang" ,clang)
-               ("clang-runtime" ,clang-runtime)
-               ("enca" ,enca)
-               ("eudev" ,eudev)
-               ("fftw-openmpi" ,fftw-openmpi)
-               ("glew" ,glew)
-               ("hwloc" ,hwloc)
-               ("libcap" ,libcap)
-               ("libjpeg" ,libjpeg-turbo)
-               ("libltdl" ,libltdl)
-               ("libtiff" ,libtiff)
-               ("llvm" ,llvm)
-               ("mesa-utils" ,mesa-utils)
-               ("openmpi" ,openmpi)
-               ("perl" ,perl)
-               ("randrproto" ,randrproto)
-               ("libxrandr" ,libxrandr)
-               ("xineramaproto" ,xineramaproto)
-               ("libxinerama" ,libxinerama)
-               ("libxcursor" ,libxcursor)
-               ("fftw-openmpi" ,fftw-openmpi)))
-    (build-system cmake-build-system)                
-    (synopsis "The Khronos OpenCL ICDs (Installable Client Driver)")
-    (description "This package provides the Khronos OpenCL ICDs")
-    (home-page "https://www.khronos.org/registry/cl/")
-    (license license:gpl2))))
diff --git a/gn/packages/openfyba.scm b/gn/packages/openfyba.scm
deleted file mode 100644
index c1a1c90..0000000
--- a/gn/packages/openfyba.scm
+++ /dev/null
@@ -1,58 +0,0 @@
-;;; GNU Guix --- Functional package management for GNU
-;;; Copyright © 2016 Dennis Mungai <dmngaie@gmail.com>
-;;; Copyright © 2019 Efraim Flashner <efraim@flashner.co.il>
-;;;
-;;; This file is part of GNU Guix.
-;;;
-;;; GNU Guix is free software; you can redistribute it and/or modify it
-;;; under the terms of the GNU General Public License as published by
-;;; the Free Software Foundation; either version 3 of the License, or (at
-;;; your option) any later version.
-;;;
-;;; GNU Guix is distributed in the hope that it will be useful, but
-;;; WITHOUT ANY WARRANTY; without even the implied warranty of
-;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-;;; GNU General Public License for more details.
-;;;
-;;; You should have received a copy of the GNU General Public License
-;;; along with GNU Guix.  If not, see <http://www.gnu.org/licenses/>.
-
-(define-module (gn packages openfyba)
-  #:use-module ((guix licenses))
-  #:use-module (guix packages)
-  #:use-module (guix git-download)
-  #:use-module (guix build-system gnu)
-  #:use-module (gnu packages autotools)
-  #:use-module (gnu packages compression)
-  #:use-module (gnu packages gnupg))
-
-(define-public openfyba
-  (package
-   (name "openfyba")
-   (version "4.1.1")
-   (source (origin
-             (method git-fetch)
-             (uri (git-reference
-                    (url "https://github.com/kartverket/fyba.git")
-                    (commit version)))
-             (file-name (git-file-name name version))
-             (sha256
-              (base32
-               "0zxw4pf3s7rb9g8209i3rj0v5jjw1vb79knd5mzvw9drpl9bbgpl"))))
-    (inputs `(("zip" ,zip)
-             ("autoconf" ,autoconf)
-             ("automake" ,automake)
-             ("libtool" ,libtool)
-             ("libgcrypt" ,libgcrypt)))
-    (build-system gnu-build-system)
-    (arguments
-     '(#:phases
-       (modify-phases %standard-phases
-         (replace 'bootstrap
-           (lambda _
-             (for-each make-file-writable (find-files "." ".*"))
-             (invoke "autoreconf" "-vfi"))))))
-    (home-page "http://labs.kartverket.no/sos/")
-    (synopsis "source code release of the FYBA library")
-    (description "OpenFYBA is the source code release of the FYBA library.")
-    (license gpl2)))
diff --git a/gn/packages/pangenome-rust.scm b/gn/packages/pangenome-rust.scm
new file mode 100644
index 0000000..a8675d7
--- /dev/null
+++ b/gn/packages/pangenome-rust.scm
@@ -0,0 +1,4566 @@
+;;; Pangenome Rust packages: gfainject, ragc, fastga-rs, impg
+;;; and their Rust crate dependencies
+
+(define-module (gn packages pangenome-rust)
+  #:use-module ((guix licenses) #:prefix license:)
+  #:use-module (guix packages)
+  #:use-module (guix utils)
+  #:use-module (guix download)
+  #:use-module (guix git-download)
+  #:use-module (guix build-system cargo)
+  #:use-module (guix build-system gnu)
+  #:use-module (guix build-system meson)
+  #:use-module (guix gexp)
+  #:use-module (gnu packages)
+  #:use-module (gnu packages assembly)
+  #:use-module (gnu packages bioinformatics)
+  #:use-module (gnu packages cmake)
+  #:use-module (gnu packages compression)
+  #:use-module (gnu packages llvm)
+  #:use-module (gnu packages pkg-config)
+  #:export (lookup-cargo-inputs
+            wfa2-lib/our
+            wfa2-lib-static))
+
+;;;
+;;; Crate sources (generated by: guix import crate -f Cargo.lock gfainject).
+;;;
+
+(define rust-adler-1.0.2
+  (crate-source "adler" "1.0.2"
+                "1zim79cvzd5yrkzl3nyfx0avijwgk9fqv3yrscdy1cc79ih02qpj"))
+
+(define rust-anyhow-1.0.66
+  (crate-source "anyhow" "1.0.66"
+                "1xj3ahmwjlbiqsajhkaa0q6hqwb4l3l5rkfxa7jk1498r3fn2qi1"))
+
+;; Phase snippet for CPU tuning of Rust packages.
+;; Removes the tuning rustc wrapper from PATH (which injects -C target_cpu
+;; into ALL rustc calls including build scripts, causing SIGILL on
+;; cross-tuning) and instead sets CARGO_BUILD_RUSTFLAGS which only applies
+;; to target crate compilation, not build scripts.
+(define %rust-tuning-phase
+  #~(add-before 'build 'set-rust-target-cpu
+      (lambda _
+        (let loop ((dirs (string-split (or (getenv "PATH") "") #\:))
+                   (kept '())
+                   (cpu #f))
+          (if (null? dirs)
+              (begin
+                (setenv "PATH" (string-join (reverse kept) ":"))
+                (when cpu
+                  (setenv "CARGO_BUILD_RUSTFLAGS"
+                          (string-append (or (getenv "CARGO_BUILD_RUSTFLAGS") "")
+                                         " -C target-cpu=" cpu))
+                  (format #t "  Removed tuning rustc wrapper from PATH~%")
+                  (format #t "  CARGO_BUILD_RUSTFLAGS set for CPU tuning: ~a~%"
+                          (getenv "CARGO_BUILD_RUSTFLAGS"))))
+              (let ((base (basename (dirname (car dirs)))))
+                (if (string-contains base "tuning-compiler-")
+                    (let ((detected (substring base
+                                              (+ (string-contains base "tuning-compiler-")
+                                                 (string-length "tuning-compiler-")))))
+                      (loop (cdr dirs) kept detected))
+                    (loop (cdr dirs) (cons (car dirs) kept) cpu))))))))
+
+
+(define rust-autocfg-1.1.0
+  (crate-source "autocfg" "1.1.0"
+                "1ylp3cb47ylzabimazvbz9ms6ap784zhb6syaz6c1jqpmcmq0s6l"))
+
+(define rust-bit-vec-0.6.3
+  (crate-source "bit-vec" "0.6.3"
+                "1ywqjnv60cdh1slhz67psnp422md6jdliji6alq0gmly2xm9p7rl"))
+
+(define rust-bitflags-1.3.2
+  (crate-source "bitflags" "1.3.2"
+                "12ki6w8gn1ldq7yz9y680llwk5gmrhrzszaa17g1sbrw2r2qvwxy"))
+
+(define rust-btoi-0.4.2
+  (crate-source "btoi" "0.4.2"
+                "04ba4j96icaan10c613s2rwpn2kdbl8728qhz2xzi0dakyd8dh4p"))
+
+(define rust-bytemuck-1.12.3
+  (crate-source "bytemuck" "1.12.3"
+                "0zwlaqkrp7r7bnl2n40x9ncpspb93d8xcckar61f54nal7csi8xa"))
+
+(define rust-byteorder-1.4.3
+  (crate-source "byteorder" "1.4.3"
+                "0456lv9xi1a5bcm32arknf33ikv76p3fr9yzki4lb2897p2qkh8l"))
+
+(define rust-bytes-1.2.1
+  (crate-source "bytes" "1.2.1"
+                "1nsni0jbx1048inbrarn3hz6zxd000pp0rac2mr07s7xf1m7p2pc"))
+
+(define rust-cfg-if-1.0.0
+  (crate-source "cfg-if" "1.0.0"
+                "1za0vb97n4brpzpv8lsbnzmq5r8f2b0cpqqr0sy8h5bn751xxwds"))
+
+(define rust-crc32fast-1.3.2
+  (crate-source "crc32fast" "1.3.2"
+                "03c8f29yx293yf43xar946xbls1g60c207m9drf8ilqhr25vsh5m"))
+
+(define rust-crossbeam-channel-0.5.6
+  (crate-source "crossbeam-channel" "0.5.6"
+                "08f5f043rljl82a06d1inda6nl2b030s7yfqp31ps8w8mzfh9pf2"))
+
+(define rust-crossbeam-utils-0.8.12
+  (crate-source "crossbeam-utils" "0.8.12"
+                "1b0zs5ahnwkgky7svwah9fhmqx645qnb3h97cnk6q68zzb2zxfpd"))
+
+(define rust-flate2-1.0.24
+  (crate-source "flate2" "1.0.24"
+                "1xmzzg91c0hdl39qz0hwph0w629bva1dh21j3zyqp7xd4x60yazq"))
+
+(define rust-hashbrown-0.12.3
+  (crate-source "hashbrown" "0.12.3"
+                "1268ka4750pyg2pbgsr43f0289l5zah4arir2k4igx5a8c6fg7la"))
+
+(define rust-indexmap-1.9.1
+  (crate-source "indexmap" "1.9.1"
+                "07nli1wcz7m81svvig8l5j6vjycjnv9va46lwblgy803ffbmm8qh"))
+
+(define rust-lexical-core-0.8.5
+  (crate-source "lexical-core" "0.8.5"
+                "0ihf0x3vrk25fq3bv9q35m0xax0wmvwkh0j0pjm2yk4ddvh5vpic"))
+
+(define rust-lexical-parse-float-0.8.5
+  (crate-source "lexical-parse-float" "0.8.5"
+                "0py0gp8hlzcrlvjqmqlpl2v1as65iiqxq2xsabxvhc01pmg3lfv8"))
+
+(define rust-lexical-parse-integer-0.8.6
+  (crate-source "lexical-parse-integer" "0.8.6"
+                "1sayji3mpvb2xsjq56qcq3whfz8px9a6fxk5v7v15hyhbr4982bd"))
+
+(define rust-lexical-util-0.8.5
+  (crate-source "lexical-util" "0.8.5"
+                "1z73qkv7yxhsbc4aiginn1dqmsj8jarkrdlyxc88g2gz2vzvjmaj"))
+
+(define rust-lexical-write-float-0.8.5
+  (crate-source "lexical-write-float" "0.8.5"
+                "0qk825l0csvnksh9sywb51996cjc2bylq6rxjaiha7sqqjhvmjmc"))
+
+(define rust-lexical-write-integer-0.8.5
+  (crate-source "lexical-write-integer" "0.8.5"
+                "0ii4hmvqrg6pd4j9y1pkhkp0nw2wpivjzmljh6v6ca22yk8z7dp1"))
+
+(define rust-memchr-2.5.0
+  (crate-source "memchr" "2.5.0"
+                "0vanfk5mzs1g1syqnj03q8n0syggnhn55dq535h2wxr7rwpfbzrd"))
+
+(define rust-miniz-oxide-0.5.4
+  (crate-source "miniz_oxide" "0.5.4"
+                "0d2xcypr8s0skd81dhlrylas1j794qyz74snm11jc8kmy6l0nncn"))
+
+(define rust-noodles-0.29.0
+  (crate-source "noodles" "0.29.0"
+                "06y9gjsm790yfs6gbh96yncm7nrp2xmc024jqpjzjk131v75rz9h"))
+
+(define rust-noodles-bam-0.24.0
+  (crate-source "noodles-bam" "0.24.0"
+                "1fq59hngj0apcp242744kiq099xip2gxz62f9azkrcv66j670bgm"))
+
+(define rust-noodles-bgzf-0.17.0
+  (crate-source "noodles-bgzf" "0.17.0"
+                "04b22jjs3iy76zgdx239idcfzkf7b753dql5znda3gj42namhrvr"))
+
+(define rust-noodles-core-0.9.0
+  (crate-source "noodles-core" "0.9.0"
+                "1r1gywapdgvqk5ah07lnfikls58nn5m7dmbh3m05klg1fqxg4dd5"))
+
+(define rust-noodles-csi-0.11.0
+  (crate-source "noodles-csi" "0.11.0"
+                "0syl3f3aqy5g3b7l3mhhxr42zrdbnzb0n1izcakv4hwhwr74kip2"))
+
+(define rust-noodles-fasta-0.16.0
+  (crate-source "noodles-fasta" "0.16.0"
+                "1irjih7gqgykh75j0ynn6nx104jgg2y93jp4c8xjnhp8qbibjc17"))
+
+(define rust-noodles-sam-0.21.0
+  (crate-source "noodles-sam" "0.21.0"
+                "133l649g9ghs8ckaivjskfddn6rfi5f0lisb884lbhv3v92kisrc"))
+
+(define rust-num-traits-0.2.15
+  (crate-source "num-traits" "0.2.15"
+                "1kfdqqw2ndz0wx2j75v9nbjx7d3mh3150zs4p5595y02rwsdx3jp"))
+
+(define rust-pico-args-0.5.0
+  (crate-source "pico-args" "0.5.0"
+                "05d30pvxd6zlnkg2i3ilr5a70v3f3z2in18m67z25vinmykngqav"))
+
+(define rust-retain-mut-0.1.7
+  (crate-source "retain_mut" "0.1.7"
+                "11j09lp1wqwc2r9bw58my2474zj95jz5fihff3ldv3rz0g2baccc"))
+
+(define rust-roaring-0.10.1
+  (crate-source "roaring" "0.10.1"
+                "0wcgprdw49xy7w00zzspbhrq8f1kvlwqasmfxh8y1gd84vlba3zg"))
+
+(define rust-rustc-hash-1.1.0
+  (crate-source "rustc-hash" "1.1.0"
+                "1qkc5khrmv5pqi5l5ca9p5nl5hs742cagrndhbrlk3dhlrx3zm08"))
+
+(define rust-static-assertions-1.1.0
+  (crate-source "static_assertions" "1.1.0"
+                "0gsl6xmw10gvn3zs1rv99laj5ig7ylffnh71f9l34js4nr4r7sx2"))
+
+;;;
+;;; Crate sources (generated by: guix import crate -f Cargo.lock ragc-cli).
+;;;
+
+(define rust-adler2-2.0.1
+  (crate-source "adler2" "2.0.1"
+                "1ymy18s9hs7ya1pjc9864l30wk8p2qfqdi7mhhcc5nfakxbij09j"))
+
+(define rust-ahash-0.8.12
+  (crate-source "ahash" "0.8.12"
+                "0xbsp9rlm5ki017c0w6ay8kjwinwm8knjncci95mii30rmwz25as"))
+
+(define rust-aho-corasick-1.1.4
+  (crate-source "aho-corasick" "1.1.4"
+                "00a32wb2h07im3skkikc495jvncf62jl6s96vwc7bhi70h9imlyx"))
+
+(define rust-allocator-api2-0.2.21
+  (crate-source "allocator-api2" "0.2.21"
+                "08zrzs022xwndihvzdn78yqarv2b9696y67i6h78nla3ww87jgb8"))
+
+(define rust-anes-0.1.6
+  (crate-source "anes" "0.1.6"
+                "16bj1ww1xkwzbckk32j2pnbn5vk6wgsl3q4p3j9551xbcarwnijb"))
+
+(define rust-anstream-0.6.21
+  (crate-source "anstream" "0.6.21"
+                "0jjgixms4qjj58dzr846h2s29p8w7ynwr9b9x6246m1pwy0v5ma3"))
+
+(define rust-anstyle-1.0.13
+  (crate-source "anstyle" "1.0.13"
+                "0y2ynjqajpny6q0amvfzzgw0gfw3l47z85km4gvx87vg02lcr4ji"))
+
+(define rust-anstyle-parse-0.2.7
+  (crate-source "anstyle-parse" "0.2.7"
+                "1hhmkkfr95d462b3zf6yl2vfzdqfy5726ya572wwg8ha9y148xjf"))
+
+(define rust-anstyle-query-1.1.5
+  (crate-source "anstyle-query" "1.1.5"
+                "1p6shfpnbghs6jsa0vnqd8bb8gd7pjd0jr7w0j8jikakzmr8zi20"))
+
+(define rust-anstyle-wincon-3.0.11
+  (crate-source "anstyle-wincon" "3.0.11"
+                "0zblannm70sk3xny337mz7c6d8q8i24vhbqi42ld8v7q1wjnl7i9"))
+
+(define rust-anyhow-1.0.102
+  (crate-source "anyhow" "1.0.102"
+                "0b447dra1v12z474c6z4jmicdmc5yxz5bakympdnij44ckw2s83z"))
+
+(define rust-arbitrary-chunks-0.4.1
+  (crate-source "arbitrary-chunks" "0.4.1"
+                "11j0xrjcnj8zygdpwqpc9110ac6yji35lw8mx80w85k492d6in1a"))
+
+(define rust-autocfg-1.5.0
+  (crate-source "autocfg" "1.5.0"
+                "1s77f98id9l4af4alklmzq46f21c980v13z2r1pcxx6bqgw0d1n0"))
+
+(define rust-bincode-1.3.3
+  (crate-source "bincode" "1.3.3"
+                "1bfw3mnwzx5g1465kiqllp5n4r10qrqy88kdlp3jfwnq2ya5xx5i"))
+
+(define rust-bitflags-2.11.0
+  (crate-source "bitflags" "2.11.0"
+                "1bwjibwry5nfwsfm9kjg2dqx5n5nja9xymwbfl6svnn8jsz6ff44"))
+
+(define rust-block-buffer-0.10.4
+  (crate-source "block-buffer" "0.10.4"
+                "0w9sa2ypmrsqqvc20nhwr75wbb5cjr4kkyhpjm1z1lv2kdicfy1h"))
+
+(define rust-block-pseudorand-0.1.2
+  (crate-source "block-pseudorand" "0.1.2"
+                "19hm05q3nfp5akn9vkq8f09hhimsxlzd3x266xja0i6jjn23b5r0"))
+
+(define rust-bumpalo-3.20.2
+  (crate-source "bumpalo" "3.20.2"
+                "1jrgxlff76k9glam0akhwpil2fr1w32gbjdf5hpipc7ld2c7h82x"))
+
+(define rust-byteorder-1.5.0
+  (crate-source "byteorder" "1.5.0"
+                "0jzncxyf404mwqdbspihyzpkndfgda450l0893pz5xj685cg5l0z"))
+
+(define rust-cast-0.3.0
+  (crate-source "cast" "0.3.0"
+                "1dbyngbyz2qkk0jn2sxil8vrz3rnpcj142y184p9l4nbl9radcip"))
+
+(define rust-cc-1.2.56
+  (crate-source "cc" "1.2.56"
+                "1chvh9g2izhqad7vzy4cc7xpdljdvqpsr6x6hv1hmyqv3mlkbgxf"))
+
+(define rust-cfg-if-1.0.4
+  (crate-source "cfg-if" "1.0.4"
+                "008q28ajc546z5p2hcwdnckmg0hia7rnx52fni04bwqkzyrghc4k"))
+
+(define rust-chiapos-chacha8-0.1.0
+  (crate-source "chiapos-chacha8" "0.1.0"
+                "02ndd71c6j85dj2vy55ri7j9abz30x686hwf3fyc5xl579bvxy1k"))
+
+(define rust-ciborium-0.2.2
+  (crate-source "ciborium" "0.2.2"
+                "03hgfw4674im1pdqblcp77m7rc8x2v828si5570ga5q9dzyrzrj2"))
+
+(define rust-ciborium-io-0.2.2
+  (crate-source "ciborium-io" "0.2.2"
+                "0my7s5g24hvp1rs1zd1cxapz94inrvqpdf1rslrvxj8618gfmbq5"))
+
+(define rust-ciborium-ll-0.2.2
+  (crate-source "ciborium-ll" "0.2.2"
+                "1n8g4j5rwkfs3rzfi6g1p7ngmz6m5yxsksryzf5k72ll7mjknrjp"))
+
+(define rust-clap-4.5.60
+  (crate-source "clap" "4.5.60"
+                "02h3nzznssjgp815nnbzk0r62y2iw03kdli75c233kirld6z75r7"))
+
+(define rust-clap-builder-4.5.60
+  (crate-source "clap_builder" "4.5.60"
+                "0xk8mdizvmmn6w5ij5cwhy5pbgyac4w9pfvl6nqmjl7a5hql38i4"))
+
+(define rust-clap-derive-4.5.55
+  (crate-source "clap_derive" "4.5.55"
+                "1r949xis3jmhzh387smd70vc8a3b9734ck3g5ahg59a63bd969x9"))
+
+(define rust-clap-lex-1.0.0
+  (crate-source "clap_lex" "1.0.0"
+                "0c8888qi1l9sayqlv666h8s0yxn2qc6jr88v1zagk43mpjjjx0is"))
+
+(define rust-colorchoice-1.0.4
+  (crate-source "colorchoice" "1.0.4"
+                "0x8ymkz1xr77rcj1cfanhf416pc4v681gmkc9dzb3jqja7f62nxh"))
+
+(define rust-cpufeatures-0.2.17
+  (crate-source "cpufeatures" "0.2.17"
+                "10023dnnaghhdl70xcds12fsx2b966sxbxjq5sxs49mvxqw5ivar"))
+
+(define rust-crc32fast-1.5.0
+  (crate-source "crc32fast" "1.5.0"
+                "04d51liy8rbssra92p0qnwjw8i9rm9c4m3bwy19wjamz1k4w30cl"))
+
+(define rust-criterion-0.5.1
+  (crate-source "criterion" "0.5.1"
+                "0bv9ipygam3z8kk6k771gh9zi0j0lb9ir0xi1pc075ljg80jvcgj"))
+
+(define rust-criterion-plot-0.5.0
+  (crate-source "criterion-plot" "0.5.0"
+                "1c866xkjqqhzg4cjvg01f8w6xc1j3j7s58rdksl52skq89iq4l3b"))
+
+(define rust-crossbeam-0.8.4
+  (crate-source "crossbeam" "0.8.4"
+                "1a5c7yacnk723x0hfycdbl91ks2nxhwbwy46b8y5vyy0gxzcsdqi"))
+
+(define rust-crossbeam-channel-0.5.15
+  (crate-source "crossbeam-channel" "0.5.15"
+                "1cicd9ins0fkpfgvz9vhz3m9rpkh6n8d3437c3wnfsdkd3wgif42"))
+
+(define rust-crossbeam-deque-0.8.6
+  (crate-source "crossbeam-deque" "0.8.6"
+                "0l9f1saqp1gn5qy0rxvkmz4m6n7fc0b3dbm6q1r5pmgpnyvi3lcx"))
+
+(define rust-crossbeam-epoch-0.9.18
+  (crate-source "crossbeam-epoch" "0.9.18"
+                "03j2np8llwf376m3fxqx859mgp9f83hj1w34153c7a9c7i5ar0jv"))
+
+(define rust-crossbeam-queue-0.3.12
+  (crate-source "crossbeam-queue" "0.3.12"
+                "059igaxckccj6ndmg45d5yf7cm4ps46c18m21afq3pwiiz1bnn0g"))
+
+(define rust-crossbeam-utils-0.8.21
+  (crate-source "crossbeam-utils" "0.8.21"
+                "0a3aa2bmc8q35fb67432w16wvi54sfmb69rk9h5bhd18vw0c99fh"))
+
+(define rust-crunchy-0.2.4
+  (crate-source "crunchy" "0.2.4"
+                "1mbp5navim2qr3x48lyvadqblcxc1dm0lqr0swrkkwy2qblvw3s6"))
+
+(define rust-crypto-common-0.1.7
+  (crate-source "crypto-common" "0.1.7"
+                "02nn2rhfy7kvdkdjl457q2z0mklcvj9h662xrq6dzhfialh2kj3q"))
+
+(define rust-dashmap-6.1.0
+  (crate-source "dashmap" "6.1.0"
+                "1kvnw859xvrqyd1lk89na6797yvl5bri4wi9j0viz2a4j54wqhah"))
+
+(define rust-digest-0.10.7
+  (crate-source "digest" "0.10.7"
+                "14p2n6ih29x81akj097lvz7wi9b6b9hvls0lwrv7b6xwyy0s5ncy"))
+
+(define rust-either-1.15.0
+  (crate-source "either" "1.15.0"
+                "069p1fknsmzn9llaizh77kip0pqmcwpdsykv2x30xpjyija5gis8"))
+
+(define rust-equivalent-1.0.2
+  (crate-source "equivalent" "1.0.2"
+                "03swzqznragy8n0x31lqc78g2af054jwivp7lkrbrc0khz74lyl7"))
+
+(define rust-errno-0.3.14
+  (crate-source "errno" "0.3.14"
+                "1szgccmh8vgryqyadg8xd58mnwwicf39zmin3bsn63df2wbbgjir"))
+
+(define rust-fastrand-2.3.0
+  (crate-source "fastrand" "2.3.0"
+                "1ghiahsw1jd68df895cy5h3gzwk30hndidn3b682zmshpgmrx41p"))
+
+(define rust-find-msvc-tools-0.1.9
+  (crate-source "find-msvc-tools" "0.1.9"
+                "10nmi0qdskq6l7zwxw5g56xny7hb624iki1c39d907qmfh3vrbjv"))
+
+(define rust-flate2-1.1.9
+  (crate-source "flate2" "1.1.9"
+                "0g2pb7cxnzcbzrj8bw4v6gpqqp21aycmf6d84rzb6j748qkvlgw4"))
+
+(define rust-foldhash-0.1.5
+  (crate-source "foldhash" "0.1.5"
+                "1wisr1xlc2bj7hk4rgkcjkz3j2x4dhd1h9lwk7mj8p71qpdgbi6r"))
+
+(define rust-generic-array-0.14.7
+  (crate-source "generic-array" "0.14.7"
+                "16lyyrzrljfq424c3n8kfwkqihlimmsg5nhshbbp48np3yjrqr45"))
+
+(define rust-getrandom-0.3.4
+  (crate-source "getrandom" "0.3.4"
+                "1zbpvpicry9lrbjmkd4msgj3ihff1q92i334chk7pzf46xffz7c9"))
+
+(define rust-getrandom-0.4.2
+  (crate-source "getrandom" "0.4.2"
+                "0mb5833hf9pvn9dhvxjgfg5dx0m77g8wavvjdpvpnkp9fil1xr8d"))
+
+(define rust-half-2.7.1
+  (crate-source "half" "2.7.1"
+                "0jyq42xfa6sghc397mx84av7fayd4xfxr4jahsqv90lmjr5xi8kf"))
+
+(define rust-hashbrown-0.14.5
+  (crate-source "hashbrown" "0.14.5"
+                "1wa1vy1xs3mp11bn3z9dv0jricgr6a2j0zkf1g19yz3vw4il89z5"))
+
+(define rust-hashbrown-0.15.5
+  (crate-source "hashbrown" "0.15.5"
+                "189qaczmjxnikm9db748xyhiw04kpmhm9xj9k9hg0sgx7pjwyacj"))
+
+(define rust-hashbrown-0.16.1
+  (crate-source "hashbrown" "0.16.1"
+                "004i3njw38ji3bzdp9z178ba9x3k0c1pgy8x69pj7yfppv4iq7c4"))
+
+(define rust-heck-0.5.0
+  (crate-source "heck" "0.5.0"
+                "1sjmpsdl8czyh9ywl3qcsfsq9a307dg4ni2vnlwgnzzqhc4y0113"))
+
+(define rust-hermit-abi-0.5.2
+  (crate-source "hermit-abi" "0.5.2"
+                "1744vaqkczpwncfy960j2hxrbjl1q01csm84jpd9dajbdr2yy3zw"))
+
+(define rust-id-arena-2.3.0
+  (crate-source "id-arena" "2.3.0"
+                "0m6rs0jcaj4mg33gkv98d71w3hridghp5c4yr928hplpkgbnfc1x"))
+
+(define rust-indexmap-2.13.0
+  (crate-source "indexmap" "2.13.0"
+                "05qh5c4h2hrnyypphxpwflk45syqbzvqsvvyxg43mp576w2ff53p"))
+
+(define rust-is-terminal-0.4.17
+  (crate-source "is-terminal" "0.4.17"
+                "0ilfr9n31m0k6fsm3gvfrqaa62kbzkjqpwcd9mc46klfig1w2h1n"))
+
+(define rust-is-terminal-polyfill-1.70.2
+  (crate-source "is_terminal_polyfill" "1.70.2"
+                "15anlc47sbz0jfs9q8fhwf0h3vs2w4imc030shdnq54sny5i7jx6"))
+
+(define rust-itertools-0.10.5
+  (crate-source "itertools" "0.10.5"
+                "0ww45h7nxx5kj6z2y6chlskxd1igvs4j507anr6dzg99x1h25zdh"))
+
+(define rust-itoa-1.0.17
+  (crate-source "itoa" "1.0.17"
+                "1lh93xydrdn1g9x547bd05g0d3hra7pd1k4jfd2z1pl1h5hwdv4j"))
+
+(define rust-jobserver-0.1.34
+  (crate-source "jobserver" "0.1.34"
+                "0cwx0fllqzdycqn4d6nb277qx5qwnmjdxdl0lxkkwssx77j3vyws"))
+
+(define rust-js-sys-0.3.91
+  ;; TODO REVIEW: Check bundled sources.
+  (crate-source "js-sys" "0.3.91"
+                "171rzgq33wc1nxkgnvhlqqwwnrifs13mg3jjpjj5nf1z0yvib5xl"))
+
+(define rust-leb128fmt-0.1.0
+  (crate-source "leb128fmt" "0.1.0"
+                "1chxm1484a0bly6anh6bd7a99sn355ymlagnwj3yajafnpldkv89"))
+
+(define rust-libc-0.2.183
+  (crate-source "libc" "0.2.183"
+                "17c9gyia7rrzf9gsssvk3vq9ca2jp6rh32fsw6ciarpn5djlddmm"))
+
+(define rust-linux-raw-sys-0.12.1
+  ;; TODO REVIEW: Check bundled sources.
+  (crate-source "linux-raw-sys" "0.12.1"
+                "0lwasljrqxjjfk9l2j8lyib1babh2qjlnhylqzl01nihw14nk9ij"))
+
+(define rust-lock-api-0.4.14
+  (crate-source "lock_api" "0.4.14"
+                "0rg9mhx7vdpajfxvdjmgmlyrn20ligzqvn8ifmaz7dc79gkrjhr2"))
+
+(define rust-log-0.4.29
+  (crate-source "log" "0.4.29"
+                "15q8j9c8g5zpkcw0hnd6cf2z7fxqnvsjh3rw5mv5q10r83i34l2y"))
+
+(define rust-memchr-2.8.0
+  (crate-source "memchr" "2.8.0"
+                "0y9zzxcqxvdqg6wyag7vc3h0blhdn7hkq164bxyx2vph8zs5ijpq"))
+
+(define rust-miniz-oxide-0.8.9
+  (crate-source "miniz_oxide" "0.8.9"
+                "05k3pdg8bjjzayq3rf0qhpirq9k37pxnasfn4arbs17phqn6m9qz"))
+
+(define rust-nanorand-0.6.1
+  (crate-source "nanorand" "0.6.1"
+                "0n4903vzvk1ywp35x7qpf5avh4apqnjx1550w01iiakx4hsb77kj"))
+
+(define rust-num-traits-0.2.19
+  (crate-source "num-traits" "0.2.19"
+                "0h984rhdkkqd4ny9cif7y2azl3xdfb7768hb9irhpsch4q3gq787"))
+
+(define rust-num-cpus-1.17.0
+  (crate-source "num_cpus" "1.17.0"
+                "0fxjazlng4z8cgbmsvbzv411wrg7x3hyxdq8nxixgzjswyylppwi"))
+
+(define rust-once-cell-1.21.3
+  (crate-source "once_cell" "1.21.3"
+                "0b9x77lb9f1j6nqgf5aka4s2qj0nly176bpbrv6f9iakk5ff3xa2"))
+
+(define rust-once-cell-polyfill-1.70.2
+  (crate-source "once_cell_polyfill" "1.70.2"
+                "1zmla628f0sk3fhjdjqzgxhalr2xrfna958s632z65bjsfv8ljrq"))
+
+(define rust-oorandom-11.1.5
+  (crate-source "oorandom" "11.1.5"
+                "07mlf13z453fq01qff38big1lh83j8l6aaglf63ksqzzqxc0yyfn"))
+
+(define rust-parking-lot-core-0.9.12
+  (crate-source "parking_lot_core" "0.9.12"
+                "1hb4rggy70fwa1w9nb0svbyflzdc69h047482v2z3sx2hmcnh896"))
+
+(define rust-partition-0.1.2
+  (crate-source "partition" "0.1.2"
+                "1fiapzg2mnafr3zpc4w67grljk3qk1n4gh67iqmz2p2qm8x86zwl"))
+
+(define rust-pkg-config-0.3.32
+  (crate-source "pkg-config" "0.3.32"
+                "0k4h3gnzs94sjb2ix6jyksacs52cf1fanpwsmlhjnwrdnp8dppby"))
+
+(define rust-plotters-0.3.7
+  (crate-source "plotters" "0.3.7"
+                "0ixpy9svpmr2rkzkxvvdpysjjky4gw104d73n7pi2jbs7m06zsss"))
+
+(define rust-plotters-backend-0.3.7
+  (crate-source "plotters-backend" "0.3.7"
+                "0ahpliim4hrrf7d4ispc2hwr7rzkn6d6nf7lyyrid2lm28yf2hnz"))
+
+(define rust-plotters-svg-0.3.7
+  (crate-source "plotters-svg" "0.3.7"
+                "0w56sxaa2crpasa1zj0bhxzihlapqfkncggavyngg0w86anf5fji"))
+
+(define rust-prettyplease-0.2.37
+  (crate-source "prettyplease" "0.2.37"
+                "0azn11i1kh0byabhsgab6kqs74zyrg69xkirzgqyhz6xmjnsi727"))
+
+(define rust-proc-macro2-1.0.106
+  (crate-source "proc-macro2" "1.0.106"
+                "0d09nczyaj67x4ihqr5p7gxbkz38gxhk4asc0k8q23g9n85hzl4g"))
+
+(define rust-quote-1.0.45
+  (crate-source "quote" "1.0.45"
+                "095rb5rg7pbnwdp6v8w5jw93wndwyijgci1b5lw8j1h5cscn3wj1"))
+
+(define rust-r-efi-5.3.0
+  (crate-source "r-efi" "5.3.0"
+                "03sbfm3g7myvzyylff6qaxk4z6fy76yv860yy66jiswc2m6b7kb9"))
+
+(define rust-r-efi-6.0.0
+  (crate-source "r-efi" "6.0.0"
+                "1gyrl2k5fyzj9k7kchg2n296z5881lg7070msabid09asp3wkp7q"))
+
+(define rust-rayon-1.11.0
+  (crate-source "rayon" "1.11.0"
+                "13x5fxb7rn4j2yw0cr26n7782jkc7rjzmdkg42qxk3xz0p8033rn"))
+
+(define rust-rayon-core-1.13.0
+  (crate-source "rayon-core" "1.13.0"
+                "14dbr0sq83a6lf1rfjq5xdpk5r6zgzvmzs5j6110vlv2007qpq92"))
+
+(define rust-rdst-0.20.14
+  (crate-source "rdst" "0.20.14"
+                "0li77hviphwg27p2dc2v3x71lvdnc9k5ysz5snb6mdvpwns70ybf"))
+
+(define rust-redox-syscall-0.5.18
+  (crate-source "redox_syscall" "0.5.18"
+                "0b9n38zsxylql36vybw18if68yc9jczxmbyzdwyhb9sifmag4azd"))
+
+(define rust-regex-1.12.3
+  (crate-source "regex" "1.12.3"
+                "0xp2q0x7ybmpa5zlgaz00p8zswcirj9h8nry3rxxsdwi9fhm81z1"))
+
+(define rust-regex-automata-0.4.14
+  (crate-source "regex-automata" "0.4.14"
+                "13xf7hhn4qmgfh784llcp2kzrvljd13lb2b1ca0mwnf15w9d87bf"))
+
+(define rust-regex-syntax-0.8.10
+  (crate-source "regex-syntax" "0.8.10"
+                "02jx311ka0daxxc7v45ikzhcl3iydjbbb0mdrpc1xgg8v7c7v2fw"))
+
+(define rust-rustix-1.1.4
+  (crate-source "rustix" "1.1.4"
+                "14511f9yjqh0ix07xjrjpllah3325774gfwi9zpq72sip5jlbzmn"))
+
+(define rust-rustversion-1.0.22
+  (crate-source "rustversion" "1.0.22"
+                "0vfl70jhv72scd9rfqgr2n11m5i9l1acnk684m2w83w0zbqdx75k"))
+
+(define rust-same-file-1.0.6
+  (crate-source "same-file" "1.0.6"
+                "00h5j1w87dmhnvbv9l8bic3y7xxsnjmssvifw2ayvgx9mb1ivz4k"))
+
+(define rust-scopeguard-1.2.0
+  (crate-source "scopeguard" "1.2.0"
+                "0jcz9sd47zlsgcnm1hdw0664krxwb5gczlif4qngj2aif8vky54l"))
+
+(define rust-semver-1.0.27
+  (crate-source "semver" "1.0.27"
+                "1qmi3akfrnqc2hfkdgcxhld5bv961wbk8my3ascv5068mc5fnryp"))
+
+(define rust-serde-1.0.228
+  (crate-source "serde" "1.0.228"
+                "17mf4hhjxv5m90g42wmlbc61hdhlm6j9hwfkpcnd72rpgzm993ls"))
+
+(define rust-serde-core-1.0.228
+  (crate-source "serde_core" "1.0.228"
+                "1bb7id2xwx8izq50098s5j2sqrrvk31jbbrjqygyan6ask3qbls1"))
+
+(define rust-serde-derive-1.0.228
+  (crate-source "serde_derive" "1.0.228"
+                "0y8xm7fvmr2kjcd029g9fijpndh8csv5m20g4bd76w8qschg4h6m"))
+
+(define rust-serde-json-1.0.149
+  (crate-source "serde_json" "1.0.149"
+                "11jdx4vilzrjjd1dpgy67x5lgzr0laplz30dhv75lnf5ffa07z43"))
+
+(define rust-sha2-0.10.9
+  (crate-source "sha2" "0.10.9"
+                "10xjj843v31ghsksd9sl9y12qfc48157j1xpb8v1ml39jy0psl57"))
+
+(define rust-shlex-1.3.0
+  (crate-source "shlex" "1.3.0"
+                "0r1y6bv26c1scpxvhg2cabimrmwgbp4p3wy6syj9n0c4s3q2znhg"))
+
+(define rust-simd-adler32-0.3.8
+  (crate-source "simd-adler32" "0.3.8"
+                "18lx2gdgislabbvlgw5q3j5ssrr77v8kmkrxaanp3liimp2sc873"))
+
+(define rust-smallvec-1.15.1
+  (crate-source "smallvec" "1.15.1"
+                "00xxdxxpgyq5vjnpljvkmy99xij5rxgh913ii1v16kzynnivgcb7"))
+
+(define rust-strsim-0.11.1
+  (crate-source "strsim" "0.11.1"
+                "0kzvqlw8hxqb7y598w1s0hxlnmi84sg5vsipp3yg5na5d1rvba3x"))
+
+(define rust-syn-2.0.117
+  (crate-source "syn" "2.0.117"
+                "16cv7c0wbn8amxc54n4w15kxlx5ypdmla8s0gxr2l7bv7s0bhrg6"))
+
+(define rust-tempfile-3.26.0
+  (crate-source "tempfile" "3.26.0"
+                "182lfcv9d5w9349i0rjlgn4431k2m3yqfn9ls84p9d3ifxv2r9w2"))
+
+(define rust-thiserror-1.0.69
+  (crate-source "thiserror" "1.0.69"
+                "0lizjay08agcr5hs9yfzzj6axs53a2rgx070a1dsi3jpkcrzbamn"))
+
+(define rust-thiserror-impl-1.0.69
+  (crate-source "thiserror-impl" "1.0.69"
+                "1h84fmn2nai41cxbhk6pqf46bxqq1b344v8yz089w1chzi76rvjg"))
+
+(define rust-tikv-jemalloc-sys-0.5.4+5.3.0-patched
+  ;; TODO REVIEW: Check bundled sources.
+  (crate-source "tikv-jemalloc-sys" "0.5.4+5.3.0-patched"
+                "1lc5vm1p9dqdvd3mn3264zddnd7z6i95ch3y69prnjgxp0y480ll"))
+
+(define rust-tikv-jemallocator-0.5.4
+  (crate-source "tikv-jemallocator" "0.5.4"
+                "1jpanfm9az8hcbg6dyxdabykx03lj0j4g9cbwfa6rig5dg1f0pwn"))
+
+(define rust-tinytemplate-1.2.1
+  (crate-source "tinytemplate" "1.2.1"
+                "1g5n77cqkdh9hy75zdb01adxn45mkh9y40wdr7l68xpz35gnnkdy"))
+
+(define rust-typenum-1.19.0
+  (crate-source "typenum" "1.19.0"
+                "1fw2mpbn2vmqan56j1b3fbpcdg80mz26fm53fs16bq5xcq84hban"))
+
+(define rust-unicode-ident-1.0.24
+  (crate-source "unicode-ident" "1.0.24"
+                "0xfs8y1g7syl2iykji8zk5hgfi5jw819f5zsrbaxmlzwsly33r76"))
+
+(define rust-unicode-xid-0.2.6
+  (crate-source "unicode-xid" "0.2.6"
+                "0lzqaky89fq0bcrh6jj6bhlz37scfd8c7dsj5dq7y32if56c1hgb"))
+
+(define rust-utf8parse-0.2.2
+  (crate-source "utf8parse" "0.2.2"
+                "088807qwjq46azicqwbhlmzwrbkz7l4hpw43sdkdyyk524vdxaq6"))
+
+(define rust-version-check-0.9.5
+  (crate-source "version_check" "0.9.5"
+                "0nhhi4i5x89gm911azqbn7avs9mdacw2i3vcz3cnmz3mv4rqz4hb"))
+
+(define rust-voracious-radix-sort-1.2.0
+  (crate-source "voracious_radix_sort" "1.2.0"
+                "16a8j7hm35j3y8rah8mi4j2c8wavxvr1xrgpbb872yn2nvy7yvj4"))
+
+(define rust-walkdir-2.5.0
+  (crate-source "walkdir" "2.5.0"
+                "0jsy7a710qv8gld5957ybrnc07gavppp963gs32xk4ag8130jy99"))
+
+(define rust-wasip2-1.0.2+wasi-0.2.9
+  (crate-source "wasip2" "1.0.2+wasi-0.2.9"
+                "1xdw7v08jpfjdg94sp4lbdgzwa587m5ifpz6fpdnkh02kwizj5wm"))
+
+(define rust-wasip3-0.4.0+wasi-0.3.0-rc-2026-01-06
+  (crate-source "wasip3" "0.4.0+wasi-0.3.0-rc-2026-01-06"
+                "19dc8p0y2mfrvgk3qw3c3240nfbylv22mvyxz84dqpgai2zzha2l"))
+
+(define rust-wasm-bindgen-0.2.114
+  (crate-source "wasm-bindgen" "0.2.114"
+                "13nkhw552hpllrrmkd2x9y4bmcxr82kdpky2n667kqzcq6jzjck5"))
+
+(define rust-wasm-bindgen-macro-0.2.114
+  (crate-source "wasm-bindgen-macro" "0.2.114"
+                "1rhq9kkl7n0zjrag9p25xsi4aabpgfkyf02zn4xv6pqhrw7xb8hq"))
+
+(define rust-wasm-bindgen-macro-support-0.2.114
+  (crate-source "wasm-bindgen-macro-support" "0.2.114"
+                "1qriqqjpn922kv5c7f7627fj823k5aifv06j2gvwsiy5map4rkh3"))
+
+(define rust-wasm-bindgen-shared-0.2.114
+  (crate-source "wasm-bindgen-shared" "0.2.114"
+                "05lc6w64jxlk4wk8rjci4z61lhx2ams90la27a41gvi3qaw2d8vm"))
+
+(define rust-wasm-encoder-0.244.0
+  (crate-source "wasm-encoder" "0.244.0"
+                "06c35kv4h42vk3k51xjz1x6hn3mqwfswycmr6ziky033zvr6a04r"))
+
+(define rust-wasm-metadata-0.244.0
+  (crate-source "wasm-metadata" "0.244.0"
+                "02f9dhlnryd2l7zf03whlxai5sv26x4spfibjdvc3g9gd8z3a3mv"))
+
+(define rust-wasmparser-0.244.0
+  (crate-source "wasmparser" "0.244.0"
+                "1zi821hrlsxfhn39nqpmgzc0wk7ax3dv6vrs5cw6kb0v5v3hgf27"))
+
+(define rust-web-sys-0.3.91
+  ;; TODO REVIEW: Check bundled sources.
+  (crate-source "web-sys" "0.3.91"
+                "1y91r8f4dy4iqgrr03swdzqffz6wmllrgninp8kgpaq4n5xs2jw5"))
+
+(define rust-winapi-util-0.1.11
+  (crate-source "winapi-util" "0.1.11"
+                "08hdl7mkll7pz8whg869h58c1r9y7in0w0pk8fm24qc77k0b39y2"))
+
+(define rust-windows-link-0.2.1
+  (crate-source "windows-link" "0.2.1"
+                "1rag186yfr3xx7piv5rg8b6im2dwcf8zldiflvb22xbzwli5507h"))
+
+(define rust-windows-sys-0.61.2
+  ;; TODO REVIEW: Check bundled sources.
+  (crate-source "windows-sys" "0.61.2"
+                "1z7k3y9b6b5h52kid57lvmvm05362zv1v8w0gc7xyv5xphlp44xf"))
+
+(define rust-wit-bindgen-0.51.0
+  (crate-source "wit-bindgen" "0.51.0"
+                "19fazgch8sq5cvjv3ynhhfh5d5x08jq2pkw8jfb05vbcyqcr496p"))
+
+(define rust-wit-bindgen-core-0.51.0
+  (crate-source "wit-bindgen-core" "0.51.0"
+                "1p2jszqsqbx8k7y8nwvxg65wqzxjm048ba5phaq8r9iy9ildwqga"))
+
+(define rust-wit-bindgen-rust-0.51.0
+  (crate-source "wit-bindgen-rust" "0.51.0"
+                "08bzn5fsvkb9x9wyvyx98qglknj2075xk1n7c5jxv15jykh6didp"))
+
+(define rust-wit-bindgen-rust-macro-0.51.0
+  (crate-source "wit-bindgen-rust-macro" "0.51.0"
+                "0ymizapzv2id89igxsz2n587y2hlfypf6n8kyp68x976fzyrn3qc"))
+
+(define rust-wit-component-0.244.0
+  (crate-source "wit-component" "0.244.0"
+                "1clwxgsgdns3zj2fqnrjcp8y5gazwfa1k0sy5cbk0fsmx4hflrlx"))
+
+(define rust-wit-parser-0.244.0
+  (crate-source "wit-parser" "0.244.0"
+                "0dm7avvdxryxd5b02l0g5h6933z1cw5z0d4wynvq2cywq55srj7c"))
+
+(define rust-zerocopy-0.8.40
+  (crate-source "zerocopy" "0.8.40"
+                "1r9j2mlb54q1l9pgall3mk0gg6cprhdncvbbgsgxnxmmj3jcd2d7"))
+
+(define rust-zerocopy-derive-0.8.40
+  (crate-source "zerocopy-derive" "0.8.40"
+                "0lsrhg5nvf0c40z644a014l2nrvh7xw0ff3i9744k9vif2d4hp7n"))
+
+(define rust-zmij-1.0.21
+  (crate-source "zmij" "1.0.21"
+                "1amb5i6gz7yjb0dnmz5y669674pqmwbj44p4yfxfv2ncgvk8x15q"))
+
+(define rust-zstd-0.13.3
+  (crate-source "zstd" "0.13.3"
+                "12n0h4w9l526li7jl972rxpyf012jw3nwmji2qbjghv9ll8y67p9"))
+
+(define rust-zstd-safe-7.2.4
+  (crate-source "zstd-safe" "7.2.4"
+                "179vxmkzhpz6cq6mfzvgwc99bpgllkr6lwxq7ylh5dmby3aw8jcg"))
+
+(define rust-zstd-sys-2.0.16+zstd.1.5.7
+  ;; TODO REVIEW: Check bundled sources.
+  (crate-source "zstd-sys" "2.0.16+zstd.1.5.7"
+                "0j1pd2iaqpvaxlgqmmijj68wma7xwdv9grrr63j873yw5ay9xqci"))
+
+;;;
+;;; Crate sources (generated by: guix import crate -f Cargo.lock onecode).
+;;;
+
+(define rust-aho-corasick-1.1.3
+  (crate-source "aho-corasick" "1.1.3"
+                "05mrpkvdgp5d20y2p989f187ry9diliijgwrs254fs9s1m1x6q4f"))
+
+(define rust-bindgen-0.70.1
+  (crate-source "bindgen" "0.70.1"
+                "0vyf0jp6apcy9kjyz4s8vldj0xqycnbzb6zv3skkwiqdi3nqz7gl"))
+
+(define rust-bitflags-2.9.4
+  (crate-source "bitflags" "2.9.4"
+                "157kkcv8s7vk6d17dar1pa5cqcz4c8pdrn16wm1ld7jnr86d2q92"))
+
+(define rust-cc-1.2.40
+  (crate-source "cc" "1.2.40"
+                "1ywr07jr2rj1h7gkgkc2c1bn39wchpfnrm39sjm7dzdiyj95vl71"))
+
+(define rust-cexpr-0.6.0
+  (crate-source "cexpr" "0.6.0"
+                "0rl77bwhs5p979ih4r0202cn5jrfsrbgrksp40lkfz5vk1x3ib3g"))
+
+(define rust-cfg-if-1.0.3
+  (crate-source "cfg-if" "1.0.3"
+                "1afg7146gbxjvkbjx7i5sdrpqp9q5akmk9004fr8rsm90jf2il9g"))
+
+(define rust-clang-sys-1.8.1
+  ;; TODO REVIEW: Check bundled sources.
+  (crate-source "clang-sys" "1.8.1"
+                "1x1r9yqss76z8xwpdanw313ss6fniwc1r7dzb5ycjn0ph53kj0hb"))
+
+(define rust-find-msvc-tools-0.1.3
+  (crate-source "find-msvc-tools" "0.1.3"
+                "1cr47xn14dgkyd5ca2jzfk1apkm3wwqvvglqqhrcx4aidv9gk683"))
+
+(define rust-glob-0.3.3
+  (crate-source "glob" "0.3.3"
+                "106jpd3syfzjfj2k70mwm0v436qbx96wig98m4q8x071yrq35hhc"))
+
+(define rust-itertools-0.13.0
+  (crate-source "itertools" "0.13.0"
+                "11hiy3qzl643zcigknclh446qb9zlg4dpdzfkjaa9q9fqpgyfgj1"))
+
+(define rust-libc-0.2.176
+  (crate-source "libc" "0.2.176"
+                "0x7ivn80h7nz2l46vra7bxx36s6r8d0lkax14dx97skjsss2kyaq"))
+
+(define rust-libloading-0.8.9
+  (crate-source "libloading" "0.8.9"
+                "0mfwxwjwi2cf0plxcd685yxzavlslz7xirss3b9cbrzyk4hv1i6p"))
+
+(define rust-log-0.4.28
+  (crate-source "log" "0.4.28"
+                "0cklpzrpxafbaq1nyxarhnmcw9z3xcjrad3ch55mmr58xw2ha21l"))
+
+(define rust-memchr-2.7.6
+  (crate-source "memchr" "2.7.6"
+                "0wy29kf6pb4fbhfksjbs05jy2f32r2f3r1ga6qkmpz31k79h0azm"))
+
+(define rust-minimal-lexical-0.2.1
+  (crate-source "minimal-lexical" "0.2.1"
+                "16ppc5g84aijpri4jzv14rvcnslvlpphbszc7zzp6vfkddf4qdb8"))
+
+(define rust-nom-7.1.3
+  (crate-source "nom" "7.1.3"
+                "0jha9901wxam390jcf5pfa0qqfrgh8li787jx2ip0yk5b8y9hwyj"))
+
+(define rust-proc-macro2-1.0.101
+  (crate-source "proc-macro2" "1.0.101"
+                "1pijhychkpl7rcyf1h7mfk6gjfii1ywf5n0snmnqs5g4hvyl7bl9"))
+
+(define rust-quote-1.0.41
+  (crate-source "quote" "1.0.41"
+                "1lg108nb57lwbqlnpsii89cchk6i8pkcvrv88xh1p7a9gdz7c9ff"))
+
+(define rust-regex-1.11.3
+  (crate-source "regex" "1.11.3"
+                "0b58ya98c4i5cjjiwhpcnjr61cv9g143qhdwhsryggj09098hllb"))
+
+(define rust-regex-automata-0.4.11
+  (crate-source "regex-automata" "0.4.11"
+                "1bawj908pxixpggcnma3xazw53mwyz68lv9hn4yg63nlhv7bjgl3"))
+
+(define rust-regex-syntax-0.8.6
+  (crate-source "regex-syntax" "0.8.6"
+                "00chjpglclfskmc919fj5aq308ffbrmcn7kzbkz92k231xdsmx6a"))
+
+(define rust-syn-2.0.106
+  (crate-source "syn" "2.0.106"
+                "19mddxp1ia00hfdzimygqmr1jqdvyl86k48427bkci4d08wc9rzd"))
+
+(define rust-unicode-ident-1.0.19
+  (crate-source "unicode-ident" "1.0.19"
+                "17bx1j1zf6b9j3kpyf74mraary7ava3984km0n8kh499h5a58fpn"))
+
+;;;
+;;; Additional crate sources for fastga-rs (generated by: guix import crate -f Cargo.lock fastga-rs).
+;;; which 4.4.2 is used instead of 6.0.3 to avoid home 0.5.12 (requires rustc 1.88).
+;;;
+
+(define rust-which-4.4.2
+  (crate-source "which" "4.4.2"
+                "1ixzmx3svsv5hbdvd8vdhd3qwvf6ns8jdpif1wmwsy10k90j9fl7"))
+
+(define rust-anyhow-1.0.100
+  (crate-source "anyhow" "1.0.100"
+                "0qbfmw4hhv2ampza1csyvf1jqjs2dgrj29cv3h3sh623c6qvcgm2"))
+
+(define rust-bitflags-2.10.0
+  (crate-source "bitflags" "2.10.0"
+                "1lqxwc3625lcjrjm5vygban9v8a6dlxisp1aqylibiaw52si4bl1"))
+
+(define rust-cc-1.2.43
+  (crate-source "cc" "1.2.43"
+                "1hpg1f1srgd5bfivvln1s3kcajdxpqvjsvd8m4y4nmap8pwv17kk"))
+
+(define rust-diff-0.1.13
+  (crate-source "diff" "0.1.13"
+                "1j0nzjxci2zqx63hdcihkp0a4dkdmzxd7my4m7zk6cjyfy34j9an"))
+
+(define rust-find-msvc-tools-0.1.4
+  (crate-source "find-msvc-tools" "0.1.4"
+                "09x1sfinrz86bkm6i2d85lpsfnxn0w797g5zisv1nwhaz1w1h1aj"))
+
+(define rust-home-0.5.12
+  (crate-source "home" "0.5.12"
+                "13bjyzgx6q9srnfvl43dvmhn93qc8mh5w7cylk2g13sj3i3pyqnc"))
+
+(define rust-libc-0.2.177
+  (crate-source "libc" "0.2.177"
+                "0xjrn69cywaii1iq2lib201bhlvan7czmrm604h5qcm28yps4x18"))
+
+(define rust-linux-raw-sys-0.4.15
+  ;; TODO REVIEW: Check bundled sources.
+  (crate-source "linux-raw-sys" "0.4.15"
+                "1aq7r2g7786hyxhv40spzf2nhag5xbw2axxc1k8z5k1dsgdm4v6j"))
+
+(define rust-linux-raw-sys-0.11.0
+  ;; TODO REVIEW: Check bundled sources.
+  (crate-source "linux-raw-sys" "0.11.0"
+                "0fghx0nn8nvbz5yzgizfcwd6ap2pislp68j8c1bwyr6sacxkq7fz"))
+
+(define rust-nix-0.27.1
+  (crate-source "nix" "0.27.1"
+                "0ly0kkmij5f0sqz35lx9czlbk6zpihb7yh1bsy4irzwfd2f4xc1f"))
+
+(define rust-onecode-0.1.0
+  (crate-source "onecode" "0.1.0"
+                "14fp7jpimfqrcm71yag2kbfidsyq430fb1vg1qrm0xi3jfm5b1f5"))
+
+(define rust-pretty-assertions-1.4.1
+  (crate-source "pretty_assertions" "1.4.1"
+                "0v8iq35ca4rw3rza5is3wjxwsf88303ivys07anc5yviybi31q9s"))
+
+(define rust-proc-macro2-1.0.103
+  (crate-source "proc-macro2" "1.0.103"
+                "1s29bz20xl2qk5ffs2mbdqknaj43ri673dz86axdbf47xz25psay"))
+
+(define rust-regex-1.12.2
+  (crate-source "regex" "1.12.2"
+                "1m14zkg6xmkb0q5ah3y39cmggclsjdr1wpxfa4kf5wvm3wcw0fw4"))
+
+(define rust-regex-automata-0.4.13
+  (crate-source "regex-automata" "0.4.13"
+                "070z0j23pjfidqz0z89id1fca4p572wxpcr20a0qsv68bbrclxjj"))
+
+(define rust-regex-syntax-0.8.8
+  (crate-source "regex-syntax" "0.8.8"
+                "0n7ggnpk0r32rzgnycy5xrc1yp2kq19m6pz98ch3c6dkaxw9hbbs"))
+
+(define rust-rustix-0.38.44
+  (crate-source "rustix" "0.38.44"
+                "0m61v0h15lf5rrnbjhcb9306bgqrhskrqv7i1n0939dsw8dbrdgx"))
+
+(define rust-rustix-1.1.2
+  (crate-source "rustix" "1.1.2"
+                "0gpz343xfzx16x82s1x336n0kr49j02cvhgxdvaq86jmqnigh5fd"))
+
+(define rust-syn-2.0.108
+  (crate-source "syn" "2.0.108"
+                "05z908svb0yw5wzrlv27l2i8j1d8l16hd5r8bjh809146myr2n6s"))
+
+(define rust-tempfile-3.23.0
+  (crate-source "tempfile" "3.23.0"
+                "05igl2gml6z6i2va1bv49f9f1wb3f752c2i63lvlb9s2vxxwfc9d"))
+
+(define rust-unicode-ident-1.0.20
+  (crate-source "unicode-ident" "1.0.20"
+                "01lafj17xwizrlvn006zz8ip99hqisf77kjk0a8flfmpmrsynbj6"))
+
+(define rust-wasip2-1.0.1+wasi-0.2.4
+  (crate-source "wasip2" "1.0.1+wasi-0.2.4"
+                "1rsqmpspwy0zja82xx7kbkbg9fv34a4a2if3sbd76dy64a244qh5"))
+
+(define rust-which-6.0.3
+  (crate-source "which" "6.0.3"
+                "07yg74dsq644hq5a35546c9mja6rsjdsg92rykr9hkflxf7r5vml"))
+
+(define rust-windows-sys-0.59.0
+  ;; TODO REVIEW: Check bundled sources.
+  (crate-source "windows-sys" "0.59.0"
+                "0fw5672ziw8b3zpmnbp9pdv1famk74f1l9fcbc3zsrzdg56vqf0y"))
+
+(define rust-windows-targets-0.52.6
+  (crate-source "windows-targets" "0.52.6"
+                "0wwrx625nwlfp7k93r2rra568gad1mwd888h1jwnl0vfg5r4ywlv"))
+
+(define rust-windows-aarch64-gnullvm-0.52.6
+  (crate-source "windows_aarch64_gnullvm" "0.52.6"
+                "1lrcq38cr2arvmz19v32qaggvj8bh1640mdm9c2fr877h0hn591j"))
+
+(define rust-windows-aarch64-msvc-0.52.6
+  (crate-source "windows_aarch64_msvc" "0.52.6"
+                "0sfl0nysnz32yyfh773hpi49b1q700ah6y7sacmjbqjjn5xjmv09"))
+
+(define rust-windows-i686-gnu-0.52.6
+  (crate-source "windows_i686_gnu" "0.52.6"
+                "02zspglbykh1jh9pi7gn8g1f97jh1rrccni9ivmrfbl0mgamm6wf"))
+
+(define rust-windows-i686-gnullvm-0.52.6
+  (crate-source "windows_i686_gnullvm" "0.52.6"
+                "0rpdx1537mw6slcpqa0rm3qixmsb79nbhqy5fsm3q2q9ik9m5vhf"))
+
+(define rust-windows-i686-msvc-0.52.6
+  (crate-source "windows_i686_msvc" "0.52.6"
+                "0rkcqmp4zzmfvrrrx01260q3xkpzi6fzi2x2pgdcdry50ny4h294"))
+
+(define rust-windows-x86-64-gnu-0.52.6
+  (crate-source "windows_x86_64_gnu" "0.52.6"
+                "0y0sifqcb56a56mvn7xjgs8g43p33mfqkd8wj1yhrgxzma05qyhl"))
+
+(define rust-windows-x86-64-gnullvm-0.52.6
+  (crate-source "windows_x86_64_gnullvm" "0.52.6"
+                "03gda7zjx1qh8k9nnlgb7m3w3s1xkysg55hkd1wjch8pqhyv5m94"))
+
+(define rust-windows-x86-64-msvc-0.52.6
+  (crate-source "windows_x86_64_msvc" "0.52.6"
+                "1v7rb5cibyzx8vak29pdrk8nx9hycsjs4w0jgms08qk49jl6v7sq"))
+
+(define rust-winsafe-0.0.19
+  (crate-source "winsafe" "0.0.19"
+                "0169xy9mjma8dys4m8v4x0xhw2gkbhv2v1wsbvcjl9bhnxxd2dfi"))
+
+(define rust-wit-bindgen-0.46.0
+  (crate-source "wit-bindgen" "0.46.0"
+                "0ngysw50gp2wrrfxbwgp6dhw1g6sckknsn3wm7l00vaf7n48aypi"))
+
+(define rust-yansi-1.0.1
+  (crate-source "yansi" "1.0.1"
+                "0jdh55jyv0dpd38ij4qh60zglbw9aa8wafqai6m0wa7xaxk3mrfg"))
+
+;;;
+;;; Additional crate sources for impg (generated by: guix import crate -f Cargo.lock impg).
+;;;
+
+(define rust-approx-0.5.1
+  (crate-source "approx" "0.5.1"
+                "1ilpv3dgd58rasslss0labarq7jawxmivk17wsh8wmkdm3q15cfa"))
+
+(define rust-arrayvec-0.5.2
+  (crate-source "arrayvec" "0.5.2"
+                "12q6hn01x5435bprwlb7w9m7817dyfq55yrl4psygr78bp32zdi3"))
+
+(define rust-bgzip-0.3.1
+  (crate-source "bgzip" "0.3.1"
+                "16zr2nclis3kgz0jxi7ayyk510ar5dvyfpf03fazajmn1ycdhkxn"))
+
+(define rust-bincode-2.0.1
+  (crate-source "bincode" "2.0.1"
+                "0h5pxp3dqkigjwy926a03sl69n9wv7aq4142a20kw9lhn3bzbsin"))
+
+(define rust-bincode-derive-2.0.1
+  (crate-source "bincode_derive" "2.0.1"
+                "029wmh26hq3hhs1gq629y0frn2pkl7ld061rk23fji8g8jd715dz"))
+
+(define rust-bio-types-1.0.4
+  (crate-source "bio-types" "1.0.4"
+                "0zmdcvj44a088larkahcic5z61cwn2x80iym0w14albzid7zbp7l"))
+
+(define rust-bitvec-1.0.1
+  (crate-source "bitvec" "1.0.1"
+                "173ydyj2q5vwj88k6xgjnfsshs4x9wbvjjv7sm0h36r34hn87hhv"))
+
+(define rust-boomphf-0.5.9
+  (crate-source "boomphf" "0.5.9"
+                "0braniw72g9yq5006sfgc1g8d4317bb524c694jw6nggizrvg3sf"))
+
+(define rust-bstr-0.2.17
+  (crate-source "bstr" "0.2.17"
+                "08rjbhysy6gg27db2h3pnhvr2mlr5vkj797i9625kwg8hgrnjdds"))
+
+(define rust-bytemuck-1.25.0
+  (crate-source "bytemuck" "1.25.0"
+                "1v1z32igg9zq49phb3fra0ax5r2inf3aw473vldnm886sx5vdvy8"))
+
+(define rust-bytemuck-derive-1.10.2
+  (crate-source "bytemuck_derive" "1.10.2"
+                "1zvmjmw1sdmx9znzm4dpbb2yvz9vyim8w6gp4z256l46qqdvvazr"))
+
+(define rust-bytes-1.11.1
+  (crate-source "bytes" "1.11.1"
+                "0czwlhbq8z29wq0ia87yass2mzy1y0jcasjb8ghriiybnwrqfx0y"))
+
+(define rust-bzip2-0.5.2
+  (crate-source "bzip2" "0.5.2"
+                "0iya6nbj0p2y8jss0z05yncc5hadry164fw3zva01y06v4igpv29"))
+
+(define rust-bzip2-sys-0.1.13+1.0.8
+  ;; TODO: Check bundled sources.
+  (crate-source "bzip2-sys" "0.1.13+1.0.8"
+                "056c39pgjh4272bdslv445f5ry64xvb0f7nph3z7860ln8rzynr2"))
+
+(define rust-cmake-0.1.57
+  (crate-source "cmake" "0.1.57"
+                "0zgg10qgykig4nxyf7whrqfg7fkk0xfxhiavikmrndvbrm23qi3m"))
+
+(define rust-codespan-reporting-0.13.1
+  (crate-source "codespan-reporting" "0.13.1"
+                "10gnryisncjpfv7wi3jv9mhmrvqz6ksvfzddw3gf99q9k5b1sjdg"))
+
+(define rust-coitrees-0.4.0
+  (crate-source "coitrees" "0.4.0"
+                "1qwb4c5gx30gl1kyi85rbq6z23l2f9lm0q02ym160n0fvc89c3r4"))
+
+(define rust-console-0.16.1
+  (crate-source "console" "0.16.1"
+                "1x4x6vfi1s55nbr4i77b9r87s213h46lq396sij9fkmidqx78c5l"))
+
+(define rust-core-affinity-0.8.3
+  (crate-source "core_affinity" "0.8.3"
+                "0hhkjybngi5n2ayjmbba2n2gh9fc8xbqgpzm2dp6q094nskv6d50"))
+
+(define rust-custom-derive-0.1.7
+  (crate-source "custom_derive" "0.1.7"
+                "1f81bavw1wnykwh21hh4yyzigs6zl6f6pkk9p3car8kq95yfb2pg"))
+
+(define rust-cxx-1.0.194
+  (crate-source "cxx" "1.0.194"
+                "0zkw4ig6cwss01xfmgnsyp071ji7g49iqd1vv51jyfly64vq8zbl"))
+
+(define rust-cxx-build-1.0.194
+  (crate-source "cxx-build" "1.0.194"
+                "07pwgafaf8qd7ic8f5lbgqgc9zcvm6l7vvvan5vj850a35ynkx5h"))
+
+(define rust-cxxbridge-cmd-1.0.194
+  (crate-source "cxxbridge-cmd" "1.0.194"
+                "0a63lwv4x36ayxn9fvn7hghjlmf0w4nqy0pd1v2x8y46zacng5fh"))
+
+(define rust-cxxbridge-flags-1.0.194
+  (crate-source "cxxbridge-flags" "1.0.194"
+                "0fi8rf9076fk53f8gd4a6x1dwffys9d9bqz7mjcavw5lda1llf13"))
+
+(define rust-cxxbridge-macro-1.0.194
+  (crate-source "cxxbridge-macro" "1.0.194"
+                "1kv3yw1qc9x686kw8z3mmh5ddz98f6v7ghsgzfnjd59bhaswdb76"))
+
+(define rust-derive-new-0.5.9
+  (crate-source "derive-new" "0.5.9"
+                "0d9m5kcj1rdmdjqfgj7rxxhdzx0as7p4rp1mjx5j6w5dl2f3461l"))
+
+(define rust-derive-new-0.7.0
+  (crate-source "derive-new" "0.7.0"
+                "1k5y4lrj182n86zjb3q0rkajgfqazamjzinsi7prw616yi88vp1c"))
+
+(define rust-displaydoc-0.2.5
+  (crate-source "displaydoc" "0.2.5"
+                "1q0alair462j21iiqwrr21iabkfnb13d6x5w95lkdg21q2xrqdlp"))
+
+(define rust-encode-unicode-1.0.0
+  (crate-source "encode_unicode" "1.0.0"
+                "1h5j7j7byi289by63s3w4a8b3g6l5ccdrws7a67nn07vdxj77ail"))
+
+(define rust-env-filter-1.0.0
+  (crate-source "env_filter" "1.0.0"
+                "13rhwy5arjn626a0z3hvvkpf9w9pnll14c35vscyqx3jwp43q73s"))
+
+(define rust-env-logger-0.11.9
+  (crate-source "env_logger" "0.11.9"
+                "13913sqpnhv741z5ixmcy5j3nnml53gmsllnhajjkx2ili7fxnmj"))
+
+(define rust-flume-0.11.1
+  (crate-source "flume" "0.11.1"
+                "15ch0slxa8sqsi6c73a0ky6vdnh48q8cxjf7rksa3243m394s3ns"))
+
+(define rust-fnv-1.0.7
+  (crate-source "fnv" "1.0.7"
+                "1hc2mcqha06aibcaza94vbi81j6pr9a1bbxrxjfhc91zin8yr7iz"))
+
+(define rust-foldhash-0.2.0
+  (crate-source "foldhash" "0.2.0"
+                "1nvgylb099s11xpfm1kn2wcsql080nqmnhj1l25bp3r2b35j9kkp"))
+
+(define rust-form-urlencoded-1.2.2
+  (crate-source "form_urlencoded" "1.2.2"
+                "1kqzb2qn608rxl3dws04zahcklpplkd5r1vpabwga5l50d2v4k6b"))
+
+(define rust-fs-utils-1.1.4
+  (crate-source "fs-utils" "1.1.4"
+                "14r5wl14mz227v0lpy89lvjzfnxgdxigvrrmm6c4r52w03fakivg"))
+
+(define rust-funty-2.0.0
+  (crate-source "funty" "2.0.0"
+                "177w048bm0046qlzvp33ag3ghqkqw4ncpzcm5lq36gxf2lla7mg6"))
+
+(define rust-futures-core-0.3.32
+  (crate-source "futures-core" "0.3.32"
+                "07bbvwjbm5g2i330nyr1kcvjapkmdqzl4r6mqv75ivvjaa0m0d3y"))
+
+(define rust-futures-sink-0.3.32
+  (crate-source "futures-sink" "0.3.32"
+                "14q8ml7hn5a6gyy9ri236j28kh0svqmrk4gcg0wh26rkazhm95y3"))
+
+(define rust-getrandom-0.2.16
+  (crate-source "getrandom" "0.2.16"
+                "14l5aaia20cc6cc08xdlhrzmfcylmrnprwnna20lqf746pqzjprk"))
+
+(define rust-getrandom-0.3.3
+  (crate-source "getrandom" "0.3.3"
+                "1x6jl875zp6b2b6qp9ghc84b0l76bvng2lvm8zfcmwjl7rb5w516"))
+
+(define rust-gfa-0.10.1
+  (crate-source "gfa" "0.10.1"
+                "1x996rpfnflgi2j4dgaj5sdxdbf24zfm9d2ha0zy8aid0cd60cln"))
+
+(define rust-gzp-1.0.1
+  (crate-source "gzp" "1.0.1"
+                "0k9qhky0vm4kyqqqi8i8h99128mlfmvl9w53v9kgm9nql3lq18gc"))
+
+(define rust-handlegraph-0.7.0-alpha.9.3ac575e
+  ;; TODO: Define standalone package if this is a workspace.
+  (origin
+    (method git-fetch)
+    (uri (git-reference (url "https://github.com/pangenome/rs-handlegraph")
+                        (commit "3ac575e4216ce16a16667503a8875e469a40a97a")))
+    (file-name (git-file-name "rust-handlegraph" "0.7.0-alpha.9.3ac575e"))
+    (sha256 (base32 "1x9lhc4hjyfixvhdxr6z0lanfcynnqsmx3dqaf6xw4dpx0i4mcgg"))))
+
+(define rust-hts-sys-2.2.0
+  ;; TODO: Check bundled sources.
+  (crate-source "hts-sys" "2.2.0"
+                "1cmvdwssd6xjk6w1iigaj5rl9ibx4zaaskfb2ji2mlhw28f7z3g3"))
+
+(define rust-icu-collections-2.1.1
+  (crate-source "icu_collections" "2.1.1"
+                "0hsblchsdl64q21qwrs4hvc2672jrf466zivbj1bwyv606bn8ssc"))
+
+(define rust-icu-locale-core-2.1.1
+  (crate-source "icu_locale_core" "2.1.1"
+                "1djvdc2f5ylmp1ymzv4gcnmq1s4hqfim9nxlcm173lsd01hpifpd"))
+
+(define rust-icu-normalizer-2.1.1
+  (crate-source "icu_normalizer" "2.1.1"
+                "16dmn5596la2qm0r3vih0bzjfi0vx9a20yqjha6r1y3vnql8hv2z"))
+
+(define rust-icu-normalizer-data-2.1.1
+  (crate-source "icu_normalizer_data" "2.1.1"
+                "02jnzizg6q75m41l6c13xc7nkc5q8yr1b728dcgfhpzw076wrvbs"))
+
+(define rust-icu-properties-2.0.1
+  (crate-source "icu_properties" "2.0.1"
+                "0az349pjg8f18lrjbdmxcpg676a7iz2ibc09d2wfz57b3sf62v01"))
+
+(define rust-icu-properties-data-2.0.1
+  (crate-source "icu_properties_data" "2.0.1"
+                "0cnn3fkq6k88w7p86w7hsd1254s4sl783rpz4p6hlccq74a5k119"))
+
+(define rust-icu-provider-2.1.1
+  (crate-source "icu_provider" "2.1.1"
+                "0576b7dizgyhpfa74kacv86y4g1p7v5ffd6c56kf1q82rvq2r5l5"))
+
+(define rust-idna-1.1.0
+  (crate-source "idna" "1.1.0"
+                "1pp4n7hppm480zcx411dsv9wfibai00wbpgnjj4qj0xa7kr7a21v"))
+
+(define rust-idna-adapter-1.2.1
+  (crate-source "idna_adapter" "1.2.1"
+                "0i0339pxig6mv786nkqcxnwqa87v4m94b2653f6k3aj0jmhfkjis"))
+
+(define rust-ieee754-0.2.6
+  (crate-source "ieee754" "0.2.6"
+                "1771d2kvw1wga65yrg9m7maky0fzsaq9hvhkv91n6gmxmjfdl1wh"))
+
+(define rust-indicatif-0.18.4
+  (crate-source "indicatif" "0.18.4"
+                "1sz9p1a7i0z666psqzjdpi8xa11icmnpfd4q4dyxm4ihh0ihyir5"))
+
+(define rust-jiff-0.2.22
+  (crate-source "jiff" "0.2.22"
+                "1hni7qv2j2kbjisw84r7y6gxdb8qx534vw92nmz13nc7gjy496w1"))
+
+(define rust-jiff-static-0.2.22
+  (crate-source "jiff-static" "0.2.22"
+                "18fljj75vxqvq1v55s074pbbrjy67qg1p2f0cvbmzhzc33dm40j7"))
+
+(define rust-lazy-static-1.5.0
+  (crate-source "lazy_static" "1.5.0"
+                "1zk6dqqni0193xg6iijh7i3i44sryglwgvx20spdvwk3r6sbrlmv"))
+
+(define rust-lexical-core-0.7.6
+  (crate-source "lexical-core" "0.7.6"
+                "1zjzab1fnaw4kj6ixyrskp4dyz761gdcab07m4bkvlk1l4mcc1v6"))
+
+(define rust-libc-0.2.175
+  (crate-source "libc" "0.2.175"
+                "0hw5sb3gjr0ivah7s3fmavlpvspjpd4mr009abmam2sr7r4sx0ka"))
+
+(define rust-libdeflate-sys-1.25.2
+  ;; TODO: Check bundled sources.
+  (crate-source "libdeflate-sys" "1.25.2"
+                "02pc3wphyi5c33vcm3dvmwgybazp1lnh8w075wyrd1za1003wxbj"))
+
+(define rust-libdeflater-1.25.2
+  (crate-source "libdeflater" "1.25.2"
+                "0wgyb0b7mz7hhx60hhj1wjnnmchsq1xzp7xmvwq61fxidz7l3vni"))
+
+(define rust-liblzma-0.3.6
+  (crate-source "liblzma" "0.3.6"
+                "0r6pkykpajdypdyyij90d8s2ihhsz9m9ly7pm1dpfsg29frd4cd6"))
+
+(define rust-liblzma-sys-0.3.13
+  ;; TODO: Check bundled sources.
+  (crate-source "liblzma-sys" "0.3.13"
+                "0x9lni7a3x1rwdsribj311zpxb5n99kn256yad2z7vxck4ddznpg"))
+
+(define rust-libz-ng-sys-1.1.24
+  ;; TODO: Check bundled sources.
+  (crate-source "libz-ng-sys" "1.1.24"
+                "1fi9c3w09nnjhx693675zmm71qmm6rpxxkhpiswx2vkw6j7h5zsj"))
+
+(define rust-libz-rs-sys-0.5.2
+  ;; TODO: Check bundled sources.
+  (crate-source "libz-rs-sys" "0.5.2"
+                "1kdy093bhxfkgx7li3raxigcc3qdqjn3hvrpjkblvv6r777vh3c4"))
+
+(define rust-libz-sys-1.1.24
+  ;; TODO: Check bundled sources.
+  (crate-source "libz-sys" "1.1.24"
+                "0f8879301wxgljw8snkcix90p6qbm4inp3sqrsjq9b2svv5yjda7"))
+
+(define rust-linear-map-1.2.0
+  (crate-source "linear-map" "1.2.0"
+                "1vh3sczl4xb5asdlpafdf3y4g9bp63fgs8y2a2sjgmcsn7v21bmz"))
+
+(define rust-link-cplusplus-1.0.12
+  (crate-source "link-cplusplus" "1.0.12"
+                "10lcgfp9pnxpihp21s86xnq57vpr97m2k419d8rvkl57m8qcfy3z"))
+
+(define rust-litemap-0.8.1
+  (crate-source "litemap" "0.8.1"
+                "0xsy8pfp9s802rsj1bq2ys2kbk1g36w5dr3gkfip7gphb5x60wv3"))
+
+(define rust-matrixmultiply-0.3.10
+  (crate-source "matrixmultiply" "0.3.10"
+                "020sqwg3cvprfasbszqbnis9zx6c3w9vlkfidyimgblzdq0y6vd0"))
+
+(define rust-memmap-0.7.0
+  (crate-source "memmap" "0.7.0"
+                "0ns7kkd1h4pijdkwfvw4qlbbmqmlmzwlq3g2676dcl5vwyazv1b5"))
+
+(define rust-nalgebra-0.33.2
+  (crate-source "nalgebra" "0.33.2"
+                "0fvayv2fa6x4mfm4cq3m2cfcc2jwkiq4sm73209zszkh9gvcvbi6"))
+
+(define rust-nalgebra-macros-0.2.2
+  (crate-source "nalgebra-macros" "0.2.2"
+                "1z6v9phhr1hwzyyblf792128lxfv1hy1sxl4cvikihcgmxr56ji5"))
+
+(define rust-nanorand-0.7.0
+  (crate-source "nanorand" "0.7.0"
+                "1hr60b8zlfy7mxjcwx2wfmhpkx7vfr3v9x12shmv1c10b0y32lba"))
+
+(define rust-natord-1.0.9
+  (crate-source "natord" "1.0.9"
+                "0z75spwag3ch20841pvfwhh3892i2z2sli4pzp1jgizbipdrd39h"))
+
+(define rust-newtype-derive-0.1.6
+  (crate-source "newtype_derive" "0.1.6"
+                "1v3170xscs65gjx5vl1zjnqp86wngbzw3n2q74ibfnqqkx6x535c"))
+
+(define rust-niffler-3.0.0
+  (crate-source "niffler" "3.0.0"
+                "0x1mzgfhpxr0mwwpsrmlkyalmbaiv97pspyjvymrzb1xr5f13lv2"))
+
+(define rust-noodles-0.100.0
+  (crate-source "noodles" "0.100.0"
+                "17lnhmzbp94g383sxxwmqd0aag9daa1vmgsqx7p9gzdkwwbrqpca"))
+
+(define rust-noodles-bgzf-0.42.0
+  (crate-source "noodles-bgzf" "0.42.0"
+                "0fdllcmsdyqg6zays6y0s3lls1qjjdm5jkhh832x1by434zkw73w"))
+
+(define rust-num-bigint-0.4.6
+  (crate-source "num-bigint" "0.4.6"
+                "1f903zd33i6hkjpsgwhqwi2wffnvkxbn6rv4mkgcjcqi7xr4zr55"))
+
+(define rust-num-complex-0.4.6
+  (crate-source "num-complex" "0.4.6"
+                "15cla16mnw12xzf5g041nxbjjm9m85hdgadd5dl5d0b30w9qmy3k"))
+
+(define rust-num-integer-0.1.46
+  (crate-source "num-integer" "0.1.46"
+                "13w5g54a9184cqlbsq80rnxw4jj4s0d8wv75jsq5r2lms8gncsbr"))
+
+(define rust-num-rational-0.4.2
+  (crate-source "num-rational" "0.4.2"
+                "093qndy02817vpgcqjnj139im3jl7vkq4h68kykdqqh577d18ggq"))
+
+(define rust-paste-1.0.15
+  (crate-source "paste" "1.0.15"
+                "02pxffpdqkapy292harq6asfjvadgp1s005fip9ljfsn9fvxgh2p"))
+
+(define rust-percent-encoding-2.3.2
+  (crate-source "percent-encoding" "2.3.2"
+                "083jv1ai930azvawz2khv7w73xh8mnylk7i578cifndjn5y64kwv"))
+
+(define rust-portable-atomic-1.13.1
+  (crate-source "portable-atomic" "1.13.1"
+                "0j8vlar3n5acyigq8q6f4wjx3k3s5yz0rlpqrv76j73gi5qr8fn3"))
+
+(define rust-portable-atomic-util-0.2.5
+  (crate-source "portable-atomic-util" "0.2.5"
+                "1xcm0ia8756k6hdgafx4g3lx3fw0hvz2zqswq7c2sy58gxnvk7bs"))
+
+(define rust-potential-utf-0.1.4
+  (crate-source "potential_utf" "0.1.4"
+                "0xxg0pkfpq299wvwln409z4fk80rbv55phh3f1jhjajy5x1ljfdp"))
+
+(define rust-quick-error-1.2.3
+  (crate-source "quick-error" "1.2.3"
+                "1q6za3v78hsspisc197bg3g7rpc989qycy8ypr8ap8igv10ikl51"))
+
+(define rust-quote-1.0.40
+  (crate-source "quote" "1.0.40"
+                "1394cxjg6nwld82pzp2d4fp6pmaz32gai1zh9z5hvh0dawww118q"))
+
+(define rust-radium-0.7.0
+  (crate-source "radium" "0.7.0"
+                "02cxfi3ky3c4yhyqx9axqwhyaca804ws46nn4gc1imbk94nzycyw"))
+
+(define rust-rand-0.8.5
+  (crate-source "rand" "0.8.5"
+                "013l6931nn7gkc23jz5mm3qdhf93jjf0fg64nz2lp4i51qd8vbrl"))
+
+(define rust-rand-0.9.2
+  (crate-source "rand" "0.9.2"
+                "1lah73ainvrgl7brcxx0pwhpnqa3sm3qaj672034jz8i0q7pgckd"))
+
+(define rust-rand-chacha-0.3.1
+  (crate-source "rand_chacha" "0.3.1"
+                "123x2adin558xbhvqb8w4f6syjsdkmqff8cxwhmjacpsl1ihmhg6"))
+
+(define rust-rand-chacha-0.9.0
+  (crate-source "rand_chacha" "0.9.0"
+                "1jr5ygix7r60pz0s1cv3ms1f6pd1i9pcdmnxzzhjc3zn3mgjn0nk"))
+
+(define rust-rand-core-0.6.4
+  (crate-source "rand_core" "0.6.4"
+                "0b4j2v4cb5krak1pv6kakv4sz6xcwbrmy2zckc32hsigbrwy82zc"))
+
+(define rust-rand-core-0.9.5
+  (crate-source "rand_core" "0.9.5"
+                "0g6qc5r3f0hdmz9b11nripyp9qqrzb0xqk9piip8w8qlvqkcibvn"))
+
+(define rust-rand-distr-0.5.1
+  (crate-source "rand_distr" "0.5.1"
+                "0qvlzxq4a2rvrf3wq0xq1bfw8iy9zqm6jlmbywqzld6g1paib1ka"))
+
+(define rust-rand-xoshiro-0.7.0
+  (crate-source "rand_xoshiro" "0.7.0"
+                "0h9dv9mn703zb2z5dys7vc4rzy3az8xg99fc5m8zbnh0axkg80zp"))
+
+(define rust-rawpointer-0.2.1
+  (crate-source "rawpointer" "0.2.1"
+                "1qy1qvj17yh957vhffnq6agq0brvylw27xgks171qrah75wmg8v0"))
+
+(define rust-regex-automata-0.1.10
+  (crate-source "regex-automata" "0.1.10"
+                "0ci1hvbzhrfby5fdpf4ganhf7kla58acad9i1ff1p34dzdrhs8vc"))
+
+(define rust-rust-htslib-1.0.0
+  (crate-source "rust-htslib" "1.0.0"
+                "1abvjmpgqxxhnk3z0rg6rk5c725zblr86csz9i1ycwixiikn28gj"))
+
+(define rust-rustc-hash-2.1.1
+  (crate-source "rustc-hash" "2.1.1"
+                "03gz5lvd9ghcwsal022cgkq67dmimcgdjghfb5yb5d352ga06xrm"))
+
+(define rust-rustc-version-0.1.7
+  (crate-source "rustc_version" "0.1.7"
+                "1160jjsqhqr25cvhr48hmpp8v61bjvjcnxzb0cyf4373lmp3gxf5"))
+
+(define rust-ryu-1.0.20
+  (crate-source "ryu" "1.0.20"
+                "07s855l8sb333h6bpn24pka5sp7hjk2w667xy6a0khkf6sqv5lr8"))
+
+(define rust-safe-arch-0.7.4
+  (crate-source "safe_arch" "0.7.4"
+                "08sk47n1kcm5w2di6bpgi2hsw8r2caz2230pwqvbdqfv5pl2vc4n"))
+
+(define rust-scratch-1.0.9
+  (crate-source "scratch" "1.0.9"
+                "1cj826qggwn482wbfnzij5g9p411qszai0dnfld4qzh93g2jx3yn"))
+
+(define rust-simba-0.9.1
+  (crate-source "simba" "0.9.1"
+                "15gxgwcm6vs2wbbc5z4x8zsi1rhjl3nvqnxpl95hjrhnnaz894n9"))
+
+(define rust-spin-0.9.8
+  (crate-source "spin" "0.9.8"
+                "0rvam5r0p3a6qhc18scqpvpgb3ckzyqxpgdfyjnghh8ja7byi039"))
+
+(define rust-spoa-rs-0.1.0.6f4f102
+  ;; TODO: Define standalone package if this is a workspace.
+  (origin
+    (method git-fetch)
+    (uri (git-reference (url "https://github.com/AndreaGuarracino/spoa-rs.git")
+                        (commit "6f4f1024cc09959b926d4616991672693013ed3e")))
+    (file-name (git-file-name "rust-spoa-rs" "0.1.0.6f4f102"))
+    (sha256 (base32 "13hmxqk70c0728v8l44qap25qla4w86im3kwfmay7jwwg9lk7lfg"))
+    (patches
+     (search-patches "do-not-build-cplusplus-spoa.patch"))))
+
+(define rust-stable-deref-trait-1.2.1
+  (crate-source "stable_deref_trait" "1.2.1"
+                "15h5h73ppqyhdhx6ywxfj88azmrpml9gl6zp3pwy2malqa6vxqkc"))
+
+(define rust-strum-macros-0.26.4
+  (crate-source "strum_macros" "0.26.4"
+                "1gl1wmq24b8md527cpyd5bw9rkbqldd7k1h38kf5ajd2ln2ywssc"))
+
+(define rust-succinct-0.5.2
+  (crate-source "succinct" "0.5.2"
+                "0654c9gq50x7djyf25zbzz3d2pc4x3z21wmjj3qbr6d9h4hbd63p"))
+
+(define rust-syn-1.0.109
+  (crate-source "syn" "1.0.109"
+                "0ds2if4600bd59wsv7jjgfkayfzy3hnazs394kz6zdkmna8l3dkj"))
+
+(define rust-synstructure-0.13.2
+  (crate-source "synstructure" "0.13.2"
+                "1lh9lx3r3jb18f8sbj29am5hm9jymvbwh6jb1izsnnxgvgrp12kj"))
+
+(define rust-tap-1.0.1
+  (crate-source "tap" "1.0.1"
+                "0sc3gl4nldqpvyhqi3bbd0l9k7fngrcl4zs47n314nqqk4bpx4sm"))
+
+(define rust-termcolor-1.4.1
+  (crate-source "termcolor" "1.4.1"
+                "0mappjh3fj3p2nmrg4y7qv94rchwi9mzmgmfflr8p2awdj7lyy86"))
+
+(define rust-thiserror-2.0.16
+  (crate-source "thiserror" "2.0.16"
+                "1h30bqyjn5s9ypm668yd9849371rzwk185klwgjg503k2hadcrrl"))
+
+(define rust-thiserror-impl-2.0.16
+  (crate-source "thiserror-impl" "2.0.16"
+                "0q3r1ipr1rhff6cgrcvc0njffw17rpcqz9hdc7p754cbqkhinpkc"))
+
+(define rust-tinystr-0.8.2
+  (crate-source "tinystr" "0.8.2"
+                "0sa8z88axdsf088hgw5p4xcyi6g3w3sgbb6qdp81bph9bk2fkls2"))
+
+(define rust-unicode-width-0.2.2
+  (crate-source "unicode-width" "0.2.2"
+                "0m7jjzlcccw716dy9423xxh0clys8pfpllc5smvfxrzdf66h9b5l"))
+
+(define rust-unit-prefix-0.5.2
+  (crate-source "unit-prefix" "0.5.2"
+                "18xr6yhdvlxrv51y6js9npa3qhkzc5b1z4skr5kfzn7kkd449rc1"))
+
+(define rust-unty-0.0.4
+  (crate-source "unty" "0.0.4"
+                "1blhyv01qiv5sb72sal3xa1l8nzck3answawxkkiw3fd2x1phjbd"))
+
+(define rust-url-2.5.7
+  (crate-source "url" "2.5.7"
+                "0nzghdv0kcksyvri0npxbjzyx2ihprks5k590y77bld355m17g08"))
+
+(define rust-utf8-iter-1.0.4
+  (crate-source "utf8_iter" "1.0.4"
+                "1gmna9flnj8dbyd8ba17zigrp9c4c3zclngf5lnb5yvz1ri41hdn"))
+
+(define rust-vcpkg-0.2.15
+  (crate-source "vcpkg" "0.2.15"
+                "09i4nf5y8lig6xgj3f7fyrvzd3nlaw4znrihw8psidvv5yk4xkdc"))
+
+(define rust-virtue-0.0.18
+  (crate-source "virtue" "0.0.18"
+                "1cgp79pzzs117kjlc3jnnkixbyaqri12j40mx2an41qhrymv27h5"))
+
+(define rust-wasi-0.11.1+wasi-snapshot-preview1
+  (crate-source "wasi" "0.11.1+wasi-snapshot-preview1"
+                "0jx49r7nbkbhyfrfyhz0bm4817yrnxgd3jiwwwfv0zl439jyrwyc"))
+
+(define rust-wasm-bindgen-backend-0.2.102
+  (crate-source "wasm-bindgen-backend" "0.2.102"
+                "0cp7jgjj3c9dig1rpw79ymli9290jqf3nsmi48zw1lyw9c8684rs"))
+
+(define rust-web-time-1.1.0
+  (crate-source "web-time" "1.1.0"
+                "1fx05yqx83dhx628wb70fyy10yjfq1jpl20qfqhdkymi13rq0ras"))
+
+(define rust-wide-0.7.33
+  (crate-source "wide" "0.7.33"
+                "00yd2sg83xvfrjjlwndyk49fjx8jlmlrz8byigndig32rf7dmr8c"))
+
+(define rust-winapi-0.3.9
+  (crate-source "winapi" "0.3.9"
+                "06gl025x418lchw1wxj64ycr7gha83m44cjr5sarhynd9xkrm0sw"))
+
+(define rust-winapi-i686-pc-windows-gnu-0.4.0
+  (crate-source "winapi-i686-pc-windows-gnu" "0.4.0"
+                "1dmpa6mvcvzz16zg6d5vrfy4bxgg541wxrcip7cnshi06v38ffxc"))
+
+(define rust-winapi-x86-64-pc-windows-gnu-0.4.0
+  (crate-source "winapi-x86_64-pc-windows-gnu" "0.4.0"
+                "0gqq64czqb64kskjryj8isp62m2sgvx25yyj3kpc2myh85w24bki"))
+
+(define rust-windows-link-0.1.3
+  (crate-source "windows-link" "0.1.3"
+                "12kr1p46dbhpijr4zbwr2spfgq8i8c5x55mvvfmyl96m01cx4sjy"))
+
+(define rust-windows-sys-0.60.2
+  ;; TODO: Check bundled sources.
+  (crate-source "windows-sys" "0.60.2"
+                "1jrbc615ihqnhjhxplr2kw7rasrskv9wj3lr80hgfd42sbj01xgj"))
+
+(define rust-writeable-0.6.2
+  (crate-source "writeable" "0.6.2"
+                "1fg08y97n6vk7l0rnjggw3xyrii6dcqg54wqaxldrlk98zdy1pcy"))
+
+(define rust-wyhash-0.5.0
+  (crate-source "wyhash" "0.5.0"
+                "15f26hvx6nyp4d6iswha7rm3psidxa2k2iab1f1aqgsyq9iy3xms"))
+
+(define rust-wyz-0.5.1
+  (crate-source "wyz" "0.5.1"
+                "1vdrfy7i2bznnzjdl9vvrzljvs4s3qm8bnlgqwln6a941gy61wq5"))
+
+(define rust-yoke-0.8.1
+  (crate-source "yoke" "0.8.1"
+                "0m29dm0bf5iakxgma0bj6dbmc3b8qi9b1vaw9sa76kdqmz3fbmkj"))
+
+(define rust-yoke-derive-0.8.1
+  (crate-source "yoke-derive" "0.8.1"
+                "0pbyja133jnng4mrhimzdq4a0y26421g734ybgz8wsgbfhl0andn"))
+
+(define rust-zerofrom-0.1.6
+  (crate-source "zerofrom" "0.1.6"
+                "19dyky67zkjichsb7ykhv0aqws3q0jfvzww76l66c19y6gh45k2h"))
+
+(define rust-zerofrom-derive-0.1.6
+  (crate-source "zerofrom-derive" "0.1.6"
+                "00l5niw7c1b0lf1vhvajpjmcnbdp2vn96jg4nmkhq2db0rp5s7np"))
+
+(define rust-zerotrie-0.2.3
+  (crate-source "zerotrie" "0.2.3"
+                "0lbqznlqazmrwwzslw0ci7p3pqxykrbfhq29npj0gmb2amxc2n9a"))
+
+(define rust-zerovec-0.11.5
+  (crate-source "zerovec" "0.11.5"
+                "00m0p47k2g9mkv505hky5xh3r6ps7v8qc0dy4pspg542jj972a3c"))
+
+(define rust-zerovec-derive-0.11.2
+  (crate-source "zerovec-derive" "0.11.2"
+                "1wsig4h5j7a1scd5hrlnragnazjny9qjc44hancb6p6a76ay7p7a"))
+
+(define rust-zlib-rs-0.6.2
+  (crate-source "zlib-rs" "0.6.2"
+                "1j1nf9nmmx9wcwf0mn22smpam7wb28sdz6fw6v8pwcq7227c8if7"))
+
+(define rust-fastga-rs-0.1.2.e5037d5
+  ;; TODO REVIEW: Check bundled sources.
+  (origin
+    (method git-fetch)
+    (uri (git-reference (url "https://github.com/pangenome/fastga-rs")
+                        (commit "e7a6d93621e53d141df5fbecb47651564555d43b")))
+    (file-name (git-file-name "rust-fastga-rs" "0.1.2.e7a6d93"))
+    (sha256 (base32 "0s99i55j44rz3miywik3ms1l3mz6h63n5fmwvgjh4ywxw2k9r4p5"))))
+
+(define rust-gfasort-0.1.0.b5fdb1d
+  (origin
+    (method git-fetch)
+    (uri (git-reference (url "https://github.com/pangenome/gfasort")
+                        (commit "e23f45e94e2746f2817eb17925f53e0319b1b085")))
+    (file-name (git-file-name "rust-gfasort" "0.1.0.e23f45e"))
+    (sha256 (base32 "1jdjainfgz73xnz7j0bvgnc6ybqsp7qrj2k0nbzav5v70gy9sibs"))))
+
+(define rust-lib-wfa2-0.1.0.0fe1ebf
+  ;; TODO REVIEW: Check bundled sources.
+  (origin
+    (method git-fetch)
+    (uri (git-reference (url "https://github.com/AndreaGuarracino/lib_wfa2")
+                        (commit "0fe1ebfb7a364226f3d8d7b84b703611168435c6")))
+    (file-name (git-file-name "rust-lib-wfa2" "0.1.0.0fe1ebf"))
+    (sha256 (base32 "05rmy34x5xhqkw0v6sj35q2jijfg7rlh3gb1xjisblamy2g5nn29"))))
+
+(define rust-onecode-0.1.0.38182c7
+  ;; TODO REVIEW: Check bundled sources.
+  (origin
+    (method git-fetch)
+    (uri (git-reference (url "https://github.com/pangenome/onecode-rs")
+                        (commit "38182c7acf7cccc53509176b1d11001ae6ff2642")))
+    (file-name (git-file-name "rust-onecode" "0.1.0.38182c7"))
+    (sha256 (base32 "04wlrjlylhiks8pnhr19anf33r8ah1rnsl98n5j54sxrjvmhvyyf"))))
+
+(define rust-onecode-0.1.0.f531f5b
+  ;; TODO REVIEW: Check bundled sources.
+  (origin
+    (method git-fetch)
+    (uri (git-reference (url "https://github.com/pangenome/onecode-rs")
+                        (commit "f531f5b0ff54001a898ec4e0c0c761b2bd0a1f34")))
+    (file-name (git-file-name "rust-onecode" "0.1.0.f531f5b"))
+    (sha256 (base32 "0nzhgg7sqalrpl1mzlp0rvaj4dgcwghv1jngcsfqqk1mhx4hvj0n"))))
+
+(define rust-ragc-0.1.1.e9e4a6f
+  ;; This is a Cargo workspace (ragc-core and ragc-common members).
+  ;; crate-src? returns #f for workspaces (no [package] in root Cargo.toml).
+  ;; The impg package phase manually copies this to the vendor dir.
+  (origin
+    (method git-fetch)
+    (uri (git-reference (url "https://github.com/AndreaGuarracino/ragc")
+                        (commit "e9e4a6f880f5d6fa90fc90f24542def3ca637d38")))
+    (file-name (git-file-name "rust-ragc" "0.1.1.e9e4a6f"))
+    (sha256 (base32 "0ks74pgh0vjy4mzxvp7riq1rkf9zh9kqzhvvy8iys46zrbkxmhs7"))))
+
+(define rust-seqwish-0.1.3.b65a7e0
+  (origin
+    (method git-fetch)
+    (uri (git-reference (url "https://github.com/pangenome/seqwish")
+                        (commit "a781924a1074f8177a24f8caa2b9be07d746acb0")))
+    (file-name (git-file-name "rust-seqwish" "0.1.3.a781924"))
+    (sha256 (base32 "17ii1659v5k1smnwzn7hm12dqw0l2zpflb20krwdb84xv75rnmgd"))))
+
+(define rust-sweepga-0.1.1.29d2123
+  (origin
+    (method git-fetch)
+    (uri (git-reference (url "https://github.com/pangenome/sweepga")
+                        (commit "f5918434c1abadfad594b40392ad7c43e0da4af8")))
+    (file-name (git-file-name "rust-sweepga" "0.1.1.f591843"))
+    (sha256 (base32 "1clc295cvmis131aw5m2z5v8v16qfk7xxyawdx18iygwr5nbqbg9"))))
+
+(define rust-tpa-0.1.0.49f1801
+  (origin
+    (method git-fetch)
+    (uri (git-reference (url "https://github.com/AndreaGuarracino/tpa")
+                        (commit "301dc3ff53482d993c065217dbcd8abb6ffff2d9")))
+    (file-name (git-file-name "rust-tpa" "0.1.0.301dc3f"))
+    (sha256 (base32 "18v0g2845pgzj3y002q4y04rav28ccr5gjxck7bc92jlrcl75mjk"))))
+
+(define rust-tracepoints-0.1.0.66a5511
+  (origin
+    (method git-fetch)
+    (uri (git-reference (url "https://github.com/AndreaGuarracino/tracepoints")
+                        (commit "b73773433561fb36f21136776a7297c5877ab593")))
+    (file-name (git-file-name "rust-tracepoints" "0.1.0.b737734"))
+    (sha256 (base32 "0xyqvi01rvnmvwxbx6y413qjjci7d271xjpz1z0lkw1s2zc61h0c"))))
+
+;;; Updated git-sourced crate defs for impg f773342
+
+(define rust-fastga-rs-0.1.2.e5037d5
+  (origin
+    (method git-fetch)
+    (uri (git-reference (url "https://github.com/pangenome/fastga-rs")
+                        (commit "e5037d5ef818f0ed1eef68e5678324a3b6f9111a")))
+    (file-name (git-file-name "rust-fastga-rs" "0.1.2.e5037d5"))
+    (sha256 (base32 "19himg61r4r59pplpgv9ay903wv80pnm22hw0z87ddp6xivyj923"))))
+
+(define rust-gfasort-0.1.0.b5fdb1d
+  (origin
+    (method git-fetch)
+    (uri (git-reference (url "https://github.com/pangenome/gfasort")
+                        (commit "b5fdb1d2222cfd295288465aba007ef88603b665")))
+    (file-name (git-file-name "rust-gfasort" "0.1.0.b5fdb1d"))
+    (sha256 (base32 "1312nszzcdk4l8cc2i0sni6ib7pz31d173v1h12nr28736dyqax8"))))
+
+(define rust-seqwish-0.1.3.b65a7e0
+  (origin
+    (method git-fetch)
+    (uri (git-reference (url "https://github.com/pangenome/seqwish")
+                        (commit "b65a7e0a8b6d1a2fb9e2f69e43efc7b57d87bf28")))
+    (file-name (git-file-name "rust-seqwish" "0.1.3.b65a7e0"))
+    (sha256 (base32 "1bk3lpg18b7nmzqrrd673cjbnjkl168cg2n4xbshp0fa4v4kwfl0"))))
+
+(define rust-sweepga-0.1.1.29d2123
+  (origin
+    (method git-fetch)
+    (uri (git-reference (url "https://github.com/pangenome/sweepga")
+                        (commit "29d21238765abb1016d7d75c19666127faa962cb")))
+    (file-name (git-file-name "rust-sweepga" "0.1.1.29d2123"))
+    (sha256 (base32 "001b0q3c2rjjqnwmqdyh7sg1v3y2y1wxqvk1j1shf4wq8nii4gbc"))))
+
+(define rust-tpa-0.1.0.49f1801
+  (origin
+    (method git-fetch)
+    (uri (git-reference (url "https://github.com/AndreaGuarracino/tpa")
+                        (commit "49f1801f9e0108c211571fa2614e517009446afe")))
+    (file-name (git-file-name "rust-tpa" "0.1.0.49f1801"))
+    (sha256 (base32 "06i0lj24k62bm112ns6jymk4r3w5qcfi7ifdy0zxhkpg9ny91897"))))
+
+(define rust-tracepoints-0.1.0.66a5511
+  (origin
+    (method git-fetch)
+    (uri (git-reference (url "https://github.com/AndreaGuarracino/tracepoints")
+                        (commit "66a5511b0b84d8502f9d7c99efd150616ff2cae3")))
+    (file-name (git-file-name "rust-tracepoints" "0.1.0.66a5511"))
+    (sha256 (base32 "06rzivxfd1s2d181n34zh8m1qj4yp62ixw8gbnrddqmwj4k5snpy"))))
+
+;;;
+
+(define rust-terminal-size-0.4.4
+  (crate-source "terminal_size" "0.4.4"
+                "0x4839vhhpzacc42rqj2wjhivlhlggzz3890b0c5pmyb3j11n2i3"))
+
+(define rust-wfmash-rs-0.1.0.d47b7e3
+  (origin
+    (method git-fetch)
+    (uri (git-reference (url "https://github.com/pangenome/wfmash-rs")
+                        (commit "d47b7e3eba7f1d0f2bfdb72629cc667c2d5f8382")))
+    (file-name (git-file-name "rust-wfmash-rs" "0.1.0.d47b7e3"))
+    (sha256 (base32 "1r2akqsdh0196pgayzadyzikbsll2a3gnznfwgvndqwr0xnqgy4q"))))
+
+;;;
+;;; Additional crate sources for impg transitive dependencies.
+;;;
+
+(define rust-derive-new-0.6.0
+  (crate-source "derive-new" "0.6.0"
+                "1b8jv6jx0b8jgkz9kmz0ciqmnf74xkk0mmvkb5z1c87932kdwl6i"))
+
+(define rust-bindgen-0.69.5
+  (crate-source "bindgen" "0.69.5"
+                "1240snlcfj663k04bjsg629g4wx6f83flgbjh5rzpgyagk3864r7"))
+
+(define rust-cbindgen-0.27.0
+  (crate-source "cbindgen" "0.27.0"
+                "1sqm3axr678d72yihgmpr9d17mj99ccibxfqhw53mgzwzkbqvkiz"))
+
+(define rust-chrono-0.4.44
+  (crate-source "chrono" "0.4.44"
+                "1c64mk9a235271j5g3v4zrzqqmd43vp9vki7vqfllpqf5rd0fwy6"))
+
+(define rust-console-0.16.2
+  (crate-source "console" "0.16.2"
+                "1i5y6h3myz38jl9p3gglx5vh9c69kxxajsv3jx0pw8i6i555mr03"))
+
+(define rust-core-foundation-sys-0.8.7
+  (crate-source "core-foundation-sys" "0.8.7"
+                "12w8j73lazxmr1z0h98hf3z623kl8ms7g07jch7n4p8f9nwlhdkp"))
+
+(define rust-fm-index-0.3.0
+  (crate-source "fm-index" "0.3.0"
+                "05dzsmdf1zpqsliwm06b5m2xapyppy1191mjya8bwpvc5gwi9x19"))
+
+(define rust-getrandom-0.2.17
+  (crate-source "getrandom" "0.2.17"
+                "1l2ac6jfj9xhpjjgmcx6s1x89bbnw9x6j9258yy6xjkzpq0bqapz"))
+
+(define rust-getrandom-0.4.1
+  (crate-source "getrandom" "0.4.1"
+                "1v7fm84f2jh6x7w3bd2ncl3sw29wnb0rhg7xya1pd30i02cg77hk"))
+
+(define rust-heck-0.4.1
+  (crate-source "heck" "0.4.1"
+                "1a7mqsnycv5z4z5vnv1k34548jzmc0ajic7c1j8jsaspnhw5ql4m"))
+
+(define rust-iana-time-zone-0.1.65
+  (crate-source "iana-time-zone" "0.1.65"
+                "0w64khw5p8s4nzwcf36bwnsmqzf61vpwk9ca1920x82bk6nwj6z3"))
+
+(define rust-iana-time-zone-haiku-0.1.2
+  (crate-source "iana-time-zone-haiku" "0.1.2"
+                "17r6jmj31chn7xs9698r122mapq85mfnv98bb4pg6spm0si2f67k"))
+
+(define rust-icu-properties-2.1.2
+  (crate-source "icu_properties" "2.1.2"
+                "1v3lbmhhi7i6jgw51ikjb1p50qh5rb67grlkdnkc63l7zq1gq2q2"))
+
+(define rust-icu-properties-data-2.1.2
+  (crate-source "icu_properties_data" "2.1.2"
+                "1bvpkh939rgzrjfdb7hz47v4wijngk0snmcgrnpwc9fpz162jv31"))
+
+(define rust-iitree-rs-0.1.1
+  (crate-source "iitree-rs" "0.1.1"
+                "1mg705qlj1qb92ra1fkr0rlqcphrkkfsnbsv4ysrvin82b5m959r"))
+
+(define rust-itertools-0.12.1
+  (crate-source "itertools" "0.12.1"
+                "0s95jbb3ndj1lvfxyq5wanc0fm0r6hg6q4ngb92qlfdxvci10ads"))
+
+(define rust-lazycell-1.3.0
+  (crate-source "lazycell" "1.3.0"
+                "0m8gw7dn30i0zjjpjdyf6pc16c34nl71lpv461mix50x3p70h3c3"))
+
+(define rust-libc-0.2.182
+  (crate-source "libc" "0.2.182"
+                "04k1w1mq9f4cxv520dbr5xw1i7xkbc9fcrvaggyjy25jdkdvl038"))
+
+(define rust-libm-0.2.16
+  (crate-source "libm" "0.2.16"
+                "10brh0a3qjmbzkr5mf5xqi887nhs5y9layvnki89ykz9xb1wxlmn"))
+
+(define rust-memmap2-0.9.10
+  (crate-source "memmap2" "0.9.10"
+                "1qz0n4ch68pz2mp07sdwnk27imdjjqy6aqir3hp9j4g0iw19hh3i"))
+
+(define rust-nom-5.1.3
+  (crate-source "nom" "5.1.3"
+                "0jyxc4d3pih60pp8hvzpg5ajh16s273cpnsdpzp04qv7g8w9m588"))
+
+(define rust-ordered-float-4.6.0
+  (crate-source "ordered-float" "4.6.0"
+                "0ldrcgilsiijd141vw51fbkziqmh5fpllil3ydhirjm67wdixdvv"))
+
+(define rust-parking-lot-0.12.5
+  (crate-source "parking_lot" "0.12.5"
+                "06jsqh9aqmc94j2rlm8gpccilqm6bskbd67zf6ypfc0f4m9p91ck"))
+
+(define rust-ppv-lite86-0.2.21
+  (crate-source "ppv-lite86" "0.2.21"
+                "1abxx6qz5qnd43br1dd9b2savpihzjza8gb4fbzdql1gxp2f7sl5"))
+
+(define rust-quote-1.0.44
+  (crate-source "quote" "1.0.44"
+                "1r7c7hxl66vz3q9qizgjhy77pdrrypqgk4ghc7260xvvfb7ypci1"))
+
+(define rust-ryu-1.0.23
+  (crate-source "ryu" "1.0.23"
+                "0zs70sg00l2fb9jwrf6cbkdyscjs53anrvai2hf7npyyfi5blx4p"))
+
+(define rust-semver-0.1.20
+  (crate-source "semver" "0.1.20"
+                "1b10m0hxrr947gp41lj9vnmgl5ddwx3d41vnblsg06ppvkz11x6l"))
+
+(define rust-serde-spanned-0.6.9
+  (crate-source "serde_spanned" "0.6.9"
+                "18vmxq6qfrm110caszxrzibjhy2s54n1g5w1bshxq9kjmz7y0hdz"))
+
+(define rust-sucds-0.8.3
+  (crate-source "sucds" "0.8.3"
+                "1k8ddiyv0lglcyqp7im5gzams3npmf5bnsajx82z2r5y0nm4wcnd"))
+
+(define rust-thiserror-2.0.18
+  (crate-source "thiserror" "2.0.18"
+                "1i7vcmw9900bvsmay7mww04ahahab7wmr8s925xc083rpjybb222"))
+
+(define rust-thiserror-impl-2.0.18
+  (crate-source "thiserror-impl" "2.0.18"
+                "1mf1vrbbimj1g6dvhdgzjmn6q09yflz2b92zs1j9n3k7cxzyxi7b"))
+
+(define rust-toml-0.8.23
+  (crate-source "toml" "0.8.23"
+                "0qnkrq4lm2sdhp3l6cb6f26i8zbnhqb7mhbmksd550wxdfcyn6yw"))
+
+(define rust-toml-datetime-0.6.11
+  (crate-source "toml_datetime" "0.6.11"
+                "077ix2hb1dcya49hmi1avalwbixmrs75zgzb3b2i7g2gizwdmk92"))
+
+(define rust-toml-edit-0.22.27
+  (crate-source "toml_edit" "0.22.27"
+                "16l15xm40404asih8vyjvnka9g0xs9i4hfb6ry3ph9g419k8rzj1"))
+
+(define rust-toml-write-0.1.2
+  (crate-source "toml_write" "0.1.2"
+                "008qlhqlqvljp1gpp9rn5cqs74gwvdgbvs92wnpq8y3jlz4zi6ax"))
+
+(define rust-url-2.5.8
+  (crate-source "url" "2.5.8"
+                "1v8f7nx3hpr1qh76if0a04sj08k86amsq4h8cvpw6wvk76jahrzz"))
+
+(define rust-vers-vecs-1.9.0
+  (crate-source "vers-vecs" "1.9.0"
+                "0m6bjzf36d8jix1lzv0kg6mg6vxrljjwj9sxg1zp65gzd5ly8rlv"))
+
+(define rust-windows-core-0.62.2
+  (crate-source "windows-core" "0.62.2"
+                "1swxpv1a8qvn3bkxv8cn663238h2jccq35ff3nsj61jdsca3ms5q"))
+
+(define rust-windows-implement-0.60.2
+  (crate-source "windows-implement" "0.60.2"
+                "1psxhmklzcf3wjs4b8qb42qb6znvc142cb5pa74rsyxm1822wgh5"))
+
+(define rust-windows-interface-0.59.3
+  (crate-source "windows-interface" "0.59.3"
+                "0n73cwrn4247d0axrk7gjp08p34x1723483jxjxjdfkh4m56qc9z"))
+
+(define rust-windows-result-0.4.1
+  (crate-source "windows-result" "0.4.1"
+                "1d9yhmrmmfqh56zlj751s5wfm9a2aa7az9rd7nn5027nxa4zm0bp"))
+
+(define rust-windows-strings-0.5.1
+  (crate-source "windows-strings" "0.5.1"
+                "14bhng9jqv4fyl7lqjz3az7vzh8pw0w4am49fsqgcz67d67x0dvq"))
+
+(define rust-winnow-0.7.14
+  (crate-source "winnow" "0.7.14"
+                "0a88ahjqhyn2ln1yplq2xsigm09kxqkdkkk2c2mfxkbzszln8lss"))
+
+(define rust-android-system-properties-0.1.5
+  (crate-source "android_system_properties" "0.1.5"
+                "04b3wrz12837j7mdczqd95b732gw5q7q66cv4yn4646lvccp57l1"))
+
+(define rust-uf-rush-0.1.1
+  (crate-source "uf_rush" "0.1.1"
+                "18sx8lvkhnx5gx131y4pqyl4xmdvcqwv8vb2vspfczifnrgxydw3"))
+
+
+;;;
+;;; Cargo inputs lookup tables.
+;;; Used by: (inputs (cargo-inputs 'gfainject #:module '(gn packages pangenome-rust)))
+;;; Used by: (inputs (cargo-inputs 'ragc-cli #:module '(gn packages pangenome-rust)))
+;;; Used by: (inputs (cargo-inputs 'onecode #:module '(gn packages pangenome-rust)))
+;;; Used by: (inputs (cargo-inputs 'fastga-rs #:module '(gn packages pangenome-rust)))
+;;; Used by: (inputs (cargo-inputs 'impg #:module '(gn packages pangenome-rust)))
+;;;
+
+;;; New crate sources for gfautil 0.4.0-alpha.5
+
+(define rust-js-sys-0.3.94
+  (crate-source "js-sys" "0.3.94"
+                "1nb4fr7c78mrrdhmg04nbac1zvd5z3panvqka8sy30nfh3py411f"))
+(define rust-atty-0.2.14
+  (crate-source "atty" "0.2.14"
+                "1s7yslcs6a28c5vz7jwj63lkfgyx8mx99fdirlhi9lbhhzhrpcyr"))
+
+(define rust-cc-1.2.58
+  (crate-source "cc" "1.2.58"
+                "1qb0zyqhn8pqzdp7d3scm19zmvgvbyh3iabmj1q7fc4ynva2isg1"))
+
+(define rust-console-0.16.3
+  (crate-source "console" "0.16.3"
+                "11zwz1vnfr0nx6dyjx0gjymp8864y5hxwf01ynfd2s8kapsqlknn"))
+
+(define rust-env-logger-0.7.1
+  (crate-source "env_logger" "0.7.1"
+                "0djx8h8xfib43g5w94r1m1mkky5spcw4wblzgnhiyg5vnfxknls4"))
+
+(define rust-fixedbitset-0.2.0
+  (crate-source "fixedbitset" "0.2.0"
+                "0kg03p777wc0dajd9pvlcnsyrwa8dhqwf0sd9r4dw0p82rs39arp"))
+
+(define rust-fxhash-0.2.1
+  (crate-source "fxhash" "0.2.1"
+                "037mb9ichariqi45xm6mz0b11pa92gj38ba0409z3iz239sns6y3"))
+
+(define rust-handlegraph-0.7.0-alpha.9
+  (crate-source "handlegraph" "0.7.0-alpha.9"
+                "1frlcdwhycjvizb0gfb0v36vxjdi0jxagl2l2v6dzdjxpaawv9rs"))
+
+(define rust-humantime-1.3.0
+  (crate-source "humantime" "1.3.0"
+                "0krwgbf35pd46xvkqg14j070vircsndabahahlv3rwhflpy4q06z"))
+
+(define rust-indexmap-1.9.3
+  (crate-source "indexmap" "1.9.3"
+                "16dxmy7yvk51wvnih3a3im6fp5lmx0wx76i03n06wyak6cwhw1xx"))
+
+(define rust-indicatif-0.15.0
+  (crate-source "indicatif" "0.15.0"
+                "1r4n50mclyi4c7b9c9mlma1rhchjamw71r3z8vgqcmp24mhvbakv"))
+
+(define rust-itoa-1.0.18
+  (crate-source "itoa" "1.0.18"
+                "10jnd1vpfkb8kj38rlkn2a6k02afvj3qmw054dfpzagrpl6achlg"))
+
+(define rust-number-prefix-0.3.0
+  (crate-source "number_prefix" "0.3.0"
+                "0slm4mqmpgs6hvz22ycny9lvyvl9ivs80a1lncslp7lszz02zc0p"))
+
+(define rust-once-cell-1.21.4
+  (crate-source "once_cell" "1.21.4"
+                "0l1v676wf71kjg2khch4dphwh1jp3291ffiymr2mvy1kxd5kwz4z"))
+
+(define rust-petgraph-0.5.1
+  (crate-source "petgraph" "0.5.1"
+                "1dzxda6z17sfxly11m8ja3iargh73pw0s1sdgjyp0qp5dm51cza6"))
+
+(define rust-pretty-env-logger-0.4.0
+  (crate-source "pretty_env_logger" "0.4.0"
+                "17gva1rlf9fhgr0jr19kv39f8bir3f4pa4jz02qbhl9qanwkcvcj"))
+
+(define rust-saboten-0.1.2-alpha.3
+  (crate-source "saboten" "0.1.2-alpha.3"
+                "17l2njxzjb4d9gp536qp0ciqdy0ljg6wi80c7r3xk8lnsz9lwa66"))
+
+(define rust-strsim-0.8.0
+  (crate-source "strsim" "0.8.0"
+                "0sjsm7hrvjdifz661pjxq5w4hf190hx53fra8dfvamacvff139cf"))
+
+(define rust-textwrap-0.11.0
+  (crate-source "textwrap" "0.11.0"
+                "0q5hky03ik3y50s9sz25r438bc4nwhqc6dqwynv4wylc807n29nk"))
+
+(define rust-three-edge-connected-0.2.2
+  (crate-source "three-edge-connected" "0.2.2"
+                "0z9mqq013dqfgdj740sgkahrm6navrbd948w8rwax6sp0059bkqg"))
+
+(define rust-vec-map-0.8.2
+  (crate-source "vec_map" "0.8.2"
+                "1481w9g1dw9rxp3l6snkdqihzyrd2f8vispzqmwjwsdyhw8xzggi"))
+
+(define rust-wasm-bindgen-0.2.117
+  (crate-source "wasm-bindgen" "0.2.117"
+                "1c6hi55mq70546hrvrx7wa27sn3yvf04gg6hf8riwn8mnhdzql85"))
+
+(define rust-wasm-bindgen-macro-0.2.117
+  (crate-source "wasm-bindgen-macro" "0.2.117"
+                "1gl6gqy60khhyqv354m0kmgk541sass8kzymxim7hi6zbaizkgbz"))
+
+(define rust-wasm-bindgen-macro-support-0.2.117
+  (crate-source "wasm-bindgen-macro-support" "0.2.117"
+                "1wlza8xdr18cac2wm3ahxdwx1nnqa01m0d3jf3kd9dmsy8z6kafw"))
+
+(define rust-wasm-bindgen-shared-0.2.117
+  (crate-source "wasm-bindgen-shared" "0.2.117"
+                "0frxrdi1w0cswv8v7n1972hd23nbwm8hr7a2dhdq8bbd59l9l4ir"))
+
+
+(define rust-ansi-term-0.12.1
+  (crate-source "ansi_term" "0.12.1"
+                "1ljmkbilxgmhavxvxqa7qvm6f3fjggi7q2l3a72q9x0cxjvrnanm"))
+
+(define rust-clap-2.34.0
+  (crate-source "clap" "2.34.0"
+                "071q5d8jfwbazi6zhik9xwpacx5i6kb2vkzy060vhf0c3120aqd0"))
+
+(define rust-heck-0.3.3
+  (crate-source "heck" "0.3.3"
+                "0b0kkr790p66lvzn9nsmfjvydrbmh9z5gb664jchwgw64vxiwqkd"))
+
+(define rust-hermit-abi-0.1.19
+  (crate-source "hermit-abi" "0.1.19"
+                "0cxcm8093nf5fyn114w8vxbrbcyvv91d4015rdnlgfll7cs6gd32"))
+
+(define rust-libc-0.2.184
+  (crate-source "libc" "0.2.184"
+                "1bz4525m7lwzr63iidh7lp9ppz2c9va1pn6fyjh5wsp1ajjd5xa8"))
+
+(define rust-proc-macro-error-1.0.4
+  (crate-source "proc-macro-error" "1.0.4"
+                "1373bhxaf0pagd8zkyd03kkx6bchzf6g0dkwrwzsnal9z47lj9fs"))
+
+(define rust-proc-macro-error-attr-1.0.4
+  (crate-source "proc-macro-error-attr" "1.0.4"
+                "0sgq6m5jfmasmwwy8x4mjygx5l7kp8s4j60bv25ckv2j1qc41gm1"))
+
+(define rust-structopt-0.3.26
+  (crate-source "structopt" "0.3.26"
+                "043sg3qxllann6q9i71d05qp3q13scmcvhxhd950ka2v8ij5qsqc"))
+
+(define rust-structopt-derive-0.4.18
+  (crate-source "structopt-derive" "0.4.18"
+                "1q5gcigmvw0cinjxzpyrkflliq5r1ivljmrvfrl3phcwgwraxdfw"))
+
+(define rust-unicode-segmentation-1.13.2
+  (crate-source "unicode-segmentation" "1.13.2"
+                "135a26m4a0wj319gcw28j6a5aqvz00jmgwgmcs6szgxjf942facn"))
+
+(define rust-unicode-width-0.1.14
+  (crate-source "unicode-width" "0.1.14"
+                "1bzn2zv0gp8xxbxbhifw778a7fc93pa6a1kj24jgg9msj07f7mkx"))
+
+;;; Crate sources for gfaffix
+
+(define rust-anyhow-1.0.101
+  (crate-source "anyhow" "1.0.101"
+                "1skmg90fnjnlgs3vl7bksw7036d3rqwqj20n2fxd2ppg67p0y3jz"))
+
+(define rust-clap-4.5.59
+  (crate-source "clap" "4.5.59"
+                "16b4kgj909yyshz9kj7nkalbyi46yz1lrhqha54wbbn32x6zgjn5"))
+
+(define rust-clap-builder-4.5.59
+  (crate-source "clap_builder" "4.5.59"
+                "094fc76nsq3v52r1a9rbwix22cqnda8p2wr2a24j302v0r2sl39p"))
+
+(define rust-jiff-0.2.20
+  (crate-source "jiff" "0.2.20"
+                "0hv59kcqj5sc0jgk4q7yrq5dp8yb3qlan98qk3s36sq9ribc6ry8"))
+
+(define rust-jiff-static-0.2.20
+  (crate-source "jiff-static" "0.2.20"
+                "1rcvbp9aj8ll4ljxcgzq4l2h9idmkb0v6mdvf3r3i5r64m1np57p"))
+
+(define rust-regex-syntax-0.8.9
+  (crate-source "regex-syntax" "0.8.9"
+                "0k0a47r1rcl794wj8a948niakbg081s5pp5nlgcbmmr2iy3qfs59"))
+
+(define rust-rustix-1.1.3
+  (crate-source "rustix" "1.1.3"
+                "0d0z2zcw4rwzni1hm8snw8xdxwwrij336m31c4ghq66cghj9wv0l"))
+
+(define rust-syn-2.0.116
+  (crate-source "syn" "2.0.116"
+                "1jv9pk48qmhn6yrdfl3lngy5i74wg7gcx13gfhvm4s8q0p3j9x1x"))
+
+(define rust-terminal-size-0.4.3
+  (crate-source "terminal_size" "0.4.3"
+                "1l7cicmz49c0cyskfp5a389rsai649xi7y032v73475ikjbwpf30"))
+
+(define rust-windows-aarch64-gnullvm-0.53.1
+  (crate-source "windows_aarch64_gnullvm" "0.53.1"
+                "0lqvdm510mka9w26vmga7hbkmrw9glzc90l4gya5qbxlm1pl3n59"
+                #:snippet '(delete-file-recursively "lib")))
+
+(define rust-windows-aarch64-msvc-0.53.1
+  (crate-source "windows_aarch64_msvc" "0.53.1"
+                "01jh2adlwx043rji888b22whx4bm8alrk3khjpik5xn20kl85mxr"
+                #:snippet '(delete-file-recursively "lib")))
+
+(define rust-windows-i686-gnu-0.53.1
+  (crate-source "windows_i686_gnu" "0.53.1"
+                "18wkcm82ldyg4figcsidzwbg1pqd49jpm98crfz0j7nqd6h6s3ln"
+                #:snippet '(delete-file-recursively "lib")))
+
+(define rust-windows-i686-gnullvm-0.53.1
+  (crate-source "windows_i686_gnullvm" "0.53.1"
+                "030qaxqc4salz6l4immfb6sykc6gmhyir9wzn2w8mxj8038mjwzs"
+                #:snippet '(delete-file-recursively "lib")))
+
+(define rust-windows-i686-msvc-0.53.1
+  (crate-source "windows_i686_msvc" "0.53.1"
+                "1hi6scw3mn2pbdl30ji5i4y8vvspb9b66l98kkz350pig58wfyhy"
+                #:snippet '(delete-file-recursively "lib")))
+
+(define rust-windows-targets-0.53.5
+  (crate-source "windows-targets" "0.53.5"
+                "1wv9j2gv3l6wj3gkw5j1kr6ymb5q6dfc42yvydjhv3mqa7szjia9"))
+
+(define rust-windows-x86-64-gnu-0.53.1
+  (crate-source "windows_x86_64_gnu" "0.53.1"
+                "16d4yiysmfdlsrghndr97y57gh3kljkwhfdbcs05m1jasz6l4f4w"
+                #:snippet '(delete-file-recursively "lib")))
+
+(define rust-windows-x86-64-gnullvm-0.53.1
+  (crate-source "windows_x86_64_gnullvm" "0.53.1"
+                "1qbspgv4g3q0vygkg8rnql5c6z3caqv38japiynyivh75ng1gyhg"
+                #:snippet '(delete-file-recursively "lib")))
+
+(define rust-windows-x86-64-msvc-0.53.1
+  (crate-source "windows_x86_64_msvc" "0.53.1"
+                "0l6npq76vlq4ksn4bwsncpr8508mk0gmznm6wnhjg95d19gzzfyn"
+                #:snippet '(delete-file-recursively "lib")))
+
+(define rust-libz-sys-1.1.23
+  ;; TODO: Check bundled sources.
+  (crate-source "libz-sys" "1.1.23"
+                "1xy0l46gmhfyk28r9pm7njl0h7dh8l2vpiqw67kn043pyfxiil8m"))
+
+;;; New crate sources for impg f773342
+
+
+(define rust-anstream-1.0.0
+  (crate-source "anstream" "1.0.0"
+                "13d2bj0xfg012s4rmq44zc8zgy1q8k9yp7yhvfnarscnmwpj2jl2"))
+
+(define rust-anstyle-1.0.14
+  (crate-source "anstyle" "1.0.14"
+                "0030szmgj51fxkic1hpakxxgappxzwm6m154a3gfml83lq63l2wl"))
+
+(define rust-anstyle-parse-1.0.0
+  (crate-source "anstyle-parse" "1.0.0"
+                "03hkv2690s0crssbnmfkr76kw1k7ah2i6s5amdy9yca2n8w7zkjj"))
+
+(define rust-clap-4.6.0
+  (crate-source "clap" "4.6.0"
+                "0l8k0ja5rf4hpn2g98bqv5m6lkh2q6b6likjpmm6fjw3cxdsz4xi"))
+
+(define rust-clap-builder-4.6.0
+  (crate-source "clap_builder" "4.6.0"
+                "17q6np22yxhh5y5v53y4l31ps3hlaz45mvz2n2nicr7n3c056jki"))
+
+(define rust-clap-derive-4.6.0
+  (crate-source "clap_derive" "4.6.0"
+                "0snapc468s7n3avr33dky4y7rmb7ha3qsp9l0k5vh6jacf5bs40i"))
+
+(define rust-clap-lex-1.1.0
+  (crate-source "clap_lex" "1.1.0"
+                "1ycqkpygnlqnndghhcxjb44lzl0nmgsia64x9581030yifxs7m68"))
+
+(define rust-cmake-0.1.58
+  (crate-source "cmake" "0.1.58"
+                "0y06zxw5sv1p5vvpp5rz1qwbrq7ccawrl09nqy5ahx1a5418mxy0"))
+
+(define rust-colorchoice-1.0.5
+  (crate-source "colorchoice" "1.0.5"
+                "0w75k89hw39p0mnnhlrwr23q50rza1yjki44qvh2mgrnj065a1qx"))
+
+(define rust-env-filter-1.0.1
+  (crate-source "env_filter" "1.0.1"
+                "1vvf9xhaxm0m78bp23b8j3cbv1vm5vffn3gaas27mc64rhm0rs9j"))
+
+(define rust-env-logger-0.11.10
+  (crate-source "env_logger" "0.11.10"
+                "0smmk1hqzk7z91rg7fdq98d03gh9kidkd0ymim43zb4n457w0886"))
+
+
+(define rust-simd-adler32-0.3.9
+  (crate-source "simd-adler32" "0.3.9"
+                "0532ysdwcvzyp2bwpk8qz0hijplcdwpssr5gy5r7qwqqy5z5qgbh"))
+
+(define rust-vcf-0.6.1
+  (crate-source "vcf" "0.6.1"
+                "0dc0p00a19rpmhrqcshrn2qg5l716b5s1fy8vpd3p32bw77vpbs0"))
+
+;; cigzip-specific crates
+(define rust-cc-1.2.60
+  (crate-source "cc" "1.2.60"
+                "084a8ziprdlyrj865f3303qr0b7aaggilkl18slncss6m4yp1ia3"))
+
+
+(define rust-icu-collections-2.2.0
+  (crate-source "icu_collections" "2.2.0"
+                "070r7xd0pynm0hnc1v2jzlbxka6wf50f81wybf9xg0y82v6x3119"))
+
+
+(define rust-icu-locale-core-2.2.0
+  (crate-source "icu_locale_core" "2.2.0"
+                "0a9cmin5w1x3bg941dlmgszn33qgq428k7qiqn5did72ndi9n8cj"))
+
+
+(define rust-icu-normalizer-2.2.0
+  (crate-source "icu_normalizer" "2.2.0"
+                "1d7krxr0xpc4x9635k1100a24nh0nrc59n65j6yk6gbfkplmwvn5"))
+
+(define rust-icu-normalizer-data-2.2.0
+  (crate-source "icu_normalizer_data" "2.2.0"
+                "0f5d5d5fhhr9937m2z6z38fzh6agf14z24kwlr6lyczafypf0fys"))
+
+
+
+(define rust-icu-properties-2.2.0
+  (crate-source "icu_properties" "2.2.0"
+                "1pkh3s837808cbwxvfagwc28cvwrz2d9h5rl02jwrhm51ryvdqxy"))
+
+(define rust-icu-properties-data-2.2.0
+  (crate-source "icu_properties_data" "2.2.0"
+                "052awny0qwkbcbpd5jg2cd7vl5ry26pq4hz1nfsgf10c3qhbnawf"))
+
+
+
+(define rust-icu-provider-2.2.0
+  (crate-source "icu_provider" "2.2.0"
+                "08dl8pxbwr8zsz4c5vphqb7xw0hykkznwi4rw7bk6pwb3krlr70k"))
+
+
+(define rust-js-sys-0.3.95
+  ;; TODO REVIEW: Check bundled sources.
+  (crate-source "js-sys" "0.3.95"
+                "1jhj3kgxxgwm0cpdjiz7i2qapqr7ya9qswadmr63dhwx3lnyjr19"))
+
+
+(define rust-lib-wfa2-0.1.0.8859b6a
+  ;; TODO REVIEW: Define standalone package if this is a workspace.
+  (origin
+    (method git-fetch)
+    (uri (git-reference (url "https://github.com/AndreaGuarracino/lib_wfa2")
+                        (commit "8859b6a214141968f37d9bcb22552408318adda0")))
+    (file-name (git-file-name "rust-lib-wfa2" "0.1.0.8859b6a"))
+    (sha256 (base32 "08hfx5pzcmvk7pnxhjg6nvf77ng9rjrnysynj0qf6n6xd4n02qxa"))))
+
+
+(define rust-libz-sys-1.1.28
+  ;; TODO REVIEW: Check bundled sources.
+  (crate-source "libz-sys" "1.1.28"
+                "08hyf9v85zifl3353xc7i5wr53v9b3scri856cmphl3gaxp24fpw"))
+
+
+(define rust-litemap-0.8.2
+  (crate-source "litemap" "0.8.2"
+                "1w7628bc7wwcxc4n4s5kw0610xk06710nh2hn5kwwk2wa91z9nlj"))
+
+
+(define rust-pkg-config-0.3.33
+  (crate-source "pkg-config" "0.3.33"
+                "17jnqmcbxsnwhg9gjf0nh6dj5k0x3hgwi3mb9krjnmfa9v435w8r"))
+
+
+(define rust-portable-atomic-util-0.2.7
+  (crate-source "portable-atomic-util" "0.2.7"
+                "0616j0fhy6y71hyxg3n86f6hng0fmsc269s3wp4gl8ww4p8hd8f2"))
+
+
+(define rust-potential-utf-0.1.5
+  (crate-source "potential_utf" "0.1.5"
+                "0r0518fr32xbkgzqap509s3r60cr0iancsg9j1jgf37cyz7b20q1"))
+
+
+(define rust-ragc-common-0.1.1.40e5cad
+  ;; TODO REVIEW: Define standalone package if this is a workspace.
+  (origin
+    (method git-fetch)
+    (uri (git-reference (url "https://github.com/ekg/ragc")
+                        (commit "40e5cad11cab7d4df07a72d6b16d68c2d60b0742")))
+    (file-name (git-file-name "rust-ragc-common" "0.1.1.40e5cad"))
+    (sha256 (base32 "1p71jj02ppcvkrvnbs4y0yf00cslzqhlx4idscx8fk4lhmip4kla"))))
+
+
+(define rust-ragc-core-0.1.1.40e5cad
+  ;; TODO REVIEW: Define standalone package if this is a workspace.
+  (origin
+    (method git-fetch)
+    (uri (git-reference (url "https://github.com/ekg/ragc")
+                        (commit "40e5cad11cab7d4df07a72d6b16d68c2d60b0742")))
+    (file-name (git-file-name "rust-ragc-core" "0.1.1.40e5cad"))
+    (sha256 (base32 "1p71jj02ppcvkrvnbs4y0yf00cslzqhlx4idscx8fk4lhmip4kla"))))
+
+
+(define rust-tinystr-0.8.3
+  (crate-source "tinystr" "0.8.3"
+                "0vfr8x285w6zsqhna0a9jyhylwiafb2kc8pj2qaqaahw48236cn8"))
+
+
+(define rust-wasm-bindgen-0.2.118
+  (crate-source "wasm-bindgen" "0.2.118"
+                "129s5r14fx4v4xrzpx2c6l860nkxpl48j50y7kl6j16bpah3iy8b"))
+
+(define rust-wasm-bindgen-macro-0.2.118
+  (crate-source "wasm-bindgen-macro" "0.2.118"
+                "1v98r8vs17cj8918qsg0xx4nlg4nxk1g0jd4nwnyrh1687w29zzf"))
+
+(define rust-wasm-bindgen-macro-support-0.2.118
+  (crate-source "wasm-bindgen-macro-support" "0.2.118"
+                "0169jr0q469hfx5zqxfyywf2h2f4aj17vn4zly02nfwqmxghc24x"))
+
+(define rust-wasm-bindgen-shared-0.2.118
+  (crate-source "wasm-bindgen-shared" "0.2.118"
+                "0ag1vvdzi4334jlzilsy14y3nyzwddf1ndn62fyhf6bg62g4vl2z"))
+
+
+
+
+
+(define rust-web-sys-0.3.95
+  ;; TODO REVIEW: Check bundled sources.
+  (crate-source "web-sys" "0.3.95"
+                "0zfr2jy5bpkkggl88i43yy37p538hg20i56kwn421yj9g6qznbag"))
+
+
+(define rust-writeable-0.6.3
+  (crate-source "writeable" "0.6.3"
+                "1i54d13h9bpap2hf13xcry1s4lxh7ap3923g8f3c0grd7c9fbyhz"))
+
+
+(define rust-yoke-0.8.2
+  (crate-source "yoke" "0.8.2"
+                "1jprcs7a98a5whvfs6r3jvfh1nnfp6zyijl7y4ywmn88lzywbs5b"))
+
+(define rust-yoke-derive-0.8.2
+  (crate-source "yoke-derive" "0.8.2"
+                "13l5y5sz4lqm7rmyakjbh6vwgikxiql51xfff9hq2j485hk4r16y"))
+
+
+
+(define rust-zerocopy-0.8.48
+  (crate-source "zerocopy" "0.8.48"
+                "1sb8plax8jbrsng1jdval7bdhk7hhrx40dz3hwh074k6knzkgm7f"))
+
+(define rust-zerocopy-derive-0.8.48
+  (crate-source "zerocopy-derive" "0.8.48"
+                "1m5s0g92cxggqc74j83k1priz24k3z93sj5gadppd20p9c4cvqvh"))
+
+
+
+(define rust-zerofrom-0.1.7
+  (crate-source "zerofrom" "0.1.7"
+                "1py40in4rirc9q8w36q67pld0zk8ssg024xhh0cncxgal7ra3yk9"))
+
+(define rust-zerofrom-derive-0.1.7
+  (crate-source "zerofrom-derive" "0.1.7"
+                "18c4wsnznhdxx6m80piil1lbyszdiwsshgjrybqcm4b6qic22lqi"))
+
+
+
+(define rust-zerotrie-0.2.4
+  (crate-source "zerotrie" "0.2.4"
+                "1gr0pkcn3qsr6in6iixqyp0vbzwf2j1jzyvh7yl2yydh3p9m548g"))
+
+
+(define rust-zerovec-0.11.6
+  (crate-source "zerovec" "0.11.6"
+                "0fdjsy6b31q9i0d73sl7xjd12xadbwi45lkpfgqnmasrqg5i3ych"))
+
+(define rust-zerovec-derive-0.11.3
+  (crate-source "zerovec-derive" "0.11.3"
+                "0m85qj92mmfvhjra6ziqky5b1p4kcmp5069k7kfadp5hr8jw8pb2"))
+
+
+
+;; pafplot-specific crates
+(define rust-boomphf-0.6.0
+  (crate-source "boomphf" "0.6.0"
+                "0fzccz20w42lq2yfga4jdbgyhcjpjv1pl8xrvn1hb84052ajszk1"))
+
+(define rust-base64-0.21.7
+  (crate-source "base64" "0.21.7"
+                "0rw52yvsk75kar9wgqfwgb414kvil1gn7mqkrhn9zf1537mpsacx"))
+
+(define rust-line-drawing-1.0.1
+  (crate-source "line_drawing" "1.0.1"
+                "1a4fb7hbafqcys2lzyz87bqqnrsfiid3s8kgghab15kzdw0hkwxm"))
+
+(define rust-lodepng-3.12.2
+  (crate-source "lodepng" "3.12.2"
+                "1ni2dgxw3kzgwaywcvm43zviigk5rkflshhv781dqkh527dq4ygy"))
+
+(define rust-itertools-0.14.0
+  (crate-source "itertools" "0.14.0"
+                "118j6l1vs2mx65dqhwyssbrxpawa90886m3mzafdvyip41w2q69b"))
+
+(define rust-rgb-0.8.53
+  (crate-source "rgb" "0.8.53"
+                "1i0c55whln68zs6f5qqrkbg1mzai0p3qk1mwkwzdgr9i3dw4pcs7"))
+
+(define rust-zlib-rs-0.6.3
+  (crate-source "zlib-rs" "0.6.3"
+                "04qmv85amq6sv73bzqgvnlsk9mnrl97rygzf2v4zjcx1807d9qrv"))
+
+;; gfalook-specific crates
+(define rust-bitflags-2.11.1
+  (crate-source "bitflags" "2.11.1"
+                "1cvqijg3rvwgis20a66vfdxannjsxfy5fgjqkaq3l13gyfcj4lf4"))
+
+(define rust-byteorder-lite-0.1.0
+  (crate-source "byteorder-lite" "0.1.0"
+                "15alafmz4b9az56z6x7glcbcb6a8bfgyd109qc3bvx07zx4fj7wg"))
+
+(define rust-clap-4.6.1
+  (crate-source "clap" "4.6.1"
+                "0lcf88l7vlg796rrqr7wipbbmfa5sgsgx4211b7xmxxv8dz13nqx"))
+
+(define rust-clap-derive-4.6.1
+  (crate-source "clap_derive" "4.6.1"
+                "1acpz49hi00iv9jkapixjzcv7s51x8qkfaqscjm36rqgf428dkpj"))
+
+(define rust-fdeflate-0.3.7
+  (crate-source "fdeflate" "0.3.7"
+                "130ga18vyxbb5idbgi07njymdaavvk6j08yh1dfarm294ssm6s0y"))
+
+(define rust-image-0.25.10
+  (crate-source "image" "0.25.10"
+                "0131b9fsd5grxf3lchfs2ci0rg8ga2mh1ygai7k2zh1k8cwq1aw5"))
+
+(define rust-jiff-0.2.23
+  (crate-source "jiff" "0.2.23"
+                "0nc37n7jvgrzxdkcgc2hsfdf70lfagigjalh4igjrm5njvf4cd8s"))
+
+(define rust-jiff-static-0.2.23
+  (crate-source "jiff-static" "0.2.23"
+                "192ss3cnixvg79cpa76clwkhn4mmz10vnwsbf7yjw8i484s8p31a"))
+
+(define rust-libc-0.2.185
+  (crate-source "libc" "0.2.185"
+                "13rbdaa59l3w92q7kfcxx8zbikm99zzw54h59aqvcv5wx47jrzsj"))
+
+(define rust-moxcms-0.8.1
+  (crate-source "moxcms" "0.8.1"
+                "0jz4fd5f7pdn1rngqc96lxriqjkym1lswdhdbjr037s8p9ac31dv"))
+
+(define rust-png-0.18.1
+  (crate-source "png" "0.18.1"
+                "0qca282xp8a6d7mikxrwji3f52mjn4vnqxz2v9iz5adj665rnxk0"))
+
+(define rust-portable-atomic-util-0.2.6
+  (crate-source "portable-atomic-util" "0.2.6"
+                "18wrsx7fjwc2kgbpfjfm3igv3vdzsidmjhbqivjln7d0c6z9f4q9"))
+
+(define rust-pxfm-0.1.28
+  (crate-source "pxfm" "0.1.28"
+                "17bbi6r9jiz9rmlj9zwjcf3qrivr33l8vwjmj9y812ysagkl385m"))
+
+(define rust-rayon-1.12.0
+  (crate-source "rayon" "1.12.0"
+                "0vcj63xgnk72c30vdrak7dhl53snnaqv9x2faf1d94hzg1kb2fgv"))
+
+(define rust-rustc-hash-2.1.2
+  (crate-source "rustc-hash" "2.1.2"
+                "1gjdc5bw9982cj176jvgz9rrqf9xvr1q1ddpzywf5qhs7yzhlc4l"))
+
+(define-cargo-inputs lookup-cargo-inputs
+  (gfainject =>
+    (list rust-adler-1.0.2
+          rust-anyhow-1.0.66
+          rust-autocfg-1.1.0
+          rust-bit-vec-0.6.3
+          rust-bitflags-1.3.2
+          rust-btoi-0.4.2
+          rust-bytemuck-1.12.3
+          rust-byteorder-1.4.3
+          rust-bytes-1.2.1
+          rust-cfg-if-1.0.0
+          rust-crc32fast-1.3.2
+          rust-crossbeam-channel-0.5.6
+          rust-crossbeam-utils-0.8.12
+          rust-flate2-1.0.24
+          rust-hashbrown-0.12.3
+          rust-indexmap-1.9.1
+          rust-lexical-core-0.8.5
+          rust-lexical-parse-float-0.8.5
+          rust-lexical-parse-integer-0.8.6
+          rust-lexical-util-0.8.5
+          rust-lexical-write-float-0.8.5
+          rust-lexical-write-integer-0.8.5
+          rust-memchr-2.5.0
+          rust-miniz-oxide-0.5.4
+          rust-noodles-0.29.0
+          rust-noodles-bam-0.24.0
+          rust-noodles-bgzf-0.17.0
+          rust-noodles-core-0.9.0
+          rust-noodles-csi-0.11.0
+          rust-noodles-fasta-0.16.0
+          rust-noodles-sam-0.21.0
+          rust-num-traits-0.2.15
+          rust-pico-args-0.5.0
+          rust-retain-mut-0.1.7
+          rust-roaring-0.10.1
+          rust-rustc-hash-1.1.0
+          rust-static-assertions-1.1.0))
+  (ragc-cli =>
+    (list rust-adler2-2.0.1
+          rust-ahash-0.8.12
+          rust-aho-corasick-1.1.4
+          rust-allocator-api2-0.2.21
+          rust-anes-0.1.6
+          rust-anstream-0.6.21
+          rust-anstyle-1.0.13
+          rust-anstyle-parse-0.2.7
+          rust-anstyle-query-1.1.5
+          rust-anstyle-wincon-3.0.11
+          rust-anyhow-1.0.102
+          rust-arbitrary-chunks-0.4.1
+          rust-autocfg-1.5.0
+          rust-bincode-1.3.3
+          rust-bitflags-2.11.0
+          rust-block-buffer-0.10.4
+          rust-block-pseudorand-0.1.2
+          rust-bumpalo-3.20.2
+          rust-byteorder-1.5.0
+          rust-cast-0.3.0
+          rust-cc-1.2.56
+          rust-cfg-if-1.0.4
+          rust-chiapos-chacha8-0.1.0
+          rust-ciborium-0.2.2
+          rust-ciborium-io-0.2.2
+          rust-ciborium-ll-0.2.2
+          rust-clap-4.5.60
+          rust-clap-builder-4.5.60
+          rust-clap-derive-4.5.55
+          rust-clap-lex-1.0.0
+          rust-colorchoice-1.0.4
+          rust-cpufeatures-0.2.17
+          rust-crc32fast-1.5.0
+          rust-criterion-0.5.1
+          rust-criterion-plot-0.5.0
+          rust-crossbeam-0.8.4
+          rust-crossbeam-channel-0.5.15
+          rust-crossbeam-deque-0.8.6
+          rust-crossbeam-epoch-0.9.18
+          rust-crossbeam-queue-0.3.12
+          rust-crossbeam-utils-0.8.21
+          rust-crunchy-0.2.4
+          rust-crypto-common-0.1.7
+          rust-dashmap-6.1.0
+          rust-digest-0.10.7
+          rust-either-1.15.0
+          rust-equivalent-1.0.2
+          rust-errno-0.3.14
+          rust-fastrand-2.3.0
+          rust-find-msvc-tools-0.1.9
+          rust-flate2-1.1.9
+          rust-foldhash-0.1.5
+          rust-generic-array-0.14.7
+          rust-getrandom-0.3.4
+          rust-getrandom-0.4.2
+          rust-half-2.7.1
+          rust-hashbrown-0.14.5
+          rust-hashbrown-0.15.5
+          rust-hashbrown-0.16.1
+          rust-heck-0.5.0
+          rust-hermit-abi-0.5.2
+          rust-id-arena-2.3.0
+          rust-indexmap-2.13.0
+          rust-is-terminal-0.4.17
+          rust-is-terminal-polyfill-1.70.2
+          rust-itertools-0.10.5
+          rust-itoa-1.0.17
+          rust-jobserver-0.1.34
+          rust-js-sys-0.3.91
+          rust-leb128fmt-0.1.0
+          rust-libc-0.2.183
+          rust-linux-raw-sys-0.12.1
+          rust-lock-api-0.4.14
+          rust-log-0.4.29
+          rust-memchr-2.8.0
+          rust-miniz-oxide-0.8.9
+          rust-nanorand-0.6.1
+          rust-num-traits-0.2.19
+          rust-num-cpus-1.17.0
+          rust-once-cell-1.21.3
+          rust-once-cell-polyfill-1.70.2
+          rust-oorandom-11.1.5
+          rust-parking-lot-core-0.9.12
+          rust-partition-0.1.2
+          rust-pkg-config-0.3.32
+          rust-plotters-0.3.7
+          rust-plotters-backend-0.3.7
+          rust-plotters-svg-0.3.7
+          rust-prettyplease-0.2.37
+          rust-proc-macro2-1.0.106
+          rust-quote-1.0.45
+          rust-r-efi-5.3.0
+          rust-r-efi-6.0.0
+          rust-rayon-1.11.0
+          rust-rayon-core-1.13.0
+          rust-rdst-0.20.14
+          rust-redox-syscall-0.5.18
+          rust-regex-1.12.3
+          rust-regex-automata-0.4.14
+          rust-regex-syntax-0.8.10
+          rust-rustix-1.1.4
+          rust-rustversion-1.0.22
+          rust-same-file-1.0.6
+          rust-scopeguard-1.2.0
+          rust-semver-1.0.27
+          rust-serde-1.0.228
+          rust-serde-core-1.0.228
+          rust-serde-derive-1.0.228
+          rust-serde-json-1.0.149
+          rust-sha2-0.10.9
+          rust-shlex-1.3.0
+          rust-simd-adler32-0.3.8
+          rust-smallvec-1.15.1
+          rust-strsim-0.11.1
+          rust-syn-2.0.117
+          rust-tempfile-3.26.0
+          rust-thiserror-1.0.69
+          rust-thiserror-impl-1.0.69
+          rust-tikv-jemalloc-sys-0.5.4+5.3.0-patched
+          rust-tikv-jemallocator-0.5.4
+          rust-tinytemplate-1.2.1
+          rust-typenum-1.19.0
+          rust-unicode-ident-1.0.24
+          rust-unicode-xid-0.2.6
+          rust-utf8parse-0.2.2
+          rust-version-check-0.9.5
+          rust-voracious-radix-sort-1.2.0
+          rust-walkdir-2.5.0
+          rust-wasip2-1.0.2+wasi-0.2.9
+          rust-wasip3-0.4.0+wasi-0.3.0-rc-2026-01-06
+          rust-wasm-bindgen-0.2.114
+          rust-wasm-bindgen-macro-0.2.114
+          rust-wasm-bindgen-macro-support-0.2.114
+          rust-wasm-bindgen-shared-0.2.114
+          rust-wasm-encoder-0.244.0
+          rust-wasm-metadata-0.244.0
+          rust-wasmparser-0.244.0
+          rust-web-sys-0.3.91
+          rust-winapi-util-0.1.11
+          rust-windows-link-0.2.1
+          rust-windows-sys-0.61.2
+          rust-wit-bindgen-0.51.0
+          rust-wit-bindgen-core-0.51.0
+          rust-wit-bindgen-rust-0.51.0
+          rust-wit-bindgen-rust-macro-0.51.0
+          rust-wit-component-0.244.0
+          rust-wit-parser-0.244.0
+          rust-zerocopy-0.8.40
+          rust-zerocopy-derive-0.8.40
+          rust-zmij-1.0.21
+          rust-zstd-0.13.3
+          rust-zstd-safe-7.2.4
+          rust-zstd-sys-2.0.16+zstd.1.5.7))
+  (onecode =>
+    (list rust-aho-corasick-1.1.3
+          rust-bindgen-0.70.1
+          rust-bitflags-2.9.4
+          rust-cc-1.2.40
+          rust-cexpr-0.6.0
+          rust-cfg-if-1.0.3
+          rust-clang-sys-1.8.1
+          rust-either-1.15.0
+          rust-find-msvc-tools-0.1.3
+          rust-glob-0.3.3
+          rust-itertools-0.13.0
+          rust-libc-0.2.176
+          rust-libloading-0.8.9
+          rust-log-0.4.28
+          rust-memchr-2.7.6
+          rust-minimal-lexical-0.2.1
+          rust-nom-7.1.3
+          rust-prettyplease-0.2.37
+          rust-proc-macro2-1.0.101
+          rust-quote-1.0.41
+          rust-regex-1.11.3
+          rust-regex-automata-0.4.11
+          rust-regex-syntax-0.8.6
+          rust-rustc-hash-1.1.0
+          rust-shlex-1.3.0
+          rust-syn-2.0.106
+          rust-unicode-ident-1.0.19
+          rust-windows-link-0.2.1))
+  (fastga-rs =>
+    (list rust-aho-corasick-1.1.3
+          rust-anyhow-1.0.100
+          rust-bindgen-0.70.1
+          rust-bitflags-2.10.0
+          rust-cc-1.2.43
+          rust-cexpr-0.6.0
+          rust-cfg-if-1.0.4
+          rust-clang-sys-1.8.1
+          rust-diff-0.1.13
+          rust-either-1.15.0
+          rust-errno-0.3.14
+          rust-fastrand-2.3.0
+          rust-find-msvc-tools-0.1.4
+          rust-getrandom-0.3.4
+          rust-glob-0.3.3
+          rust-hermit-abi-0.5.2
+          rust-home-0.5.12
+          rust-itertools-0.13.0
+          rust-libc-0.2.177
+          rust-libloading-0.8.9
+          rust-linux-raw-sys-0.11.0
+          rust-linux-raw-sys-0.4.15
+          rust-log-0.4.28
+          rust-memchr-2.7.6
+          rust-minimal-lexical-0.2.1
+          rust-nix-0.27.1
+          rust-nom-7.1.3
+          rust-num-cpus-1.17.0
+          rust-once-cell-1.21.3
+          rust-onecode-0.1.0
+          rust-pkg-config-0.3.32
+          rust-pretty-assertions-1.4.1
+          rust-prettyplease-0.2.37
+          rust-proc-macro2-1.0.103
+          rust-quote-1.0.41
+          rust-r-efi-5.3.0
+          rust-regex-1.12.2
+          rust-regex-automata-0.4.13
+          rust-regex-syntax-0.8.8
+          rust-rustc-hash-1.1.0
+          rust-rustix-0.38.44
+          rust-rustix-1.1.2
+          rust-shlex-1.3.0
+          rust-syn-2.0.108
+          rust-tempfile-3.23.0
+          rust-thiserror-1.0.69
+          rust-thiserror-impl-1.0.69
+          rust-unicode-ident-1.0.20
+          rust-wasip2-1.0.1+wasi-0.2.4
+          rust-which-6.0.3
+          rust-windows-aarch64-gnullvm-0.52.6
+          rust-windows-aarch64-msvc-0.52.6
+          rust-windows-i686-gnu-0.52.6
+          rust-windows-i686-gnullvm-0.52.6
+          rust-windows-i686-msvc-0.52.6
+          rust-windows-link-0.2.1
+          rust-windows-sys-0.59.0
+          rust-windows-sys-0.61.2
+          rust-windows-targets-0.52.6
+          rust-windows-x86-64-gnu-0.52.6
+          rust-windows-x86-64-gnullvm-0.52.6
+          rust-windows-x86-64-msvc-0.52.6
+          rust-winsafe-0.0.19
+          rust-wit-bindgen-0.46.0
+          rust-yansi-1.0.1))
+  (impg =>
+    (list rust-adler2-2.0.1
+          rust-aho-corasick-1.1.4
+          rust-anstream-0.6.21
+          rust-anstyle-1.0.13
+          rust-anstyle-parse-0.2.7
+          rust-anstyle-query-1.1.5
+          rust-anstyle-wincon-3.0.11
+          rust-anyhow-1.0.102
+          rust-approx-0.5.1
+          rust-arrayvec-0.5.2
+          rust-autocfg-1.5.0
+          rust-bgzip-0.3.1
+          rust-bincode-2.0.1
+          rust-bincode-derive-2.0.1
+          rust-bio-types-1.0.4
+          rust-bitflags-1.3.2
+          rust-bitflags-2.11.0
+          rust-bitvec-1.0.1
+          rust-boomphf-0.5.9
+          rust-bstr-0.2.17
+          rust-bumpalo-3.20.2
+          rust-bytemuck-1.25.0
+          rust-bytemuck-derive-1.10.2
+          rust-byteorder-1.5.0
+          rust-bytes-1.11.1
+          rust-bzip2-0.5.2
+          rust-bzip2-sys-0.1.13+1.0.8
+          rust-cc-1.2.56
+          rust-cfg-if-1.0.4
+          rust-clap-4.5.60
+          rust-clap-builder-4.5.60
+          rust-clap-derive-4.5.55
+          rust-clap-lex-1.0.0
+          rust-cmake-0.1.57
+          rust-codespan-reporting-0.13.1
+          rust-coitrees-0.4.0
+          rust-colorchoice-1.0.4
+          rust-console-0.16.1
+          rust-core-affinity-0.8.3
+          rust-crc32fast-1.5.0
+          rust-crossbeam-channel-0.5.15
+          rust-crossbeam-deque-0.8.6
+          rust-crossbeam-epoch-0.9.18
+          rust-crossbeam-utils-0.8.21
+          rust-custom-derive-0.1.7
+          rust-cxx-1.0.194
+          rust-cxx-build-1.0.194
+          rust-cxxbridge-cmd-1.0.194
+          rust-cxxbridge-flags-1.0.194
+          rust-cxxbridge-macro-1.0.194
+          rust-derive-new-0.5.9
+          rust-derive-new-0.7.0
+          rust-displaydoc-0.2.5
+          rust-either-1.15.0
+          rust-encode-unicode-1.0.0
+          rust-env-filter-1.0.0
+          rust-env-logger-0.11.9
+          rust-equivalent-1.0.2
+          rust-errno-0.3.14
+          rust-fastga-rs-0.1.2.e5037d5
+          rust-fastrand-2.3.0
+          rust-find-msvc-tools-0.1.9
+          rust-flate2-1.1.9
+          rust-flume-0.11.1
+          rust-fnv-1.0.7
+          rust-foldhash-0.2.0
+          rust-form-urlencoded-1.2.2
+          rust-fs-utils-1.1.4
+          rust-funty-2.0.0
+          rust-futures-core-0.3.32
+          rust-futures-sink-0.3.32
+          rust-getrandom-0.2.16
+          rust-getrandom-0.3.3
+          rust-gfa-0.10.1
+          rust-gfasort-0.1.0.b5fdb1d
+          rust-glob-0.3.3
+          rust-gzp-1.0.1
+          rust-handlegraph-0.7.0-alpha.9.3ac575e
+          rust-hashbrown-0.16.1
+          rust-heck-0.5.0
+          rust-hermit-abi-0.5.2
+          rust-hts-sys-2.2.0
+          rust-icu-collections-2.1.1
+          rust-icu-locale-core-2.1.1
+          rust-icu-normalizer-2.1.1
+          rust-icu-normalizer-data-2.1.1
+          rust-icu-properties-2.0.1
+          rust-icu-properties-data-2.0.1
+          rust-icu-provider-2.1.1
+          rust-idna-1.1.0
+          rust-idna-adapter-1.2.1
+          rust-ieee754-0.2.6
+          rust-indexmap-2.13.0
+          rust-indicatif-0.18.4
+          rust-is-terminal-polyfill-1.70.2
+          rust-jiff-0.2.22
+          rust-jiff-static-0.2.22
+          rust-jobserver-0.1.34
+          rust-js-sys-0.3.91
+          rust-lazy-static-1.5.0
+          rust-lexical-core-0.7.6
+          rust-lib-wfa2-0.1.0.0fe1ebf
+          rust-libc-0.2.175
+          rust-libdeflate-sys-1.25.2
+          rust-libdeflater-1.25.2
+          rust-liblzma-0.3.6
+          rust-liblzma-sys-0.3.13
+          rust-libz-ng-sys-1.1.24
+          rust-libz-rs-sys-0.5.2
+          rust-libz-sys-1.1.24
+          rust-linear-map-1.2.0
+          rust-link-cplusplus-1.0.12
+          rust-linux-raw-sys-0.12.1
+          rust-litemap-0.8.1
+          rust-lock-api-0.4.14
+          rust-log-0.4.29
+          rust-matrixmultiply-0.3.10
+          rust-memchr-2.8.0
+          rust-memmap-0.7.0
+          rust-miniz-oxide-0.8.9
+          rust-nalgebra-0.33.2
+          rust-nalgebra-macros-0.2.2
+          rust-nanorand-0.7.0
+          rust-natord-1.0.9
+          rust-newtype-derive-0.1.6
+          rust-niffler-3.0.0
+          rust-nom-7.1.3
+          rust-noodles-0.100.0
+          rust-noodles-bgzf-0.42.0
+          rust-num-bigint-0.4.6
+          rust-num-complex-0.4.6
+          rust-num-integer-0.1.46
+          rust-num-rational-0.4.2
+          rust-num-traits-0.2.19
+          rust-num-cpus-1.17.0
+          rust-once-cell-1.21.3
+          rust-once-cell-polyfill-1.70.2
+          rust-onecode-0.1.0.38182c7
+          rust-onecode-0.1.0.f531f5b
+          rust-paste-1.0.15
+          rust-percent-encoding-2.3.2
+          rust-pkg-config-0.3.32
+          rust-portable-atomic-1.13.1
+          rust-portable-atomic-util-0.2.5
+          rust-potential-utf-0.1.4
+          rust-proc-macro2-1.0.106
+          rust-quick-error-1.2.3
+          rust-quote-1.0.40
+          rust-r-efi-5.3.0
+          rust-radium-0.7.0
+          rust-ragc-0.1.1.e9e4a6f
+          rust-rand-0.8.5
+          rust-rand-0.9.2
+          rust-rand-chacha-0.3.1
+          rust-rand-chacha-0.9.0
+          rust-rand-core-0.6.4
+          rust-rand-core-0.9.5
+          rust-rand-distr-0.5.1
+          rust-rand-xoshiro-0.7.0
+          rust-rawpointer-0.2.1
+          rust-rayon-1.11.0
+          rust-rayon-core-1.13.0
+          rust-regex-1.12.3
+          rust-regex-automata-0.1.10
+          rust-regex-automata-0.4.14
+          rust-regex-syntax-0.8.10
+          rust-rust-htslib-1.0.0
+          rust-rustc-hash-2.1.1
+          rust-rustc-version-0.1.7
+          rust-rustix-1.1.4
+          rust-rustversion-1.0.22
+          rust-ryu-1.0.20
+          rust-safe-arch-0.7.4
+          rust-scopeguard-1.2.0
+          rust-scratch-1.0.9
+          rust-semver-1.0.27
+          rust-sha2-0.10.9
+          rust-digest-0.10.7
+          rust-crypto-common-0.1.7
+          rust-block-buffer-0.10.4
+          rust-generic-array-0.14.7
+          rust-cpufeatures-0.2.17
+          rust-seqwish-0.1.3.b65a7e0
+          rust-serde-1.0.228
+          rust-serde-core-1.0.228
+          rust-serde-derive-1.0.228
+          rust-shlex-1.3.0
+          rust-simba-0.9.1
+          rust-smallvec-1.15.1
+          rust-spin-0.9.8
+          rust-spoa-rs-0.1.0.6f4f102
+          rust-stable-deref-trait-1.2.1
+          rust-static-assertions-1.1.0
+          rust-strsim-0.11.1
+          rust-strum-macros-0.26.4
+          rust-succinct-0.5.2
+          rust-sweepga-0.1.1.29d2123
+          rust-syn-1.0.109
+          rust-syn-2.0.117
+          rust-synstructure-0.13.2
+          rust-tap-1.0.1
+          rust-tempfile-3.26.0
+          rust-termcolor-1.4.1
+          rust-thiserror-1.0.69
+          rust-thiserror-2.0.16
+          rust-thiserror-impl-1.0.69
+          rust-thiserror-impl-2.0.16
+          rust-tinystr-0.8.2
+          rust-tpa-0.1.0.49f1801
+          rust-tracepoints-0.1.0.66a5511
+          rust-typenum-1.19.0
+          rust-unicode-ident-1.0.24
+          rust-unicode-width-0.2.2
+          rust-unit-prefix-0.5.2
+          rust-unty-0.0.4
+          rust-url-2.5.7
+          rust-utf8-iter-1.0.4
+          rust-utf8parse-0.2.2
+          rust-vcpkg-0.2.15
+          rust-version-check-0.9.5
+          rust-virtue-0.0.18
+          rust-wasi-0.11.1+wasi-snapshot-preview1
+          rust-wasip2-1.0.2+wasi-0.2.9
+          rust-wasm-bindgen-0.2.114
+          rust-wasm-bindgen-backend-0.2.102
+          rust-wasm-bindgen-macro-0.2.114
+          rust-wasm-bindgen-macro-support-0.2.114
+          rust-wasm-bindgen-shared-0.2.114
+          rust-web-time-1.1.0
+          rust-wide-0.7.33
+          rust-winapi-0.3.9
+          rust-winapi-i686-pc-windows-gnu-0.4.0
+          rust-winapi-util-0.1.11
+          rust-winapi-x86-64-pc-windows-gnu-0.4.0
+          rust-windows-link-0.1.3
+          rust-windows-link-0.2.1
+          rust-windows-sys-0.60.2
+          rust-windows-sys-0.61.2
+          rust-windows-targets-0.52.6
+          rust-windows-aarch64-gnullvm-0.52.6
+          rust-windows-aarch64-msvc-0.52.6
+          rust-windows-i686-gnu-0.52.6
+          rust-windows-i686-gnullvm-0.52.6
+          rust-windows-i686-msvc-0.52.6
+          rust-windows-x86-64-gnu-0.52.6
+          rust-windows-x86-64-gnullvm-0.52.6
+          rust-windows-x86-64-msvc-0.52.6
+          rust-wit-bindgen-0.51.0
+          rust-writeable-0.6.2
+          rust-wyhash-0.5.0
+          rust-wyz-0.5.1
+          rust-yoke-0.8.1
+          rust-yoke-derive-0.8.1
+          rust-zerofrom-0.1.6
+          rust-zerofrom-derive-0.1.6
+          rust-zerotrie-0.2.3
+          rust-zerovec-0.11.5
+          rust-zerovec-derive-0.11.2
+          rust-zlib-rs-0.6.2
+          rust-zstd-0.13.3
+          rust-zstd-safe-7.2.4
+          rust-zstd-sys-2.0.16+zstd.1.5.7
+          ;; Transitive dependencies of git-sourced crates
+          rust-ahash-0.8.12
+          rust-allocator-api2-0.2.21
+          rust-android-system-properties-0.1.5
+          rust-arbitrary-chunks-0.4.1
+          rust-bincode-1.3.3
+          rust-bindgen-0.69.5
+          rust-bindgen-0.70.1
+          rust-block-pseudorand-0.1.2
+          rust-cbindgen-0.27.0
+          rust-cexpr-0.6.0
+          rust-chiapos-chacha8-0.1.0
+          rust-chrono-0.4.44
+          rust-clang-sys-1.8.1
+          rust-console-0.16.2
+          rust-core-foundation-sys-0.8.7
+          rust-crossbeam-0.8.4
+          rust-crossbeam-queue-0.3.12
+          rust-crunchy-0.2.4
+          rust-dashmap-6.1.0
+          rust-derive-new-0.6.0
+          rust-fm-index-0.3.0
+          rust-foldhash-0.1.5
+          rust-getrandom-0.2.17
+          rust-getrandom-0.3.4
+          rust-getrandom-0.4.1
+          rust-hashbrown-0.14.5
+          rust-hashbrown-0.15.5
+          rust-heck-0.4.1
+          rust-home-0.5.12
+          rust-iana-time-zone-0.1.65
+          rust-iana-time-zone-haiku-0.1.2
+          rust-icu-properties-2.1.2
+          rust-icu-properties-data-2.1.2
+          rust-id-arena-2.3.0
+          rust-iitree-rs-0.1.1
+          rust-is-terminal-0.4.17
+          rust-itertools-0.10.5
+          rust-itertools-0.12.1
+          rust-itertools-0.13.0
+          rust-itoa-1.0.17
+          rust-lazycell-1.3.0
+          rust-leb128fmt-0.1.0
+          rust-libc-0.2.182
+          rust-libloading-0.8.9
+          rust-libm-0.2.16
+          rust-linux-raw-sys-0.4.15
+          rust-memmap2-0.9.10
+          rust-minimal-lexical-0.2.1
+          rust-nanorand-0.6.1
+          rust-nix-0.27.1
+          rust-nom-5.1.3
+          rust-onecode-0.1.0
+          rust-ordered-float-4.6.0
+          rust-parking-lot-0.12.5
+          rust-parking-lot-core-0.9.12
+          rust-partition-0.1.2
+          rust-ppv-lite86-0.2.21
+          rust-prettyplease-0.2.37
+          rust-quote-1.0.44
+          rust-rdst-0.20.14
+          rust-redox-syscall-0.5.18
+          rust-rustc-hash-1.1.0
+          rust-rustix-0.38.44
+          rust-ryu-1.0.23
+          rust-same-file-1.0.6
+          rust-semver-0.1.20
+          rust-serde-json-1.0.149
+          rust-serde-spanned-0.6.9
+          rust-simd-adler32-0.3.8
+          rust-sucds-0.8.3
+          rust-thiserror-2.0.18
+          rust-thiserror-impl-2.0.18
+          rust-tikv-jemalloc-sys-0.5.4+5.3.0-patched
+          rust-tikv-jemallocator-0.5.4
+          rust-toml-0.8.23
+          rust-toml-datetime-0.6.11
+          rust-toml-edit-0.22.27
+          rust-toml-write-0.1.2
+          rust-uf-rush-0.1.1
+          rust-unicode-xid-0.2.6
+          rust-url-2.5.8
+          rust-vers-vecs-1.9.0
+          rust-voracious-radix-sort-1.2.0
+          rust-walkdir-2.5.0
+          rust-windows-core-0.62.2
+          rust-windows-implement-0.60.2
+          rust-windows-interface-0.59.3
+          rust-windows-result-0.4.1
+          rust-windows-strings-0.5.1
+          rust-winnow-0.7.14
+          rust-zerocopy-0.8.40
+          rust-zerocopy-derive-0.8.40
+          rust-zmij-1.0.21
+          ;; Dev/build dependencies of transitive crates
+          rust-anes-0.1.6
+          rust-cast-0.3.0
+          rust-ciborium-0.2.2
+          rust-ciborium-io-0.2.2
+          rust-ciborium-ll-0.2.2
+          rust-criterion-0.5.1
+          rust-criterion-plot-0.5.0
+          rust-half-2.7.1
+          rust-oorandom-11.1.5
+          rust-plotters-0.3.7
+          rust-plotters-backend-0.3.7
+          rust-plotters-svg-0.3.7
+          rust-tinytemplate-1.2.1
+          rust-wasip3-0.4.0+wasi-0.3.0-rc-2026-01-06
+          rust-wasm-encoder-0.244.0
+          rust-wasm-metadata-0.244.0
+          rust-wasmparser-0.244.0
+          rust-web-sys-0.3.91
+          rust-which-6.0.3
+          rust-windows-sys-0.59.0
+          rust-winsafe-0.0.19
+          rust-wit-bindgen-core-0.51.0
+          rust-wit-bindgen-rust-0.51.0
+          rust-wit-bindgen-rust-macro-0.51.0
+          rust-wit-component-0.244.0
+          rust-terminal-size-0.4.4
+          rust-wfmash-rs-0.1.0.d47b7e3
+          rust-wit-parser-0.244.0))
+  (gfaffix =>
+    (list rust-adler2-2.0.1
+          rust-aho-corasick-1.1.4
+          rust-anstream-0.6.21
+          rust-anstyle-1.0.13
+          rust-anstyle-parse-0.2.7
+          rust-anstyle-query-1.1.5
+          rust-anstyle-wincon-3.0.11
+          rust-anyhow-1.0.101
+          rust-arrayvec-0.5.2
+          rust-autocfg-1.5.0
+          rust-bitflags-1.3.2
+          rust-bitflags-2.11.0
+          rust-boomphf-0.5.9
+          rust-bstr-0.2.17
+          rust-bytemuck-1.25.0
+          rust-bytemuck-derive-1.10.2
+          rust-byteorder-1.5.0
+          rust-cc-1.2.56
+          rust-cfg-if-1.0.4
+          rust-clap-4.5.59
+          rust-clap-builder-4.5.59
+          rust-clap-derive-4.5.55
+          rust-clap-lex-1.0.0
+          rust-colorchoice-1.0.4
+          rust-crc32fast-1.5.0
+          rust-crossbeam-channel-0.5.15
+          rust-crossbeam-deque-0.8.6
+          rust-crossbeam-epoch-0.9.18
+          rust-crossbeam-utils-0.8.21
+          rust-either-1.15.0
+          rust-env-filter-1.0.0
+          rust-env-logger-0.11.9
+          rust-equivalent-1.0.2
+          rust-errno-0.3.14
+          rust-find-msvc-tools-0.1.9
+          rust-flate2-1.1.9
+          rust-fnv-1.0.7
+          rust-gfa-0.10.1
+          rust-handlegraph-0.7.0-alpha.9
+          rust-hashbrown-0.16.1
+          rust-heck-0.5.0
+          rust-indexmap-2.13.0
+          rust-is-terminal-polyfill-1.70.2
+          rust-jiff-0.2.20
+          rust-jiff-static-0.2.20
+          rust-lazy-static-1.5.0
+          rust-lexical-core-0.7.6
+          rust-libc-0.2.182
+          rust-libz-sys-1.1.23
+          rust-linux-raw-sys-0.11.0
+          rust-log-0.4.29
+          rust-memchr-2.8.0
+          rust-memmap-0.7.0
+          rust-miniz-oxide-0.8.9
+          rust-nom-5.1.3
+          rust-num-traits-0.2.19
+          rust-once-cell-polyfill-1.70.2
+          rust-pkg-config-0.3.32
+          rust-portable-atomic-1.13.1
+          rust-portable-atomic-util-0.2.5
+          rust-proc-macro2-1.0.106
+          rust-quote-1.0.44
+          rust-rand-core-0.6.4
+          rust-rayon-1.11.0
+          rust-rayon-core-1.13.0
+          rust-regex-1.12.3
+          rust-regex-automata-0.1.10
+          rust-regex-automata-0.4.14
+          rust-regex-syntax-0.8.9
+          rust-rustc-hash-2.1.1
+          rust-rustix-1.1.3
+          rust-ryu-1.0.23
+          rust-serde-core-1.0.228
+          rust-serde-derive-1.0.228
+          rust-shlex-1.3.0
+          rust-simd-adler32-0.3.8
+          rust-static-assertions-1.1.0
+          rust-strsim-0.11.1
+          rust-succinct-0.5.2
+          rust-syn-2.0.116
+          rust-terminal-size-0.4.3
+          rust-unicode-ident-1.0.24
+          rust-utf8parse-0.2.2
+          rust-vcpkg-0.2.15
+          rust-version-check-0.9.5
+          rust-winapi-0.3.9
+          rust-winapi-i686-pc-windows-gnu-0.4.0
+          rust-winapi-x86-64-pc-windows-gnu-0.4.0
+          rust-windows-link-0.2.1
+          rust-windows-sys-0.60.2
+          rust-windows-sys-0.61.2
+          rust-windows-targets-0.53.5
+          rust-windows-aarch64-gnullvm-0.53.1
+          rust-windows-aarch64-msvc-0.53.1
+          rust-windows-i686-gnu-0.53.1
+          rust-windows-i686-gnullvm-0.53.1
+          rust-windows-i686-msvc-0.53.1
+          rust-windows-x86-64-gnu-0.53.1
+          rust-windows-x86-64-gnullvm-0.53.1
+          rust-windows-x86-64-msvc-0.53.1
+          rust-wyhash-0.5.0))
+  (vcfbub =>
+    (list rust-adler2-2.0.1
+          rust-ansi-term-0.12.1
+          rust-atty-0.2.14
+          rust-bitflags-1.3.2
+          rust-cfg-if-1.0.4
+          rust-clap-2.34.0
+          rust-crc32fast-1.5.0
+          rust-flate2-1.1.9
+          rust-hermit-abi-0.1.19
+          rust-libc-0.2.184
+          rust-memchr-2.8.0
+          rust-minimal-lexical-0.2.1
+          rust-miniz-oxide-0.8.9
+          rust-nom-7.1.3
+          rust-once-cell-1.21.4
+          rust-proc-macro2-1.0.106
+          rust-quote-1.0.45
+          rust-simd-adler32-0.3.9
+          rust-strsim-0.8.0
+          rust-syn-2.0.117
+          rust-textwrap-0.11.0
+          rust-thiserror-1.0.69
+          rust-thiserror-impl-1.0.69
+          rust-unicode-ident-1.0.24
+          rust-unicode-width-0.1.14
+          rust-vcf-0.6.1
+          rust-vec-map-0.8.2
+          rust-winapi-0.3.9
+          rust-winapi-i686-pc-windows-gnu-0.4.0
+          rust-winapi-x86-64-pc-windows-gnu-0.4.0))
+  (gafpack =>
+    (list rust-aho-corasick-1.1.4
+          rust-anstream-1.0.0
+          rust-anstyle-1.0.14
+          rust-anstyle-parse-1.0.0
+          rust-anstyle-query-1.1.5
+          rust-anstyle-wincon-3.0.11
+          rust-anyhow-1.0.102
+          rust-arrayvec-0.5.2
+          rust-bitflags-1.3.2
+          rust-bstr-0.2.17
+          rust-bytemuck-1.25.0
+          rust-bytemuck-derive-1.10.2
+          rust-cfg-if-1.0.4
+          rust-clap-4.6.0
+          rust-clap-builder-4.6.0
+          rust-clap-derive-4.6.0
+          rust-clap-lex-1.1.0
+          rust-colorchoice-1.0.5
+          rust-fnv-1.0.7
+          rust-gfa-0.10.1
+          rust-heck-0.5.0
+          rust-is-terminal-polyfill-1.70.2
+          rust-lazy-static-1.5.0
+          rust-lexical-core-0.7.6
+          rust-libc-0.2.184
+          rust-memchr-2.8.0
+          rust-memmap-0.7.0
+          rust-nom-5.1.3
+          rust-once-cell-polyfill-1.70.2
+          rust-proc-macro2-1.0.106
+          rust-quote-1.0.45
+          rust-regex-1.12.3
+          rust-regex-automata-0.4.14
+          rust-regex-syntax-0.8.10
+          rust-ryu-1.0.23
+          rust-static-assertions-1.1.0
+          rust-strsim-0.11.1
+          rust-syn-2.0.117
+          rust-unicode-ident-1.0.24
+          rust-utf8parse-0.2.2
+          rust-version-check-0.9.5
+          rust-winapi-0.3.9
+          rust-winapi-i686-pc-windows-gnu-0.4.0
+          rust-winapi-x86-64-pc-windows-gnu-0.4.0
+          rust-windows-link-0.2.1
+          rust-windows-sys-0.61.2))
+  (gfautil =>
+    (list rust-aho-corasick-1.1.4
+          rust-android-system-properties-0.1.5
+          rust-ansi-term-0.12.1
+          rust-anyhow-1.0.102
+          rust-arrayvec-0.5.2
+          rust-atty-0.2.14
+          rust-autocfg-1.5.0
+          rust-bitflags-1.3.2
+          rust-boomphf-0.5.9
+          rust-bstr-0.2.17
+          rust-bumpalo-3.20.2
+          rust-bytemuck-1.25.0
+          rust-bytemuck-derive-1.10.2
+          rust-byteorder-1.5.0
+          rust-cc-1.2.58
+          rust-cfg-if-1.0.4
+          rust-chrono-0.4.44
+          rust-clap-2.34.0
+          rust-console-0.16.3
+          rust-core-foundation-sys-0.8.7
+          rust-crossbeam-channel-0.5.15
+          rust-crossbeam-deque-0.8.6
+          rust-crossbeam-epoch-0.9.18
+          rust-crossbeam-utils-0.8.21
+          rust-either-1.15.0
+          rust-encode-unicode-1.0.0
+          rust-env-logger-0.7.1
+          rust-find-msvc-tools-0.1.9
+          rust-fixedbitset-0.2.0
+          rust-fnv-1.0.7
+          rust-fxhash-0.2.1
+          rust-gfa-0.10.1
+          rust-handlegraph-0.7.0-alpha.9
+          rust-hashbrown-0.12.3
+          rust-heck-0.3.3
+          rust-hermit-abi-0.1.19
+          rust-humantime-1.3.0
+          rust-iana-time-zone-0.1.65
+          rust-iana-time-zone-haiku-0.1.2
+          rust-indexmap-1.9.3
+          rust-indicatif-0.15.0
+          rust-itoa-1.0.18
+          rust-js-sys-0.3.94
+          rust-lazy-static-1.5.0
+          rust-lexical-core-0.7.6
+          rust-libc-0.2.184
+          rust-log-0.4.29
+          rust-memchr-2.8.0
+          rust-memmap-0.7.0
+          rust-nom-5.1.3
+          rust-num-traits-0.2.19
+          rust-number-prefix-0.3.0
+          rust-once-cell-1.21.4
+          rust-petgraph-0.5.1
+          rust-pretty-env-logger-0.4.0
+          rust-proc-macro-error-1.0.4
+          rust-proc-macro-error-attr-1.0.4
+          rust-proc-macro2-1.0.106
+          rust-quick-error-1.2.3
+          rust-quote-1.0.45
+          rust-rand-core-0.6.4
+          rust-rayon-1.11.0
+          rust-rayon-core-1.13.0
+          rust-regex-1.12.3
+          rust-regex-automata-0.1.10
+          rust-regex-automata-0.4.14
+          rust-regex-syntax-0.8.10
+          rust-rustc-hash-1.1.0
+          rust-rustversion-1.0.22
+          rust-ryu-1.0.23
+          rust-saboten-0.1.2-alpha.3
+          rust-serde-1.0.228
+          rust-serde-core-1.0.228
+          rust-serde-derive-1.0.228
+          rust-serde-json-1.0.149
+          rust-shlex-1.3.0
+          rust-static-assertions-1.1.0
+          rust-strsim-0.8.0
+          rust-structopt-0.3.26
+          rust-structopt-derive-0.4.18
+          rust-succinct-0.5.2
+          rust-syn-1.0.109
+          rust-syn-2.0.117
+          rust-termcolor-1.4.1
+          rust-textwrap-0.11.0
+          rust-three-edge-connected-0.2.2
+          rust-unicode-ident-1.0.24
+          rust-unicode-segmentation-1.13.2
+          rust-unicode-width-0.1.14
+          rust-unicode-width-0.2.2
+          rust-vec-map-0.8.2
+          rust-version-check-0.9.5
+          rust-wasm-bindgen-0.2.117
+          rust-wasm-bindgen-macro-0.2.117
+          rust-wasm-bindgen-macro-support-0.2.117
+          rust-wasm-bindgen-shared-0.2.117
+          rust-winapi-0.3.9
+          rust-winapi-i686-pc-windows-gnu-0.4.0
+          rust-winapi-util-0.1.11
+          rust-winapi-x86-64-pc-windows-gnu-0.4.0
+          rust-windows-core-0.62.2
+          rust-windows-implement-0.60.2
+          rust-windows-interface-0.59.3
+          rust-windows-link-0.2.1
+          rust-windows-result-0.4.1
+          rust-windows-strings-0.5.1
+          rust-windows-sys-0.61.2
+          rust-wyhash-0.5.0
+          rust-zmij-1.0.21))
+  (fastix =>
+    (list rust-anstream-1.0.0
+          rust-anstyle-1.0.14
+          rust-anstyle-parse-1.0.0
+          rust-anstyle-query-1.1.5
+          rust-anstyle-wincon-3.0.11
+          rust-clap-4.6.0
+          rust-clap-builder-4.6.0
+          rust-clap-lex-1.1.0
+          rust-colorchoice-1.0.5
+          rust-is-terminal-polyfill-1.70.2
+          rust-once-cell-polyfill-1.70.2
+          rust-strsim-0.11.1
+          rust-utf8parse-0.2.2
+          rust-windows-link-0.2.1
+          rust-windows-sys-0.61.2))
+  (pafplot =>
+    (list rust-adler2-2.0.1
+          rust-ansi-term-0.12.1
+          rust-atty-0.2.14
+          rust-autocfg-1.5.0
+          rust-base64-0.21.7
+          rust-bitflags-1.3.2
+          rust-boomphf-0.6.0
+          rust-bytemuck-1.25.0
+          rust-cfg-if-1.0.4
+          rust-clap-2.34.0
+          rust-crc32fast-1.5.0
+          rust-crossbeam-deque-0.8.6
+          rust-crossbeam-epoch-0.9.18
+          rust-crossbeam-utils-0.8.21
+          rust-either-1.15.0
+          rust-flate2-1.1.9
+          rust-fnv-1.0.7
+          rust-hermit-abi-0.1.19
+          rust-itertools-0.14.0
+          rust-libc-0.2.184
+          rust-libm-0.2.16
+          rust-line-drawing-1.0.1
+          rust-lodepng-3.12.2
+          rust-log-0.4.29
+          rust-miniz-oxide-0.8.9
+          rust-num-traits-0.2.19
+          rust-rand-core-0.6.4
+          rust-rayon-1.11.0
+          rust-rayon-core-1.13.0
+          rust-rgb-0.8.53
+          rust-simd-adler32-0.3.9
+          rust-strsim-0.8.0
+          rust-textwrap-0.11.0
+          rust-unicode-width-0.1.14
+          rust-vec-map-0.8.2
+          rust-winapi-0.3.9
+          rust-winapi-i686-pc-windows-gnu-0.4.0
+          rust-winapi-x86-64-pc-windows-gnu-0.4.0
+          rust-wyhash-0.5.0
+          rust-zlib-rs-0.6.3))
+  (gfalook =>
+    (list rust-adler2-2.0.1
+          rust-aho-corasick-1.1.4
+          rust-anstream-1.0.0
+          rust-anstyle-1.0.14
+          rust-anstyle-parse-1.0.0
+          rust-anstyle-query-1.1.5
+          rust-anstyle-wincon-3.0.11
+          rust-autocfg-1.5.0
+          rust-bitflags-2.11.1
+          rust-block-buffer-0.10.4
+          rust-bytemuck-1.25.0
+          rust-byteorder-lite-0.1.0
+          rust-cfg-if-1.0.4
+          rust-clap-4.6.1
+          rust-clap-builder-4.6.0
+          rust-clap-derive-4.6.1
+          rust-clap-lex-1.1.0
+          rust-colorchoice-1.0.5
+          rust-cpufeatures-0.2.17
+          rust-crc32fast-1.5.0
+          rust-crossbeam-deque-0.8.6
+          rust-crossbeam-epoch-0.9.18
+          rust-crossbeam-utils-0.8.21
+          rust-crypto-common-0.1.7
+          rust-digest-0.10.7
+          rust-either-1.15.0
+          rust-env-filter-1.0.1
+          rust-env-logger-0.11.10
+          rust-fdeflate-0.3.7
+          rust-flate2-1.1.9
+          rust-generic-array-0.14.7
+          rust-heck-0.5.0
+          rust-image-0.25.10
+          rust-is-terminal-polyfill-1.70.2
+          rust-jiff-0.2.23
+          rust-jiff-static-0.2.23
+          rust-libc-0.2.185
+          rust-log-0.4.29
+          rust-memchr-2.8.0
+          rust-miniz-oxide-0.8.9
+          rust-moxcms-0.8.1
+          rust-num-traits-0.2.19
+          rust-once-cell-polyfill-1.70.2
+          rust-png-0.18.1
+          rust-portable-atomic-1.13.1
+          rust-portable-atomic-util-0.2.6
+          rust-proc-macro2-1.0.106
+          rust-pxfm-0.1.28
+          rust-quote-1.0.45
+          rust-rayon-1.12.0
+          rust-rayon-core-1.13.0
+          rust-regex-1.12.3
+          rust-regex-automata-0.4.14
+          rust-regex-syntax-0.8.10
+          rust-rustc-hash-2.1.2
+          rust-serde-core-1.0.228
+          rust-serde-derive-1.0.228
+          rust-sha2-0.10.9
+          rust-simd-adler32-0.3.9
+          rust-strsim-0.11.1
+          rust-syn-2.0.117
+          rust-typenum-1.19.0
+          rust-unicode-ident-1.0.24
+          rust-utf8parse-0.2.2
+          rust-version-check-0.9.5
+          rust-windows-link-0.2.1
+          rust-windows-sys-0.61.2))
+  (cigzip =>
+    (list rust-adler2-2.0.1
+          rust-ahash-0.8.12
+          rust-aho-corasick-1.1.4
+          rust-allocator-api2-0.2.21
+          rust-anes-0.1.6
+          rust-anstream-1.0.0
+          rust-anstyle-1.0.14
+          rust-anstyle-parse-1.0.0
+          rust-anstyle-query-1.1.5
+          rust-anstyle-wincon-3.0.11
+          rust-anyhow-1.0.102
+          rust-arbitrary-chunks-0.4.1
+          rust-autocfg-1.5.0
+          rust-bgzip-0.3.1
+          rust-bincode-1.3.3
+          rust-bindgen-0.69.5
+          rust-bio-types-1.0.4
+          rust-bitflags-2.11.1
+          rust-block-buffer-0.10.4
+          rust-block-pseudorand-0.1.2
+          rust-bumpalo-3.20.2
+          rust-byteorder-1.5.0
+          rust-bytes-1.11.1
+          rust-cast-0.3.0
+          rust-cc-1.2.60
+          rust-cexpr-0.6.0
+          rust-cfg-if-1.0.4
+          rust-chiapos-chacha8-0.1.0
+          rust-ciborium-0.2.2
+          rust-ciborium-io-0.2.2
+          rust-ciborium-ll-0.2.2
+          rust-clang-sys-1.8.1
+          rust-clap-4.6.1
+          rust-clap-builder-4.6.0
+          rust-clap-derive-4.6.1
+          rust-clap-lex-1.1.0
+          rust-cmake-0.1.58
+          rust-colorchoice-1.0.5
+          rust-console-0.16.3
+          rust-cpufeatures-0.2.17
+          rust-crc32fast-1.5.0
+          rust-criterion-0.5.1
+          rust-criterion-plot-0.5.0
+          rust-crossbeam-0.8.4
+          rust-crossbeam-channel-0.5.15
+          rust-crossbeam-deque-0.8.6
+          rust-crossbeam-epoch-0.9.18
+          rust-crossbeam-queue-0.3.12
+          rust-crossbeam-utils-0.8.21
+          rust-crunchy-0.2.4
+          rust-crypto-common-0.1.7
+          rust-custom-derive-0.1.7
+          rust-dashmap-6.1.0
+          rust-derive-new-0.6.0
+          rust-derive-new-0.7.0
+          rust-digest-0.10.7
+          rust-displaydoc-0.2.5
+          rust-either-1.15.0
+          rust-encode-unicode-1.0.0
+          rust-env-filter-1.0.1
+          rust-env-logger-0.11.10
+          rust-find-msvc-tools-0.1.9
+          rust-flate2-1.1.9
+          rust-form-urlencoded-1.2.2
+          rust-fs-utils-1.1.4
+          rust-generic-array-0.14.7
+          rust-getrandom-0.3.4
+          rust-glob-0.3.3
+          rust-half-2.7.1
+          rust-hashbrown-0.14.5
+          rust-heck-0.5.0
+          rust-hermit-abi-0.5.2
+          rust-hts-sys-2.2.0
+          rust-icu-collections-2.2.0
+          rust-icu-locale-core-2.2.0
+          rust-icu-normalizer-2.2.0
+          rust-icu-normalizer-data-2.2.0
+          rust-icu-properties-2.2.0
+          rust-icu-properties-data-2.2.0
+          rust-icu-provider-2.2.0
+          rust-idna-1.1.0
+          rust-idna-adapter-1.2.1
+          rust-ieee754-0.2.6
+          rust-indicatif-0.18.4
+          rust-is-terminal-0.4.17
+          rust-is-terminal-polyfill-1.70.2
+          rust-itertools-0.10.5
+          rust-itertools-0.12.1
+          rust-itoa-1.0.18
+          rust-jiff-0.2.23
+          rust-jiff-static-0.2.23
+          rust-jobserver-0.1.34
+          rust-js-sys-0.3.95
+          rust-lazy-static-1.5.0
+          rust-lazycell-1.3.0
+          rust-lib-wfa2-0.1.0.8859b6a
+          rust-libc-0.2.185
+          rust-libdeflate-sys-1.25.2
+          rust-libloading-0.8.9
+          rust-libz-sys-1.1.28
+          rust-linear-map-1.2.0
+          rust-litemap-0.8.2
+          rust-lock-api-0.4.14
+          rust-log-0.4.29
+          rust-memchr-2.8.0
+          rust-minimal-lexical-0.2.1
+          rust-miniz-oxide-0.8.9
+          rust-nanorand-0.6.1
+          rust-newtype-derive-0.1.6
+          rust-nom-7.1.3
+          rust-noodles-0.100.0
+          rust-noodles-bgzf-0.42.0
+          rust-num-traits-0.2.19
+          rust-num-cpus-1.17.0
+          rust-once-cell-1.21.4
+          rust-once-cell-polyfill-1.70.2
+          rust-oorandom-11.1.5
+          rust-parking-lot-core-0.9.12
+          rust-partition-0.1.2
+          rust-percent-encoding-2.3.2
+          rust-pkg-config-0.3.33
+          rust-plotters-0.3.7
+          rust-plotters-backend-0.3.7
+          rust-plotters-svg-0.3.7
+          rust-portable-atomic-1.13.1
+          rust-portable-atomic-util-0.2.7
+          rust-potential-utf-0.1.5
+          rust-proc-macro2-1.0.106
+          rust-quick-error-1.2.3
+          rust-quote-1.0.45
+          rust-r-efi-5.3.0
+          rust-ragc-common-0.1.1.40e5cad
+          rust-ragc-core-0.1.1.40e5cad
+          rust-rayon-1.12.0
+          rust-rayon-core-1.13.0
+          rust-rdst-0.20.14
+          rust-redox-syscall-0.5.18
+          rust-regex-1.12.3
+          rust-regex-automata-0.4.14
+          rust-regex-syntax-0.8.10
+          rust-rust-htslib-1.0.0
+          rust-rustc-hash-1.1.0
+          rust-rustc-version-0.1.7
+          rust-rustversion-1.0.22
+          rust-same-file-1.0.6
+          rust-scopeguard-1.2.0
+          rust-semver-0.1.20
+          rust-serde-1.0.228
+          rust-serde-core-1.0.228
+          rust-serde-derive-1.0.228
+          rust-serde-json-1.0.149
+          rust-sha2-0.10.9
+          rust-shlex-1.3.0
+          rust-simd-adler32-0.3.9
+          rust-smallvec-1.15.1
+          rust-stable-deref-trait-1.2.1
+          rust-strsim-0.11.1
+          rust-strum-macros-0.26.4
+          rust-syn-2.0.117
+          rust-synstructure-0.13.2
+          rust-thiserror-1.0.69
+          rust-thiserror-2.0.18
+          rust-thiserror-impl-1.0.69
+          rust-thiserror-impl-2.0.18
+          rust-tikv-jemalloc-sys-0.5.4+5.3.0-patched
+          rust-tikv-jemallocator-0.5.4
+          rust-tinystr-0.8.3
+          rust-tinytemplate-1.2.1
+          rust-tpa-0.1.0.49f1801
+          rust-tracepoints-0.1.0.66a5511
+          rust-typenum-1.19.0
+          rust-unicode-ident-1.0.24
+          rust-unicode-width-0.2.2
+          rust-unit-prefix-0.5.2
+          rust-url-2.5.8
+          rust-utf8-iter-1.0.4
+          rust-utf8parse-0.2.2
+          rust-vcpkg-0.2.15
+          rust-version-check-0.9.5
+          rust-voracious-radix-sort-1.2.0
+          rust-walkdir-2.5.0
+          rust-wasip2-1.0.2+wasi-0.2.9
+          rust-wasm-bindgen-0.2.118
+          rust-wasm-bindgen-macro-0.2.118
+          rust-wasm-bindgen-macro-support-0.2.118
+          rust-wasm-bindgen-shared-0.2.118
+          rust-web-sys-0.3.95
+          rust-web-time-1.1.0
+          rust-winapi-util-0.1.11
+          rust-windows-link-0.2.1
+          rust-windows-sys-0.61.2
+          rust-wit-bindgen-0.51.0
+          rust-writeable-0.6.3
+          rust-yoke-0.8.2
+          rust-yoke-derive-0.8.2
+          rust-zerocopy-0.8.48
+          rust-zerocopy-derive-0.8.48
+          rust-zerofrom-0.1.7
+          rust-zerofrom-derive-0.1.7
+          rust-zerotrie-0.2.4
+          rust-zerovec-0.11.6
+          rust-zerovec-derive-0.11.3
+          rust-zlib-rs-0.6.3
+          rust-zmij-1.0.21
+          rust-zstd-0.13.3
+          rust-zstd-safe-7.2.4
+          rust-zstd-sys-2.0.16+zstd.1.5.7)))
+
+;;;
+;;; Main package.
+;;;
+
+(define-public gfainject
+  (let ((commit "e56cba362047e7137352858dfba5f56e944cbf06")
+        (revision "0"))
+    (package
+      (name "gfainject")
+      (version (git-version "0.1.0" revision commit))
+      (source (origin
+                (method git-fetch)
+                (uri (git-reference
+                      (url "https://github.com/chfi/gfainject")
+                      (commit commit)))
+                (file-name (git-file-name name version))
+                (sha256
+                 (base32
+                  "1kv1abwwj1m5d7y61ymrrj309bg543vk5dlfq56h5d4qswmb7zyv"))))
+      (build-system cargo-build-system)
+      (arguments (list #:install-source? #f
+                       #:phases #~(modify-phases %standard-phases
+                                    #$%rust-tuning-phase)))
+      ;; No upstream test data; tests require GFA/BAM input files.
+      (inputs (cargo-inputs 'gfainject #:module '(gn packages pangenome-rust)))
+      (properties '((tunable? . #t)))
+      (home-page "https://github.com/chfi/gfainject")
+      (synopsis "Map BAM alignments to GFA graph paths as GAF records")
+      (description
+       "Gfainject maps read alignments from a BAM file to reference paths in a
+GFA format graph, producing output in GAF format.  The alignment reference
+names must match the path names in the GFA.")
+      (license license:expat))))
+
+(define-public rust-onecode
+  (let ((commit "f531f5b0ff54001a898ec4e0c0c761b2bd0a1f34")
+        (revision "0"))
+    (package
+      (name "rust-onecode")
+      (version (git-version "0.1.0" revision commit))
+      (source (origin
+                (method git-fetch)
+                (uri (git-reference
+                      (url "https://github.com/pangenome/onecode-rs")
+                      (commit commit)))
+                (file-name (git-file-name name version))
+                (sha256
+                 (base32
+                  "0nzhgg7sqalrpl1mzlp0rvaj4dgcwghv1jngcsfqqk1mhx4hvj0n"))))
+      (build-system cargo-build-system)
+      (arguments
+       (list #:install-source? #f
+             #:phases #~(modify-phases %standard-phases
+                          #$%rust-tuning-phase)))
+      (inputs (cargo-inputs 'onecode #:module '(gn packages pangenome-rust)))
+      (properties '((tunable? . #t)))
+      (home-page "https://github.com/pangenome/onecode-rs")
+      (synopsis "Rust bindings for ONEcode genomic data format")
+      (description
+       "This package provides Rust FFI bindings for ONEcode, a simple and
+efficient data representation format for genomic data.  ONEcode provides both
+human-readable ASCII and compressed binary file formats with strongly typed
+data.  The C library (ONElib) is bundled and compiled at build time.")
+      (license license:expat))))
+
+(define-public ragc
+  (let ((commit "e9e4a6f880f5d6fa90fc90f24542def3ca637d38")
+        (revision "0"))
+    (package
+      (name "ragc")
+      (version (git-version "0.1.1" revision commit))
+      (source (origin
+                (method git-fetch)
+                (uri (git-reference
+                      (url "https://github.com/AndreaGuarracino/ragc")
+                      (commit commit)))
+                (file-name (git-file-name name version))
+                (sha256
+                 (base32
+                  "0ks74pgh0vjy4mzxvp7riq1rkf9zh9kqzhvvy8iys46zrbkxmhs7"))))
+      (build-system cargo-build-system)
+      (native-inputs (list pkg-config))
+      (inputs (cons `(,zstd "lib") (cargo-inputs 'ragc-cli #:module '(gn packages pangenome-rust))))
+      (arguments
+       (list #:install-source? #f
+             ;; Tests use unstable feature unsigned_is_multiple_of (nightly only)
+             #:tests? #f
+             #:cargo-build-flags ''("--release" "--package" "ragc-cli")
+             ;; Workspace root has no [[bin]], must specify the CLI member
+             #:cargo-install-paths ''("ragc-cli")
+             #:phases #~(modify-phases %standard-phases
+                          #$%rust-tuning-phase)))
+      (properties '((tunable? . #t)))
+      (home-page "https://github.com/AndreaGuarracino/ragc")
+      (synopsis "Genome compression tool implementing the AGC format in Rust")
+      (description
+       "Ragc (Rust AGC) implements the Adaptive Genome Compressor (AGC) format
+in pure Rust.  It provides high-ratio compression for large collections of
+similar genome sequences and is compatible with the C++ AGC format.")
+      (license license:expat))))
+
+(define-public fastga-rs
+  (let ((commit "c0bf6202506f51c77e47cf8707e58b7b61e2b621")
+        (revision "0"))
+    (package
+      (name "fastga-rs")
+      (version (git-version "0.1.2" revision commit))
+      (source (origin
+                (method git-fetch)
+                (uri (git-reference
+                      (url "https://github.com/pangenome/fastga-rs")
+                      (commit commit)))
+                (file-name (git-file-name name version))
+                (sha256
+                 (base32
+                  "0zb385qk943v6xypbza8av6qhh2j26m76qkpzmlwyp9xhbn7j26i"))))
+      (build-system cargo-build-system)
+      (native-inputs (list pkg-config clang))
+      (inputs (cons zlib (cargo-inputs 'fastga-rs #:module '(gn packages pangenome-rust))))
+      (arguments
+       (list #:install-source? #f
+             ;; Tests require FastGA utilities built in OUT_DIR and genome data files
+             #:tests? #f
+             #:phases
+             #~(modify-phases %standard-phases
+                 #$%rust-tuning-phase
+                 (add-after 'unpack 'fix-sources
+                   ;; Cargo.toml uses a git source for onecode but Cargo.lock
+                   ;; resolved it to the registry version 0.1.0.
+                   (lambda _
+                     (substitute* "Cargo.toml"
+                       (("onecode = \\{ git = \"[^\"]*\" \\}")
+                        "onecode = \"0.1.0\""))))
+                 (add-after 'install 'install-fastga-binaries
+                   ;; Install the C binaries (FastGA, ALNtoPAF, FAtoGDB, GIXmake)
+                   ;; from the build dir so impg can find them
+                   (lambda _
+                     (let ((bin (string-append #$output "/bin")))
+                       (for-each
+                         (lambda (name)
+                           (let ((found (find-files "target" (string-append "^" name "$"))))
+                             (when (pair? found)
+                               (install-file (car found) bin))))
+                         '("FastGA" "ALNtoPAF" "FAtoGDB" "GIXmake")))))
+                 (add-before 'build 'patch-home-msrv
+                   ;; home 0.5.12 declares rust-version = "1.88" but Guix ships
+                   ;; rustc 1.85.1.  The 'configure phase extracts inputs with
+                   ;; strip-store-file-name as directory names, so home ends up
+                   ;; at guix-vendor/rust-home-0.5.12.tar.gz/.
+                   (lambda _
+                     (substitute* "guix-vendor/rust-home-0.5.12.tar.gz/Cargo.toml"
+                       (("rust-version = \"[^\"]*\"\n") "")))))))
+      (properties '((tunable? . #t)))
+      (home-page "https://github.com/pangenome/fastga-rs")
+      (synopsis "Rust bindings for FastGA genome aligner with extended CIGAR support")
+      (description
+       "FastGA-RS provides Rust bindings for FastGA, a fast genome aligner.
+It compiles FastGA's C code directly and exposes an API for pairwise genome
+alignment with extended CIGAR output.  The bundled FastGA utilities are built
+at compile time and embedded in the binary.")
+      (license license:expat))))
+
+;;;
+;;; Spoa (required by impg via spoa-rs).
+;;;
+
+(define biosoup-0.11.0
+  (package
+    (inherit biosoup)
+    (name "biosoup")
+    (version "0.11.0")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/rvaser/biosoup")
+             (commit "3e31aa1d9039a2689241aebd18c45933b2d0f5e3")))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32
+         "0vn1hj3h152iwahnrzghqll34qaphchi07klb3j70vgc248micbz"))))))
+
+(define bioparser-3.1.0
+  (package
+    (inherit bioparser)
+    (name "bioparser")
+    (version "3.1.0")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/rvaser/bioparser")
+             (commit "4fa7126293d2a0eb90125b58fb704f0eed33ffe0")))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32
+         "057zb3g8qyvbkbfzgkygrf0iphz3v4icm13pchxzrafiy7zkbmrq"))))
+    (inputs
+     (modify-inputs (package-inputs bioparser)
+       (replace "biosoup" biosoup-0.11.0)))))
+
+(define-public spoa
+  (let ((commit "08957f6b87ce4262358a88c6b2c3c7860cf60239"))
+    (package
+      (name "spoa")
+      (version "4.0.8")
+      (source (origin
+                (method git-fetch)
+                (uri (git-reference (url "https://github.com/rvaser/spoa")
+                                    (commit commit)))
+                (file-name (git-file-name "spoa" (string-append version "-" (string-take commit 7))))
+                (sha256 (base32 "0vafy9ry3cdrymxshcfmiv4schb0va3yxb6g3p20l54wl8alhxfj"))))
+      (build-system meson-build-system)
+      ;; googletest 1.17.0 requires C++14 but spoa builds with -std=c++11.
+      (arguments
+       (list
+        #:phases
+        #~(modify-phases %standard-phases
+            (add-after 'unpack 'remove-test-subdir
+              (lambda _
+                (substitute* "meson.build"
+                  ((".*gtest.*\n") "")
+                  (("subdir\\('test'\\).*\n") "")))))))
+      (inputs (list zlib
+                    simde
+                    biosoup-0.11.0
+                    bioparser-3.1.0
+                    pkg-config
+                    cpu-features
+                    cmake-minimal))
+      (synopsis "C++ implementation of the Partial Order Alignment algorithm")
+      (description "Spoa (SIMD POA) is a C++ implementation of the partial order
+alignment (POA) algorithm used to generate consensus sequences.  It supports
+local, global and semi-global alignment modes with linear, affine and convex
+gap modes.")
+      (license license:expat)
+      (properties '((tunable? . #t)))
+      (home-page "https://github.com/rvaser/spoa"))))
+
+;;;
+;;; wfa2-lib (required by impg via lib_wfa2 crate).
+;;;
+
+(define wfa2-lib/our
+  (let ((commit "380eb31bb6be7b7043c86fb5d8ab51d7a3ba25b8")
+        (revision "2"))
+    (package
+      (name "wfa2-lib")
+      (version (git-version "2.3.5" revision commit))
+      (source (origin
+                (method git-fetch)
+                (uri (git-reference
+                       (url "https://github.com/smarco/WFA2-lib")
+                       (commit commit)))
+                (file-name (git-file-name name version))
+                (sha256
+                 (base32 "1xhlgr7rrb8m3nhf7d4g6xqjdziv9dz2xsd80kljhkm7ml7x7161"))
+                (snippet
+                 #~(begin
+                     (use-modules ((guix build utils)))
+                     (substitute* "Makefile"
+                       (("-march=native") ""))))))
+      (build-system gnu-build-system)
+      (arguments
+       (list
+         #:tests? #f            ; No tests.
+         #:parallel-build? #f   ; Race condition in Makefile.
+         #:modules '((guix build gnu-build-system)
+                     (guix build utils)
+                     (srfi srfi-26))
+         #:make-flags
+         #~(list (string-append "CC=" #$(cc-for-target))
+                 (string-append "CPP=" #$(cxx-for-target)))
+         #:phases
+         #~(modify-phases %standard-phases
+             (delete 'configure)        ; No configure script.
+             ;; -flto breaks align_benchmark.
+             (replace 'build
+               (lambda* (#:key (make-flags '()) #:allow-other-keys)
+                 (apply invoke "make" "all" make-flags)))
+             (replace 'install
+               (lambda _
+                 (for-each
+                   (cut install-file <> (string-append #$output "/bin"))
+                   (find-files "bin"))
+                 (for-each
+                   (cut install-file <> (string-append #$output "/lib"))
+                   (find-files "lib"))
+                 (for-each
+                   (lambda (file)
+                     (mkdir-p (string-append #$output "/include/wfa2-lib/" (dirname file)))
+                     (copy-file file (string-append #$output "/include/wfa2-lib/" file)))
+                   (find-files "." "\\.(h|hpp)$")))))))
+      (home-page "https://github.com/smarco/WFA2-lib")
+      (synopsis "Wavefront alignment algorithm library")
+      (description "The wavefront alignment (WFA) algorithm is an exact
+gap-affine algorithm that takes advantage of homologous regions between the
+sequences to accelerate the alignment process.")
+      (properties '((tunable? . #t)))
+      (license license:expat))))
+
+(define wfa2-lib-static
+  (package
+    (inherit (static-package wfa2-lib/our))
+    (name "wfa2-lib-static")
+    (arguments
+     (substitute-keyword-arguments (package-arguments wfa2-lib/our)
+       ((#:make-flags flags ''())
+        #~(cons* "CC_FLAGS+=-static -fPIC" "CFLAGS+=-fPIC" #$flags))))))
+
+;;;
+;;; impg package.
+;;;
+
+(define impg-gfaffix-src
+  (origin
+    (method git-fetch)
+    (uri (git-reference
+          (url "https://github.com/marschall-lab/GFAffix")
+          (commit "460e0dd798a9da7d12aef4f9181419d71489da95")))
+    (file-name (git-file-name "GFAffix" "460e0dd7"))
+    (sha256 (base32 "1cz3wisqd776jyh1scpa9i0mmnj9ywlm4m0jkvz6mmvjiyk0622v"))))
+
+(define-public impg
+  (let ((commit "41dfff4f42d1a4b418b5ab9b3b6147542e4a81a5")
+        (revision "2"))
+    (package
+      (name "impg")
+      (version (git-version "0.4.1" revision commit))
+      (source (origin
+                (method git-fetch)
+                (uri (git-reference
+                      (url "https://github.com/pangenome/impg")
+                      (commit commit)))
+                (file-name (git-file-name name version))
+                (sha256
+                 (base32
+                  "0bf4fkp1wczmvshv5ggjnpvzw6i40svd35lwfv24x7lskd6nnqdq"))))
+      (build-system cargo-build-system)
+      (arguments
+       (list
+        #:install-source? #f
+        #:phases
+        #~(modify-phases %standard-phases
+            #$%rust-tuning-phase
+            ;; vendor/gfaffix is a git submodule; populate from separate origin.
+            (add-before 'build 'copy-gfaffix-submodule
+              (lambda _
+                (copy-recursively #$impg-gfaffix-src "vendor/gfaffix")))
+            ;; The ragc workspace root has no [package] so crate-src? returns #f
+            ;; and configure skips it.  Copy it manually.
+            (add-before 'build 'copy-ragc-workspace
+              (lambda* (#:key inputs #:allow-other-keys)
+                (let ((src (assoc-ref inputs "rust-ragc-0.1.1.e9e4a6f-checkout")))
+                  (copy-recursively src "ragc-workspace"))))
+            (add-before 'build 'fix-dependency-sources
+              (lambda _
+                (substitute* "Cargo.toml"
+                  ;; spoa-rs
+                  (("git = \"https://github.com/AndreaGuarracino/spoa-rs\\.git\"")
+                   "path = \"guix-vendor/rust-spoa-rs-0.1.0.6f4f102-checkout\", version = \"0.1.0\"")
+                  ;; ragc-core in [dependencies] and [patch]
+                  (("ragc-core = \\{ git = \"https://github.com/AndreaGuarracino/ragc\", rev = \"e9e4a6f\" \\}")
+                   "ragc-core = { path = \"ragc-workspace/ragc-core\" }")
+                  ;; ragc-common in [patch]
+                  (("ragc-common = \\{ git = \"https://github.com/AndreaGuarracino/ragc\", rev = \"e9e4a6f\" \\}")
+                   "ragc-common = { path = \"ragc-workspace/ragc-common\" }")
+                  ;; onecode
+                  (("git = \"https://github.com/pangenome/onecode-rs\", rev = \"38182c7acf7cccc53509176b1d11001ae6ff2642\"")
+                   "path = \"guix-vendor/rust-onecode-0.1.0.38182c7-checkout\", version = \"0.1.0\"")
+                  ;; tpa
+                  (("git = \"https://github.com/AndreaGuarracino/tpa\", rev = \"49f1801f9e0108c211571fa2614e517009446afe\"")
+                   "path = \"guix-vendor/rust-tpa-0.1.0.49f1801-checkout\", version = \"0.1.0\"")
+                  ;; lib_wfa2
+                  (("git = \"https://github.com/AndreaGuarracino/lib_wfa2\", rev = \"8859b6a214141968f37d9bcb22552408318adda0\"")
+                   "path = \"guix-vendor/rust-lib-wfa2-0.1.0.0fe1ebf-checkout\", version = \"0.1.0\"")
+                  ;; tracepoints
+                  (("git = \"https://github.com/AndreaGuarracino/tracepoints\", rev = \"66a5511b0b84d8502f9d7c99efd150616ff2cae3\"")
+                   "path = \"guix-vendor/rust-tracepoints-0.1.0.66a5511-checkout\", version = \"0.1.0\"")
+                  ;; handlegraph
+                  (("git = \"https://github.com/[^\"]+/rs-handlegraph\", rev = \"3ac575e4216ce16a16667503a8875e469a40a97a\"")
+                   "path = \"guix-vendor/rust-handlegraph-0.7.0-alpha.9.3ac575e-checkout\", version = \"0.7.0-alpha.9\"")
+                  ;; sweepga
+                  (("git = \"https://github.com/pangenome/sweepga\", rev = \"29d21238765abb1016d7d75c19666127faa962cb\", default-features = false")
+                   "path = \"guix-vendor/rust-sweepga-0.1.1.29d2123-checkout\", version = \"0.1.1\", default-features = false")
+                  ;; seqwish
+                  (("git = \"https://github.com/pangenome/seqwish\", branch = \"rust-2\"")
+                   "path = \"guix-vendor/rust-seqwish-0.1.3.b65a7e0-checkout\", version = \"0.1.3\"")
+                  ;; gfasort
+                  (("git = \"https://github.com/pangenome/gfasort\", rev = \"b5fdb1d\"")
+                   "path = \"guix-vendor/rust-gfasort-0.1.0.b5fdb1d-checkout\", version = \"0.1.0\""))))
+            (add-before 'build 'fix-vendored-git-deps
+              (lambda _
+                ;; Two different onecode revisions (38182c7 and f531f5b) both
+                ;; declare version 0.1.0, causing a cargo lockfile collision.
+                ;; Bump the older rev (f531f5b) to 0.1.0-alt so cargo can
+                ;; distinguish them.
+                (substitute* "guix-vendor/rust-onecode-0.1.0.f531f5b-checkout/Cargo.toml"
+                  (("version = \"0.1.0\"")
+                   "version = \"0.1.0-alt\""))
+                ;; sweepga has git deps on fastga-rs, onecode, ragc-core
+                (substitute* "guix-vendor/rust-sweepga-0.1.1.29d2123-checkout/Cargo.toml"
+                  (("fastga-rs = \\{ git = \"[^\"]*\"[^}]*\\}")
+                   "fastga-rs = { path = \"../rust-fastga-rs-0.1.2.e5037d5-checkout\", version = \"0.1.2\" }")
+                  (("onecode = \\{ git = \"[^\"]*\"[^}]*\\}")
+                   "onecode = { path = \"../rust-onecode-0.1.0.f531f5b-checkout\", version = \"0.1.0-alt\" }")
+                  (("ragc-core = \\{ git = \"[^\"]*\"[^}]*\\}")
+                   "ragc-core = { path = \"../../ragc-workspace/ragc-core\" }")
+                  (("wfmash-rs = \\{ git = \"[^\"]*\"[^}]*\\}")
+                   "wfmash-rs = { path = \"../rust-wfmash-rs-0.1.0.d47b7e3-checkout\", version = \"0.1.0\" }"))
+                ;; tpa has git deps on lib_wfa2 and tracepoints
+                (substitute* "guix-vendor/rust-tpa-0.1.0.49f1801-checkout/Cargo.toml"
+                  (("lib_wfa2 = \\{ git = \"[^\"]*\"[^}]*\\}")
+                   "lib_wfa2 = { path = \"../rust-lib-wfa2-0.1.0.0fe1ebf-checkout\", version = \"0.1.0\" }")
+                  (("tracepoints = \\{ git = \"[^\"]*\"[^}]*\\}")
+                   "tracepoints = { path = \"../rust-tracepoints-0.1.0.66a5511-checkout\", version = \"0.1.0\" }"))
+                ;; tracepoints has git dep on lib_wfa2
+                (substitute* "guix-vendor/rust-tracepoints-0.1.0.66a5511-checkout/Cargo.toml"
+                  (("lib_wfa2 = \\{ git = \"[^\"]*\"[^}]*\\}")
+                   "lib_wfa2 = { path = \"../rust-lib-wfa2-0.1.0.0fe1ebf-checkout\", version = \"0.1.0\" }"))
+                ;; fastga-rs has git dep on onecode (the f531f5b rev)
+                (substitute* "guix-vendor/rust-fastga-rs-0.1.2.e5037d5-checkout/Cargo.toml"
+                  (("onecode = \\{ git = \"[^\"]*\"[^}]*\\}")
+                   "onecode = { path = \"../rust-onecode-0.1.0.f531f5b-checkout\", version = \"0.1.0-alt\" }"))))
+            (add-before 'build 'fix-seqwish-lockfile
+              ;; seqwish's Cargo.lock pins clap 4.5.51 but our vendor has
+              ;; 4.5.60.  Delete its lockfile so cargo metadata succeeds.
+              (lambda _
+                (delete-file
+                 "guix-vendor/rust-seqwish-0.1.3.b65a7e0-checkout/Cargo.lock")))
+            (add-before 'build 'patch-home-msrv
+              ;; home 0.5.12 declares rust-version = "1.88" but Guix ships
+              ;; rustc 1.85.1.
+              (lambda _
+                (substitute* "guix-vendor/rust-home-0.5.12.tar.gz/Cargo.toml"
+                  (("rust-version = \"[^\"]*\"\n") ""))))
+            (add-before 'build 'patch-is-multiple-of
+              ;; Several crates use is_multiple_of (stabilized in Rust 1.87)
+              ;; but Guix ships rustc 1.85.1.  Replace with modulo check.
+              (lambda _
+                (for-each
+                 (lambda (file)
+                   (substitute* file
+                     ;; Negated: !expr.is_multiple_of(val) -> expr % val != 0
+                     (("!([a-z_.()]+)\\.is_multiple_of\\(([^)]+)\\)" all expr val)
+                      (string-append expr " % " val " != 0"))
+                     ;; Positive: expr.is_multiple_of(val) -> expr % val == 0
+                     (("\\.is_multiple_of\\(([^)]+)\\)" all val)
+                      (string-append " % " val " == 0"))))
+                 (append
+                  (find-files "src" "\\.rs$")
+                  (find-files "guix-vendor/rust-vers-vecs-1.9.0.tar.gz" "\\.rs$")
+                  (find-files "guix-vendor/rust-rust-htslib-1.0.0.tar.gz" "\\.rs$")))))
+            (add-before 'build 'patch-lib-wfa2-use-system
+              ;; Replace lib_wfa2 build.rs to link against system wfa2-lib-static
+              ;; instead of building WFA2-lib from source.
+              (lambda _
+                (chmod "guix-vendor/rust-lib-wfa2-0.1.0.0fe1ebf-checkout/build.rs" #o644)
+                (call-with-output-file
+                    "guix-vendor/rust-lib-wfa2-0.1.0.0fe1ebf-checkout/build.rs"
+                  (lambda (port)
+                    (display
+                     (string-append
+                      "fn main() {\n"
+                      "    println!(\"cargo:rustc-link-lib=static=wfa\");\n"
+                      "    println!(\"cargo:rustc-link-lib=gomp\");\n"
+                      "    println!(\"cargo:rustc-link-search=native="
+                      #$(file-append wfa2-lib-static "/lib") "\");\n"
+                      "}\n")
+                     port)))
+                ;; Patch bindings_wfa.rs: replace cast_signed/cast_unsigned
+                ;; (unstable until Rust 1.87) with plain `as` casts.
+                (substitute*
+                    "guix-vendor/rust-lib-wfa2-0.1.0.0fe1ebf-checkout/src/bindings_wfa.rs"
+                  ;; u32::cast_signed(expr as u32) -> ((expr as u32) as i32)
+                  (("u32::cast_signed\\(self\\._bitfield_1\\.get\\(0usize, 24u8\\) as u32\\)")
+                   "((self._bitfield_1.get(0usize, 24u8) as u32) as i32)")
+                  ;; Multiline u32::cast_signed(<...>::raw_get(...)
+                  (("u32::cast_signed\\(<")
+                   "((<")
+                  (("            \\) as u32\\)")
+                   "            ) as u32) as i32)")
+                  ;; i32::cast_unsigned(val) -> (val as u32)
+                  (("i32::cast_unsigned\\(val\\)")
+                   "(val as u32)")
+                  (("i32::cast_unsigned\\(_flags2\\)")
+                   "(_flags2 as u32)"))))
+            (add-before 'build 'patch-include-paths-to-spoa
+              (lambda _
+                ;; wfmash-rs tries to build wfmash from source via cmake+FetchContent.
+                ;; Skip by making build.rs find system wfmash or a pre-existing binary.
+                (substitute* "guix-vendor/rust-wfmash-rs-0.1.0.d47b7e3-checkout/build.rs"
+                  (("if !wfmash_src.join\\(\"CMakeLists.txt\"\\).exists\\(\\)")
+                   "if true"))
+                (substitute* "guix-vendor/rust-spoa-rs-0.1.0.6f4f102-checkout/build.rs"
+                  (("spoa/include") #$(file-append spoa "/include"))
+                  (("^ *out_dir\\.display.*$") "")
+                  (("\\{\\}/build/lib\",") #$(file-append spoa "/lib\"")))))
+            (add-after 'install 'symlink-fastga-binaries
+              ;; impg's fastga-rs looks for FastGA/ALNtoPAF/etc in the same
+              ;; directory as the current executable
+              (lambda* (#:key inputs outputs #:allow-other-keys)
+                (let ((bin (string-append (assoc-ref outputs "out") "/bin"))
+                      (fastga-bin (string-append
+                                    (assoc-ref inputs "fastga-rs") "/bin")))
+                  (for-each
+                    (lambda (name)
+                      (let ((src (string-append fastga-bin "/" name)))
+                        (when (file-exists? src)
+                          (symlink src (string-append bin "/" name)))))
+                    '("FastGA" "ALNtoPAF" "FAtoGDB" "GIXmake")))))
+            (add-after 'symlink-fastga-binaries 'integration-test
+              (lambda* (#:key outputs #:allow-other-keys)
+                (setenv "PATH" (string-append
+                                 (assoc-ref outputs "out") "/bin:"
+                                 (getenv "PATH")))
+                (invoke "sh" "-ec"
+                  (string-append
+                    "D=$(mktemp -d); cd $D; "
+                    "zcat ../source/tests/test_data/yeast.chrV.fa.gz > y.fa; "
+                    "samtools faidx y.fa; "
+                    "minimap2 -x asm20 --eqx -c -X y.fa y.fa 2>/dev/null | bgzip > y.paf.gz; "
+                    "T=$(zcat y.paf.gz | head -1 | cut -f6); "
+                    "echo test1-query-bedpe; "
+                    "impg query -a y.paf.gz -r $T:0-10000 -o bedpe >/dev/null; "
+                    "echo test2-query-gfa; "
+                    "impg query -a y.paf.gz -r $T:100000-105000 -o gfa "
+                    "--sequence-files y.fa -O g -t 2 -v 0; "
+                    "test -s g.gfa; "
+                    "echo test3-fasta; "
+                    "impg query -a y.paf.gz -r $T:100000-102000 -o fasta "
+                    "--sequence-files y.fa -O r -t 2 -v 0; "
+                    "test -s r.fa; "
+                    "echo INTEGRATION_TESTS_PASSED")))))))
+      (native-inputs (list minimap2 samtools htslib gzip
+                           pkg-config cmake-minimal clang))
+      (propagated-inputs (list fastga-rs))
+      (inputs (cons* htslib
+                     spoa
+                     wfa2-lib-static
+                     zlib
+                     (list zstd "lib")
+                     (cargo-inputs 'impg #:module '(gn packages pangenome-rust))))
+      (properties '((tunable? . #t)))
+      (home-page "https://github.com/pangenome/impg")
+      (synopsis "Tool to extract and compute graphs of sequences and alignments")
+      (description "IMplicit Pangenome Graph (impg) is a tool that takes in
+sequences and their relative alignments and extracts sections of the sequences
+and alignments for analysis.  It can also compute graphs for the sequences.")
+      (license license:expat))))
+
+(define-public gfautil
+  (let ((commit "5f7aea585126d07506031af8dedf12c60c7bb6a0")
+        (revision "0"))
+    (package
+      (name "gfautil")
+      (version (git-version "0.4.0-alpha.5" revision commit))
+      (source (origin
+                (method git-fetch)
+                (uri (git-reference
+                       (url "https://github.com/pangenome/rs-gfa-utils.git")
+                       (commit commit)))
+                (file-name (git-file-name name version))
+                (sha256
+                 (base32
+                  "0r51kz2vwmj8kkxr1az45g68m0acn652mcddsscc78m78yxh85v1"))))
+      (build-system cargo-build-system)
+      (arguments (list #:install-source? #f
+                       #:phases #~(modify-phases %standard-phases
+                                    #$%rust-tuning-phase)))
+      (inputs (cargo-inputs 'gfautil #:module '(gn packages pangenome-rust)))
+      (properties '((tunable? . #t)))
+      (home-page "https://github.com/pangenome/rs-gfa-utils")
+      (synopsis "Command line tools for working with GFA files")
+      (description
+       "This package provides command line tools for working with @acronym{GFA,
+Graphical Fragment Assembly} files and related formats.")
+      (license license:expat))))
+
+(define-public gfaffix
+  (package
+    (name "gfaffix")
+    (version "0.2.1")
+    (source
+      (origin
+        (method git-fetch)
+        (uri (git-reference
+               (url "https://github.com/marschall-lab/GFAffix")
+               (commit version)))
+        (file-name (git-file-name name version))
+        (sha256
+         (base32 "0yn8i70ww3x544qm4fwr33vklsxf3fvivpfpv46prkfz9hsmd9ps"))))
+    (build-system cargo-build-system)
+    (arguments
+     (list #:install-source? #f
+           #:phases #~(modify-phases %standard-phases
+                        #$%rust-tuning-phase)))
+    (inputs (cargo-inputs 'gfaffix
+                          #:module '(gn packages pangenome-rust)))
+    (properties '((tunable? . #t)))
+    (home-page "https://github.com/marschall-lab/GFAffix")
+    (synopsis "Identify walk-preserving shared affixes in variation graphs")
+    (description
+     "GFAffix identifies walk-preserving shared affixes in variation graphs and
+collapses them into a non-redundant graph structure.")
+    (license license:expat)))
+
+(define-public gafpack
+  (let ((commit "ad31875b6914d964c6fd72d1bf334f0843538fb6")
+        (revision "1"))
+    (package
+      (name "gafpack")
+      (version (git-version "0.0.0" revision commit))
+      (source (origin
+                (method git-fetch)
+                (uri (git-reference
+                      (url "https://github.com/ekg/gafpack")
+                      (commit commit)))
+                (file-name (git-file-name name version))
+                (sha256
+                 (base32 "0di2psh0ls7jlbnqs7k71p55f73pn23a09k1h3ril7gwjcrzr3rk"))))
+      (build-system cargo-build-system)
+      (arguments (list #:install-source? #f
+                       #:phases #~(modify-phases %standard-phases
+                                    #$%rust-tuning-phase)))
+      (inputs (cargo-inputs 'gafpack #:module '(gn packages pangenome-rust)))
+      (properties '((tunable? . #t)))
+      (home-page "https://github.com/ekg/gafpack")
+      (synopsis "Convert variation graph alignments to coverage maps over nodes")
+      (description
+       "Gafpack converts alignments to pangenome variation graphs to coverage
+maps useful in haplotype-based genotyping.")
+      (license license:expat))))
+
+(define-public vcfbub
+  (let ((commit "26a1f0cb216a423f8547c4ad0e0ce38cb9d324b9")
+        (revision "0"))
+  (package
+    (name "vcfbub")
+    (version (git-version "0.1.0" revision commit))
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://github.com/pangenome/vcfbub")
+                    (commit commit)))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32 "0sk2ab22z6qa00j1w8a8f5kbb7q2xb10fhd32zy4lh351v3mqmyg"))))
+    (build-system cargo-build-system)
+    (arguments (list #:install-source? #f
+                     #:phases #~(modify-phases %standard-phases
+                                  #$%rust-tuning-phase)))
+    (inputs (cargo-inputs 'vcfbub #:module '(gn packages pangenome-rust)))
+    (properties '((tunable? . #t)))
+    (home-page "https://github.com/pangenome/vcfbub")
+    (synopsis "Popping bubbles in vg deconstruct VCFs")
+    (description "vcfbub filters VCF records by snarl tree level and allele
+size, keeping nested bubbles when parent bubbles are popped.")
+    (license license:expat))))
diff --git a/gn/packages/pangenome.scm b/gn/packages/pangenome.scm
index 5c5ef00..af5d9de 100644
--- a/gn/packages/pangenome.scm
+++ b/gn/packages/pangenome.scm
@@ -1,40 +1,1890 @@
-;; Pangenome module
+;; Pangenome module -- pangenome tools and their dependencies
 
 (define-module (gn packages pangenome)
   #:use-module ((guix licenses) #:prefix license:)
   #:use-module (guix packages)
+  #:use-module (guix utils)
   #:use-module (guix download)
+  #:use-module (guix git-download)
+  #:use-module (guix gexp)
+  #:use-module (guix build-system ant)
   #:use-module (guix build-system cargo)
-  #:use-module (past-crates packages crates-io)
-  #:use-module (gn packages crates-io))
+  #:use-module (guix build-system cmake)
+  #:use-module (guix build-system copy)
+  #:use-module (guix build-system gnu)
+  #:use-module (guix build-system go)
+  #:use-module (guix build-system trivial)
+  #:use-module (gnu packages)
+  #:use-module (gnu packages assembly)
+  #:use-module (gnu packages base)
+  #:use-module (gnu packages bioinformatics)
+  #:use-module (gnu packages gawk)
+  #:use-module (gnu packages boost)
+  #:use-module (gnu packages compression)
+  #:use-module (gnu packages golang-xyz)
+  #:use-module (gnu packages golang-maths)
+  #:use-module (gnu packages image-processing)
+  #:use-module (gnu packages maths)
+  #:use-module (gnu packages perl)
+  #:use-module (gnu packages python-science)
+  #:use-module (gnu packages cmake)
+  #:use-module (gnu packages datastructures)
+  #:use-module (gnu packages jemalloc)
+  #:use-module (gnu packages linux)
+  #:use-module (gnu packages mpi)
+  #:use-module (gnu packages algebra)
+  #:use-module (gnu packages graph)
+  #:use-module (gnu packages guile)
+  #:use-module (gnu packages parallel)
+  #:use-module (gnu packages pkg-config)
+  #:use-module (gnu packages python)
+  #:use-module (gnu packages time)
+  #:use-module (gnu packages bash)
+  #:use-module (gnu packages check)
+  #:use-module (gnu packages c)
+  #:use-module (gnu packages cpp)
+  #:use-module (gnu packages curl)
+  #:use-module (gnu packages documentation)
+  #:use-module (gnu packages elf)
+  #:use-module (gnu packages graphviz)
+  #:use-module (gnu packages gtk)
+  #:use-module (gnu packages haskell-xyz)
+  #:use-module (gnu packages java)
+  #:use-module (gnu packages llvm)
+  #:use-module (gnu packages ncurses)
+  #:use-module (gnu packages protobuf)
+  #:use-module (gnu packages qt)
+  #:use-module (gnu packages rdf)
+  #:use-module (gnu packages ruby)
+  #:use-module (gnu packages ruby-xyz)
+  #:use-module (gnu packages tls)
+  #:use-module (gnu packages vim)
+  #:use-module (gnu packages web)
+  #:use-module (gnu packages zig)
+  #:use-module (gnu packages bioconductor)
+  #:use-module (gnu packages cran)
+  #:use-module (gnu packages statistics)
+  #:use-module (gnu packages wget)
+  #:use-module (gn packages bioinformatics)
+  #:use-module (gn packages pangenome-rust)
+  #:use-module (gnu packages python-xyz))
 
+;; gfautil has been moved to (gn packages pangenome-rust)
 
-(define-public gfautil
+(define-public safestringlib
+  (let ((commit "39219363f0497d04c710a1e11acdeb6d18d4b2f5")
+        (revision "0"))
+    (package
+      (name "safestringlib")
+      (version (git-version "1.2.0" revision commit))
+      (source (origin
+                (method git-fetch)
+                (uri (git-reference
+                      (url "https://github.com/intel/safestringlib")
+                      (commit commit)))
+                (file-name (git-file-name name version))
+                (sha256
+                 (base32
+                  "1b5s2b19hybr2r0mxch5x5f0gzy77w1xcfp2js4rprqr8dimppak"))))
+      (build-system gnu-build-system)
+      (arguments
+       (list #:tests? #f  ; no test target in CMake build
+             #:make-flags
+             #~(list (string-append "CC=" #$(cc-for-target)))
+             #:phases
+             #~(modify-phases %standard-phases
+                 (delete 'configure)
+          (add-after 'unpack 'fix-missing-includes
+            (lambda _
+              (substitute* (find-files "src" "\\.(h|cpp)$")
+                (("#include <vector>" all)
+                 (string-append "#include <cstdint>\n" all)))))
+                 ;; -DSTDC_HEADERS tells safeclib_private.h to include
+                 ;; stdlib.h/ctype.h unconditionally (normally set by autoconf).
+                 (add-before 'build 'fix-cflags
+                   (lambda _
+                     (substitute* "makefile"
+                       (("-Wformat-security")
+                        "-Wformat-security -DSTDC_HEADERS"))))
+                 (add-before 'build 'make-obj-dir
+                   (lambda _
+                     (mkdir-p "obj")))
+                 (replace 'build
+                   (lambda* (#:key make-flags #:allow-other-keys)
+                     (apply invoke "make" "libsafestring.a" make-flags)))
+                 (replace 'install
+                   (lambda _
+                     (mkdir-p (string-append #$output "/lib"))
+                     (mkdir-p (string-append #$output "/include"))
+                     (install-file "libsafestring.a"
+                                   (string-append #$output "/lib"))
+                     (for-each (lambda (h)
+                                 (install-file h (string-append #$output "/include")))
+                               (append
+                                (find-files "include" "\\.h$")
+                                (find-files "safeclib" "^safe_.*\\.h$"))))))))
+      (properties '((tunable? . #t)))
+      (home-page "https://github.com/intel/safestringlib")
+      (synopsis "Intel Safe String Library")
+      (description
+       "Safestringlib is derived from the Safe C Library by Cisco Systems.
+It provides replacements for dangerous C string and memory functions that
+perform bounds checking and return meaningful error codes.")
+      (license license:expat))))
+
+(define-public bwa-mem2
+  (package
+    (name "bwa-mem2")
+    (version "2.3")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://github.com/bwa-mem2/bwa-mem2")
+                    (commit (string-append "v" version))))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32
+                "01dhryf6nbdicrvbdk4mrdypm0l9vqh1qis9qp0pdh8qbxgh060c"))))
+    (build-system gnu-build-system)
+    (arguments
+     (list #:tests? #f  ; no test target in Makefile
+           #:make-flags
+           #~(list (string-append "CC=" #$(cc-for-target))
+                   (string-append "CXX=" #$(cxx-for-target)))
+           #:phases
+           #~(modify-phases %standard-phases
+               (add-after 'unpack 'use-installed-safestringlib
+                 (lambda _
+                   (let ((ssl #$(this-package-input "safestringlib")))
+                     (substitute* "Makefile"
+                       ;; Replace include/lib paths with installed safestringlib.
+                       (("-Iext/safestringlib/include")
+                        (string-append "-I" ssl "/include"))
+                       (("-Lext/safestringlib/ -lsafestring")
+                        (string-append "-L" ssl "/lib -lsafestring"))
+                       (("-Lext/safestringlib -lsafestring")
+                        (string-append "-L" ssl "/lib -lsafestring"))
+                       ;; Strip the "cd ext/safestringlib && make clean" from
+                       ;; the multi target's cleanup lines.
+                       ((" cd ext/safestringlib/ && \\$\\(MAKE\\) clean;")
+                        "")
+                       ;; Remove $(SAFE_STR_LIB) from EXE prerequisites.
+                       (("\\$\\(BWA_LIB\\) \\$\\(SAFE_STR_LIB\\) ")
+                        "$(BWA_LIB) ")
+                       ;; Remove the $(SAFE_STR_LIB) build rule (two lines).
+                       (("\\$\\(SAFE_STR_LIB\\):\n\tcd ext/safestringlib.*\n")
+                        "")
+                       ;; Remove safestringlib from the clean target.
+                       (("\tcd ext/safestringlib/ && \\$\\(MAKE\\) clean\n")
+                        "")))))
+               (delete 'configure)
+          (add-after 'unpack 'fix-missing-includes
+            (lambda _
+              (substitute* (find-files "src" "\\.(h|cpp)$")
+                (("#include <vector>" all)
+                 (string-append "#include <cstdint>\n" all)))))
+               (replace 'install
+                 (lambda _
+                   (mkdir-p (string-append #$output "/bin"))
+                   (for-each (lambda (f)
+                               (install-file f (string-append #$output "/bin")))
+                             (find-files "." "^bwa-mem2" #:directories? #f)))))))
+    (inputs (list safestringlib zlib))
+    ;; Tests (fmi_test, smem2_test, bwt_seed_strategy_test, sa2ref_test,
+    ;; xeonbsw) require a BWA-MEM2 genome index and reads; no standalone
+    ;; test data is shipped upstream.
+    (supported-systems '("x86_64-linux"))
+    (properties '((tunable? . #t)))
+    (home-page "https://github.com/bwa-mem2/bwa-mem2")
+    (synopsis "Next generation of the BWA-MEM short read aligner")
+    (description
+     "BWA-MEM2 is the next version of the BWA-MEM algorithm in the BWA
+software package.  It produces alignment identical to BWA-MEM and is
+approximately 1.3-3.1x faster depending on the use case, the reference
+genome, and the query set.  The tool runs on x86 hardware and builds
+multiple SIMD-optimized variants (SSE4.1, SSE4.2, AVX, AVX2, AVX512BW)
+with a runtime dispatcher.")
+    (license license:expat)))
+
+(define-public miniprot
+  (package
+    (name "miniprot")
+    (version "0.18")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://github.com/lh3/miniprot")
+                    (commit (string-append "v" version))))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32
+                "093pgw9cm2xdh9d3wv2311cd8fxj2k6rk5gw72zjyq9j7g5dshm3"))))
+    (build-system gnu-build-system)
+    (arguments
+     (list #:make-flags
+           #~(list (string-append "CC=" #$(cc-for-target)))
+           #:tests? #f  ; build sandbox is noexec; can't run compiled binary
+           #:phases
+           #~(modify-phases %standard-phases
+               (delete 'configure)
+          (add-after 'unpack 'fix-missing-includes
+            (lambda _
+              (substitute* (find-files "src" "\\.(h|cpp)$")
+                (("#include <vector>" all)
+                 (string-append "#include <cstdint>\n" all)))))
+               (replace 'install
+                 (lambda _
+                   (mkdir-p (string-append #$output "/bin"))
+                   (mkdir-p (string-append #$output "/share/man/man1"))
+                   (install-file "miniprot"
+                                 (string-append #$output "/bin"))
+                   (install-file "miniprot.1"
+                                 (string-append #$output "/share/man/man1")))))))
+    (inputs (list zlib))
+    (properties '((tunable? . #t)))
+    (home-page "https://github.com/lh3/miniprot")
+    (synopsis "Protein-to-genome aligner")
+    (description
+     "Miniprot aligns a protein sequence against a genome with affine gap
+penalty, splicing and frameshift.  It is primarily designed for annotating
+protein-coding genes in a new genome using related genomes as references.")
+    (license license:expat)))
+
+(define-public pangene
+  (package
+    (name "pangene")
+    (version "1.1")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://github.com/lh3/pangene")
+                    (commit (string-append "v" version))))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32
+                "04vwriwa32q6gnrppn98mqvck8pr2s7ld88dlmg09j7881x584nh"))))
+    (build-system gnu-build-system)
+    (arguments
+     (list #:make-flags
+           #~(list (string-append "CC=" #$(cc-for-target)))
+           #:tests? #f  ; build sandbox is noexec; can't run compiled binary
+           #:phases
+           #~(modify-phases %standard-phases
+               (delete 'configure)
+          (add-after 'unpack 'fix-missing-includes
+            (lambda _
+              (substitute* (find-files "src" "\\.(h|cpp)$")
+                (("#include <vector>" all)
+                 (string-append "#include <cstdint>\n" all)))))
+               (replace 'install
+                 (lambda _
+                   (mkdir-p (string-append #$output "/bin"))
+                   (mkdir-p (string-append #$output "/share/man/man1"))
+                   (install-file "pangene"
+                                 (string-append #$output "/bin"))
+                   (install-file "pangene.1"
+                                 (string-append #$output "/share/man/man1")))))))
+    (inputs (list zlib))
+    (properties '((tunable? . #t)))
+    (home-page "https://github.com/lh3/pangene")
+    (synopsis "Construct pangenome gene graphs")
+    (description
+     "Pangene constructs a pangenome gene graph from protein-to-genome
+alignments.  It takes PAF files as input and outputs a graph in GFA format,
+suitable for downstream pangenome analysis.")
+    (license license:expat)))
+
+(define-public wally
+  (package
+    (name "wally")
+    (version "0.7.1")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://github.com/tobiasrausch/wally")
+                    (commit (string-append "v" version))))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32
+                "1p0jz8m7src0lfznc8kpa0ra9i2362d35ka69457va957y1klm9v"))))
+    (build-system gnu-build-system)
+    (native-inputs (list pkg-config))
+    (inputs (list boost htslib opencv zlib xz bzip2))
+    (arguments
+     (list #:tests? #f  ; no test target in Makefile
+           #:make-flags
+           #~(list (string-append "CXX=" #$(cxx-for-target))
+                   ;; Point to installed htslib; Makefile uses EBROOTHTSLIB as
+                   ;; prefix (EasyBuild convention), patched below to append
+                   ;; /include and /lib.
+                   (string-append "EBROOTHTSLIB=" #$(this-package-input "htslib"))
+                   ;; Non-default value prevents in-tree opencv submodule build.
+                   "OPENCVSRC=/dev/null"
+                   (string-append "prefix=" #$output))
+           #:phases
+           #~(modify-phases %standard-phases
+               (delete 'configure)
+          (add-after 'unpack 'fix-missing-includes
+            (lambda _
+              (substitute* (find-files "src" "\\.(h|cpp)$")
+                (("#include <vector>" all)
+                 (string-append "#include <cstdint>\n" all)))))
+               (add-after 'unpack 'fix-makefile
+                 (lambda _
+                   (substitute* "Makefile"
+                     ;; EBROOTHTSLIB is used bare as an include/lib prefix;
+                     ;; installed htslib has headers in include/ and libs in lib/.
+                     (("-isystem \\$\\{EBROOTHTSLIB\\}")
+                      "-isystem ${EBROOTHTSLIB}/include")
+                     (("-L\\$\\{EBROOTHTSLIB\\}")
+                      "-L${EBROOTHTSLIB}/lib")
+                     ;; Remove rpath flags; Guix manages rpaths via ld-wrapper.
+                     ((" -Wl,-rpath,\\$\\{EBROOTHTSLIB\\}") "")
+                     ((" -Wl,-rpath,\\$\\{OPENCV\\}/lib/") "")
+                     ((" -Wl,-rpath,\\$\\{OPENCV\\}/lib64/") "")
+                     ;; boost::system became header-only in boost >= 1.69;
+                     ;; libboost_system is no longer installed.
+                     ((" -lboost_system") "")
+                     ;; Remove in-tree opencv PKG_CONFIG_PATH override so the
+                     ;; Guix build environment's PKG_CONFIG_PATH finds opencv4.
+                     (("export PKG_CONFIG_PATH=\\$\\{PWD\\}/src/ocv/lib/pkgconfig/:\\$\\{PWD\\}/src/ocv/lib64/pkgconfig/:\\$\\{PKG_CONFIG_PATH\\} && ")
+                      "")))))))
+    ;; No upstream test suite; the tool requires BAM/CRAM input files.
+    (properties '((tunable? . #t)))
+    (home-page "https://github.com/tobiasrausch/wally")
+    (synopsis "Read alignment visualization tool")
+    (description
+     "Wally visualizes read alignments stored in BAM/CRAM format.  It
+produces alignment plots in PNG format and supports region plots, dotplots,
+and heatmaps for structural variant and genome assembly analysis.")
+    (license license:bsd-3)))
+
+(define meryl-utility-src
+  (origin
+    (method git-fetch)
+    (uri (git-reference
+          (url "https://github.com/marbl/meryl-utility")
+          (commit "99676106a395899543c20d1086927b97bf5f46eb")))
+    (file-name (git-file-name "meryl-utility" "99676106"))
+    (sha256 (base32 "1441v5vdxjclfmzdk72yxmscncs25ncr797c4brgjb5kv6yhby21"))))
+
+(define-public meryl
+  (package
+    (name "meryl")
+    (version "1.4.1")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://github.com/marbl/meryl")
+                    (commit (string-append "v" version))))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32
+                "1b9mq7lzz2l5fq6gnk3dnc5hs4gb231gvv9fn2wn94x0fd5pmyg8"))))
+    (build-system gnu-build-system)
+    (native-inputs (list perl which))
+    (arguments
+     (list #:tests? #f  ; no test target in Makefile
+           #:make-flags
+           #~(list (string-append "CC=" #$(cc-for-target))
+                   (string-append "CXX=" #$(cxx-for-target)))
+           #:phases
+           #~(modify-phases %standard-phases
+               (delete 'configure)
+               (add-after 'unpack 'unpack-submodules
+                 (lambda _
+                   (copy-recursively #$meryl-utility-src "src/utility")))
+          (add-after 'unpack 'fix-missing-includes
+            (lambda _
+              (substitute* (find-files "src" "\\.(h|cpp)$")
+                (("#include <vector>" all)
+                 (string-append "#include <cstdint>\n" all)))))
+               (add-before 'build 'chdir-src
+                 (lambda _ (chdir "src")))
+               (replace 'install
+                 (lambda _
+                   ;; Build puts binaries in ../build/bin/.
+                   (let ((bin (string-append #$output "/bin")))
+                     (mkdir-p bin)
+                     (for-each (lambda (f)
+                                 (install-file f bin))
+                               (find-files "../build/bin" "."))))))))
+    (properties '((tunable? . #t)))
+    (home-page "https://github.com/marbl/meryl")
+    (synopsis "Genomic k-mer counter and set operations")
+    (description
+     "Meryl is a genomic k-mer counter and sequence utility.  It counts
+k-mers in genomic sequences and supports set operations (union, intersect,
+difference) on k-mer databases.")
+    (license (list license:gpl2
+                   license:bsd-2
+                   license:bsd-3))))
+
+(define-public kfilt
+  (let ((commit "ace6888d78156d3bd3a42bd3b8b31dbb57ee6dbe")
+        (revision "0"))
+    (package
+      (name "kfilt")
+      (version (git-version "0.1.1" revision commit))
+      (source (origin
+                (method git-fetch)
+                (uri (git-reference
+                      (url "https://github.com/davidebolo1993/kfilt")
+                      (commit commit)))
+                (file-name (git-file-name name version))
+                (sha256
+                 (base32
+                  "02j12bir1v3v2kpld0a628kfdcmn7py6qfqggf7vlvglhk33yqx4"))))
+      (build-system go-build-system)
+      (arguments
+       (list #:import-path "github.com/davidebolo1993/kfilt"
+             #:install-source? #f))
+      (inputs (list go-github-com-spf13-cobra
+                    go-github-com-cheggaaa-pb-v3))
+      (properties '((tunable? . #t)))
+      (home-page "https://github.com/davidebolo1993/kfilt")
+      (synopsis "K-mer based sequence filtering tool")
+      (description
+       "Kfilt builds k-mer indices from genomic sequences and filters reads
+based on k-mer matches.  It is used in the cosigt pipeline to filter
+unmapped reads using unique k-mers from pangenome graph alleles.")
+      (license license:expat))))
+
+(define-public cosigt
+  (let ((commit "a8b8ec2f7b0ec01399a03afc032581bc3bcf4833")
+        (revision "1"))
+    (package
+      (name "cosigt")
+      (version (git-version "0.1.7" revision commit))
+      (source (origin
+                (method git-fetch)
+                (uri (git-reference
+                      (url "https://github.com/pjotrp/cosigt")
+                      (commit commit)))
+                (file-name (git-file-name name version))
+                (sha256
+                 (base32
+                  "0rz2zvkfxi2b35bj019cmdm1vzbvfa1lyqsx7awwx3anr09dych1"))))
+      (build-system go-build-system)
+      (arguments
+       (list #:import-path "github.com/pjotrp/cosigt"
+             #:install-source? #f
+             #:phases
+             #~(modify-phases %standard-phases
+                 (add-after 'install 'install-pipeline
+                   (lambda _
+                     (let ((share (string-append #$output "/share/cosigt")))
+                       (copy-recursively
+                        "src/github.com/pjotrp/cosigt/cosigt_smk"
+                        share))))
+                 (add-after 'install 'install-tests
+                   (lambda _
+                     (let ((test (string-append #$output "/share/cosigt/test")))
+                       (copy-recursively
+                        "src/github.com/pjotrp/cosigt/test"
+                        test)))))))
+      (inputs (list go-github-com-akamensky-argparse
+                    go-gonum-org-v1-gonum))
+      (propagated-inputs
+       (list bedtools
+             bwa-mem2
+             gafpack
+             gfainject
+             htslib
+             impg
+             kfilt
+             meryl
+             minimap2
+             odgi
+             pggb
+             samtools
+             snakemake
+             util-linux))
+      (properties '((tunable? . #t)))
+      (home-page "https://github.com/pjotrp/cosigt")
+    (synopsis "Cosine similarity-based structural haplotype genotyper")
+    (description
+     "Cosigt (COsine SImilarity-based GenoTyper) assigns structural
+haplotypes to sequenced samples using pangenome graphs.  It includes a
+Snakemake pipeline (@file{share/cosigt/}) and a genotyping binary.  Pipeline
+tools needed at runtime: snakemake, minimap2, samtools, bedtools, bwa-mem2,
+odgi, gafpack, gfainject, impg, pggb, meryl, kfilt, wally, miniprot, and
+pangene.")
+      (license license:expat))))
+
+(define-public odgi
   (package
-    (name "gfautil")
-    (version "0.1.0")
+    (name "odgi")
+    (version "0.9.0")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append "https://github.com/pangenome/odgi/releases"
+                                  "/download/v" version
+                                  "/odgi-v" version ".tar.gz"))
+              (sha256
+               (base32 "0brg0sz45v1wv4ld3p4jwiab10nyp2f691zfwpiva6g6f71q3cbk"))
+              (snippet
+               #~(begin
+                   (use-modules (guix build utils))
+                   (substitute* "CMakeLists.txt"
+                     (("-march=native") "")
+                     (("-msse4\\.2") ""))))))
+    (build-system cmake-build-system)
+    (arguments
+     (list
+       #:tests? #f  ; tests are bash scripts (test_binary.sh) and python doctests
+                    ; that require test data and a python odgi module import
+       #:parallel-build? #f ; OOM with parallel build
+       #:phases
+       #~(modify-phases %standard-phases
+           (add-after 'unpack 'use-gnuinstalldirs-macros
+             (lambda _
+               (substitute* "CMakeLists.txt"
+                 (("project\\(odgi\\)" all)
+                  (string-append all "\ninclude(GNUInstallDirs)"))
+                 (("LIBRARY DESTINATION lib")
+                  "LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}")
+                 (("ARCHIVE DESTINATION lib")
+                  "ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}"))))
+           (add-after 'unpack 'link-to-libodgi
+             (lambda _
+               (substitute* "CMakeLists.txt"
+                 (("^  \\$<TARGET_OBJECTS:odgi_objs>.*") "")
+                 (("target_link_libraries\\(odgi " all)
+                  (string-append all "libodgi_shared "))))))))
+    (native-inputs (list pkg-config))
+    (inputs
+     (list jemalloc
+           libdivsufsort
+           openmpi
+           pybind11
+           python
+           sdsl-lite))
+    (properties '((tunable? . #t)))
+    (home-page "https://github.com/vgteam/odgi")
+    (synopsis "Optimized Dynamic Genome/Graph Implementation")
+    (description "odgi provides an efficient and succinct dynamic DNA sequence
+graph model, as well as algorithms for pangenome analysis.")
+    (license license:expat)))
+
+;; seqwish submodule origins (unbundled from recursive? #t)
+(define seqwish-bbhash-src
+  (origin (method git-fetch)
+    (uri (git-reference (url "https://github.com/vgteam/BBHash")
+                        (commit "36e4fe3eaeef762c831c49cdc01f1a3a2c7a97a4")))
+    (file-name (git-file-name "BBHash" "36e4fe3e"))
+    (sha256 (base32 "1q2lapriprgmjcnxn9a30xv3yacyx0r4ri4jjsvp26rhmpw2ql57"))))
+(define seqwish-args-src
+  (origin (method git-fetch)
+    (uri (git-reference (url "https://github.com/Taywee/args")
+                        (commit "730dfbc4bc2e4149c22e0f606bf00420b65aeaeb")))
+    (file-name (git-file-name "args" "730dfbc4"))
+    (sha256 (base32 "1lk4mljs0v1a0gns2bb609ywc2g5kwsm6dgaafrwpr0ldvk3gai6"))))
+(define seqwish-atomic-queue-src
+  (origin (method git-fetch)
+    (uri (git-reference (url "https://github.com/max0x7ba/atomic_queue")
+                        (commit "7d75e9ed0359650224b29cdf6728c5fe0a19fffb")))
+    (file-name (git-file-name "atomic_queue" "7d75e9ed"))
+    (sha256 (base32 "1dh8x0ikfwk0by5avwfv9gvr9ay6jy13yr66rvgw9wwyxmklz848"))))
+(define seqwish-atomicbitvector-src
+  (origin (method git-fetch)
+    (uri (git-reference (url "https://github.com/ekg/atomicbitvector")
+                        (commit "ebf6435171a47ad216294645d528c2c9fe030c96")))
+    (file-name (git-file-name "atomicbitvector" "ebf64351"))
+    (sha256 (base32 "011n32cb7hdblibcj8hd42r6m4riikamqs3jhb2x32knycm22if5"))))
+(define seqwish-flat-hash-map-src
+  (origin (method git-fetch)
+    (uri (git-reference (url "https://github.com/skarupke/flat_hash_map")
+                        (commit "2c4687431f978f02a3780e24b8b701d22aa32d9c")))
+    (file-name (git-file-name "flat_hash_map" "2c468743"))
+    (sha256 (base32 "0ryc8ybkdpz6r788lhdfnm0xrxgwdmplvqngj48rzv0fvfi16hbz"))))
+(define seqwish-gzip-reader-src
+  (origin (method git-fetch)
+    (uri (git-reference (url "https://github.com/gatoravi/gzip_reader")
+                        (commit "0ef26c0399e926087f9d6c4a56067a7bf1fc4f5e")))
+    (file-name (git-file-name "gzip_reader" "0ef26c03"))
+    (sha256 (base32 "1wy84ksx900840c06w0f1mgzvr7zsfsgxq1b0jdjh8qka26z1r17"))))
+(define seqwish-iitii-src
+  (origin (method git-fetch)
+    (uri (git-reference (url "https://github.com/ekg/iitii")
+                        (commit "85209e07a3ee403fb6557387a7f897cd76be4406")))
+    (file-name (git-file-name "iitii" "85209e07"))
+    (sha256 (base32 "0sszvffkswf89nkbjmjg3wjwqvy2w0d3wgy3ngy33ma4sy4s025s"))))
+(define seqwish-ips4o-src
+  (origin (method git-fetch)
+    (uri (git-reference (url "https://github.com/SaschaWitt/ips4o")
+                        (commit "a34d7d40c0f1279510e35e0dc2c69637b3c5d0b6")))
+    (file-name (git-file-name "ips4o" "a34d7d40"))
+    (sha256 (base32 "098dbpdava9a4qwsd810lc3gk6fvfb91sd9n7m78y82qzi745dph"))))
+(define seqwish-mmmulti-src
+  (origin (method git-fetch)
+    (uri (git-reference (url "https://github.com/ekg/mmmulti")
+                        (commit "8b57e439cfe34a3a21e5a32dcd76026be7d71b72")))
+    (file-name (git-file-name "mmmulti" "8b57e439"))
+    (sha256 (base32 "0kcdkm5cmbxahdg3i9mas6pcsmnlr2i3n67ah4mklzp18qs884ij"))))
+(define seqwish-paryfor-src
+  (origin (method git-fetch)
+    (uri (git-reference (url "https://github.com/ekg/paryfor")
+                        (commit "509b28a092f732a068e2908bb9e359a8562cd32f")))
+    (file-name (git-file-name "paryfor" "509b28a0"))
+    (sha256 (base32 "1qcf4q0gna66l3hwazqxnsa515ggh7sin2vq8xfnjr322ps30y2v"))))
+(define seqwish-sdsl-lite-src
+  (origin (method git-fetch)
+    (uri (git-reference (url "https://github.com/simongog/sdsl-lite")
+                        (commit "c32874cb2d8524119f25f3b501526fe692df29f4")))
+    (file-name (git-file-name "sdsl-lite" "c32874cb"))
+    (sha256 (base32 "1p53cgrgkp72s0mx262pxz90mf04vy4c1189xlx146qh8fznywg4"))))
+;; mmmulti submodules
+(define seqwish-mmmulti-dynamic-src
+  (origin (method git-fetch)
+    (uri (git-reference (url "https://github.com/vgteam/DYNAMIC")
+                        (commit "73a6b10ecb94ee178fa873797aacf81e0bfdc7db")))
+    (file-name (git-file-name "DYNAMIC" "73a6b10e"))
+    (sha256 (base32 "1yrpb32r0dav0vs1x34pv76jyns9zybyhdyjy1nfcl3iifajqnw5"))))
+(define seqwish-mmmulti-args-src
+  (origin (method git-fetch)
+    (uri (git-reference (url "https://github.com/Taywee/args")
+                        (commit "de4db870058c37b6094bc5ccb03c9ea45708c855")))
+    (file-name (git-file-name "args" "de4db870"))
+    (sha256 (base32 "1n4m0qay71idjiqpym4q14cg274mrl4iaxdn58aixw1virak7zwl"))))
+(define seqwish-mmmulti-atomic-queue-src
+  (origin (method git-fetch)
+    (uri (git-reference (url "https://github.com/max0x7ba/atomic_queue")
+                        (commit "d9d66b6d20d74042da481ed5504fa81c0d79c8ae")))
+    (file-name (git-file-name "atomic_queue" "d9d66b6d"))
+    (sha256 (base32 "1q7acbm1m2n7pzrrfk39cvylcsq6kw605863qqjwnv37ii9nl73k"))))
+(define seqwish-mmmulti-hopscotch-map-src
+  (origin (method git-fetch)
+    (uri (git-reference (url "https://github.com/Tessil/hopscotch-map")
+                        (commit "848374746a50b3ebebe656611d554cb134e9aeef")))
+    (file-name (git-file-name "hopscotch-map" "84837474"))
+    (sha256 (base32 "0xps3qglrdy7xyjf5icq76gv9c9nxd6sbqbvwk35jcrlmwl5aa7h"))))
+(define seqwish-mmmulti-ips4o-src
+  (origin (method git-fetch)
+    (uri (git-reference (url "https://github.com/ips4o/ips4o")
+                        (commit "cf269199fb1ed91751dbdba032339992decf220d")))
+    (file-name (git-file-name "ips4o" "cf269199"))
+    (sha256 (base32 "0kbymf18g300w4d51nh27jxy5dh56l2x66qhkly3lrc0r15vlzmk"))))
+(define seqwish-mmmulti-mio-src
+  (origin (method git-fetch)
+    (uri (git-reference (url "https://github.com/mandreyel/mio")
+                        (commit "3f86a95c0784d73ce6815237ec33ed25f233b643")))
+    (file-name (git-file-name "mio" "3f86a95c"))
+    (sha256 (base32 "1gqjr778hxs7idnl8b351b5a2q6fvzdhcg8l9v4clvvkdq132wd6"))))
+;; sdsl-lite sub-submodules (used by both deps/sdsl-lite and
+;; deps/mmmulti/deps/sdsl-lite, same commits)
+(define seqwish-sdsl-libdivsufsort-src
+  (origin (method git-fetch)
+    (uri (git-reference (url "https://github.com/simongog/libdivsufsort")
+                        (commit "0f24acd8de208464769c782119dacf158647f7ed")))
+    (file-name (git-file-name "libdivsufsort" "0f24acd8"))
+    (sha256 (base32 "13ymrg0h1dhbrnyv50xcfpr7g3hrvrg4d9zg7mx6k9pqyhqx5p32"))))
+(define seqwish-sdsl-googletest-src
+  (origin (method git-fetch)
+    (uri (git-reference (url "https://github.com/google/googletest")
+                        (commit "c2d90bddc6a2a562ee7750c14351e9ca16a6a37a")))
+    (file-name (git-file-name "googletest" "c2d90bdd"))
+    (sha256 (base32 "1b27igw347znbw7k0j602v5bcackzj9iq1wy691fvg2n1cgvxd52"))))
+
+(define-public seqwish
+  (package
+    (name "seqwish")
+    (version "0.7.11")
+    (source (origin
+             (method git-fetch)
+             (uri (git-reference
+                   (url "https://github.com/ekg/seqwish.git")
+                   (commit (string-append "v" version))))
+             (file-name (git-file-name name version))
+             (sha256
+              (base32 "1z64f06vbv19hmc5bi4xf2783ddialbf29z96kwvflf8bcfzvsh9"))
+             (patches
+              (search-patches "seqwish-shared-library.patch"))))
+    (build-system cmake-build-system)
+    (arguments
+     (list
+      #:configure-flags
+      #~(list "-DSEQWISH_LINK_SHARED_LIBRARY=ON"
+              "-DCMAKE_C_FLAGS=-mcx16"
+              "-DCMAKE_CXX_FLAGS=-mcx16")
+      #:phases
+      #~(modify-phases %standard-phases
+          (add-after 'unpack 'unpack-submodules
+            (lambda _
+              (copy-recursively #$seqwish-bbhash-src "deps/BBHash")
+              (copy-recursively #$seqwish-args-src "deps/args")
+              (copy-recursively #$seqwish-atomic-queue-src "deps/atomic_queue")
+              (copy-recursively #$seqwish-atomicbitvector-src "deps/atomicbitvector")
+              (copy-recursively #$seqwish-flat-hash-map-src "deps/flat_hash_map")
+              (copy-recursively #$seqwish-gzip-reader-src "deps/gzip_reader")
+              (copy-recursively #$seqwish-iitii-src "deps/iitii")
+              (copy-recursively #$seqwish-ips4o-src "deps/ips4o")
+              (copy-recursively #$seqwish-mmmulti-src "deps/mmmulti")
+              (copy-recursively #$seqwish-paryfor-src "deps/paryfor")
+              (copy-recursively #$seqwish-sdsl-lite-src "deps/sdsl-lite")
+              ;; mmmulti sub-submodules
+              (copy-recursively #$seqwish-mmmulti-dynamic-src
+                                "deps/mmmulti/deps/DYNAMIC")
+              (copy-recursively #$seqwish-mmmulti-args-src
+                                "deps/mmmulti/deps/args")
+              (copy-recursively #$seqwish-mmmulti-atomic-queue-src
+                                "deps/mmmulti/deps/atomic_queue")
+              (copy-recursively #$seqwish-mmmulti-hopscotch-map-src
+                                "deps/mmmulti/deps/hopscotch-map")
+              (copy-recursively #$seqwish-mmmulti-ips4o-src
+                                "deps/mmmulti/deps/ips4o")
+              (copy-recursively #$seqwish-mmmulti-mio-src
+                                "deps/mmmulti/deps/mio")
+              ;; paryfor and sdsl-lite same commits in both seqwish and mmmulti
+              (copy-recursively #$seqwish-paryfor-src
+                                "deps/mmmulti/deps/paryfor")
+              (copy-recursively #$seqwish-sdsl-lite-src
+                                "deps/mmmulti/deps/sdsl-lite")
+              ;; sdsl-lite's own sub-submodules
+              (copy-recursively #$seqwish-sdsl-libdivsufsort-src
+                                "deps/sdsl-lite/external/libdivsufsort")
+              (copy-recursively #$seqwish-sdsl-googletest-src
+                                "deps/sdsl-lite/external/googletest")
+              (copy-recursively #$seqwish-sdsl-libdivsufsort-src
+                                "deps/mmmulti/deps/sdsl-lite/external/libdivsufsort")
+              (copy-recursively #$seqwish-sdsl-googletest-src
+                                "deps/mmmulti/deps/sdsl-lite/external/googletest")))
+          (add-after 'unpack-submodules 'patch-arch-flags
+            ;; Moved from origin snippet (requires submodules to be present).
+            (lambda _
+              (substitute* '("CMakeLists.txt"
+                             "deps/atomic_queue/Makefile"
+                             "deps/mmmulti/deps/DYNAMIC/CMakeLists.txt"
+                             "deps/mmmulti/deps/atomic_queue/Makefile"
+                             "deps/mmmulti/deps/ips4o/CMakeLists.txt")
+                (("-march=native") "")
+                (("-mcx16") ""))
+              (substitute* '("deps/mmmulti/deps/sdsl-lite/CMakeLists.txt"
+                             "deps/sdsl-lite/CMakeLists.txt")
+                (("-msse4.2 -march=native") ""))))
+          (add-after 'unpack-submodules 'patch-paryfor-riscv
+            ;; seqwish-paryfor-riscv.patch moved here: patches a submodule file.
+            (lambda _
+              (substitute* "deps/paryfor/paryfor.hpp"
+                (("} // namespace paryfor\n#else\n#error")
+                 (string-append
+                  "} // namespace paryfor\n"
+                  "#elif defined(__riscv) && (__riscv_xlen == 64)\n"
+                  "namespace paryfor {\n"
+                  "namespace atomic_queue {\n"
+                  "constexpr int CACHE_LINE_SIZE = 64;\n"
+                  "static inline void spin_loop_pause() noexcept {\n"
+                  "    asm volatile (\"nop\" ::: \"memory\");\n"
+                  "}\n"
+                  "}\n"
+                  "}\n"
+                  "#else\n"
+                  "#error")))))
+          (add-after 'unpack 'set-version
+            (lambda _
+              (mkdir-p "include")
+              (substitute* "CMakeLists.txt"
+                (("^execute_process") "#execute_process"))
+              (with-output-to-file "include/seqwish_git_version.hpp"
+                (lambda ()
+                  (format #t "#define SEQWISH_GIT_VERSION \"~a\"~%"
+                          #$version)))))
+          (add-after 'unpack-submodules 'link-with-some-shared-libraries
+            (lambda* (#:key inputs #:allow-other-keys)
+              (substitute* '("CMakeLists.txt"
+                             "deps/mmmulti/CMakeLists.txt")
+                (("\".*libsdsl\\.a\"") "\"-lsdsl\"")
+                (("\".*libdivsufsort\\.a\"") "\"-ldivsufsort\"")
+                (("\".*libdivsufsort64\\.a\"") "\"-ldivsufsort64\"")
+                (("\\$\\{sdsl-lite_INCLUDE\\}")
+                 (search-input-directory inputs "/include/sdsl"))
+                (("\\$\\{sdsl-lite-divsufsort_INCLUDE\\}")
+                 (dirname
+                   (search-input-file inputs "/include/divsufsort.h"))))))
+          (replace 'check
+            (lambda* (#:key tests? #:allow-other-keys)
+              (setenv "PATH" (string-append (getcwd) ":" (getenv "PATH")))
+              (when tests?
+                (with-directory-excursion "../source/test"
+                  (invoke "make"))))))))
+    (inputs
+     (list jemalloc
+           libdivsufsort
+           openmpi
+           sdsl-lite
+           zlib))
+    (native-inputs
+     (list perl))
+    (properties '((tunable? . #t)))
+    (home-page "https://github.com/ekg/seqwish")
+    (synopsis "Alignment to variation graph inducer")
+    (description "Seqwish implements a lossless conversion from pairwise
+alignments between sequences to a variation graph encoding the sequences and
+their alignments.")
+    (license license:expat)))
+(define-public smoothxg
+  (package
+    (name "smoothxg")
+    (version "0.8.2")
+    (source (origin
+             (method url-fetch)
+             (uri (string-append "https://github.com/pangenome/smoothxg"
+                                 "/releases/download/v" version
+                                 "/smoothxg-v" version ".tar.gz"))
+             (sha256
+              (base32 "1hqaa6l904zl01rsmw5vzx2kvcncl97i5kln850snywyv33skxp6"))
+             (snippet
+              #~(begin
+                  (use-modules (guix build utils))
+                  (substitute* (find-files "." "CMakeLists.txt")
+                    (("spoa_optimize_for_native ON")
+                     "spoa_optimize_for_native OFF")
+                    (("-msse4\\.2") "")
+                    (("-march=native") ""))))))
+    (build-system cmake-build-system)
+    (arguments
+     (list
+       #:make-flags
+       #~(list (string-append "CC = " #$(cc-for-target)))
+       #:phases
+       #~(modify-phases %standard-phases
+           (add-after 'unpack 'link-with-some-shared-libraries
+             (lambda* (#:key inputs #:allow-other-keys)
+               (substitute* '("CMakeLists.txt"
+                              "deps/mmmulti/CMakeLists.txt"
+                              "deps/odgi/deps/mmmulti/CMakeLists.txt")
+                 (("\".*libsdsl\\.a\"") "\"-lsdsl\"")
+                 (("\".*libdivsufsort\\.a\"") "\"-ldivsufsort\"")
+                 (("\".*libdivsufsort64\\.a\"") "\"-ldivsufsort64\"")
+                 (("\".*libodgi\\.a\"") "\"-lodgi\"")
+                 (("\\$\\{sdsl-lite_INCLUDE\\}")
+                  (search-input-directory inputs "/include/sdsl"))
+                 (("\\$\\{sdsl-lite-divsufsort_INCLUDE\\}")
+                  (dirname
+                    (search-input-file inputs "/include/divsufsort.h")))
+                 (("\\$\\{odgi_INCLUDE\\}")
+                  (search-input-directory inputs "/include/odgi")))))
+           (add-before 'build 'build-abPOA
+             (lambda* (#:key make-flags #:allow-other-keys)
+               ;; This helps with portability to other architectures.
+               (with-directory-excursion
+                 (string-append "../smoothxg-v" #$version "/deps/abPOA")
+                 (substitute* "Makefile"
+                   (("-march=native") "")
+                   (("-march=armv8-a\\+simd") ""))
+                 (apply invoke "make" "libabpoa" make-flags)))))))
+    (inputs
+     (list jemalloc
+           libdivsufsort
+           odgi
+           openmpi
+           pybind11
+           python
+           sdsl-lite
+           zlib
+           (list zstd "lib")))
+    (native-inputs
+     (list pkg-config))
+    (home-page "https://github.com/ekg/smoothxg")
+    (synopsis
+     "Linearize and simplify variation graphs using blocked partial order alignment")
+    (description "Pangenome graphs built from raw sets of alignments may have
+complex local structures generated by common patterns of genome variation.
+These local nonlinearities can introduce difficulty in downstream analyses,
+visualization, and interpretation of variation graphs.
+
+@command{smoothxg} finds blocks of paths that are collinear within a variation
+graph.  It applies partial order alignment to each block, yielding an acyclic
+variation graph.  Then, to yield a smoothed graph, it walks the original paths
+to lace these subgraphs together.  The resulting graph only contains cyclic or
+inverting structures larger than the chosen block size, and is otherwise
+manifold linear.  In addition to providing a linear structure to the graph,
+smoothxg can be used to extract the consensus pangenome graph by applying the
+heaviest bundle algorithm to each chain.
+
+To find blocks, smoothxg applies a greedy algorithm that assumes that the graph
+nodes are sorted according to their occurence in the graph's embedded paths.
+The path-guided stochastic gradient descent based 1D sort implemented in
+@command{odgi sort -Y} is designed to provide this kind of sort.")
+    (properties `((tunable? . #t)))
+    (license license:expat)))
+
+;; TODO: Unbundle BBHash, parallel-hashmap, zstr
+
+(define-public pggb
+  (package
+    (name "pggb")
+    (version "0.7.4")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://github.com/pangenome/pggb")
+                    (commit (string-append "v" version))))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32
+                "1mzyr15l40hrjkdzrq49xzbby9a3a70j7glwf74k9z53firp0pf6"))))
+    (build-system copy-build-system)
+    (arguments
+     (list
+      #:install-plan
+      #~'(("pggb" "bin/")
+          ("partition-before-pggb" "bin/")
+          ("scripts/" "bin/")
+          ("scripts" "bin/scripts"))
+      #:phases
+      #~(modify-phases %standard-phases
+          (add-after 'unpack 'force-python3
+            (lambda _
+              (substitute* (find-files "scripts" "\\.py$")
+                (("/usr/bin/python") "/usr/bin/python3"))))
+          (add-after 'install 'wrap-scripts
+            (lambda* (#:key inputs outputs #:allow-other-keys)
+              (let ((out (assoc-ref outputs "out")))
+                (for-each
+                 (lambda (file)
+                   (wrap-script file
+                                `("PATH" ":" prefix
+                                  ,(map (lambda (input) (string-append input "/bin"))
+                                        (list #$(this-package-input "bc")
+                                              #$(this-package-input "bedtools")
+                                              #$(this-package-input "gfaffix")
+                                              #$(this-package-input "htslib")
+                                              #$(this-package-input "odgi")
+                                              #$(this-package-input "parallel")
+                                              #$(this-package-input "pigz")
+                                              #$(this-package-input "python")
+                                              #$(this-package-input "samtools")
+                                              #$(this-package-input "seqwish")
+                                              #$(this-package-input "smoothxg")
+                                              #$(this-package-input "time")
+                                              #$(this-package-input "util-linux")
+                                              #$(this-package-input "wfmash"))))))
+                 (list (string-append out "/bin/pggb")
+                       (string-append out "/bin/partition-before-pggb")))))))))
+    (inputs
+     (list bc
+           bedtools
+           gfaffix
+           guile-3.0
+           htslib
+           odgi
+           parallel
+           pigz
+           python
+           python-igraph
+           samtools
+           seqwish
+           smoothxg
+           time
+           util-linux
+           wfmash-0.14))
+    (home-page "https://doi.org/10.1101/2023.04.05.535718")
+    (synopsis "PanGenome Graph Builder")
+    (description "pggb builds pangenome variation graphs from a set of input
+sequences using wfmash, seqwish, smoothxg, and gfaffix.")
+    (license license:expat)))
+
+(define-public wfmash-0.14
+  (package
+    (inherit wfmash)
+    (version "0.14.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "https://github.com/waveygang/wfmash/releases/download/v"
+                           version "/wfmash-v" version ".tar.gz"))
+       (sha256
+        (base32 "1mk3jschn3hdr45glds65g3hxk7v6nc3plkvxmfbd5pr4kyzlf13"))
+       (snippet
+        #~(begin
+            (use-modules (guix build utils))
+            (delete-file-recursively "src/common/atomic_queue")
+            (substitute* "src/align/include/computeAlignments.hpp"
+              (("\"common/atomic_queue/atomic_queue.h\"")
+               "<atomic_queue/atomic_queue.h>"))
+            (substitute* (find-files "." "CMakeLists\\.txt")
+              (("-march=native ") ""))))))
+    (arguments
+     (substitute-keyword-arguments (package-arguments wfmash)
+       ((#:tests? tests? #f) #f)  ; inherit from wfmash; same rationale
+       ((#:phases phases #~%standard-phases)
+        #~(modify-phases #$phases
+            (delete 'install-scripts)
+            (replace 'build-check-prerequisites
+              (lambda _
+                (let ((wfa2-lib #$(string-append "../wfmash-v"
+                                                 "0.14.0"
+                                                 "/src/common/wflign/deps/WFA2-lib")))
+                  (substitute* (string-append wfa2-lib "/Makefile")
+                    (("-march=x86-64-v3") ""))
+                  (substitute* (string-append wfa2-lib "/tests/wfa.utest.sh")
+                    (("\\\\time -v") "time"))
+                  (invoke "make" "-C" wfa2-lib
+                          #$(string-append "CC=" (cc-for-target))))))))))
+    (inputs
+     (modify-inputs (package-inputs wfmash)
+       (prepend jemalloc)
+       (delete "libdeflate")))))
+
+;; wfa2-lib v2.3.6 with cmake build, pkg-config support
+(define-public wfa2-lib/cmake
+  (package
+    (name "wfa2-lib")
+    (version "2.3.6")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://github.com/smarco/WFA2-lib")
+                    (commit (string-append "v" version))))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32
+                "0hfgq09r0ndrsa2jwy9wkg8p7xzgvclbj5ysp73bawwkgwpgfhy4"))))
+    (build-system cmake-build-system)
+    (native-inputs
+     (list pkg-config time))
+    (arguments
+     (list
+      #:configure-flags
+      #~(list "-DCMAKE_BUILD_TYPE=RelWithDebInfo")))
+    (home-page "https://github.com/smarco/WFA2-lib")
+    (synopsis "Wavefront alignment algorithm library")
+    (description "The wavefront alignment (WFA) algorithm is an exact
+gap-affine algorithm that takes advantage of homologous regions between the
+sequences to accelerate the alignment process.")
+    (properties '((tunable? . #t)))
+    (license license:expat)))
+
+(define vcflib-fastahack-src
+  (origin
+    (method git-fetch)
+    (uri (git-reference
+          (url "https://github.com/ekg/fastahack")
+          (commit "bb332654766c2177d6ec07941fe43facf8483b1d")))
+    (file-name (git-file-name "fastahack" "bb332654"))
+    (sha256 (base32 "0rp1blskhzxf7vbh253ibpxbgl9wwgyzf1wbkxndi08d3j4vcss9"))))
+
+(define vcflib-smithwaterman-src
+  (origin
+    (method git-fetch)
+    (uri (git-reference
+          (url "https://github.com/ekg/smithwaterman")
+          (commit "2610e259611ae4cde8f03c72499d28f03f6d38a7")))
+    (file-name (git-file-name "smithwaterman" "2610e259"))
+    (sha256 (base32 "0i9d8zrxpiracw3mxzd9siybpy62p06rqz9mc2w93arajgbk45bs"))))
+
+(define vcflib-intervaltree-src
+  (origin
+    (method git-fetch)
+    (uri (git-reference
+          (url "https://github.com/ekg/intervaltree")
+          (commit "aa5937755000f1cd007402d03b6f7ce4427c5d21")))
+    (file-name (git-file-name "intervaltree" "aa593775"))
+    (sha256 (base32 "0p9aphy6sc01dg67xzqpnhvjmk21xa380bpfbkz24a23s6krhjwl"))))
+
+(define vcflib-fsom-src
+  (origin
+    (method git-fetch)
+    (uri (git-reference
+          (url "https://github.com/ekg/fsom")
+          (commit "56695e1611d824cda97f08e932d25d08419170cd")))
+    (file-name (git-file-name "fsom" "56695e16"))
+    (sha256 (base32 "1ysa209j0wjv763g882jidpxiakd37s96b0avg15cwbfdxzmj7ri"))))
+
+(define vcflib-filevercmp-src
+  (origin
+    (method git-fetch)
+    (uri (git-reference
+          (url "https://github.com/ekg/filevercmp")
+          (commit "df20dcc4a2a772de56e804e8fbbcdef1ac068bbe")))
+    (file-name (git-file-name "filevercmp" "df20dcc4"))
+    (sha256 (base32 "16gbpc3vax4k51i5xjc5an5qjjddqycfrdkp4qvw9x2kvqbwyxh3"))))
+
+(define-public vcflib
+  (let ((commit "b118a9bfd99b07da9d40d0bd8b3c2bdc4523b568")
+        (revision "1"))
+    (package
+      (name "vcflib")
+      (version (git-version "1.0.15" revision commit))
+      (source (origin
+                (method git-fetch)
+                (uri (git-reference
+                      (url "https://github.com/vcflib/vcflib")
+                      (commit commit)))
+                (file-name (git-file-name name version))
+                (sha256
+                 (base32 "07xvma6iln4wsg7qhgvk3yaqy7plhqj5c9z0lib1xjvninc67874"))))
+      (build-system cmake-build-system)
+      (inputs
+       (list htslib
+             pandoc
+             perl
+             python
+             python-pytest
+             pybind11
+             ruby
+             tabixpp
+             time
+             wfa2-lib/cmake
+             xz
+             zig-0.15))
+      (native-inputs
+       (list pkg-config))
+      (arguments
+       (list
+        #:configure-flags
+        #~(list "-DCMAKE_BUILD_TYPE=RelWithDebInfo")
+        #:tests? #f
+        #:phases
+        #~(modify-phases %standard-phases
+            (add-after 'unpack 'unpack-submodules
+              (lambda _
+                (copy-recursively #$vcflib-fastahack-src "contrib/fastahack")
+                (copy-recursively #$vcflib-smithwaterman-src "contrib/smithwaterman")
+                (copy-recursively #$vcflib-intervaltree-src "contrib/intervaltree")
+                (copy-recursively #$vcflib-fsom-src "contrib/fsom")
+                (copy-recursively #$vcflib-filevercmp-src "contrib/filevercmp"))))))
+      (home-page "https://github.com/vcflib/vcflib/")
+      (synopsis "Library for parsing and manipulating VCF files")
+      (description "Vcflib provides methods to manipulate and interpret
+sequence variation as it can be described by VCF.  It is both an API for parsing
+and operating on records of genomic variation as it can be described by the VCF
+format, and a collection of command-line utilities for executing complex
+manipulations on VCF files.")
+      (license license:expat))))
+
+(define-public vg
+  (package
+    (name "vg")
+    (version "1.72.0")
     (source
       (origin
         (method url-fetch)
-        (uri (crate-uri "gfautil" version))
-        (file-name
-         (string-append name "-" version ".tar.gz"))
+        (uri (string-append "https://github.com/vgteam/vg/releases/download/v"
+                            version "/vg-v" version ".tar.gz"))
         (sha256
-         (base32
-          "0cgiis9v1nd4m7zxvgsz8jf8ijv4d8fa5wb7cpnjshksb8z7xh69"))))
+         (base32 "17s5vd4ry8hys6jkramdkspw5w287airfca68gb6fiapcavqaz0w"))
+        (snippet
+         #~(begin
+             (use-modules (guix build utils))
+             (substitute* (find-files "." "(CMakeLists\\.txt|Makefile)")
+               (("-march=native") "")
+               (("-mtune=native") "")
+               (("-msse4.2") "")
+               (("-mcx16") ""))))))
+    (build-system gnu-build-system)
+    (arguments
+     (list
+      #:make-flags
+      #~(list (string-append "CC=" #$(cc-for-target))
+              (string-append "LDFLAGS=-Wl,-rpath=" #$output "/lib"))
+      #:phases
+      #~(modify-phases %standard-phases
+          (delete 'configure)    ; no configure script
+          (add-after 'unpack 'fix-missing-includes
+            (lambda _
+              (substitute* (find-files "src" "\\.(h|cpp)$")
+                (("#include <vector>" all)
+                 (string-append "#include <cstdint>\n" all)))))
+          (add-after 'unpack 'patch-source
+            (lambda* (#:key inputs #:allow-other-keys)
+              ;; Add subdirectory include paths for system packages
+              (let ((extra-includes
+                     (string-join
+                      (list (search-input-directory inputs "/include/vcflib")
+                            (search-input-directory inputs "/include/fastahack")
+                            (search-input-directory inputs "/include/cairo")
+                            (search-input-directory inputs "/include/raptor2"))
+                      ":")))
+                (setenv "CPLUS_INCLUDE_PATH"
+                        (string-append extra-includes
+                                       ":" (or (getenv "CPLUS_INCLUDE_PATH") "")))
+                (setenv "C_INCLUDE_PATH"
+                        (string-append extra-includes
+                                       ":" (or (getenv "C_INCLUDE_PATH") ""))))
+              (substitute* "Makefile"
+                ;; PKG_CONFIG_DEPS - use external vcflib and fastahack
+                (("cairo libzstd")
+                 "cairo htslib libzstd libdw libelf protobuf raptor2 sdsl-lite tabixpp vcflib fastahack libdeflate libwfa2")
+
+                ;; Skip the part where we link static libraries special
+                (("-Wl,-B.*") "\n")
+
+                (("\\$\\(CWD\\)/\\$\\(LIB_DIR\\)/libtabixpp\\.a") "$(LIB_DIR)/libtabixpp.a")
+                ((" \\$\\(LIB_DIR\\)/libtabixpp\\.a")
+                 (string-append " " (search-input-file inputs "/lib/libtabixpp.so")))
+                (("\\$\\(LIB_DIR\\)/pkgconfig/tabixpp\\.pc")
+                 (string-append " " (search-input-file inputs "/lib/pkgconfig/tabixpp.pc")))
+
+                (("\\$\\(CWD\\)/\\$\\(LIB_DIR\\)/libhts\\.a") "$(LIB_DIR)/libhts.a")
+                ((" \\$\\(LIB_DIR\\)/libhts\\.a")
+                 (string-append " " (search-input-file inputs "/lib/libhts.so")))
+                (("\\$\\(LIB_DIR\\)/pkgconfig/htslib\\.pc")
+                 (string-append " " (search-input-file inputs "/lib/pkgconfig/htslib.pc")))
+
+                (("\\$\\(CWD\\)/\\$\\(LIB_DIR\\)/libdeflate\\.a") "$(LIB_DIR)/libdeflate.a")
+                ((" \\$\\(LIB_DIR\\)/libdeflate\\.a")
+                 (string-append " " (search-input-file inputs "/lib/libdeflate.so")))
+
+                ;; Use external vcflib
+                ((" \\$\\(LIB_DIR\\)/libvcflib.a")
+                 (string-append " " (search-input-file inputs "/lib/libvcflib.so")))
+                ((" \\$\\(BIN_DIR\\)/vcf2tsv")
+                 (string-append " " (search-input-file inputs "/bin/vcf2tsv")))
+
+                ((" \\$\\(FASTAHACK_DIR\\)/fastahack")
+                 (string-append " " (search-input-file inputs "/bin/fastahack")))
+                (("\\+= \\$\\(OBJ_DIR\\)/Fasta\\.o") "+=")
+                ;; Add fastahack, smithwaterman, cairo to linker flags
+                (("-lvcflib") "-lvcflib -lfastahack -lsmithwaterman -lcairo")
+
+                ((" \\$\\(LIB_DIR\\)/libsnappy.a")
+                 (string-append " " (search-input-file inputs "/lib/libsnappy.so")))
+
+                ;; Only link against the libraries in the elfutils package.
+                (("-ldwfl -ldw -ldwelf -lelf -lebl") "-ldw -lelf")
+                ((" \\$\\(LIB_DIR\\)/libelf.a")
+                 (string-append " " (search-input-file inputs "/lib/libelf.so")))
+                ((" \\$\\(LIB_DIR\\)/libdw.a")
+                 (string-append " " (search-input-file inputs "/lib/libdw.so")))
+
+                ((" \\$\\(LIB_DIR\\)/%divsufsort.a")
+                 (string-append " " (dirname
+                                     (search-input-file inputs "/lib/libdivsufsort.so"))
+                                "%divsufsort.so"))
+                ((" \\$\\(LIB_DIR\\)/libdivsufsort.a")
+                 (string-append " " (search-input-file inputs "/lib/libdivsufsort.so")))
+                ((" \\$\\(LIB_DIR\\)/%divsufsort64.a")
+                 (string-append " " (dirname
+                                     (search-input-file inputs "/lib/libdivsufsort64.so"))
+                                "%divsufsort64.so"))
+                ((" \\$\\(LIB_DIR\\)/libdivsufsort64.a")
+                 (string-append " " (search-input-file inputs "/lib/libdivsufsort64.so")))
+
+                ((" \\$\\(LIB_DIR\\)/libjemalloc.a")
+                 (string-append " " (search-input-file inputs "/lib/libjemalloc.a")))
+
+                ((" \\$\\(INC_DIR\\)/sparsehash")
+                 (string-append " " (search-input-directory inputs "/include/sparsehash")))
+
+                ((" \\$\\(INC_DIR\\)/raptor2")
+                 (string-append " " (search-input-directory inputs "/include/raptor2")))
+                ((" \\$\\(LIB_DIR\\)/libraptor2.a")
+                 (string-append " " (search-input-file inputs "/lib/libraptor2.so")))
+                ((" \\$\\(BIN_DIR\\)/rapper")
+                 (string-append " " (search-input-file inputs "/bin/rapper"))))
+              ;; Create obj and lib directories. They do not exist in
+              ;; the release tarball.
+              (mkdir "deps/libbdsg/bdsg/obj")
+              (mkdir "deps/libbdsg/lib")
+              ;; Do not remove obj and lib directories in the clean target.
+              (substitute* "deps/libbdsg/Makefile"
+                (("\\[ ! -e \\$\\(OBJ_DIR\\) \\][^\n]*") "")
+                (("\\[ ! -e \\$\\(LIB_DIR\\) \\][^\n]*") ""))))
+          (add-after 'unpack 'link-with-some-shared-libraries
+            (lambda* (#:key inputs #:allow-other-keys)
+              (substitute* '("deps/mmmultimap/CMakeLists.txt"
+                             "deps/xg/CMakeLists.txt"
+                             "deps/xg/deps/mmmulti/CMakeLists.txt")
+                (("\".*libsdsl\\.a\"") "\"-lsdsl\"")
+                (("\".*libdivsufsort\\.a\"") "\"-ldivsufsort\"")
+                (("\".*libdivsufsort64\\.a\"") "\"-ldivsufsort64\"")
+                (("\\$\\{sdsl-lite_INCLUDE\\}")
+                 (search-input-directory inputs "/include/sdsl"))
+                (("\\$\\{sdsl-lite-divsufsort_INCLUDE\\}")
+                 (dirname
+                  (search-input-file inputs "/include/divsufsort.h"))))))
+          (add-after 'unpack 'dont-build-shared-vgio
+            (lambda _
+              ;; vg will link with libvgio and fail the 'validate-runpath phase.
+              (substitute* "deps/libvgio/CMakeLists.txt"
+                (("TARGETS vgio vgio_static") "TARGETS vgio_static"))))
+          (add-after 'unpack 'adjust-tests
+            (lambda* (#:key inputs #:allow-other-keys)
+              (let ((bash-tap (assoc-ref inputs "bash-tap")))
+                (substitute* (find-files "test/t")
+                  (("BASH_TAP_ROOT.*")
+                   (string-append "BASH_TAP_ROOT=" bash-tap "/bin\n"))
+                  ((".*bash-tap-bootstrap")
+                   (string-append ". " bash-tap "/bin/bash-tap-bootstrap")))
+                (substitute* "test/t/02_vg_construct.t"
+                  (("../deps/fastahack/fastahack") (which "fastahack"))
+                  (("../bin/vcf2tsv") (which "vcf2tsv")))
+                ;; Skip failing tests
+                (substitute* "test/t/02_vg_construct.t"
+                  ((".*self-inconsistent.*") "is $(true) \"\" \"\"\n"))
+                (substitute* "test/t/07_vg_map.t"
+                  (("identity\\) 1 \"") "identity) 1.0 \""))
+                (substitute* '("test/t/07_vg_map.t"
+                               "test/t/33_vg_mpmap.t")
+                  ((".*node id.*") "is $(true) \"\" \"\"\n"))
+                (substitute* "test/t/48_vg_convert.t"
+                  (("true \"vg.*") "true \"true\"\n"))
+                (substitute* "test/t/50_vg_giraffe.t"
+                  ((".*A long read can.*") "is $(true) \"\" \"\"\n")
+                  ((".*A long read has.*") "is $(true) \"\" \"\"\n")
+                  ((".*Long read minimizer.*") "is $(true) \"\" \"\"\n"))
+                ;; Don't test the docs, we're not providing npm
+                (substitute* "Makefile"
+                  ((".*test-docs.*") "")))))
+          (add-after 'build 'build-manpages
+            (lambda* (#:key make-flags #:allow-other-keys)
+              ;; vg is not in PATH. Replace it with full path.
+              (substitute* "doc/vgmanmd.py"
+                (("'vg'") "'./bin/vg'"))
+              (apply invoke "make" "man" make-flags)))
+          (replace 'install
+            (lambda* (#:key outputs #:allow-other-keys)
+              (let ((out (assoc-ref outputs "out")))
+                (install-file "bin/vg" (string-append out "/bin"))
+                (install-file "lib/libhandlegraph.so" (string-append out "/lib"))
+                (for-each
+                 (lambda (file)
+                   (install-file file (string-append out "/share/man/man1")))
+                 (find-files "doc/man" "\\.1$"))))))
+      #:test-target "test"))
+    (native-inputs
+     (append
+       (if (supported-package? ruby-asciidoctor)
+         (list ruby-asciidoctor)
+         '())
+       (list asciidoc
+             bash-tap
+             bc
+             cmake-minimal
+             ghc-pandoc
+             jq
+             perl
+             pkg-config
+             python
+             samtools
+             util-linux
+             which
+             xxd)))
+    (inputs
+     (list boost
+           cairo
+           curl
+           elfutils
+           fastahack
+           htslib
+           jansson
+           jemalloc
+           libdeflate
+           libdivsufsort
+           ncurses
+           openmpi
+           openssl
+           protobuf
+           raptor2
+           sdsl-lite
+           smithwaterman
+           snappy
+           sparsehash
+           tabixpp
+           vcflib
+           wfa2-lib/cmake
+           zlib
+           (list zstd "lib")))
+    (home-page "https://www.biostars.org/t/vg/")
+    (synopsis "Tools for working with genome variation graphs")
+    (description "Variation graphs provide a succinct encoding of the sequences
+of many genomes.  A variation graph (in particular as implemented in vg) is
+composed of:
+@enumerate
+@item nodes, which are labeled by sequences and ids
+@item edges, which connect two nodes via either of their respective ends
+@item paths, describe genomes, sequence alignments, and annotations (such as
+gene models and transcripts) as walks through nodes connected by edges
+@end enumerate
+This model is similar to sequence graphs that have been used in assembly and
+multiple sequence alignment.")
+    (properties `((release-monitoring-url . "https://github.com/vgteam/vg/releases")
+                  (tunable? . #t)))
+    (license
+      (list
+        license:expat
+        license:bsd-2
+        license:bsd-3
+        license:asl2.0
+        license:gpl3+
+        license:zlib
+        license:boost1.0))))
+
+(define-public bandage-ng
+  (package
+    (name "bandage-ng")
+    (version "2026.4.1")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://github.com/asl/BandageNG")
+                    (commit (string-append "v" version))))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32 "071inw1dd0m430p1qh7w2zdvz7y586hgvhhahwv99016l601ha3c"))))
+    (build-system cmake-build-system)
+    (inputs
+     (list cli11
+           lexy
+           qtbase
+           qtsvg
+           qtwayland
+           (list zstd "lib")))
+    (native-inputs
+     (list pkg-config))
+    (arguments
+     (list
+      #:configure-flags
+      #~(list "-DCMAKE_BUILD_TYPE=Release"
+              "-DFETCHCONTENT_FULLY_DISCONNECTED=ON")
+      #:tests? #f  ; tests require display
+      #:modules '((guix build cmake-build-system)
+                  (guix build utils)
+                  (ice-9 textual-ports))
+      #:phases
+      #~(modify-phases %standard-phases
+          (add-after 'unpack 'use-system-deps
+            (lambda _
+              ;; Use system zlib instead of bundled zlib-ng
+              (substitute* "thirdparty/CMakeLists.txt"
+                (("if \\(CMAKE_OSX_ARCHITECTURES\\)")
+                 "if (TRUE)"))
+              ;; Remove FetchContent block and replace with find_package
+              (use-modules (ice-9 textual-ports))
+              (let ((text (call-with-input-file "CMakeLists.txt"
+                            get-string-all)))
+                ;; Remove lines between "include(FetchContent)" and
+                ;; "FetchContent_MakeAvailable(zstd)" inclusive
+                (let ((start (string-contains text "include(FetchContent)"))
+                      (end-marker "FetchContent_MakeAvailable(zstd)"))
+                  (let ((end (+ (string-contains text end-marker)
+                                (string-length end-marker)
+                                1)))  ; +1 for newline
+                    (call-with-output-file "CMakeLists.txt"
+                      (lambda (out)
+                        (display (substring text 0 start) out)
+                        (display "find_package(lexy REQUIRED)\n" out)
+                        (display "find_package(CLI11 REQUIRED)\n" out)
+                        (display "find_library(ZSTD_LIB zstd REQUIRED)\nfind_path(ZSTD_INCLUDE_DIR zstd.h REQUIRED)\nadd_library(zstd::libzstd_shared SHARED IMPORTED)\nset_target_properties(zstd::libzstd_shared PROPERTIES IMPORTED_LOCATION ${ZSTD_LIB})\ntarget_include_directories(zstd::libzstd_shared INTERFACE ${ZSTD_INCLUDE_DIR})\n" out)
+                        (display (substring text end) out))))))
+              (substitute* "CMakeLists.txt"
+                (("libzstd_static") "zstd::libzstd_shared")
+                (("\\$\\{zstd_SOURCE_DIR\\}/lib") "")))))))
+    (home-page "https://github.com/asl/BandageNG")
+    (synopsis "Visualize de novo assembly graphs")
+    (description "BandageNG is a program for visualising de novo assembly
+graphs.  It extends the original Bandage with new features including support
+for GFA format, annotations, and improved rendering.")
+    (license license:gpl3+)))
+
+(define-public fastix
+  (let ((commit "9f2e721d1afe1d7158d307ef7fc2b9f6c2587ec9")
+        (revision "1"))
+    (package
+      (name "fastix")
+      (version (git-version "0.1.0" revision commit))
+      (source (origin
+                (method git-fetch)
+                (uri (git-reference
+                      (url "https://github.com/ekg/fastix")
+                      (commit commit)))
+                (file-name (git-file-name name version))
+                (sha256
+                 (base32 "1ia4wk22m2c4bmx8p4pzn60va4zb04r022ygfn8k9xmv49a21xqz"))))
     (build-system cargo-build-system)
     (arguments
-     `(#:cargo-inputs
-       (("rust-bstr" ,rust-bstr-0.2)
-        ("rust-clap" ,rust-clap-2)
-        ("rust-gfa" ,rust-gfa-0.6)
-        ("rust-handlegraph" ,rust-handlegraph-0.3)
-        ("rust-rayon" ,rust-rayon-1)
-        ("rust-serde" ,rust-serde-1)
-        ("rust-structopt" ,rust-structopt-0.3))))
-    (home-page "https://github.com/chfi/rs-gfa-utils")
-    (synopsis "Command line tools for working with GFA files")
+     (list #:install-source? #f
+           #:tests? #f  ; test deps not available
+           #:phases
+           #~(modify-phases %standard-phases
+               (add-after 'unpack 'remove-dev-deps
+                 (lambda _
+                   (substitute* "Cargo.toml"
+                     (("\\[dev-dependencies\\]") "[fake-removed]")
+                     (("assert_cmd.*") "")
+                     (("predicates.*") "")))))))
+    (inputs (cargo-inputs 'fastix
+                          #:module '(gn packages pangenome-rust)))
+    (home-page "https://github.com/ekg/fastix")
+    (synopsis "Prefix-renaming FASTA records")
+    (description "A command line tool to add prefixes to FASTA headers,
+supporting pangenomic applications following the PanSN hierarchical naming
+specification.")
+    (license license:expat))))
+
+(define-public rtg-tools
+  (package
+    (name "rtg-tools")
+    (version "3.13")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://github.com/RealTimeGenomics/rtg-tools")
+                    (commit version)))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32 "0smykfqd82zacxhpc16g4vlw4lm4jrakjnkzka811s6p16pcmz5w"))))
+    (build-system ant-build-system)
+    (inputs
+     `(("bash-minimal" ,bash-minimal)
+       ("jdk" ,openjdk11)))
+    (arguments
+     (list
+      #:jdk openjdk11
+      #:build-target "rtg-tools.jar"
+      #:make-flags
+      #~(list (string-append "-Drtg.vcs.commit.revision=" #$version))
+      #:tests? #f  ; tests require internet access and are slow
+      #:phases
+      #~(modify-phases %standard-phases
+          ;; RPlot.jar is corrupt/old format and fails jar indexing
+          (delete 'generate-jar-indices)
+          (replace 'install
+            (lambda _
+              (let* ((out #$output)
+                     (share (string-append out "/share/java/rtg-tools"))
+                     (bin (string-append out "/bin"))
+                     (bash #$(this-package-input "bash-minimal"))
+                     (jdk #$(this-package-input "jdk")))
+                (mkdir-p share)
+                (mkdir-p bin)
+                ;; Install the main jar
+                (install-file "build/rtg-tools.jar" share)
+                ;; Install bundled jar dependencies
+                (for-each (lambda (jar) (install-file jar share))
+                          (find-files "lib" "\\.jar$"))
+                ;; Install a wrapper script
+                (call-with-output-file (string-append bin "/rtg")
+                  (lambda (port)
+                    (format port "#!~a/bin/bash
+CLASSPATH=\"~a/*\"
+exec ~a/bin/java -cp \"$CLASSPATH\" com.rtg.RtgTools \"$@\"
+" bash share jdk)))
+                (chmod (string-append bin "/rtg") #o755)))))))
+    (home-page "https://github.com/RealTimeGenomics/rtg-tools")
+    (synopsis "Tools for VCF file manipulation and comparison")
+    (description "RTG Tools includes utilities for dealing with VCF files and
+sequence data including @code{vcfeval} for variant comparison, sequence data
+simulators, and format conversion utilities.")
+    (license license:bsd-2)))
+
+;; tracepoints is a library-only Rust crate (no CLI binary); its
+;; functionality is exposed via the cigzip tool below.  The crate source
+;; is available as rust-tracepoints-0.1.0.66a5511 in pangenome-rust.scm
+;; for use as a dependency.
+
+(define-public cigzip
+  (let ((commit "b7cc0ed6abb6515a8ad231d47ef90a06a3a491e8")
+        (revision "1"))
+    (package
+      (name "cigzip")
+      (version (git-version "0.1.0" revision commit))
+      (source (origin
+                (method git-fetch)
+                (uri (git-reference
+                      (url "https://github.com/AndreaGuarracino/cigzip")
+                      (commit commit)))
+                (file-name (git-file-name name version))
+                (sha256
+                 (base32 "0kmpwkxk86428z3iva2wx0x0aavqqnx0m2sblpvw5mdd4102xjhx"))))
+      (build-system cargo-build-system)
+      (arguments
+       (list #:install-source? #f
+             ;; Tests require WFA2 C library built in OUT_DIR via build.rs
+             #:tests? #f
+             #:phases
+             #~(modify-phases %standard-phases
+                 (add-before 'build 'copy-ragc-workspace
+                   (lambda* (#:key inputs #:allow-other-keys)
+                     ;; ragc has a workspace Cargo.toml; copy it locally and
+                     ;; point dependents to the ragc-core subdir.
+                     (let ((ragc (assoc-ref inputs
+                                   "rust-ragc-core-0.1.1.40e5cad-checkout")))
+                       (copy-recursively ragc "ragc-workspace"))))
+                 (add-before 'build 'fix-dependency-sources
+                   (lambda _
+                     ;; Rewrite all git deps of cigzip and its vendored
+                     ;; transitive deps to use guix-vendor local paths.
+                     (let ((cargo-tomls
+                            (list "Cargo.toml"
+                                  "guix-vendor/rust-tpa-0.1.0.49f1801-checkout/Cargo.toml"
+                                  "guix-vendor/rust-tracepoints-0.1.0.66a5511-checkout/Cargo.toml")))
+                       (for-each
+                        (lambda (file)
+                          (when (file-exists? file)
+                            (substitute* file
+                              (("git = \"https://github.com/AndreaGuarracino/lib_wfa2\"[^,}]*(, rev = \"[0-9a-f]*\")?")
+                               "path = \"../rust-lib-wfa2-0.1.0.8859b6a-checkout\", version = \"0.1.0\"")
+                              (("git = \"https://github.com/AndreaGuarracino/tracepoints\"[^,}]*(, rev = \"[0-9a-f]*\")?")
+                               "path = \"../rust-tracepoints-0.1.0.66a5511-checkout\", version = \"0.1.0\"")
+                              (("git = \"https://github.com/AndreaGuarracino/tpa\"[^,}]*(, rev = \"[0-9a-f]*\")?")
+                               "path = \"../rust-tpa-0.1.0.49f1801-checkout\", version = \"0.1.0\"")
+                              (("git = \"https://github.com/ekg/ragc\", rev = \"40e5cad\"")
+                               "path = \"ragc-workspace/ragc-core\", version = \"0.1.1\""))))
+                        cargo-tomls)
+                       ;; The top-level Cargo.toml uses "ragc-workspace/ragc-core"
+                       ;; (relative to package root), but vendored Cargo.tomls
+                       ;; have sibling paths via ../
+                       (substitute* "Cargo.toml"
+                         (("path = \"\\.\\./rust-lib-wfa2-0.1.0.8859b6a-checkout\"")
+                          "path = \"guix-vendor/rust-lib-wfa2-0.1.0.8859b6a-checkout\"")
+                         (("path = \"\\.\\./rust-tracepoints-0.1.0.66a5511-checkout\"")
+                          "path = \"guix-vendor/rust-tracepoints-0.1.0.66a5511-checkout\"")
+                         (("path = \"\\.\\./rust-tpa-0.1.0.49f1801-checkout\"")
+                          "path = \"guix-vendor/rust-tpa-0.1.0.49f1801-checkout\"")))))
+                 (add-before 'build 'patch-lib-wfa2-use-system
+                   ;; Replace lib_wfa2 build.rs to link against system
+                   ;; wfa2-lib-static instead of building from submodule.
+                   (lambda _
+                     (let ((wfa2-build "guix-vendor/rust-lib-wfa2-0.1.0.8859b6a-checkout/build.rs"))
+                       (chmod wfa2-build #o644)
+                       (call-with-output-file wfa2-build
+                         (lambda (port)
+                           (display
+                            (string-append
+                             "fn main() {\n"
+                             "    println!(\"cargo:rustc-link-lib=static=wfa\");\n"
+                             "    println!(\"cargo:rustc-link-lib=gomp\");\n"
+                             "    println!(\"cargo:rustc-link-search=native="
+                             #$(file-append wfa2-lib-static "/lib") "\");\n"
+                             "}\n")
+                            port))))
+                     ;; Patch bindings_wfa.rs: cast_signed/cast_unsigned are
+                     ;; unstable until Rust 1.87.
+                     (substitute*
+                         "guix-vendor/rust-lib-wfa2-0.1.0.8859b6a-checkout/src/bindings_wfa.rs"
+                       (("u32::cast_signed\\(self\\._bitfield_1\\.get\\(0usize, 24u8\\) as u32\\)")
+                        "((self._bitfield_1.get(0usize, 24u8) as u32) as i32)")
+                       (("u32::cast_signed\\(<")
+                        "((<")
+                       (("            \\) as u32\\)")
+                        "            ) as u32) as i32)")
+                       (("i32::cast_unsigned\\(val\\)")
+                        "(val as u32)")
+                       (("i32::cast_unsigned\\(_flags2\\)")
+                        "(_flags2 as u32)")))))))
+      (native-inputs (list pkg-config cmake-minimal clang))
+      (inputs (cons* htslib
+                     wfa2-lib-static
+                     zlib
+                     libdeflate
+                     (list zstd "lib")
+                     (cargo-inputs 'cigzip
+                                   #:module '(gn packages pangenome-rust))))
+      (home-page "https://github.com/AndreaGuarracino/cigzip")
+      (synopsis "Compressed alignment representation using tracepoints")
+      (description "cigzip converts between CIGAR strings and tracepoint
+representations for efficient alignment storage, using adaptive tracepoints
+that segment based on local alignment complexity.")
+      (license license:expat))))
+
+(define-public gfalook
+  (let ((commit "5199d77ecc4980b181177c16b94f6e56c0d06e4c")
+        (revision "1"))
+    (package
+      (name "gfalook")
+      (version (git-version "0.1.0" revision commit))
+      (source (origin
+                (method git-fetch)
+                (uri (git-reference
+                      (url "https://github.com/pangenome/gfalook")
+                      (commit commit)))
+                (file-name (git-file-name name version))
+                (sha256
+                 (base32 "0138abzw0x2fy94k09vi740am8haby2030mi03cl0gzjnf39q5cq"))))
+      (build-system cargo-build-system)
+      (arguments
+       (list #:install-source? #f
+             ;; No tests in crate (0 unit tests).
+             #:tests? #f
+             #:phases
+             #~(modify-phases %standard-phases
+                 (add-after 'unpack 'reduce-image-features
+                   (lambda _
+                     ;; Only PNG output is used; disable other image formats to
+                     ;; reduce heavy transitive dependency tree.
+                     (substitute* "Cargo.toml"
+                       (("image = \"0\\.25\"")
+                        "image = { version = \"0.25\", default-features = false, features = [\"png\"] }")))))))
+      (inputs (cargo-inputs 'gfalook
+                            #:module '(gn packages pangenome-rust)))
+      (home-page "https://github.com/pangenome/gfalook")
+      (synopsis "GFA visualization tool")
+      (description "gfalook is a Rust reimplementation of odgi viz,
+producing PNG and SVG visualizations of pangenome graphs in GFA format.")
+      (license license:expat))))
+
+(define-public pafplot
+  (let ((commit "2785b0ef30d37300afc77fd4b04d1d949c143551")
+        (revision "1"))
+    (package
+      (name "pafplot")
+      (version (git-version "0.1.0" revision commit))
+      (source (origin
+                (method git-fetch)
+                (uri (git-reference
+                      (url "https://github.com/ekg/pafplot")
+                      (commit commit)))
+                (file-name (git-file-name name version))
+                (sha256
+                 (base32 "0aisssmmss4jxgnv04qk5gbnzzbzvakkcdr03swps3f1x22rfqdn"))))
+      (build-system cargo-build-system)
+      (arguments
+       (list #:install-source? #f))
+      (inputs (cargo-inputs 'pafplot
+                            #:module '(gn packages pangenome-rust)))
+      (home-page "https://github.com/ekg/pafplot")
+      (synopsis "Base-level dotplots from PAF alignments")
+      (description "pafplot renders whole-genome alignments in PAF format as
+raster dotplot images, drawing lines for each match to visualize homology
+between sequences.")
+      (license license:expat))))
+
+(define-public agc
+  (package
+    (name "agc")
+    (version "2.1")
+    (source
+      (origin
+        (method git-fetch)
+        (uri (git-reference
+               (url "https://github.com/refresh-bio/agc")
+               (commit (string-append "v" version))))
+        (file-name (git-file-name name version))
+        (sha256
+         (base32 "0qxrs52lnbm2296b15k1x7dgffv66chac16s7qalp8x0clyfnjgm"))
+        (snippet
+         #~(begin
+             (use-modules (guix build utils))
+             (substitute* "makefile"
+               (("-mavx") "")
+               (("-m64") ""))))))
+    (build-system gnu-build-system)
+    (arguments
+     (list
+      #:tests? #f  ; no test target
+      #:make-flags
+      #~(list (string-append "CC=" #$(cxx-for-target))
+              "agc")
+      #:phases
+      #~(modify-phases %standard-phases
+          (delete 'configure)
+          (add-after 'unpack 'fix-missing-includes
+            (lambda _
+              (substitute* (find-files "src" "\\.(h|cpp)$")
+                (("#include <vector>" all)
+                 (string-append "#include <cstdint>\n" all)))))
+          (replace 'install
+            (lambda _
+              (install-file "agc" (string-append #$output "/bin")))))))
+    (home-page "https://github.com/refresh-bio/agc")
+    (synopsis "Assembled Genomes Compressor")
     (description
-     "This package provides command line tools for working with @acronym{GFA,
-Graphical Fragment Assembly} files and related formats.")
+     "AGC is a tool designed to compress collections of de-novo assembled
+genomes.  It achieves high compression ratios using a reference-based approach
+and can be used for various types of datasets from short viral genomes to
+long human genomes.")
+    (license license:expat)))
+
+(define-public pangenomes
+  (package
+    (name "pangenomes")
+    (version "1.0")
+    (source #f)
+    (build-system trivial-build-system)
+    (arguments
+     (list #:modules '((guix build utils))
+           #:builder
+           #~(begin
+               (use-modules (guix build utils))
+               (mkdir-p (string-append #$output "/bin")))))
+    (propagated-inputs
+     (list agc
+           bandage-ng
+           bedtools
+           bwa-mem2
+           cigzip
+           cosigt
+           fastga-rs
+           gafpack
+           gfalook
+           gfaffix
+           gfainject
+           gfautil
+           htslib
+           impg
+           kfilt
+           meryl
+           minimap2
+           miniprot
+           odgi
+           pafplot
+           pangene
+           pggb
+           samtools
+           seqwish
+           smoothxg
+           vcfbub
+           vcflib
+           vg
+           wally
+           wfmash-0.14))
+    (home-page "https://github.com/pangenome")
+    (synopsis "Pangenome tools collection")
+    (description "Meta package that provides the main pangenome tools:
+wfmash, seqwish, smoothxg, odgi, pggb, impg, gfainject, gafpack, cosigt,
+and supporting tools like minimap2, samtools, bedtools, bwa-mem2, meryl,
+kfilt, miniprot, pangene, wally, and vcfbub.")
+    (license license:expat)))
+
+(define-public mempang-workshop
+  (package
+    (name "mempang-workshop")
+    (version "1.0")
+    (source #f)
+    (build-system trivial-build-system)
+    (arguments
+     (list #:modules '((guix build utils))
+           #:builder
+           #~(begin
+               (use-modules (guix build utils))
+               (mkdir-p (string-append #$output "/bin")))))
+    (propagated-inputs
+     (list pangenomes
+           bc
+           bcftools
+           coreutils
+           fastix
+           gawk
+           gnuplot
+           graphviz
+           grep
+           gzip
+           multiqc
+           mummer
+           pafplot
+           parallel
+           pigz
+           python
+           python-igraph
+           python-pycairo
+           rtg-tools
+           r-minimal
+           sed
+           r-ape
+           r-data-table
+           r-gggenes
+           r-ggplot2
+           r-ggtree
+           r-tidyverse
+           wget
+           which
+           zstd))
+    (home-page "https://github.com/pangenome")
+    (synopsis "MEMPANG pangenome workshop tools")
+    (description "Meta package for the MEMPANG pangenome workshop.  Includes
+all pangenome tools plus R with plotting packages (ggplot2, gggenes, ape,
+ggtree, tidyverse) and supporting utilities (wget, zstd).")
     (license license:expat)))
diff --git a/gn/packages/patches/python-unittest2-python3-compat.patch b/gn/packages/patches/python-unittest2-python3-compat.patch
deleted file mode 100644
index 68fbcca..0000000
--- a/gn/packages/patches/python-unittest2-python3-compat.patch
+++ /dev/null
@@ -1,46 +0,0 @@
-Skip tests that fail with newer versions of Python.
-
-Patch copied from Gentoo:
-
-https://gitweb.gentoo.org/repo/gentoo.git/tree/dev-python/unittest2/files/unittest2-1.1.0-python3.5-test.patch
-
-diff --git a/unittest2/test/test_loader.py b/unittest2/test/test_loader.py
-index 683f662..347eea5 100644
---- a/unittest2/test/test_loader.py
-+++ b/unittest2/test/test_loader.py
-@@ -509,6 +509,7 @@ class Test_TestLoader(unittest2.TestCase):
-     #
-     # What happens when an impossible name is given, relative to the provided
-     # `module`?
-+    @unittest.skipIf(sys.version_info[:2] >= (3, 5), "python 3.5 has problems here")
-     def test_loadTestsFromName__relative_malformed_name(self):
-         loader = unittest.TestLoader()
- 
-@@ -811,6 +812,7 @@ class Test_TestLoader(unittest2.TestCase):
-     # TestCase or TestSuite instance."
-     #
-     # What happens when presented with an impossible module name?
-+    @unittest.skipIf(sys.version_info[:2] >= (3, 5), "python 3.5 has problems here")
-     def test_loadTestsFromNames__malformed_name(self):
-         loader = unittest2.TestLoader()
- 
-@@ -918,6 +920,7 @@ class Test_TestLoader(unittest2.TestCase):
-     # "The method optionally resolves name relative to the given module"
-     #
-     # What happens when presented with an impossible attribute name?
-+    @unittest.skipIf(sys.version_info[:2] >= (3, 5), "python 3.5 has problems here")
-     def test_loadTestsFromNames__relative_malformed_name(self):
-         loader = unittest.TestLoader()
- 
-diff --git a/unittest2/compatibility.py b/unittest2/compatibility.py
-index 9e5f1a5..2d20c19 100644
---- a/unittest2/compatibility.py
-+++ b/unittest2/compatibility.py
-@@ -140,6 +140,6 @@ except ImportError:
- ###  ChainMap (helper for configparser and string.Template)
- ########################################################################
- 
--class ChainMap(collections.MutableMapping):
-+class ChainMap(collections.abc.MutableMapping):
-     ''' A ChainMap groups multiple dicts (or other mappings) together
-     to create a single, updateable view.
diff --git a/gn/packages/patches/python-unittest2-remove-argparse.patch b/gn/packages/patches/python-unittest2-remove-argparse.patch
deleted file mode 100644
index c967387..0000000
--- a/gn/packages/patches/python-unittest2-remove-argparse.patch
+++ /dev/null
@@ -1,11 +0,0 @@
---- a/setup.py	2017-09-12 01:22:06.273997788 +0200
-+++ b/setup.py	2017-09-12 01:22:14.297918757 +0200
-@@ -57,7 +57,7 @@
- # Both install and setup requires - because we read VERSION from within the
- # package, and the package also exports all the APIs.
- # six for compat helpers
--REQUIRES = ['argparse', 'six>=1.4', 'traceback2'],
-+REQUIRES = ['six>=1.4', 'traceback2'],
- 
- params = dict(
-     name=NAME,
diff --git a/gn/packages/phewas.scm b/gn/packages/phewas.scm
index e6e749c..3bfeeaa 100644
--- a/gn/packages/phewas.scm
+++ b/gn/packages/phewas.scm
@@ -42,37 +42,6 @@
   #:use-module (gnu packages xml)
   #:use-module (srfi srfi-1))
 
-(define-public r-intermediate
-  (let ((commit "1e4ec77a92889f7548da766cb28abab18df952dc"))
-  (package
-    (name "r-intermediate")
-    (version "0.2-4")
-    (source (origin
-              ;; We use the git reference, because there's no CRAN package (yet)
-              (method git-fetch)
-              (uri (git-reference
-                    (url "https://github.com/simecek/intermediate.git")
-                    (commit commit)))
-              (file-name (string-append name "-" (string-take commit 7) "-checkout" ))
-              (sha256
-               (base32
-                "0l7acxmizw8az37365z4gr9wc6ny9d4zx3q42dgvp04yyzwafbr8"))))
-    (build-system r-build-system)
-    ; (propagated-inputs
-                                        ; `(("r-emma" ,r-emma)))
-    (inputs
-     `(("r-ggplot2" ,r-ggplot2)
-       ("r-magrittr" ,r-magrittr)
-       ("r-plotly" ,r-plotly)
-       ("r-htmlwidgets" ,r-htmlwidgets)
-       ("r-testthat" ,r-testthat)))
-    (synopsis "R/intermediate")
-    (description
-     "R package for eQTl/pQTL mediation analysis.")
-    (home-page "https://github.com/simecek/intermediate")
-    (license license:gpl3))))
-
-
 (define-public r-mlmm
   (let ((commit "9fec9805573e97b44ee121f3651ddb79eafc8f8d"))
   (package
@@ -98,52 +67,6 @@ genome-wide association studies in structured populations.")
     (home-page "https://github.com/Gregor-Mendel-Institute/mlmm")
     (license license:gpl3))))
 
-(define-public r-fastmatch
-(package
-  (name "r-fastmatch")
-  (version "1.1-0")
-  (source
-    (origin
-      (method url-fetch)
-      (uri (cran-uri "fastmatch" version))
-      (sha256
-        (base32
-          "0z80jxkygmzn11sq0c2iz357s9bpki548lg926g85gldhfj1md90"))))
-  (build-system r-build-system)
-  (home-page "http://www.rforge.net/fastmatch")
-  (synopsis "Fast match() function")
-  (description
-    "Package providing a fast match() replacement for cases that require repeated look-ups.  It is slightly faster that R's built-in match() function on first match against a table, but extremely fast on any subsequent lookup as it keeps the hash table in memory.")
-  (license license:gpl2)))
-
-(define-public r-fgsea
-  (package
-    (name "r-fgsea")
-    (version "1.4.1")
-    (source
-     (origin
-       (method url-fetch)
-       (uri (bioconductor-uri "fgsea" version))
-       (sha256
-        (base32
-         "187c8xckx0s1p19i85nsiapgb3mppjqxp7zyld5hqyjvw3zcdj50"))))
-    (build-system r-build-system)
-    ; (native-inputs
-                                        ;  `(("gfortran" ,gfortran)))
-    ; ‘Rcpp’, ‘data.table’, ‘BiocParallel’, ‘ggplot2’, ‘gridExtra’, ‘fastmatch
-    (propagated-inputs
-     `(("r-rcpp" ,r-rcpp)
-       ("r-data-table" ,r-data-table)
-       ("r-biocparallel" ,r-biocparallel)
-       ("r-ggplot2" ,r-ggplot2)
-       ("r-gridextra" ,r-gridextra)
-       ("r-fastmatch" ,r-fastmatch)))
-    (home-page "http://bioconductor.org/packages/fgsea")
-    (synopsis "")
-    (description
-     ".")
-    (license license:expat)))
-
 (define-public r-qvalue-old
   (package
     (name "r-qvalue-old")
@@ -165,39 +88,3 @@ genome-wide association studies in structured populations.")
      ".")
     (license license:expat)))
 
-(define-public r-phewas ; GN2
-  (package
-   (name "r-phewas")
-   (version "0.0.0-1")
-   (source #f)
-   (build-system trivial-build-system)
-   (propagated-inputs
-    `(
-      ("r" ,r)
-      ("r-data-table" ,r-data-table)
-      ; ("r-emma" ,r-emma)
-      ("r-fgsea" ,r-fgsea)
-      ("r-intermediate" ,r-intermediate)
-      ("r-limma" ,r-limma)
-      ("r-mlmm" ,r-mlmm)
-      ("r-qvalue" ,r-qvalue)
-    ))
-    (arguments
-     `(; #:guile ,%bootstrap-guile
-       #:modules ((guix build utils))
-       #:builder
-         (let* ((out  (assoc-ref %outputs "out"))
-                (bash (assoc-ref %build-inputs "bash"))
-                (foo  (string-append out "/foo")))
-           (begin
-             (use-modules (guix build utils))
-             (mkdir out)
-             #t))))
-
-   (home-page
-    "None")
-   (synopsis
-    "None")
-   (description
-    "None.")
-   (license license:gpl2+)))
diff --git a/gn/packages/php.scm b/gn/packages/php.scm
deleted file mode 100644
index 71ead8d..0000000
--- a/gn/packages/php.scm
+++ /dev/null
@@ -1,232 +0,0 @@
-(define-module (gn packages php)
-  #:use-module (gnu packages)
-  #:use-module (past packages tls)
-  #:use-module (gnu packages pcre)
-  #:use-module (gnu packages php)
-  ; #:use-module (gnu packages tls)
-  #:use-module (gnu packages xml)
-  #:use-module (guix packages)
-  #:use-module (guix download)
-  #:use-module (guix utils)
-  #:use-module (srfi srfi-1))
-
-;; This package is EOL as of January 2019.
-(define-public php-5.6
-  (package
-    (inherit php)
-    (name "php")
-    (version "5.6.40")
-    (home-page "https://secure.php.net/")
-    (source (origin
-              (method url-fetch)
-              (uri (string-append home-page "distributions/"
-                                  "php-" version ".tar.xz"))
-              (sha256
-               (base32
-                "073dcpiaq89b0nv9a5andlkhwxhpr5f2wd65s7xxg59rxqgaas8k"))))
-    (arguments
-     `(#:configure-flags
-       (let-syntax ((with (syntax-rules ()
-                            ((_ option input)
-                             (string-append option "="
-                                            (assoc-ref %build-inputs input))))))
-         (list (with "--with-bz2" "bzip2")
-               (with "--with-curl" "curl")
-               (with "--with-gdbm" "gdbm")
-               (with "--with-gettext" "glibc") ; libintl.h
-               (with "--with-gmp" "gmp")
-               (with "--with-ldap" "openldap")
-               (with "--with-ldap-sasl" "cyrus-sasl")
-               (with "--with-libxml-dir" "libxml2")
-               (with "--with-openssl-dir" "openssl")
-               (with "--with-pdo-pgsql" "postgresql")
-               (with "--with-pdo-sqlite" "sqlite")
-               (with "--with-pgsql" "postgresql")
-               ;; PHP’s Pspell extension, while retaining its current name,
-               ;; now uses the Aspell library.
-               (with "--with-pspell" "aspell")
-               (with "--with-readline" "readline")
-               (with "--with-sqlite3" "sqlite")
-               (with "--with-tidy" "tidy")
-               (with "--with-xsl" "libxslt")
-               (with "--with-zlib-dir" "zlib")
-               ;; We could add "--with-snmp", but it requires netsnmp that
-               ;; we don't have a package for. It is used to build the snmp
-               ;; extension of php.
-               "--with-external-pcre"
-               "--with-external-gd"
-               "--with-iconv"
-               "--with-openssl"
-               "--with-mysqli"          ; Required for, e.g. wordpress
-               "--with-pdo-mysql"
-               "--with-zip"
-               "--with-zlib"
-               "--enable-bcmath"        ; Required for, e.g. Zabbix frontend
-               ;"--enable-calendar"
-               "--enable-dba=shared"
-               "--enable-exif"
-               "--enable-flatfile"
-               "--enable-fpm"
-               "--enable-ftp"
-               "--enable-inifile"
-               ;"--enable-intl"
-               "--enable-mbstring"
-               "--enable-pcntl"
-               "--enable-sockets"))
-       #:phases
-       (modify-phases %standard-phases
-         (add-after 'unpack 'do-not-record-build-flags
-           (lambda _
-             ;; Prevent configure flags from being stored and causing
-             ;; unnecessary runtime dependencies.
-             (substitute* "scripts/php-config.in"
-               (("@CONFIGURE_OPTIONS@") "")
-               (("@PHP_LDFLAGS@") ""))
-             ;; This file has ISO-8859-1 encoding.
-             (with-fluids ((%default-port-encoding "ISO-8859-1"))
-               (substitute* "main/build-defs.h.in"
-                 (("@CONFIGURE_COMMAND@") "(omitted)")))
-             #t))
-         (add-before 'build 'patch-/bin/sh
-           (lambda _
-             (substitute* '("run-tests.php" "ext/standard/proc_open.c")
-               (("/bin/sh") (which "sh")))
-             #t))
-         (add-before 'check 'prepare-tests
-           (lambda _
-             ;; Some of these files have ISO-8859-1 encoding, whereas others
-             ;; use ASCII, so we can't use a "catch-all" find-files here.
-             (with-fluids ((%default-port-encoding "ISO-8859-1"))
-               (substitute* '("ext/mbstring/tests/mb_send_mail02.phpt"
-                              "ext/mbstring/tests/mb_send_mail04.phpt"
-                              "ext/mbstring/tests/mb_send_mail05.phpt"
-                              "ext/mbstring/tests/mb_send_mail06.phpt")
-                 (("/bin/cat") (which "cat"))))
-             (substitute* '("ext/mbstring/tests/mb_send_mail01.phpt"
-                            "ext/mbstring/tests/mb_send_mail03.phpt"
-                            "ext/standard/tests/general_functions/bug34794.phpt"
-                            "ext/standard/tests/general_functions/bug44667.phpt"
-                            "ext/standard/tests/general_functions/proc_open.phpt")
-               (("/bin/cat") (which "cat")))
-
-             ;; The encoding of this file is not recognized, so we simply drop it.
-             (delete-file "ext/mbstring/tests/mb_send_mail07.phpt")
-
-             (substitute* "ext/standard/tests/streams/bug60602.phpt"
-               (("'ls'") (string-append "'" (which "ls") "'")))
-
-             ,@(if (string-prefix? "arm" (or (%current-system)
-                                             (%current-target-system)))
-                   ;; Drop tests known to fail on armhf.
-                   '((for-each delete-file
-                              (list
-                                "ext/calendar/tests/unixtojd_error1.phpt"
-                                ;; arm can be a lot slower, so a time-related test fails
-                                "ext/fileinfo/tests/cve-2014-3538-nojit.phpt"
-                                "ext/pcre/tests/bug76514.phpt"
-                                "ext/pcre/tests/preg_match_error3.phpt"
-                                "ext/standard/tests/general_functions/var_export-locale.phpt"
-                                "ext/standard/tests/general_functions/var_export_basic1.phpt"
-                                "ext/intl/tests/timezone_getErrorCodeMessage_basic.phpt"
-                                "ext/intl/tests/timezone_getOffset_error.phpt")))
-                   '())
-
-             ;; Drop tests that are known to fail.
-             (for-each delete-file
-                       '("ext/posix/tests/posix_getgrgid.phpt"    ; Requires /etc/group.
-                         "ext/sockets/tests/bug63000.phpt"        ; Fails to detect OS.
-                         "ext/sockets/tests/socket_shutdown.phpt" ; Requires DNS.
-                         "ext/sockets/tests/socket_send.phpt"     ; Likewise.
-                         "ext/sockets/tests/mcast_ipv4_recv.phpt" ; Requires multicast.
-                         ;; These needs /etc/services.
-                         "ext/standard/tests/general_functions/getservbyname_basic.phpt"
-                         "ext/standard/tests/general_functions/getservbyport_basic.phpt"
-                         "ext/standard/tests/general_functions/getservbyport_variation1.phpt"
-                         ;; And /etc/protocols.
-                         "ext/standard/tests/network/getprotobyname_basic.phpt"
-                         "ext/standard/tests/network/getprotobynumber_basic.phpt"
-                         ;; And exotic locales.
-                         "ext/standard/tests/strings/setlocale_basic1.phpt"
-                         "ext/standard/tests/strings/setlocale_basic2.phpt"
-                         "ext/standard/tests/strings/setlocale_basic3.phpt"
-                         "ext/standard/tests/strings/setlocale_variation1.phpt"
-
-                         ;; XXX: These iconv tests have the expected outcome,
-                         ;; but with different error messages.
-                         ;; Expects "illegal character", instead gets "unknown error (84)".
-                         "ext/iconv/tests/bug52211.phpt"
-                         ;; Expects "wrong charset", gets unknown error (22).
-                         "ext/iconv/tests/iconv_strlen_error2.phpt"
-                         "ext/iconv/tests/iconv_substr_error2.phpt"
-                         ;; Expects conversion error, gets "error condition Termsig=11".
-                         "ext/iconv/tests/iconv_strpos_error2.phpt"
-                         "ext/iconv/tests/iconv_strrpos_error2.phpt"
-                         ;; Expects "invalid multibyte sequence" but got
-                         ;; "unknown error".
-                         "ext/iconv/tests/bug76249.phpt"
-
-                         ;; Expects a false boolean, gets empty array from glob().
-                         "ext/standard/tests/file/bug41655_1.phpt"
-                         "ext/standard/tests/file/glob_variation5.phpt"
-                         ;; Expects iconv to detect illegal characters, instead gets
-                         ;; "unknown error (84)" and heap corruption(!).
-                         "ext/iconv/tests/bug48147.phpt"
-                         ;; Expects illegal character ".", gets "=?utf-8?Q?."
-                         "ext/iconv/tests/bug51250.phpt"
-                         ;; iconv throws "buffer length exceeded" on some string checks.
-                         "ext/iconv/tests/iconv_mime_encode.phpt"
-                         ;; file_get_contents(): iconv stream filter
-                         ;; ("ISO-8859-1"=>"UTF-8") unknown error.
-                         "ext/standard/tests/file/bug43008.phpt"
-                         ;; Table data not created in sqlite(?).
-                         "ext/pdo_sqlite/tests/bug_42589.phpt"
-
-                         ;; These tests are specifically added for php-5.6.40
-                         ;;DBA INIFILE handler test
-                         "ext/dba/tests/dba_inifile.phpt"
-                         ;;Testing ftp_nb_fget resume parameter
-                         "ext/ftp/tests/ftp_nb_fget_basic3.phpt"
-                         ;;Test iconv_mime_decode() function : usage variations - Pass different data types to charset arg
-                         "ext/iconv/tests/iconv_mime_decode_variation3.phpt"
-                         ;;Test iconv_strlen() function : usage variations - Pass different data types as $encoding arg
-                         "ext/iconv/tests/iconv_strlen_variation2.phpt"
-                         ;;Test iconv_strpos() function : usage variations - pass different data types as $charset arg
-                         "ext/iconv/tests/iconv_strpos_variation4.phpt"
-                         ;;Test iconv_strrpos() function : usage variations - pass different data types as $encoding arg
-                         "ext/iconv/tests/iconv_strrpos_variation3.phpt"
-                         ;;Bug #52681 (mb_send_mail() appends an extra MIME-Version header)
-                         "ext/mbstring/tests/bug52861.phpt"
-                         ;;SimpleXML: XPath
-                         "ext/simplexml/tests/008.phpt"
-                         ;;substr_compare()
-                         "ext/standard/tests/strings/substr_compare.phpt"
-                         ;;Bug #64230 (XMLReader does not suppress errors)
-                         "ext/xmlreader/tests/bug64230.phpt"
-                         ;; unable to connect to qa.php.net:80
-                         "ext/dom/tests/dom005.phpt"
-                         ;;openssl_error_string() tests
-                         "ext/openssl/tests/openssl_error_string_basic.phpt"
-                         ;;Bug #61948 (CURLOPT_COOKIEFILE '' raises open_basedir restriction)
-                         "ext/curl/tests/bug61948.phpt"
-                         ;;Bug #64267 (CURLOPT_INFILE doesn't allow reset)
-                         "ext/curl/tests/bug64267.phpt"
-                         ;;Test curl_error() & curl_errno() function with problematic proxy
-                         "ext/curl/tests/curl_basic_010.phpt"
-                         ;;Test 10: EXSLT Support
-                         "ext/xsl/tests/xslt010.phpt"))
-
-             ;; Skip tests requiring network access.
-             (setenv "SKIP_ONLINE_TESTS" "1")
-             ;; Without this variable, 'make test' passes regardless of failures.
-             (setenv "REPORT_EXIT_STATUS" "1")
-             ;; Skip tests requiring I/O facilities that are unavailable in the
-             ;; build environment
-             (setenv "SKIP_IO_CAPTURE_TESTS" "1")
-             #t)))
-       #:test-target "test"))
-    (inputs
-     `(,@(fold alist-delete (package-inputs php)
-               '("openssl" "pcre"))
-       ("libxml2" ,libxml2)
-       ("openssl" ,openssl-1.0)
-       ("pcre" ,pcre)))))
diff --git a/gn/packages/python-build.scm b/gn/packages/python-build.scm
new file mode 100644
index 0000000..445a674
--- /dev/null
+++ b/gn/packages/python-build.scm
@@ -0,0 +1,68 @@
+(define-module (gn packages python-build)
+ #:use-module (guix gexp)
+ #:use-module (guix packages)
+ #:use-module (guix git-download)
+ #:use-module (guix build-system python)
+ #:use-module (guix build-system pyproject)
+ #:use-module ((guix licenses) #:prefix license:)
+
+ #:use-module (gnu packages check)
+ #:use-module (gnu packages rust-apps)
+ #:use-module (gnu packages python-xyz)
+ #:use-module (gnu packages python-check)
+ #:use-module (gnu packages python-build))
+
+(define-public python-build
+  (package
+    (name "python-build")
+    (version "1.4.0")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+              (url "https://github.com/pypa/build")
+              (commit version)))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32 "107hhzjrlj56gshcyalf4laf741swmmaznlz0xcfv8rvpwa81mm2"))))
+    (build-system pyproject-build-system)
+    (native-inputs
+     (list uv
+           python-tox
+           python-pip
+           python-wheel
+           python-tomli
+           python-pytest
+           python-filelock
+           python-colorama
+           python-flit-core
+           python-packaging
+           python-pytest-cov
+           python-setuptools
+           python-virtualenv
+           python-pytest-mock
+           python-pytest-xdist
+           python-pyproject-hooks
+           python-importlib-metadata
+           python-pytest-rerunfailures))
+    (arguments
+     (list #:phases
+           #~(modify-phases %standard-phases
+               (add-before 'build 'set-env
+                 (lambda _
+                   ;; When running tests, things fail because HOME=/homeless-shelter.
+                   (setenv "HOME" "/tmp")))
+               (add-before 'check 'patch-tests
+                 (lambda* (#:key inputs #:allow-other-keys)
+                   (substitute* "tests/test_env.py"
+	             ((", path=sysconfig.get_path\\(\"scripts\"\\)") "")))))
+
+           ;; Cheat by deactivating tests for now.
+           #:tests? #f))
+    (home-page "https://build.pypa.io/")
+    (synopsis "A simple, correct Python packaging build frontend")
+    (description "A simple, correct Python packaging build frontend.
+ build manages pyproject.toml-based builds, invoking build-backend hooks as
+ appropriate to build a distribution package. It is a simple build tool and does
+ not perform any dependency management.")
+    (license license:expat)))
diff --git a/gn/packages/python-xyz.scm b/gn/packages/python-xyz.scm
new file mode 100644
index 0000000..2451d46
--- /dev/null
+++ b/gn/packages/python-xyz.scm
@@ -0,0 +1,135 @@
+(define-module (gn packages python-xyz)
+  #:use-module (guix packages)
+  #:use-module (guix download)
+  #:use-module (guix git-download)
+  #:use-module (guix build-system python)
+  #:use-module (guix build-system pyproject)
+  #:use-module ((guix licenses) #:prefix license:)
+
+  #:use-module (gnu packages check)
+  #:use-module (gnu packages sphinx)
+  #:use-module (gnu packages python-web)
+  #:use-module (gnu packages python-xyz)
+  #:use-module (gnu packages python-check)
+  #:use-module (gnu packages python-build))
+
+(define-public python-mslex
+  (package
+    (name "python-mslex")
+    (version "1.3.0")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/smoofra/mslex")
+             (commit (string-append "v" version))))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32 "1k7p2yzsiga39kmcp440mgxlgsahg01il7jrbr8mc94k60wzmgdy"))))
+    (build-system pyproject-build-system)
+    (native-inputs (list python-setuptools python-wheel))
+    (inputs (list python-tox
+                  python-trio
+                  python-tqdm
+                  python-twine
+                  python-black
+                  python-flake8
+                  python-sphinx
+                  python-pytest
+                  python-watchdog
+                  python-coverage
+                  python-bump2version
+                  python-types-setuptools))
+    (home-page "https://github.com/smoofra/mslex")
+    (synopsis "shlex for windows")
+    (description "shlex for windows.")
+    (license license:asl2.0)))
+
+
+(define-public python-oslex
+  (package
+    (name "python-oslex")
+    (version "0.1.3")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (pypi-uri "oslex" version))
+       (sha256
+        (base32 "0bazd0vk2lzsk7cwgl2m669m6dqqhh4l0d6sn2yaiwjxqy1cvm0y"))))
+    (build-system pyproject-build-system)
+    (propagated-inputs (list python-mslex))
+    (native-inputs (list python-hatchling))
+    (home-page "https://github.com/petamas/oslex")
+    (synopsis "OS-independent wrapper for shlex and mslex")
+    (description "OS-independent wrapper for shlex and mslex.")
+    (license license:expat)))
+
+
+(define-public python-annotated-doc
+  (package
+    (name "python-annotated-doc")
+    (version "0.0.4")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/fastapi/annotated-doc")
+             (commit version)))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32 "13fh58q1a8kvrx1kjgr6qmd09jhikxc7wlyccajpfz657ipjif9v"))))
+    (build-system pyproject-build-system)
+    (native-inputs (list python-pdm-backend))
+    (home-page "https://github.com/fastapi/annotated-doc")
+    (synopsis
+     "Document parameters, class attributes, return types, and variables inline, with Annotated.")
+    (description
+     "Document parameters, class attributes, return types, and variables inline, with
+Annotated.")
+    (license license:expat)))
+
+
+(define-public python-backoff
+  (package
+    (name "python-backoff")
+    (version "2.2.1")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/litl/backoff")
+             (commit (string-append "v" version))))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32 "0cpfd8fdznwlxrjpwy10pl4bj9q393ys1vj90nvsrhwakqcdiil3"))))
+    (build-system pyproject-build-system)
+    (arguments
+     (list
+      #:tests? #f)) ; needs python-pytest-asyncio >= 0.21
+    (native-inputs (list python-poetry-core))
+    (home-page "https://github.com/litl/backoff")
+    (synopsis "Function decoration for backoff and retry")
+    (description "Function decoration for backoff and retry.")
+    (license license:expat)))
+
+
+(define-public python-typing-inspection
+  (package
+    (name "python-typing-inspection")
+    (version "0.4.2")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/pydantic/typing-inspection")
+             (commit (string-append "v" version))))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32 "1dqib4arxxaxwyapw6y4pcvm38l8djkhd8cfr149w42bw4xrqr38"))))
+    (build-system pyproject-build-system)
+    (propagated-inputs (list python-typing-extensions))
+    (native-inputs (list python-hatchling))
+    (home-page "https://github.com/pydantic/typing-inspection")
+    (synopsis "Runtime typing introspection tools")
+    (description "Runtime typing introspection tools.")
+    (license license:expat)))
diff --git a/gn/packages/python.scm b/gn/packages/python.scm
index e429058..1aabf8d 100644
--- a/gn/packages/python.scm
+++ b/gn/packages/python.scm
@@ -33,7 +33,6 @@
   #:use-module (gnu packages statistics)
   #:use-module (gnu packages tcl)
   #:use-module (gnu packages time)
-  #:use-module (past packages python27)
   #:use-module (guix packages)
   #:use-module (guix download)
   #:use-module (guix git-download)
@@ -42,57 +41,7 @@
   #:use-module (guix utils)
   #:use-module (guix build-system pyproject)
   #:use-module (guix build-system python)
-  #:use-module (srfi srfi-1)
-  #:use-module (gn packages check))
-
-(define-public python-rpy2-2.9
-  (package
-    (inherit python-rpy2)
-    (name "python-rpy2")
-    (version "2.9.6b0")
-    (source
-     (origin
-       (method url-fetch)
-       (uri (pypi-uri "rpy2" version))
-       (sha256
-        (base32
-         "1vqgw42a51l162gyg8qbx1xakxbj29riyb6azzv89f260w865k0d"))))
-        (arguments
-         `(#:tests? #f))))
-
-(define-public python2-rpy2
-  (package
-    (name "python2-rpy2")
-    (version "2.7.6")
-    (source
-     (origin
-       (method url-fetch)
-       (uri (pypi-uri "rpy2" version))
-       (sha256
-        (base32
-         "0nhan2qvrw7b7gg5zddwa22kybdv3x1g26vkd7q8lvnkgzrs4dga"))))
-    (build-system python-build-system)
-    (arguments
-     `(#:python ,python-2 ; apparently incompatible with Python 3
-       #:tests? #f))
-    (propagated-inputs
-     `(("python2-six" ,python2-six)
-       ("python2-singledispatch" ,python2-singledispatch)))
-    (inputs
-     `(("readline" ,readline)
-       ("icu4c" ,icu4c)
-       ("pcre" ,pcre)
-       ("r-minimal" ,r-minimal)
-       ("r-survival" ,r-survival)))
-    (native-inputs
-     `(("zlib" ,zlib)))
-    (home-page "http://rpy.sourceforge.net/")
-    (synopsis "Python interface to the R language")
-    (description "rpy2 is a redesign and rewrite of rpy.  It is providing a
-low-level interface to R from Python, a proposed high-level interface,
-including wrappers to graphical libraries, as well as R-like structures and
-functions.")
-    (license license:gpl3+)))
+  #:use-module (srfi srfi-1))
 
 (define-public python-subprocess32 ; guix candidate
   (package
@@ -115,489 +64,6 @@ functions.")
     (license license:gpl2))
 )
 
-(define-public python-inotify ; guix candidate
-(package
-  (name "python-inotify")
-  (version "0.2.9")
-  (source
-    (origin
-      (method url-fetch)
-      (uri (pypi-uri "inotify" version))
-      (sha256
-        (base32
-          "043sbm9q8ca4fhn19knwpsxgzfgm5ik75m0bl7dp9hjy6p3v3zzn"))))
-  (build-system python-build-system)
-  (propagated-inputs
-      `(("inotify-tools" ,inotify-tools)))
-  (arguments `(#:tests? #f)) ;; No tests.
-  (home-page "https://pypi.python.org/pypi/inotify")
-  (synopsis
-    "Python inotify.")
-  (description
-    "Python inotify.")
-  (license license:gpl2))
-)
-
-(define-public python2-inotify
-  (package-with-python2 python-inotify))
-
-(define-public python2-flask
-  (let ((base (package-with-python2 python-flask)))
-    (package
-      (inherit base)
-      (arguments
-       `(#:tests? #f)))))
-
-(define-public python2-werkzeug
-  (let ((base (package-with-python2 python-werkzeug)))
-    (package
-      (inherit base)
-      (arguments
-       `(#:tests? #f)))))
-
-(define-public python2-flask-sqlalchemy
-  (package-with-python2 python-flask-sqlalchemy))
-
-(define-public python2-xlsxwriter
-  (package-with-python2 python-xlsxwriter))
-
-(define-public python-rserve
-  (package
-   (name "python-rserve")
-   (version "0.91")
-   (source
-    (origin
-     (method url-fetch)
-                                        ; https://pypi.python.org/packages/27/e8/b23e0e3d38dadc721947bc9f4b6f1b3e5e1e6c26ac67d8ad88376c5555a0/pyRserve-0.9.1.tar.gz#md5=6da1978f908dd7bdc2d22ee5c29238c0
-     (uri (string-append
-           "https://pypi.python.org/packages/27/e8/b23e0e3d38dadc721947bc9f4b6f1b3e5e1e6c26ac67d8ad88376c5555a0/pyRserve-0.9.1.tar.gz"))
-     (sha256
-      (base32
-       "162dg7d0ni035b75qskrjdzd1yyxwnvybcv115aiapcvyfw2vbsm"))))
-   (build-system python-build-system)
-   (propagated-inputs
-    `(
-      ("python-numpy" ,python-numpy)
-      ))
-   (inputs
-    `(("python-setuptools" ,python-setuptools)
-      ("python-pytest" ,python-pytest)
-      ))
-   (home-page "https://pypi.python.org/pypi/pyRserve")
-   (synopsis
-    "RServe.")
-   (description
-    ".")
-   (license license:expat)))
-
-(define-public python2-rserve
-  (package-with-python2 python-rserve))
-
-(define-public python-setuptools-old
-  (package
-    (name "python-setuptools-old")
-    (version "40.6.0")
-    (source
-     (origin
-      (method url-fetch)
-      (uri "https://files.pythonhosted.org/packages/37/1b/b25507861991beeade31473868463dad0e58b1978c209de27384ae541b0b/setuptools-40.6.3.zip"
-             )
-      (sha256
-       (base32
-        "1y085dnk574sxw9aymdng9gijvrsbw86hsv9hqnhv7y4d6nlsirv"))
-      (modules '((guix build utils)))
-      (snippet
-       '(begin
-          ;; Remove included binaries which are used to build self-extracting
-          ;; installers for Windows.
-          ;; TODO: Find some way to build them ourself so we can include them.
-          (for-each delete-file (find-files "setuptools" "^(cli|gui).*\\.exe$"))
-          #t))))
-    (build-system python-build-system)
-    ;; FIXME: Tests require pytest, which itself relies on setuptools.
-    ;; One could bootstrap with an internal untested setuptools.
-    (arguments
-     `(#:tests? #f))
-    (home-page "https://pypi.python.org/pypi/setuptools")
-    (synopsis
-     "Library designed to facilitate packaging Python projects")
-    (description
-     "Setuptools is a fully-featured, stable library designed to facilitate
-packaging Python projects, where packaging includes:
-Python package and module definitions,
-distribution package metadata,
-test hooks,
-project installation,
-platform-specific details,
-Python 3 support.")
-    ;; TODO: setuptools now bundles the following libraries:
-    ;; packaging, pyparsing, six and appdirs. How to unbundle?
-    (license (list license:psfl        ; setuptools itself
-                   license:expat       ; six, appdirs, pyparsing
-                   license:asl2.0      ; packaging is dual ASL2/BSD-2
-                   license:bsd-2))))
-
-
-(define-public python-avro ; guix ready - used by CWL
-(package
-  (name "python-avro")
-  (version "1.8.2")
-  (source
-    (origin
-      (method url-fetch)
-        (uri (pypi-uri "avro" version))
-      (sha256
-        (base32
-          "0nabn1hzj1880qsp7fkg7923c0xdqk4i35s15asmy2xp604f97lg"))))
-  (build-system python-build-system)
-  (inputs
-    `(("python-setuptools" ,python-setuptools)))
-  (home-page "http://hadoop.apache.org/avro")
-  (synopsis
-    "Avro is a serialization and RPC framework.")
-  (description
-    "Avro is a serialization and RPC framework.")
-  (license #f)))
-
-(define-public python2-avro
-  (package-with-python2 python-avro))
-
-
-(define-public python2-htmlgen-gn ; guix obsolete
-  (package
-    (name "python2-htmlgen-gn")
-    (version "2.2.2")
-    (source (origin
-              (method url-fetch)
-              ;; http://files.genenetwork.org/software/contrib/htmlgen-2.2.2-gn.tar.gz
-              (uri (string-append
-                     "https://files.genenetwork.org/software/htmlgen-2.2.2-gn.tar.gz"))
-              (sha256
-               (base32
-                "1lwsk56rymhrma46cbyh3g64ksmq1vsih3qkrc2vh0lpba825y7r"))
-              ;;(patches (list
-              ;;          (search-patch "python2-htmlgen-Applied-Deb-patch.patch")
-              ;;          (search-patch "python2-htmlgen-Fix-test-for-random.patch")
-              ))
-    (build-system python-build-system)
-    (arguments
-     `(#:python ,python-2
-       #:tests? #f
-       #:phases
-       (modify-phases %standard-phases
-         (add-after 'unpack 'modernize-imports
-           (lambda _
-             (substitute* "HTMLgen.py"
-               (("whrandom") "random"))
-             (substitute* "HTMLcalendar.py"
-               (("import regex") "import re as regex"))
-             (substitute* "HTMLutil.py"
-               (("import string, regex") "import re as regex\nimport string"))
-             (substitute* "HTMLtest.py"
-               (("import string, regex, regsub") "import re as regex\nimport string")
-               (("regsub.split") "re.split"))
-             #t))
-         (replace 'build
-           (lambda _
-             (invoke "python" "-m" "compileall" ".")))
-         (replace 'check
-           (lambda* (#:key (tests? '()) #:allow-other-keys)
-             (if tests?
-               (invoke "python" "HTMLtest.py")
-               #t)))
-         (replace 'install
-           (lambda* (#:key outputs #:allow-other-keys)
-             (let* ((out (assoc-ref outputs "out"))
-                    (lib (string-append out "/lib/python2.7/site-packages/htmlgen/")))
-               ;; Install libs and headers.
-               (for-each (lambda (file)
-                           (install-file file lib))
-                         (find-files "." "\\.py[c]?$"))
-               #t))))))
-    (home-page "https://packages.debian.org/unstable/python/python-htmlgen")
-    (synopsis "Genenetwork version of Python2 HTMLgen (defunkt project)")
-    (description #f)
-    (license #f)))
-
-(define-public python2-htmlgen-2.2
-  (package
-    (name "python2-htmlgen-2.2")
-    (version "2.2.2")
-    (source (origin
-              (method url-fetch)
-              (uri (string-append "mirror://debian/pool/main/h/htmlgen/htmlgen_" version ".orig.tar.gz"))
-              (sha256
-               (base32
-                 "186kb434q6z84g31ysvzi4kcfcvl3pmm57k4jlng4ccgls94x6wb"))))
-    (build-system python-build-system)
-    (arguments
-     `(#:python ,python-2
-       #:phases
-       (modify-phases %standard-phases
-         (add-after 'unpack 'modernize-imports
-           (lambda _
-             (substitute* "HTMLgen.py"
-               (("whrandom") "random"))
-             (substitute* "HTMLcalendar.py"
-               (("import regex") "import re as regex"))
-             (substitute* "HTMLutil.py"
-               (("import string, regex") "import re as regex\nimport string"))
-             (substitute* "HTMLtest.py"
-               (("import string, regex, regsub") "import re as regex\nimport string")
-               (("regsub.split") "re.split"))
-             #t))
-         (replace 'build
-           (lambda _
-             (invoke "python" "-m" "compileall" ".")))
-         (replace 'check
-           (lambda _
-             (invoke "python" "HTMLtest.py")))
-         (replace 'install
-           (lambda* (#:key outputs #:allow-other-keys)
-             (let* ((out (assoc-ref outputs "out"))
-                    (lib (string-append out "/lib/python2.7/site-packages/htmlgen/")))
-               ;; Install libs and headers.
-               (for-each (lambda (file)
-                           (install-file file lib))
-                         (find-files "." "\\.py[c]?$"))
-               #t))))))
-    (home-page "https://packages.debian.org/unstable/python/python-htmlgen")
-    (synopsis "Genenetwork version of Python2 HTMLgen (defunkt project)")
-    (description #f)
-    (license #f)))
-
-(define-public python2-pil1-gn ; guix obsolete
-  (package
-    (name "python2-pil1") ; works with GN2
-    (version "1.1.6")
-    (source (origin
-             (method url-fetch)
-             (uri (string-append
-                   ; "http://files.genenetwork.org/software/contrib/Imaging-"
-                   "http://effbot.org/downloads/Imaging-1.1.6.tar.gz"))
-             (sha256
-              (base32
-               "141zidl3s9v4vfi3nsbg42iq1lc2a932gprqr1kij5hrnn53bmvx"))
-    (modules '((guix build utils)))
-    (snippet
-     ;; Adapt to newer freetype. As the package is unmaintained upstream,
-     ;; there is no use in creating a patch and reporting it.
-     '(substitute* "_imagingft.c"
-                   (("freetype/")
-                    "freetype2/freetype/")))))
-    (build-system python-build-system)
-    (inputs
-      `(("freetype" ,freetype)
-        ("libjpeg" ,libjpeg-turbo)
-        ("libtiff" ,libtiff)
-        ("python2-setuptools" ,python2-setuptools)
-        ("zlib" ,zlib)))
-    (arguments
-     ;; Only the fork python-pillow works with Python 3.
-     `(#:python ,python-2
-       #:tests? #f ; no check target
-       #:phases
-         (alist-cons-before
-          'build 'configure
-          ;; According to README and setup.py, manual configuration is
-          ;; the preferred way of "searching" for inputs.
-          ;; lcms is not found, TCL_ROOT refers to the unavailable tkinter.
-          (lambda* (#:key inputs #:allow-other-keys)
-            (let ((jpeg (assoc-ref inputs "libjpeg"))
-                  (zlib (assoc-ref inputs "zlib"))
-                  (tiff (assoc-ref inputs "libtiff"))
-                  (freetype (assoc-ref inputs "freetype")))
-              (substitute* "setup.py"
-                (("JPEG_ROOT = None")
-                 (string-append "JPEG_ROOT = libinclude(\"" jpeg "\")"))
-                (("ZLIB_ROOT = None")
-                 (string-append "ZLIB_ROOT = libinclude(\"" zlib "\")"))
-                (("TIFF_ROOT = None")
-                 (string-append "TIFF_ROOT = libinclude(\"" tiff "\")"))
-                (("FREETYPE_ROOT = None")
-                 (string-append "FREETYPE_ROOT = libinclude(\""
-                                freetype "\")")))))
-          %standard-phases)))
-    (home-page "http://www.pythonware.com/products/pil/")
-    (synopsis "Python Imaging Library")
-    (description "The Python Imaging Library (PIL) adds image processing
-capabilities to the Python interpreter.")
-    (license (license:x11-style
-               "file://README"
-               "See 'README' in the distribution."))))
-
-
-(define-public python2-piddle-gn ; guix obsolete
-  (package
-    (name "python2-piddle-gn")
-    (version "1.0.15-gn")
-    (source (origin
-     (method url-fetch)
-     (uri (string-append
-           "https://files.genenetwork.org/software/piddle-1.0.15-gn.tgz"))
-     (sha256
-      (base32
-       "05gjnn31v7p0kh58qixrpcizcxqf3b7zv4a5kk8nsmqwgxh0c6gq"))))
-
-    (build-system python-build-system)
-    (native-inputs
-     `(("python2-setuptools" ,python2-setuptools)))
-    (propagated-inputs
-     `(("python2-pil1" ,python2-pil1-gn)))
-    (arguments
-     `(
-       #:python ,python-2
-       #:tests? #f   ; no 'setup.py test' really!
-    ))
-    (home-page #f)
-    (synopsis "Canvas drawing library for python2 (old!)")
-    (description #f)
-    (license #f)))
-
-
-(define-public python2-pil1 ; guix obsolete
-  (package
-    (name "python2-pil1") ; this version is NOT used by genenetwork
-    (version "1.1.7")
-    (source (origin
-             (method url-fetch)
-             (uri (string-append "http://effbot.org/downloads/Imaging-"
-                                 version ".tar.gz"))
-             (sha256
-              (base32
-               "04aj80jhfbmxqzvmq40zfi4z3cw6vi01m3wkk6diz3lc971cfnw9"))
-    (modules '((guix build utils)))
-    (snippet
-     ;; Adapt to newer freetype and lcms.  As the package is unmaintained
-     ;; upstream, there is no use in creating a patch and reporting it.
-     '(begin (substitute* "_imagingft.c"
-               (("freetype/")
-                "freetype2/freetype/"))
-             (substitute* '("setup.py"
-                            "_imagingcms.c")
-               (("lcms.h") "lcms2.h"))))))
-    (build-system python-build-system)
-    (inputs
-     `(("freetype" ,freetype)
-       ("lcms" ,lcms) ; not fully supported
-       ("libjpeg" ,libjpeg-turbo)
-       ("libtiff" ,libtiff)
-       ("tcl" ,tcl)
-       ("zlib" ,zlib)))
-    (arguments
-     ;; Only the fork python-pillow works with Python 3.
-     `(#:python ,python-2
-       #:tests? #f ; no check target
-       #:use-setuptools? #f
-       #:phases
-       (modify-phases %standard-phases
-         (add-after 'unpack 'link-libraries
-           (lambda* (#:key inputs #:allow-other-keys)
-             (let ((freetype (assoc-ref inputs "freetype"))
-                   (jpeg (assoc-ref inputs "libjpeg"))
-                   (lcms (assoc-ref inputs "lcms"))
-                   (tcl (assoc-ref inputs "tcl"))
-                   (tiff (assoc-ref inputs "libtiff"))
-                   (zlib (assoc-ref inputs "zlib")))
-               (substitute* "setup.py"
-                 (("FREETYPE_ROOT .*")
-                  (string-append "FREETYPE_ROOT = libinclude(\"" freetype "\")\n"))
-                 (("JPEG_ROOT .*")
-                  (string-append "JPEG_ROOT = libinclude(\"" jpeg "\")\n"))
-                 (("LCMS_ROOT .*")
-                  (string-append "LCMS_ROOT = libinclude(\"" lcms "\")\n"))
-                 (("^TCL_ROOT .*")
-                  (string-append "TCL_ROOT = libinclude(\"" tcl "\")\n"))
-                 (("TIFF_ROOT .*")
-                  (string-append "TIFF_ROOT = libinclude(\"" tiff "\")\n"))
-                 (("ZLIB_ROOT .*")
-                  (string-append "ZLIB_ROOT = libinclude(\"" zlib "\")\n"))))
-             #t)))))
-    (home-page "http://www.pythonware.com/products/pil/")
-    (synopsis "Python Imaging Library")
-    (description "The @dfn{Python Imaging Library} (PIL) adds image processing
-capabilities to your Python interpreter.  This library supports many file
-formats, and provides powerful image processing and graphics capabilities.
-
-NOTE: This package is superseded by python-pillow")
-    (license (license:x11-style
-               "file://README"
-               "See 'README' in the distribution."))))
-
-; upstream version won't work with gn2
-(define-public python2-piddle
-  (package
-    (name "python2-piddle")
-    (version "1.0.15")
-    (source
-      (origin
-        (method url-fetch)
-        (uri (string-append "mirror://sourceforge/piddle/piddle/"
-                            version "/piddle-" version ".zip"))
-        (sha256
-         (base32
-          "0jaxfsrcgqb5cf2wznxnpdws5khlrdixmg85lrhq2zl9cy6dfdya"))))
-    (build-system python-build-system)
-    (arguments
-     `(#:python ,python-2
-       #:use-setuptools? #f
-       #:tests? #f)) ; tests are interactive
-    (native-inputs
-     `(("unzip" ,unzip)))
-    (propagated-inputs
-     `(("python2-pil" ,python2-pil1-gn)))
-    (home-page "http://www.strout.net/info/coding/python/piddle/")
-    (synopsis "Plug-In Drawing, Does Little Else")
-    (description "PIDDLE is designed for vector graphics -- i.e., drawing of
-primitives such as lines and ellipses, rather than manipulation of individual
-pixels.")
-    (license license:gpl2+)))
-
-(define-public python2-numarray ; guix: obsolete lib
-  (package
-    (name "python2-numarray")
-    (version "1.5.2")
-    (source
-     (origin
-       (method url-fetch)
-       (uri (string-append
-             "mirror://sourceforge/numpy/numarray-" version ".tar.gz"
-             ))
-       (file-name (string-append name "-" version ".tar.gz"))
-       (sha256
-        (base32
-         "0x1i4j7yni7k4p9kjxs1lgln1psdmyrz65wp2yr35yn292iw2vbg"))))
-    (build-system python-build-system)
-    (native-inputs
-     `(("python2-setuptools" ,python2-setuptools)))
-    (arguments
-     `(#:python ,python-2
-       #:phases
-       (modify-phases %standard-phases
-         (replace 'build
-           (lambda* (#:key inputs #:allow-other-keys)
-             (zero? (system* "python" "setup.py" "build"))))
-         (replace 'install
-                  (lambda* (#:key outputs #:allow-other-keys)
-                    ;; Build and install the Python bindings.  The underlying
-                    ;; C++ library is apparently not meant to be installed.
-                    (let ((out (assoc-ref outputs "out")))
-                      (system* "python" "setup.py" "install"
-                               (string-append "--prefix=" out))))))
-       #:tests? #f))   ; no 'setup.py test' really!
-    (home-page "http://www.numpy.org/")
-    (synopsis "Numerical library array processing of numbers, strings, records and objects")
-    (description
-     "Numarray is an (OBSOLETE) array processing package designed to
-efficiently manipulate large multi-dimensional arrays. Numarray is
-modelled after Numeric and features c-code generated from python
-template scripts, the capacity to operate directly on arrays in files,
-and improved type promotions. Numarray provides support for
-manipulating arrays consisting of numbers, strings, records, or
-objects using the same basic infrastructure and syntax.  Numarray is
-now part of the numpy package, though some legacy software still uses
-the older versions.")
-    (license license:gpl2))) ; actualy PyRAF http://www.stsci.edu/resources/software_hardware/pyraf/LICENSE
 
 (define-public python-htmlgen
   (package
@@ -614,6 +80,7 @@ the older versions.")
          (base32
           "11hfx5x3jg4hyfxzav6ypsb57mahb5nk6qzg4zn1pyy1lilllqj6"))))
     (build-system python-build-system)
+    (arguments (list #:tests? #f))
     (native-inputs
      `(("python-asserts" ,python-asserts)))
     (synopsis "Python HTML 5 Generator")
@@ -621,9 +88,6 @@ the older versions.")
     (home-page "https://github.com/srittau/python-htmlgen")
     (license license:expat)))
 
-(define-public python2-htmlgen
-  (package-with-python2 python-htmlgen))
-
 (define-public python-asserts
   (package
     (name "python-asserts")
@@ -638,174 +102,13 @@ the older versions.")
         (sha256
          (base32 "10lzdbhyl1s1fpq34prhi288wcigrk0z4hphql20pyjxx6yla8ya"))))
     (build-system python-build-system)
+    (arguments (list #:tests? #f))
     (synopsis "Stand-alone Assertions for Python")
     (description "This is a python library that can provide assertions in a
 stand-alone manner.")
     (home-page "https://github.com/srittau/python-asserts")
     (license license:expat)))
 
-(define-public python-version
-(let ((commit "e5aadc720bb74c535f29e5a2de5cd9697efe8d7c"))
-(package
-  (name "python-version")
-  (version "0.1.2")
-  (source
-    (origin
-      (method git-fetch)
-      (uri (git-reference
-      ; (url "https://github.com/genenetwork/pylmm.git")
-        (url "https://github.com/keleshev/version.git") ; version not in pypi
-        (commit commit)))
-      (file-name (string-append name "-" commit))
-      (sha256
-        (base32
-          "1rc8kf72v180qlygkh1y0jwv2fxqpx7n97bqfhbwgnn31iwai9g3"))))
-  (build-system python-build-system)
-  (propagated-inputs
-    `(
-    ("python-more-itertools" ,python-more-itertools)
-    ("python-pytest" ,python-pytest)))
-  (home-page "http://github.com/halst/version")
-  (synopsis "Implementation of semantic version")
-  (description
-    "Implementation of semantic version")
-  (license license:expat)
-)))
-
-(define-public python2-pp
-  (package
-    (name "python2-pp")
-    (version "1.6.1")
-    (source
-      (origin
-        (method url-fetch)
-        (uri (string-append
-             "http://www.parallelpython.com/downloads/pp/pp-" version ".zip"))
-        (sha256
-         (base32
-          "0qkxcyclz3vgwpl6xvsrg76q59dj0wwy8qx15567bafv659ypyb1"))))
-    (build-system python-build-system)
-    (arguments
-     `(#:python ,python-2
-       #:use-setuptools? #f
-       #:tests? #f)) ; no tests
-    (native-inputs
-     `(("unzip" ,unzip)))
-    (home-page "http://www.parallelpython.com")
-    (synopsis "Parallel and distributed programming for Python")
-    (description "PP is a python module which provides mechanism for parallel
-execution of python code on SMP (systems with multiple processors or cores) and
-clusters (computers connected via network).")
-    (license license:bsd-3)))
-
-(define GN1-thirdparty-sources
-  (origin
-    (method url-fetch/tarbomb)
-    (uri "https://files.genenetwork.org/software/thirdparty.tgz")
-    (file-name "GN1-thirdparty")
-    (sha256
-     (base32
-      "0nnp6g412hjfrcn3k2yrfb14sxv06k0149whc7qmv678nyj5zhfa"))))
-
-(define-public python2-json-GN1
-  (package
-    (name "python2-json-GN1")
-    (version "GN1")
-    (source GN1-thirdparty-sources)
-    (build-system python-build-system)
-    (arguments
-     `(#:python ,python-2
-       #:phases
-       (modify-phases %standard-phases
-         (delete 'build)
-         (delete 'check)
-         (replace 'install
-           (lambda* (#:key outputs #:allow-other-keys)
-             (let* ((out     (assoc-ref outputs "out"))
-                    (sitedir (string-append out "/lib/python2.7/site-packages/json/")))
-               (mkdir-p sitedir)
-               (copy-recursively "thirdparty/json" sitedir)
-               #t))))))
-    (home-page "")
-    (synopsis "")
-    (description "")
-    (license license:lgpl2.1+)))
-
-(define-public python2-pyx-GN1
-  (package
-    (name "python2-pyx-GN1")
-    (version "0.8")
-    (source GN1-thirdparty-sources)
-    (build-system python-build-system)
-    (arguments
-     `(#:python ,python-2
-       #:phases
-       (modify-phases %standard-phases
-         (delete 'build)
-         (delete 'check)
-         (replace 'install
-           (lambda* (#:key outputs #:allow-other-keys)
-             (let* ((out     (assoc-ref outputs "out"))
-                    (sitedir (string-append out "/lib/python2.7/site-packages/pyx/")))
-               (mkdir-p sitedir)
-               (copy-recursively "thirdparty/pyx" sitedir)
-               #t))))))
-    (home-page "")
-    (synopsis "")
-    (description "")
-    (license license:gpl2+)))
-
-(define-public python2-pyxlwriter
-  (package
-    (name "python2-pyxlwriter")
-    (version "0.4a3")
-    (source
-      (origin
-        (method url-fetch)
-        (uri (string-append "mirror://sourceforge/pyxlwriter/pyxlwriter/"
-                            version "/pyXLWriter-" version ".zip"))
-        (sha256
-         (base32
-          "1kfsi6la9y53rwayszgayfmkjfknpp650v69a0hwd1fcfk1df735"))))
-    (build-system python-build-system)
-    (arguments
-     `(#:python ,python-2
-       #:use-setuptools? #f
-       #:tests? #f)) ; no tests
-    (native-inputs
-     `(("unzip" ,unzip)))
-    (home-page "https://sourceforge.net/projects/pyxlwriter/")
-    (synopsis "Python library for generating Excel compatible spreadsheets")
-    (description "PyXLWriter is a Python library for generating Excel compatible
-spreadsheets.  It's a port of John McNamara's Perl @code{Spreadsheet::WriteExcel}
-module version 1.01 to Python.  It allows writing of Excel compatible
-spreadsheets without the need for COM objects.")
-    (license license:lgpl2.1+)))
-
-(define-public python2-svg-GN1
-  (package
-    (name "python2-svg-GN1")
-    (version "1.0")
-    (source GN1-thirdparty-sources)
-    (build-system python-build-system)
-    (arguments
-     `(#:python ,python-2
-       #:phases
-       (modify-phases %standard-phases
-         (delete 'build)
-         (delete 'check)
-         (replace 'install
-           (lambda* (#:key outputs #:allow-other-keys)
-             (let* ((out     (assoc-ref outputs "out"))
-                    (sitedir (string-append out "/lib/python2.7/site-packages/svg/")))
-               (mkdir-p sitedir)
-               (copy-recursively "thirdparty/svg" sitedir)
-               #t))))))
-    (home-page "")
-    (synopsis "")
-    (description "")
-    (license license:bsd-4)))
-
 (define-public python-admiral
   (package
     (name "python-admiral")
@@ -828,22 +131,6 @@ spreadsheets without the need for COM objects.")
      "Simple python high-performance computing cluster batch submission.")
     (license #f)))      ; No license in repository.
 
-(define-public python2-admiral
-  (package-with-python2 python-admiral))
-
-(define-public python-pbr-1.6.0
-  (package
-    (inherit python-pbr)
-    (name "python-pbr")
-    (version "1.6.0")
-    (source
-      (origin
-        (method url-fetch)
-        (uri (pypi-uri "pbr" version))
-        (sha256
-         (base32
-          "1lg1klrczvzfan89y3bl9ykrknl3nb01vvai37fkww24apzyibjf"))))))
-
 (define-public python-py-dateutil
   (package
     (name "python-py-dateutil")
@@ -870,307 +157,6 @@ spreadsheets without the need for COM objects.")
     (description "Extensions to the standard Python datetime module")
     (license license:bsd-3)))
 
-(define-public python-pyshex
-  (package
-    (name "python-pyshex")
-    (version "0.7.14")
-    (source
-      (origin
-        (method url-fetch)
-        (uri (pypi-uri "PyShEx" version))
-        (sha256
-         (base32 "1fy664bh6hpmr4cf49fwwxng36kv7s6b2986hbv0cqcypc4ri2cs"))))
-    (arguments
-     '(#:tests? #f          ; Tests try to use the internet.
-       #:phases
-       (modify-phases %standard-phases
-         (add-after 'unpack 'drop-rdflib-namespace-rdfnamespace
-           (lambda _
-             ;; _RDFNamespace is in rdflib-5
-             ;; https://github.com/hsolbrig/PyShEx/commit/d138a5b4f2249212f2141b7b9bbaff6696ee9415
-             (substitute* "pyshex/prefixlib.py"
-               (("XMLNS, _RDFNamespace") "XMLNS"))))
-         (replace 'check
-           (lambda* (#:key inputs outputs tests? #:allow-other-keys)
-             (when tests?
-               (add-installed-pythonpath inputs outputs)
-               (setenv "SKIP_EXTERNAL_URLS" "true")
-               (invoke "python" "-m" "unittest")))))))
-    (build-system python-build-system)
-    (propagated-inputs
-     (list python-cfgraph
-           python-pyshexc-0.7
-           python-rdflib
-           python-requests
-           python-shexjsg
-           python-sparql-slurper
-           python-sparqlwrapper
-           python-urllib3))
-    (native-inputs
-     (list python-pbr python-unittest2))
-    (home-page "https://github.com/hsolbrig/PyShEx")
-    (synopsis "Python ShEx Implementation")
-    (description "This package provides a python ShEx Implementation.")
-    (license license:asl2.0)))
-
-(define-public python-pyshexc
-  (package
-    (name "python-pyshexc")
-    (version "0.9.1")
-    (source
-      (origin
-        (method url-fetch)
-        (uri (pypi-uri "PyShExC" version))
-        (sha256
-         (base32 "1lq4lf0nal1v1d3vbyrr1hfkhmhphy06dyqhyw7b5zls9dfrga9m"))))
-    (build-system python-build-system)
-    (arguments
-     '(#:tests? #f  ; It isn't clear how the tests expect to succeed.
-       #:phases
-       (modify-phases %standard-phases
-         (replace 'check
-           (lambda* (#:key inputs outputs tests? #:allow-other-keys)
-             (when tests?
-               (add-installed-pythonpath inputs outputs)
-               (invoke "python" "-m" "unittest" "discover" "-s" "tests")))))))
-    (propagated-inputs
-     (list python-antlr4-python3-runtime
-           python-chardet
-           python-jsonasobj
-           python-pyjsg
-           python-rdflib-shim
-           python-shexjsg))
-    (native-inputs
-     (list python-pbr
-           python-requests
-           python-yadict-compare))
-    (home-page "https://github.com/shexSpec/grammar-python-antlr")
-    (synopsis "Python ShExC Parser")
-    (description "This package converts the @dfn{Shape Expression Compact}
-(ShExC) into @dfn{Python JSON Schema Binding} (pyjsg) objects.")
-    (license license:asl2.0)))
-
-(define-public python-pyshexc-0.7
-  (package
-    (inherit python-pyshexc)
-    (name "python-pyshexc")
-    (version "0.7.0")
-    (source
-      (origin
-        (method git-fetch)
-        (uri (git-reference
-               (url "https://github.com/shexSpec/grammar")
-               (commit (string-append "v" version))))
-        (file-name (git-file-name "shexspec-grammar" version))
-        (sha256
-         (base32 "08wsknjq8zyi3hk01w6yl6z8jld63l6l64n43gjhj0jphbm4s9iz"))
-        (modules '((guix build utils)))
-        (snippet
-         '(begin
-            (substitute* "parsers/python/setup.cfg"
-              (("python-requires = 3") "python_requires = >=3.6"))))))
-    (arguments
-     `(#:tests? #f  ; Tests try to access the internet.
-       #:phases
-       (modify-phases %standard-phases
-         (add-after 'unpack 'chdir
-           (lambda _
-             (chdir "parsers/python")
-             (setenv "PBR_VERSION" ,version)))
-         (replace 'check
-           (lambda* (#:key inputs outputs tests? #:allow-other-keys)
-             (when tests?
-               (add-installed-pythonpath inputs outputs)
-               (substitute* "tests/__init__.py"
-                 (("schemas_base =.*")
-                  (string-append "schemas_base = \""
-                                 (assoc-ref inputs "test-suite")
-                                 "/schemas\"\n")))
-               (substitute* "tests/test_shexr.py"
-                 (("https://raw.githubusercontent.com/shexSpec/shexTest/master/validation/manifest")
-                  (string-append (assoc-ref inputs "test-suite")
-                                 "/validation/manifest")))
-               (substitute* "tests/test_issue_9.py"
-                 (("https://raw.githubusercontent.com/shexSpec/shexTest/master/schemas/1dotNS2.shex")
-                  (search-input-file inputs "/schemas/1dotNS2.shex")))
-               (symlink (assoc-ref inputs "test-suite")
-                        "../../../shexTest")
-               (invoke "python" "-m" "unittest" "discover" "-s" "tests")))))))
-    (propagated-inputs
-     (list python-antlr4-python3-runtime
-           python-certifi
-           python-jsonasobj
-           python-rdflib-shim
-           python-requests
-           python-shexjsg))
-    (native-inputs
-     `(("python-pbr" ,python-pbr)
-       ("python-unittest2" ,python-unittest2)
-       ("python-yadict-compare" ,python-yadict-compare)
-       ("test-suite"
-        ,(origin
-           (method git-fetch)
-           (uri (git-reference
-                  (url "https://github.com/shexSpec/shexTest")
-                  (commit "v2.0.2")))
-           (file-name (git-file-name name version))
-           (sha256
-            (base32
-             "1x788nyrwycfr55wbg0ay6mc8mi6wwsg81h614rx9pw6rvrsppps"))))))
-    (home-page "https://github.com/shexSpec/grammar/tree/master/parsers/python")))
-
-(define-public python-antlr4-python3-runtime
-  (package
-    (name "python-antlr4-python3-runtime")
-    (version "4.9.3")
-    (source
-      (origin
-        (method url-fetch)
-        (uri (pypi-uri "antlr4-python3-runtime" version))
-        (sha256
-         (base32 "06w8fz73rk8vzjz9rydfk56g4mbqpyl81yhypc14jab886dlc97j"))))
-    (build-system python-build-system)
-    (home-page "https://www.antlr.org/")
-    (synopsis "ANTLR runtime for Python")
-    (description "This package provides the ANTLR runtime for Python.")
-    (license license:bsd-3)))
-
-(define-public python-jsonasobj
-  (package
-    (name "python-jsonasobj")
-    (version "1.2.1")
-    (source
-      (origin
-        (method url-fetch)
-        (uri (pypi-uri "jsonasobj" version))
-        (sha256
-         (base32
-          "1yj8y3k3fb7lk043f1zhmhb2lzjlfpnxajb92rpxmjzja93yxx0y"))))
-    (build-system python-build-system)
-    (arguments
-     '(#:tests? #f   ; Tests not included in release tarball.
-       #:phases
-       (modify-phases %standard-phases
-         (add-after 'unpack 'patch-source
-           (lambda _
-             (substitute* "setup.py"
-               (("yadict_compare") "['dict_compare"))
-             #t)))))
-    (native-inputs
-     `(("python-yadict-compare" ,python-yadict-compare)))
-    (home-page "https://github.com/hsolbrig/jsonasobj")
-    (synopsis "JSON as python objects")
-    (description
-     "This package provides an extension to the core python json library that
-treats name/value pairs as first class attributes whenever possible.")
-    (license license:asl2.0)))
-
-(define-public python-shexjsg
-  (package
-    (name "python-shexjsg")
-    (version "0.8.2")
-    (source
-      (origin
-        (method url-fetch)
-        (uri (pypi-uri "ShExJSG" version))
-        (sha256
-         (base32 "1dnhpk6n6vzadkv13y7r6y2mi1pzv4y19vmxh91k9ykpqngn4ypi"))))
-    (build-system python-build-system)
-    (arguments
-     '(#:phases
-       (modify-phases %standard-phases
-         (replace 'check
-           (lambda* (#:key inputs outputs tests? #:allow-other-keys)
-             (if tests?
-               (begin (add-installed-pythonpath inputs outputs)
-                      ;; Tries to download files from the internet.
-                      (substitute* "tests/test_shexj.py"
-                        (("skipIf\\(False") "skipIf(True"))
-                      (invoke "python" "-m" "unittest"))))))))
-    (propagated-inputs
-     (list python-pyjsg))
-    (native-inputs
-     (list python-jsonasobj
-           python-pbr
-           python-rdflib-shim
-           python-requests
-           python-yadict-compare))
-    (home-page "https://github.com/hsolbrig/ShExJSG")
-    (synopsis "Astract Syntax Tree for the ShEx 2.0 language")
-    (description "This package provides an astract syntax tree for the
-ShEx 2.0 language.")
-    (license license:cc0)))
-
-(define-public python-yadict-compare
-  (package
-    (name "python-yadict-compare")
-    (version "1.2.0")
-    (source
-      (origin
-        (method url-fetch)
-        (uri (pypi-uri "yadict_compare" version))
-        (sha256
-         (base32
-          "1kkcw82cp6mf3jailckd9gya4r7wjyz4gc5azsj2njj4wqn081rw"))))
-    (build-system python-build-system)
-    (arguments
-     '(#:phases
-       (modify-phases %standard-phases
-         (replace 'check
-           (lambda _
-             (with-directory-excursion "test"
-               (invoke "python" "-m" "unittest" "discover" "-s" "test")))))))
-    (native-inputs
-     `(("python-unittest2" ,python-unittest2)))
-    (home-page "https://github.com/hsolbrig/dict_compare")
-    (synopsis "Dictionary comparison tool with filtering and reporting")
-    (description
-     "A dictionary comparison tool that allows the injection of filters and
-handles recursion and lists.")
-    (license license:bsd-3)))
-
-(define-public python-pyjsg
-  (package
-    (name "python-pyjsg")
-    (version "0.11.10")
-    (source
-      (origin
-        (method url-fetch)
-        (uri (pypi-uri "PyJSG" version))
-        (sha256
-         (base32 "1ylbx2pc06qsvb8cqnr8nysvmw55f8nkm05ybcwjpyik53zy7mjb"))))
-    (build-system python-build-system)
-    (arguments
-     '(#:phases
-       (modify-phases %standard-phases
-         ;; From tox.ini
-         (replace 'check
-           (lambda* (#:key tests? #:allow-other-keys)
-             (when tests?
-               (for-each
-                 (lambda (dir)
-                   (invoke "python" "-m" "unittest" "discover" "-s" dir))
-                 '("tests/test_issues"
-                   ;"tests/test_basics"
-                   "tests/test_jsglib"
-                   "tests/test_parser_impl"
-                   "tests/test_python_generator"
-                   "tests_standalone"
-                   "tests_standalone_2"))))))))
-    (propagated-inputs
-     (list python-antlr4-python3-runtime
-           python-jsonasobj))
-    (native-inputs
-     (list python-pbr
-           python-requests
-           python-unittest2
-           python-yadict-compare))
-    (home-page "https://github.com/hsolbrig/pyjsg")
-    (synopsis "Python JSON Schema Grammar bindings")
-    (description
-     "A tool to create Python classes that represent JSON objects defined in JSG.")
-    (license license:asl2.0)))
-
 (define-public python-sparql-slurper
   (package
     (name "python-sparql-slurper")
@@ -1193,126 +179,6 @@ handles recursion and lists.")
     (description "This package provides a SPARQL Slurper for rdflib.")
     (license license:asl2.0)))
 
-(define-public python-sparqlslurper
-  (package
-    (name "python-sparqlslurper")
-    (version "0.5.1")
-    (source (origin
-              (method url-fetch)
-              (uri (pypi-uri "sparqlslurper" version))
-              (sha256
-               (base32 "0ipma74dr5jvsxwaa9al147mn9vv3v5r9lb9hajm4qgwcjqfp0lj"))))
-    (build-system python-build-system)
-    (arguments
-     '(#:tests? #f  ; Tests try to use the internet.
-       #:phases
-       (modify-phases %standard-phases
-         (replace 'check
-           (lambda* (#:key inputs outputs tests? #:allow-other-keys)
-             (when tests?
-               (add-installed-pythonpath inputs outputs)
-               (invoke "python" "-m" "unittest")))))))
-    (propagated-inputs
-     (list python-rdflib-shim
-           python-sparqlwrapper))
-    (native-inputs
-     (list python-pbr python-unittest2))
-    (home-page "http://github.com/hsolbrig/sparqlslurper")
-    (synopsis "SPARQL Slurper for rdflib")
-    (description "This package provides an implementation of a
-@code{rdflibGraph} that acts as a cache for a SPARQL endpoint.  SPARQL Slurper
-translates the @code{Graph.triples()} function into the corresponding SPARQL
-query and resolves it against an endpoint.")
-    (license license:cc0)))
-
-(define-public python2-ruamel.ordereddict
-  (package
-    (name "python2-ruamel.ordereddict")
-    (version "0.4.14")
-    (source
-      (origin
-        (method url-fetch)
-        (uri (pypi-uri "ruamel.ordereddict" version))
-        (sha256
-         (base32
-          "0jldrcanmz0284r2y6kbi82vslkaf5hf5q90v7rqxcdjdv952418"))))
-    (build-system python-build-system)
-    (arguments
-     `(#:python ,python-2
-       #:phases
-       (modify-phases %standard-phases
-         (replace 'check
-           (lambda* (#:key inputs outputs tests? #:allow-other-keys)
-             (if tests?
-               (begin (add-installed-pythonpath inputs outputs)
-                      (invoke "python" "test/testordereddict.py"))
-               #t))))))
-    (home-page "https://sourceforge.net/projects/ruamel-ordereddict/")
-    (synopsis "Version of dict that keeps keys in insertion resp. sorted order")
-    (description
-     "This package provides a version of dict that keeps keys in insertion resp.
-sorted order.")
-    (license license:expat)))
-
-(define-public python-pytest-5
-  (package
-    (inherit python-pytest)
-    (name "python-pytest")
-    (version "5.4.3")
-    (source (origin
-              (method url-fetch)
-              (uri (pypi-uri "pytest" version))
-              (sha256
-               (base32
-                "1n67lk8iwlsmfdm8663k8l7isllg1xd3n9p1yla7885szhdk6ybr"))))
-    (build-system python-build-system)
-    (native-inputs
-     (modify-inputs (package-native-inputs python-pytest)
-                    (prepend python-argcomplete python-requests)))))
-
-(define-public python-pytest-4
-  (package
-    (inherit python-pytest)
-    (version "4.6.11")
-    (source
-      (origin
-        (method url-fetch)
-        (uri (pypi-uri "pytest" version))
-        (sha256
-         (base32
-          "0ls3pqr86xgif6bphsb6wrww9r2vc7p7a2naq8zcq8115wwq5yjh"))))
-    (arguments
-     (substitute-keyword-arguments (package-arguments python-pytest)
-       ((#:tests? _ #f) #f)))
-    (native-inputs
-     `(("python-argcomplete" ,python-argcomplete)
-       ("python-atomicwrites" ,python-atomicwrites)
-       ("python-requests" ,python-requests)
-       ,@(package-native-inputs python-pytest)))))
-
-(define-public python-pytest-runner-4
-  (package
-    (inherit python-pytest-runner)
-    (name "python-pytest-runner")
-    (version "4.5.1")
-    (source (origin
-              (method url-fetch)
-              (uri (pypi-uri "pytest-runner" version))
-              (sha256
-               (base32
-                "1vzilbayx5mznsdm1r258m3616374p6kvhsbj4j6238j9djkvjyi"))))))
-
-(define-public python-pytest-runner-2
-  (package
-    (inherit python-pytest-runner)
-    (version "2.12.2")
-    (source (origin
-              (method url-fetch)
-              (uri (pypi-uri "pytest-runner" version))
-              (sha256
-               (base32
-                "11ivjj9hfphkv4yfb2g74av4yy86y8gcbf7gbif0p1hcdfnxg3w6"))))))
-
 (define-public python-pandas-plink
   (package
     (name "python-pandas-plink")
@@ -1347,41 +213,6 @@ sorted order.")
      "Read PLINK files into Pandas data frames")
     (license license:expat)))
 
-(define-public python-pytest-regressions
-  (package
-   (name "python-pytest-regressions")
-   (version "2.0.1")
-   (source
-    (origin
-     (method url-fetch)
-     (uri (pypi-uri "pytest-regressions" version))
-     (sha256
-      (base32
-       "0227957vmy93pdaayakwwc2zawndbh203d2yc9nbss36i3s8xs3f"))))
-   (build-system python-build-system)
-   (propagated-inputs
-    `(("python-pytest" ,python-pytest)
-      ("python-pytest-datadir" ,python-pytest-datadir)
-      ("python-pyyaml" ,python-pyyaml)))
-   (native-inputs
-    `(("python-matplotlib" ,python-matplotlib)
-      ("python-numpy" ,python-numpy)
-      ("python-pandas" ,python-pandas)
-      ("python-pillow" ,python-pillow)
-      ("python-pre-commit" ,python-pre-commit)
-      ("python-restructuredtext-lint"
-       ,python-restructuredtext-lint)
-      ("python-tox" ,python-tox)))
-   (inputs
-    `(("python-setuptools-scm" ,python-setuptools-scm)))
-   (home-page
-    "https://github.com/ESSS/pytest-regressions")
-   (synopsis
-    "Easy to use fixtures to write regression tests.")
-   (description
-    "Easy to use fixtures to write regression tests.")
-   (license license:expat)))
-
 (define-public python-pre-commit
   (package
    (name "python-pre-commit")
@@ -1431,280 +262,6 @@ sorted order.")
         (base32
          "1vc0rd50wbny0qdjjc7z14xvjdsfcmzavx3njxpxr2dvhx3b6j79"))))))
 
-(define-public python-engineio
-  (package
-    (name "python-engineio")
-    (version "3.13.2")
-    (source
-     (origin
-       (method url-fetch)
-       (uri (pypi-uri "python-engineio" version))
-       (sha256
-        (base32
-         "0jzhrq9n8mvndl42zv448jiak89dg8wcdvi7ynkvdn82lxm3rcrn"))))
-    (build-system python-build-system)
-    ;; No tests
-    (arguments
-     `(#:tests? #f))
-    (propagated-inputs
-     `(("python-six" ,python-six)))
-    (home-page
-     "http://github.com/miguelgrinberg/python-engineio/")
-    (synopsis "Engine.IO server")
-    (description "Engine.IO server")
-    (license license:expat)))
-
-(define-public python-socketio
-  (package
-    (name "python-socketio")
-    (version "4.6.0")
-    (source
-     (origin
-       (method url-fetch)
-       (uri (pypi-uri "python-socketio" version))
-       (sha256
-        (base32
-         "0npjklf76flavqlsijvz07h5ndvzwj1s5jjvla757i19q2xqz39m"))))
-    (build-system python-build-system)
-    ;; No tests
-    (arguments
-     `(#:tests? #f))
-    (propagated-inputs
-     `(("python-engineio" ,python-engineio)
-       ("python-six" ,python-six)))
-    (home-page
-     "http://github.com/miguelgrinberg/python-socketio/")
-    (synopsis "Socket.IO server")
-    (description "Socket.IO server")
-    (license license:expat)))
-
-(define-public python-varint
-  (package
-    (name "python-varint")
-    (version "1.0.2")
-    (source
-     (origin
-       (method url-fetch)
-       (uri (pypi-uri "varint" version))
-       (sha256
-        (base32
-         "19ac46adalgva1chlh0rxv6cinpikxfd92kabbbfjpmcfwiw1v56"))))
-    (build-system python-build-system)
-    (home-page
-     "http://github.com/fmoo/python-varint")
-    (synopsis "Simple python varint implementation")
-    (description
-     "Simple python varint implementation")
-    (license license:expat)))
-
-(define-public python-multiaddr
-  (package
-    (name "python-multiaddr")
-    (version "0.0.9")
-    (source
-     (origin
-       (method url-fetch)
-       (uri (pypi-uri "multiaddr" version))
-       (sha256
-        (base32
-         "1kqfmcbv8plpicbygwpdljin7n82iyxklc0w1ywxbhzdi58nkcih"))))
-    (build-system python-build-system)
-    (native-inputs
-     `(("python-pytest" ,python-pytest)
-       ("python-pytest-runner" ,python-pytest-runner)))
-    (propagated-inputs
-     `(("python-base58" ,python-base58)
-       ("python-idna" ,python-idna)
-       ("python-netaddr" ,python-netaddr)
-       ("python-six" ,python-six)
-       ("python-varint" ,python-varint)))
-    (home-page
-     "https://github.com/multiformats/py-multiaddr")
-    (synopsis
-     "Python implementation of jbenet's multiaddr")
-    (description
-     "Python implementation of jbenet's multiaddr")
-    (license license:expat)))
-
-(define-public python-ipfshttpclient
-  (package
-    (name "python-ipfshttpclient")
-    (version "0.7.0")
-    (source
-     (origin
-       (method url-fetch)
-       (uri (pypi-uri "ipfshttpclient" version))
-       (sha256
-        (base32
-         "14rnqk61fqa6c1ql412q723g7spgpv2pch96h7p8gb632hy07cgy"))))
-    (build-system python-build-system)
-    (arguments
-     `(#:phases
-       (modify-phases %standard-phases
-         (add-after 'unpack 'bumpup-max-version
-           (lambda _
-             (substitute* "ipfshttpclient/client/__init__.py"
-               (("VERSION_MAXIMUM   = \"0.7.0\"")
-                "VERSION_MAXIMUM   = \"0.8.1\""))
-             #t)))))
-    (native-inputs
-     `(("python-pytest" ,python-pytest)
-       ("python-pytest-runner" ,python-pytest-runner)))
-    (propagated-inputs
-     `(("python-httpx" ,python-httpx)
-       ("python-multiaddr" ,python-multiaddr)
-       ("python-requests" ,python-requests)))
-    (home-page
-     "https://ipfs.io/ipns/12D3KooWEqnTdgqHnkkwarSrJjeMP2ZJiADWLYADaNvUb6SQNyPF/")
-    (synopsis "Python IPFS HTTP CLIENT library")
-    (description "Python IPFS HTTP CLIENT library")
-    (license license:expat)))
-
-
-(define-public python-jupyter-server-proxy
-  (package
-    (name "python-jupyter-server-proxy")
-    (version "3.0.2")
-    (source
-      (origin
-        (method url-fetch)
-        (uri (pypi-uri "jupyter-server-proxy" version))
-        (sha256
-         (base32 "0vglj7v7wq73a9dya60q2vrxxpglg11w66l7crkzzrfpbblr814p"))))
-    (build-system python-build-system)
-    (propagated-inputs
-     `(("python-aiohttp" ,python-aiohttp)
-       ("python-jupyter-server" ,python-jupyter-server)
-       ("python-simpervisor" ,python-simpervisor)))
-    (home-page "https://jupyter-server-proxy.readthedocs.io/")
-    (synopsis "Jupyter server extension to supervise and proxy web services")
-    (description
-     "Jupyter Server Proxy lets you run arbitrary external processes (such as RStudio, Shiny Server, Syncthing, PostgreSQL, Code Server, etc) alongside your notebook server and provide authenticated web access to them using a path like @code{/rstudio} next to others like @code{/lab}.  Alongside the python package that provides the main functionality, the JupyterLab extension (@code{@@jupyterlab/server-proxy}) provides buttons in the JupyterLab launcher window to get to RStudio for example.")
-    (license license:bsd-3)))
-
-(define-public python-jupyter-server-proxy-1    ; bundled javascript?
-  (package
-    (name "python-jupyter-server-proxy")
-    (version "1.6.0")
-    (source
-      (origin
-        ;; Tests not included in release.
-        (method git-fetch)
-        (uri (git-reference
-               (url "https://github.com/jupyterhub/jupyter-server-proxy")
-               (commit (string-append "v" version))))
-        (file-name (git-file-name name version))
-        (sha256
-         (base32 "03yry0jz6xlvy28h3w514pw0q9w51lnr1lpcigqmhnf5x7g9bfyy"))))
-    (build-system python-build-system)
-    (arguments
-     `(#:tests? #f  ; Running the test suite isn't fully documented.
-       #:phases
-       (modify-phases %standard-phases
-         (replace 'check
-           (lambda* (#:key inputs outputs tests? #:allow-other-keys)
-             (when tests?
-               (add-installed-pythonpath inputs outputs)
-               ;; see .github/workflows/test.yaml and CONTRIBUTING.md
-               (setenv "JUPYTER_TOKEN" "secret")
-               (setenv "HOME" (getcwd))
-               (invoke "jupyter" "serverextension" "enable" "jupyter_server_proxy")
-               (system "jupyter-notebook --config=./tests/resources/jupyter_server_config.py &")
-               (sleep 5)
-               (invoke "pytest" "--verbose"))
-             #t)))))
-    (propagated-inputs
-     `(("python-aiohttp" ,python-aiohttp)
-       ("python-notebook" ,python-notebook)
-       ("python-simpervisor" ,python-simpervisor)))
-    (native-inputs
-     `(("python-pytest" ,python-pytest)))
-    (home-page "https://jupyter-server-proxy.readthedocs.io/")
-    (synopsis "Jupyter server extension to supervise and proxy web services")
-    (description
-     "Jupyter Server Proxy lets you run arbitrary external processes (such as
-RStudio, Shiny Server, Syncthing, PostgreSQL, Code Server, etc) alongside your
-notebook server and provide authenticated web access to them using a path like
-@code{/rstudio} next to others like @code{/lab}.  Alongside the python package
-that provides the main functionality, the JupyterLab extension
-(@code{@@jupyterlab/server-proxy}) provides buttons in the JupyterLab launcher
-window to get to RStudio for example.")
-    (license license:bsd-3)))
-
-(define-public python-jupyter-server
-  (package
-    (name "python-jupyter-server")
-    (version "1.8.0")
-    (source
-      (origin
-        (method url-fetch)
-        (uri (pypi-uri "jupyter-server" version))
-        (sha256
-         (base32
-          "0dqj51fj5ikklbl0gnb939pp80ngnzml5932mljn2lvplph7a34g"))))
-    (build-system python-build-system)
-    (propagated-inputs
-     `(("python-anyio" ,python-anyio)
-       ("python-argon2-cffi" ,python-argon2-cffi)
-       ("python-ipython-genutils" ,python-ipython-genutils)
-       ("python-jinja2" ,python-jinja2)
-       ("python-jupyter-client" ,python-jupyter-client)
-       ("python-jupyter-core" ,python-jupyter-core)
-       ("python-nbconvert" ,python-nbconvert)
-       ("python-nbformat" ,python-nbformat)
-       ("python-prometheus-client" ,python-prometheus-client)
-       ("python-pyzmq" ,python-pyzmq)
-       ("python-send2trash" ,python-send2trash)
-       ("python-terminado" ,python-terminado)
-       ("python-tornado" ,python-tornado)
-       ("python-traitlets" ,python-traitlets)
-       ("python-websocket-client" ,python-websocket-client)))
-    (native-inputs
-     `(("python-coverage" ,python-coverage)
-       ("python-ipykernel" ,python-ipykernel)
-       ("python-pytest" ,python-pytest)
-       ; ("python-pytest-console-scripts" ,python-pytest-console-scripts) - gone missing
-       ("python-pytest-cov" ,python-pytest-cov)
-       ("python-pytest-mock" ,python-pytest-mock)
-       ; ("python-pytest-tornasync" ,python-pytest-tornasync) - gone missing
-       ("python-requests" ,python-requests)))
-    (home-page "https://jupyter.org")
-    (synopsis
-      "The backend—i.e. core services, APIs, and REST endpoints—to Jupyter web applications.")
-    (description
-      "The backend—i.e. core services, APIs, and REST endpoints—to Jupyter web applications.")
-    (license #f)))
-
-(define-public python-anyio
-  (package
-    (name "python-anyio")
-    (version "3.1.0")
-    (source
-      (origin
-        (method url-fetch)
-        (uri (pypi-uri "anyio" version))
-        (sha256
-         (base32 "03mdklsgm4ik7hqr0lnc7k085as4vib27hclsrcdh0yhm48hgqj3"))))
-    (build-system python-build-system)
-    (propagated-inputs
-     `(("python-idna" ,python-idna)
-       ("python-sniffio" ,python-sniffio)))
-    (native-inputs
-     `(("python-coverage" ,python-coverage)
-       ("python-hypothesis" ,python-hypothesis)
-       ("python-mock" ,python-mock)
-       ("python-pytest" ,python-pytest)
-       ("python-pytest-mock" ,python-pytest-mock)
-       ("python-trustme" ,python-trustme)
-       ("python-uvloop" ,python-uvloop)))
-    (home-page "")
-    (synopsis
-      "High level compatibility layer for multiple asynchronous event loop implementations")
-    (description
-      "High level compatibility layer for multiple asynchronous event loop implementations")
-    (license license:expat)))
-
-;; Waiting for this to be merged upstream then I'll remove it
 (define-public python-flask-debugtoolbar
   (package
     (name "python-flask-debugtoolbar")
@@ -1754,7 +311,7 @@ useful information for debugging.")
     (native-inputs
       `(("python-coverage" ,python-coverage)
         ("python-coveralls" ,python-coveralls)
-        ("python-nose" ,python-nose)))
+        ("python-pynose" ,python-pynose)))
     (home-page "https://github.com/davidfischer/requirements-parser")
     (synopsis "Parses Pip requirement files")
     (description 
@@ -1788,187 +345,6 @@ file format spec.")
 
 ;; Note: This package is only needed for rdflib < 6.0; supersede when
 ;; the above are removed.
-(define-public python-rdflib-jsonld
-  (package
-    (name "python-rdflib-jsonld")
-    (version "0.6.2")
-    (source
-      (origin
-        (method url-fetch)
-        (uri (pypi-uri "rdflib-jsonld" version))
-        (sha256
-         (base32
-          "0qrshlqzv5g5bign7kjja3xf7hyk7xgayr3yd0qlqda1kl0x6z0h"))))
-    (build-system python-build-system)
-    (native-inputs
-     (list python-nose))
-    (propagated-inputs
-     (list python-rdflib))
-    (home-page "https://github.com/RDFLib/rdflib-jsonld")
-    (synopsis "rdflib extension adding JSON-LD parser and serializer")
-    (description "This package provides an rdflib extension adding JSON-LD
-parser and serializer.")
-    (license license:bsd-3)))
-
-(define-public python-rdflib-shim
-  (package
-    (name "python-rdflib-shim")
-    (version "1.0.3")
-    (source (origin
-              (method url-fetch)
-              (uri (pypi-uri "rdflib_shim" version))
-              (sha256
-               (base32
-                "03gwsjcinbyyqrhs2jfhs6mr7j69dfn5djihd0mv9al654gd2mfr"))
-              (modules '((guix build utils)))
-              (snippet
-               '(begin
-                  (substitute* "requirements.txt"
-                    (("rdflib-jsonld==0.6.1") "rdflib-jsonld"))))))
-    (build-system python-build-system)
-    (arguments
-     '(#:phases
-       (modify-phases %standard-phases
-         (replace 'check
-           (lambda* (#:key inputs outputs tests? #:allow-other-keys)
-             (when tests?
-               (add-installed-pythonpath inputs outputs)
-               (invoke "python" "-m" "unittest" "discover" "-s" "tests")))))))
-    (propagated-inputs
-     (list python-rdflib python-rdflib-jsonld))
-    (native-inputs
-     (list python-pbr))
-    (home-page "http://hsolbrig.github.io/rdflib-shim")
-    (synopsis "Shim for rdflib 5 and 6 incompatibilities")
-    (description "Shim for rdflib 5 and 6 incompatibilities")
-    (license license:cc0)))
-
-(define-public python-h5py-2
-  (package
-    (name "python-h5py")
-    (version "2.10.0")
-    (source (origin
-              (method url-fetch)
-              (uri (pypi-uri "h5py" version))
-              (sha256
-               (base32
-                "0baipzv8n93m0dq0riyi8rfhzrjrfrfh8zqhszzp1j2xjac2fhc4"))))
-    (build-system python-build-system)
-    (arguments
-     `(#:tests? #f ;no test target
-       #:phases (modify-phases %standard-phases
-                  (add-after 'unpack 'fix-hdf5-paths
-                    (lambda* (#:key inputs #:allow-other-keys)
-                      (setenv "HDF5_DIR"
-                              (assoc-ref inputs "hdf5")))))))
-    (propagated-inputs (list python-six python-numpy))
-    (inputs (list hdf5-1.10))
-    (native-inputs (list python-cython python-pkgconfig pkg-config))
-    (home-page "https://www.h5py.org/")
-    (synopsis "Read and write HDF5 files from Python")
-    (description
-     "The h5py package provides both a high- and low-level interface to the
-HDF5 library from Python.  The low-level interface is intended to be a
-complete wrapping of the HDF5 API, while the high-level component supports
-access to HDF5 files, datasets and groups using established Python and NumPy
-concepts.")
-    (license license:bsd-3)))
-
-(define-public python-typing-extensions-4.10
-  (package
-    (inherit python-typing-extensions)
-    (version "4.10.0")
-    (source (origin
-              (method url-fetch)
-              (uri (pypi-uri "typing_extensions" version))
-              (sha256
-               (base32
-                "1jxkj4pni8pdyrn79sq441lsp40xzw363n0qvfc6zfcgkv4dgaxh"))))))
-
-(define-public python-addict
-  (package
-    (name "python-addict")
-    (version "2.4.0")
-    (source (origin
-              (method url-fetch)
-              (uri (pypi-uri "addict" version))
-              (sha256
-               (base32
-                "1574sicy5ydx9pvva3lbx8qp56z9jbdwbj26aqgjhyh61q723cmk"))))
-    (build-system pyproject-build-system)
-    (home-page "https://github.com/mewwts/addict")
-    (synopsis "Python dictionary with attribute accessible values")
-    (description "@code{python-addict} provides dictionaries whose items can
-be get and set using both attribute and item syntax.")
-    (license license:expat)))
-
-(define-public python-enlighten
-  (package
-    (name "python-enlighten")
-    (version "1.12.4")
-    (source (origin
-              (method url-fetch)
-              (uri (pypi-uri "enlighten" version))
-              (sha256
-               (base32
-                "0psvglhi0c7d7pdk9rfb8scnv3xbq2fz78619x2mxvz094mxkwvm"))))
-    (build-system pyproject-build-system)
-    (propagated-inputs
-     (list python-blessed python-prefixed))
-    (home-page "https://github.com/Rockhopper-Technologies/enlighten")
-    (synopsis "Console progress bar library")
-    (description "@code{python-enlighten} is a console progress bar library
-for Python.  The main advantage of Enlighten is that it allows writing to
-stdout and stderr without any redirection or additional code---just print or
-log as you normally would.  Enlighten also includes experimental support for
-Jupyter Notebooks.")
-    (license license:mpl2.0)))
-
-(define-public python-pypubsub
-  (package
-    (name "python-pypubsub")
-    (version "4.0.3")
-    ;; There is no source tarball on PyPI.
-    (source (origin
-              (method git-fetch)
-              (uri (git-reference
-                    (url "https://github.com/schollii/pypubsub")
-                    (commit (string-append "v" version))))
-              (file-name (git-file-name name version))
-              (sha256
-               (base32
-                "02j74w28wzmdvxkk8i561ywjgizjifq3hgcl080yj0rvkd3wivlb"))))
-    (build-system python-build-system)
-    (home-page "https://github.com/schollii/pypubsub")
-    (synopsis "Python publish-subscribe library")
-    (description "@code{python-pypubsub} provides a pure Python
-publish-subscribe API to facilitate event-based or message-based architecture
-in a single-process application.  It is centered on the notion of a topic;
-senders publish messages of a given topic, and listeners subscribe to messages
-of a given topic, all inside the same process.  The package also supports a
-variety of advanced features that facilitate debugging and maintaining topics
-and messages in larger desktop or server-based applications.")
-    (license license:bsd-2)))
-
-(define-public python-prefixed
-  (package
-    (name "python-prefixed")
-    (version "0.7.0")
-    (source (origin
-              (method url-fetch)
-              (uri (pypi-uri "prefixed" version))
-              (sha256
-               (base32
-                "1sdvxwy4kvcxvnq1nx70j1ccx5ga6wdb478vqd5azf1fc1gd2m0b"))))
-    (build-system pyproject-build-system)
-    (home-page "https://github.com/Rockhopper-Technologies/prefixed")
-    (synopsis "Prefixed alternative numeric library")
-    (description "@code{python-prefixed} provides an alternative
-implementation of the built-in float which supports formatted output with
-SI (decimal) and IEC (binary) prefixes.")
-    (license license:mpl2.0)))
-
-
 (define-public python-pillow-9
   (package
     (name "python-pillow-9")
@@ -2053,3 +429,6 @@ a general image processing tool.")
      library written in C.  It features a fast HTML renderer and functionality to make custom
      renderers (e.g. man pages or LaTeX).")
     (license license:expat)))
+
+;; python-jupyter-server removed: version 1.8.0 source gone from PyPI.
+;; Use (gnu packages python-science) python-jupyter-server instead.
diff --git a/gn/packages/python24.scm b/gn/packages/python24.scm
deleted file mode 100644
index 381b1ef..0000000
--- a/gn/packages/python24.scm
+++ /dev/null
@@ -1,545 +0,0 @@
-(define-module (gn packages python24)
-  #:use-module ((guix licenses) #:prefix license:)
-  #:use-module (guix utils)
-  #:use-module (guix packages)
-  #:use-module (guix download)
-  #:use-module (guix git-download)
-  #:use-module (guix build-system copy)
-  #:use-module (guix build-system python)
-  #:use-module (gn packages databases)
-  #:use-module (gn packages python)
-  #:use-module (past packages python)
-  #:use-module (past packages tls)
-  #:use-module (gnu packages compression)
-  #:use-module (gnu packages databases)
-  #:use-module (gnu packages elf)
-  #:use-module (gnu packages gcc)
-  #:use-module (gnu packages maths)
-  #:use-module (gnu packages python-xyz)
-  ; #:use-module (gnu packages tls)
-  #:use-module (srfi srfi-1))
-
-(define (default-python2.4)
-    "Return the default Python-2.4 package."
-      ;; Lazily resolve the binding.
-        (let ((python (resolve-interface '(past packages python))))
-              (module-ref python 'python-2.4)))
-
-;; We borrow this from (guix build-system python) since we cannot refer to it
-;; with the magic '@@' symbol since Guix has switched to guile-3.0.
-(define* (package-with-explicit-python python old-prefix new-prefix
-                                       #:key variant-property)
-  "Return a procedure of one argument, P.  The procedure creates a package with
-the same fields as P, which is assumed to use PYTHON-BUILD-SYSTEM, such that
-it is compiled with PYTHON instead.  The inputs are changed recursively
-accordingly.  If the name of P starts with OLD-PREFIX, this is replaced by
-NEW-PREFIX; otherwise, NEW-PREFIX is prepended to the name.
-
-When VARIANT-PROPERTY is present, it is used as a key to search for
-pre-defined variants of this transformation recorded in the 'properties' field
-of packages.  The property value must be the promise of a package.  This is a
-convenient way for package writers to force the transformation to use
-pre-defined variants."
-  (define package-variant
-    (if variant-property
-        (lambda (package)
-          (assq-ref (package-properties package)
-                    variant-property))
-        (const #f)))
-
-  (define (transform p)
-    (cond
-     ;; If VARIANT-PROPERTY is present, use that.
-     ((package-variant p)
-      => force)
-
-     ;; Otherwise build the new package object graph.
-     ((eq? (package-build-system p) python-build-system)
-      (package
-        (inherit p)
-        (location (package-location p))
-        (name (let ((name (package-name p)))
-                (string-append new-prefix
-                               (if (string-prefix? old-prefix name)
-                                   (substring name
-                                              (string-length old-prefix))
-                                   name))))
-        (arguments
-         (let ((python (if (promise? python)
-                           (force python)
-                           python)))
-           (ensure-keyword-arguments (package-arguments p)
-                                     `(#:python ,python))))))
-     (else p)))
-
-  (define (cut? p)
-    (or (not (eq? (package-build-system p) python-build-system))
-        (package-variant p)))
-
-  (package-mapping transform cut?))
-
-(define package-with-python24
-  (package-with-explicit-python (delay (default-python2.4))
-                                "python-" "python24-"
-                                #:variant-property 'python24-variant))
-
-(define (strip-python24-variant p)
-  (package
-    (inherit p)
-    (properties (alist-delete 'python24-variant (package-properties p)))))
-
-(define-public python24-htmlgen
-  (package
-    (name "python24-htmlgen")
-    (version "0.9")
-    ;(version "0.99")
-    (source
-      (origin
-        (method url-fetch)
-        (uri (pypi-uri "htmlgen" version))
-        (sha256
-         (base32
-          "14xzjgwdqgs1vs5mq7mg3w48snvgb77yywv64mg8k6qhapmnafdw"))))
-          ;"1kbn6jcbf2mpb9f8hm5gcsipy7habqrq4794lpdbzm5mqxlclmnl"))))
-    (build-system python-build-system)
-    (arguments
-     `(#:python ,python-2.4))
-    (native-inputs
-     `(("python24-setuptools" ,python24-setuptools)))
-    (propagated-inputs
-     `(("python24-asserts" ,python24-asserts)))
-    (home-page "https://github.com/srittau/python-htmlgen")
-    (synopsis "Python HTML 5 Generator")
-    (description "Python-htmlgen is a library to generate HTML from classes.")
-    (license license:expat)))
-
-(define-public python24-asserts
-  (package
-    (name "python24-asserts")
-    (version "0.6")
-    (source
-      (origin
-        (method url-fetch)
-        (uri (pypi-uri "asserts" version))
-        (sha256
-         (base32
-          "05ffy111giwv6sqx97vzzsvcra0gxzx2ilv16gyw135v583frxbn"))))
-    (build-system python-build-system)
-    (arguments
-     `(#:python ,python-2.4))
-    (native-inputs
-     `(("python24-setuptools" ,python24-setuptools)))
-    (home-page "https://github.com/srittau/python-asserts")
-    (synopsis "Stand-alone Assertions for Python")
-    (description "Stand-alone Assertions for Python")
-    (license license:expat)))
-
-(define-public python24-pil
-  (package
-    (inherit python2-pil1)
-    (name "python24-pil")
-    (arguments
-     (substitute-keyword-arguments (package-arguments python2-pil1)
-       ((#:python _) python-2.4)
-       ((#:phases phases '%standard-phases)
-        `(modify-phases ,phases
-           (replace 'add-install-to-pythonpath
-             (lambda* (#:key inputs outputs #:allow-other-keys)
-               (setenv "PYTHONPATH"
-                       (string-append (site-packages inputs outputs) ":"
-                                      (getenv "PYTHONPATH")))))
-           (delete 'sanity-check))))))) ; Not applicable to python-2.4
-
-(define-public python24-piddle
-  (package
-    (inherit python2-piddle-gn)
-    (name "python24-piddle")
-    (arguments
-     (substitute-keyword-arguments (package-arguments python2-piddle-gn)
-       ((#:python _) python-2.4)
-       ((#:phases phases '%standard-phases)
-        `(modify-phases ,phases
-           (replace 'add-install-to-pythonpath
-             (lambda* (#:key inputs outputs #:allow-other-keys)
-               (setenv "PYTHONPATH"
-                       (string-append (site-packages inputs outputs) ":"
-                                      (getenv "PYTHONPATH")))))
-           (delete 'sanity-check)))))   ; Not applicable to python-2.4
-    (native-inputs `(("python24-setuptools" ,python24-setuptools)))
-    (propagated-inputs
-     `(("python24-pil" ,python24-pil)))))
-
-;; Apparently this is the library which mimics python-2.6+'s json library
-(define-public python24-simplejson
-  (let ((base (package-with-python24 python-simplejson)))
-    (package
-      (inherit base)
-      (version "2.0.9") ; last version to officially support python2.4
-      (source
-        (origin
-          (method url-fetch)
-          (uri (pypi-uri "simplejson" version))
-          (sha256
-           (base32
-            "1vlkxibal9ljabybawnqr3jh6f6g21c5pbrzl65z9vwbfxhg9kdb"))))
-      (native-inputs
-       `(("python24-setuptools" ,python24-setuptools)
-         ,@(package-native-inputs base))))))
-
-(define-public python24-parallel
-  (package
-    (inherit python-parallel)
-    (name "python24-parallel")
-    (arguments
-     `(#:python ,python-2.4
-       #:use-setuptools? #f
-       #:tests? #f))))  ; no tests
-
-(define GN1-thirdparty-sources
-  (origin
-    (method url-fetch/tarbomb)
-    (uri "https://files.genenetwork.org/software/thirdparty.tgz")
-    (file-name "GN1-thirdparty")
-    (sha256
-     (base32
-      "0nnp6g412hjfrcn3k2yrfb14sxv06k0149whc7qmv678nyj5zhfa"))))
-
-(define-public python24-json-GN1
-  (package
-    (name "python24-json-GN1")
-    (version "GN1")
-    (source GN1-thirdparty-sources)
-    (build-system python-build-system)
-    (arguments
-     `(#:python ,python-2.4
-       #:phases
-       (modify-phases %standard-phases
-         (delete 'build)
-         (delete 'check)
-         (replace 'add-install-to-pythonpath
-           (lambda* (#:key inputs outputs #:allow-other-keys)
-             (setenv "PYTHONPATH"
-                     (string-append (site-packages inputs outputs) ":"
-                                    (getenv "PYTHONPATH")))))
-         (delete 'sanity-check)     ; Not applicable to python-2.4
-         (replace 'install
-           (lambda* (#:key outputs #:allow-other-keys)
-             (let* ((out     (assoc-ref outputs "out"))
-                    (sitedir (string-append out "/lib/python2.4/site-packages/json/")))
-               (mkdir-p sitedir)
-               (copy-recursively "thirdparty/json" sitedir)))))))
-    (home-page "")
-    (synopsis "")
-    (description "")
-    (license license:lgpl2.1+)))
-
-(define-public python24-svg-GN1
-  (package
-    (name "python24-svg-GN1")
-    (version "1.0")
-    (source GN1-thirdparty-sources)
-    (build-system python-build-system)
-    (arguments
-     `(#:python ,python-2.4
-       #:phases
-       (modify-phases %standard-phases
-         (delete 'build)
-         (delete 'check)
-         (replace 'add-install-to-pythonpath
-           (lambda* (#:key inputs outputs #:allow-other-keys)
-             (setenv "PYTHONPATH"
-                     (string-append (site-packages inputs outputs) ":"
-                                    (getenv "PYTHONPATH")))))
-         (delete 'sanity-check)     ; Not applicable to python-2.4
-         (replace 'install
-           (lambda* (#:key outputs #:allow-other-keys)
-             (let* ((out     (assoc-ref outputs "out"))
-                    (sitedir (string-append out "/lib/python2.4/site-packages/svg/")))
-               (mkdir-p sitedir)
-               (copy-recursively "thirdparty/svg" sitedir)))))))
-    (home-page "")
-    (synopsis "")
-    (description "")
-    (license license:bsd-4)))
-
-(define-public python24-htmlgen-GN1
-  (package
-    (name "python24-htmlgen-GN1")
-    (version "2.5")
-    (source GN1-thirdparty-sources)
-    (build-system python-build-system)
-    (arguments
-     `(#:python ,python-2.4
-       #:phases
-       (modify-phases %standard-phases
-         (delete 'build)
-         (delete 'check)
-         (replace 'add-install-to-pythonpath
-           (lambda* (#:key inputs outputs #:allow-other-keys)
-             (setenv "PYTHONPATH"
-                     (string-append (site-packages inputs outputs) ":"
-                                    (getenv "PYTHONPATH")))))
-         (delete 'sanity-check)     ; Not applicable to python-2.4
-         (replace 'install
-           (lambda* (#:key outputs #:allow-other-keys)
-             (let* ((out     (assoc-ref outputs "out"))
-                    (sitedir (string-append out "/lib/python2.4/site-packages/htmlgen/")))
-               (mkdir-p sitedir)
-               (copy-recursively "thirdparty/htmlgen" sitedir)
-               #t))))))
-    (home-page "")
-    (synopsis "")
-    (description "")
-    (license license:bsd-2))) ; I'm not actually sure, checked HTMLgen.py
-
-(define-public python24-pyx-GN1
-  (package
-    (name "python24-pyx-GN1")
-    (version "0.8")
-    (source GN1-thirdparty-sources)
-    (build-system python-build-system)
-    (arguments
-     `(#:python ,python-2.4
-       #:phases
-       (modify-phases %standard-phases
-         (delete 'build)
-         (delete 'check)
-         (replace 'install
-           (lambda* (#:key outputs #:allow-other-keys)
-             (let* ((out     (assoc-ref outputs "out"))
-                    (sitedir (string-append out "/lib/python2.4/site-packages/pyx/")))
-               (mkdir-p sitedir)
-               (copy-recursively "thirdparty/pyx" sitedir)
-               #t))))))
-    (home-page "")
-    (synopsis "")
-    (description "")
-    (license license:gpl2+)))
-
-(define-public python24-pyxlwriter-GN1
-  (package
-    (name "python24-pyxlwriter-GN1")
-    (version "0.4a3")
-    (source GN1-thirdparty-sources)
-    (build-system python-build-system)
-    (arguments
-     `(#:python ,python-2.4
-       #:phases
-       (modify-phases %standard-phases
-         (delete 'build)
-         (delete 'check)
-         (replace 'install
-           (lambda* (#:key outputs #:allow-other-keys)
-             (let* ((out     (assoc-ref outputs "out"))
-                    (sitedir (string-append out "/lib/python2.4/site-packages/pyXLWriter/")))
-               (mkdir-p sitedir)
-               (copy-recursively "thirdparty/pyXLWriter" sitedir)
-               #t))))))
-    (home-page "")
-    (synopsis "")
-    (description "")
-    (license license:lgpl2.1+)))
-
-(define-public python24-pp-GN1
-  (package
-    (name "python24-pp-GN1")
-    (version "1.5.7")
-    (source GN1-thirdparty-sources)
-    (build-system python-build-system)
-    (arguments
-     `(#:python ,python-2.4
-       #:use-setuptools? #f
-       #:tests? #f
-       #:phases
-       (modify-phases %standard-phases
-         (add-after 'unpack 'change-directory
-           (lambda _
-             (chdir "thirdparty/pp-1.5.7")))
-         (replace 'add-install-to-pythonpath
-           (lambda* (#:key inputs outputs #:allow-other-keys)
-             (setenv "PYTHONPATH"
-                     (string-append (site-packages inputs outputs) ":"
-                                    (getenv "PYTHONPATH")))))
-         (delete 'sanity-check))))  ; Not applicable to python-2.4
-    (home-page "")
-    (synopsis "")
-    (description "")
-    (license license:bsd-3)))
-
-;; 1.2.3 exactly. There was an API change between 1.2.3 and 1.2.5.
-;; https://stackoverflow.com/questions/21740359/python-mysqldb-typeerror-not-all-arguments-converted-during-string-formatting/53563287#53563287
-(define-public python24-mysqlclient
-  (package
-    (name "python24-mysqlclient")
-    (version "1.2.3")
-    (source
-      (origin
-        (method url-fetch)
-        (uri (pypi-uri "MySQL-python" version))
-        (sha256
-         (base32
-          "0vkyg9dmj29hzk7fy77f42p7bfj28skyzsjsjry4wqr3z6xnzrkx"))))
-    (build-system python-build-system)
-    (arguments
-     `(#:python ,python-2.4
-       #:phases
-       (modify-phases %standard-phases
-         (replace 'add-install-to-pythonpath
-           (lambda* (#:key inputs outputs #:allow-other-keys)
-             (setenv "PYTHONPATH"
-                     (string-append (site-packages inputs outputs) ":"
-                                    (getenv "PYTHONPATH")))))
-         (delete 'sanity-check)     ; Not applicable to python-2.4
-         (add-before 'check 'pre-check
-           (lambda* (#:key inputs tests? #:allow-other-keys)
-             (when tests?
-               (begin
-                 (mkdir-p "/tmp/mysqld")
-                 (call-with-output-file "/tmp/my.cnf"
-                   (lambda (p)
-                     (format p
-                             "[mysqld]~@
-                             datadir = /tmp/mysqld~@
-                             port = 3306~@
-                             user = nixbld~@
-                             #character-set-server = utf8mb4~@
-                             socket = /tmp/mysqld/mysql.sock~%")))
-                 (setenv "TESTDB" "/tmp/my.cnf")
-                 ;; mysql-5.0 puts mysqld in libexec
-                 (setenv "PATH" (string-append (getenv "PATH") ":"
-                                               (assoc-ref inputs "mysql") "/libexec"))
-                 (system "mysqld --defaults-file=/tmp/my.cnf &")
-                 (sleep 5)
-                 (invoke "mysqladmin" "-S" "/tmp/mysqld/mysql.sock" "variables")
-                 (invoke "mysql" "-S" "/tmp/mysqld/mysql.sock"
-                         "-e" "'create database mysqldb_test charset utf8;'"))))))
-       #:tests? #f))    ; TODO: Run the test suite
-    (native-inputs
-     `(("mysql" ,mysql-5.0) ; Best supported version according to the README.
-       ("python-nose" ,python24-nose)
-       ("python-setuptools" ,python24-setuptools)))
-    (inputs
-     `(("openssl" ,openssl-1.0)
-       ("zlib" ,zlib)))
-    (home-page "http://mysql-python.sourceforge.net/")
-    (synopsis "Python interface to MySQL")
-    (description "MySQLdb is an interface to the popular MySQL database server
-for Python.  The design goals are:
-@itemize
-@item with Python database API version 2.0
-@item Thread-safety
-@item Thread-friendliness (threads will not block each other)
-@item Compatibility with MySQL-3.23 and later
-@end itemize")
-    (license license:gpl2+)))
-
-;; It seems this isn't the correct DIRECT binary
-(define-public python24-direct
-  (package
-    (name "python24-direct")
-    (version "1.0.1")
-    (source
-      (origin
-        (method url-fetch)
-        (uri (pypi-uri "DIRECT" version))
-        (sha256
-         (base32
-          "1d4cf9hynlr42hq0k8w7j4qi45rkrgil332sh0hymklxgmyi21h5"))
-        (modules '((guix build utils)))
-        (snippet
-         '(begin
-            ;; Files are autogenerated using f2py.
-            (delete-file "src/direct-f2pywrappers.f")
-            (delete-file "src/directmodule.c")
-            #t))))
-    (build-system python-build-system)
-    (arguments
-     `(#:python ,python-2.4
-       #:phases
-       (modify-phases %standard-phases
-         (add-after 'unpack 'patch-source
-           (lambda _
-             (substitute* "DIRECT/__init__.py"
-               (("\\.direct") "direct"))
-             #t))
-         (replace 'check
-           (lambda* (#:key tests? inputs outputs #:allow-other-keys)
-             (when tests?
-               (add-installed-pythonpath inputs outputs)
-               (with-directory-excursion "test"
-                 (invoke "python" "test_direct.py")))
-             #t))
-         (add-after 'install 'copy-library
-           (lambda* (#:key outputs #:allow-other-keys)
-             (with-directory-excursion
-               (string-append (assoc-ref outputs "out")
-                              "/lib/python2.4/site-packages")
-               (copy-file "DIRECT/direct.so" "direct.so"))
-             #t))
-         (replace 'install-license-files
-           (lambda* (#:key outputs #:allow-other-keys)
-             (install-file "COPYRIGHT"
-                           (string-append (assoc-ref outputs "out")
-                                          "/share/doc/" ,name "-" ,version))
-             #t)))))
-    (propagated-inputs
-     `(("python24-numpy" ,python24-numpy-1.2)))
-    (inputs
-     `(("gfortran" ,gfortran)))
-    (native-inputs
-     `(("python24-nose" ,python24-nose)
-       ("python24-setuptools" ,python24-setuptools)))
-    ;; Also seems to be here: https://github.com/amitibo/pydirect
-    (home-page "http://code.google.com/p/pydirect/")
-    (synopsis "Python wrapper to the DIRECT algorithm")
-    (description
-     "DIRECT is a method to solve global bound constraint optimization problems
-and was originally developed by D. R. Jones, C. D. Perttunen and B. E. Stuckmann.
-@code{pydirect} is a python wrapper around DIRECT.  It enables using DIRECT from
-the comfort of the great Python scripting language.
-The @code{pydirect} package uses the fortan implementation of DIRECT written by
-Joerg.M.Gablonsky, DIRECT Version 2.0.4.  More information on the DIRECT
-algorithm can be found in Gablonsky's
-@url{http://repository.lib.ncsu.edu/ir/bitstream/1840.16/3920/1/etd.pdf,
-thesis}.")
-    (license license:expat)))
-
-(define-public python24-direct-gn
-  (package
-    (name "python24-direct-gn")
-    (version "GN")
-    (source (origin
-              (method url-fetch)
-              (uri "https://files.genenetwork.org/software/direct.so")
-              (file-name "direct.so")
-              (sha256
-               (base32
-                "0kj11dbi25k0wvyxxsylx7dsc7wm7rja799fymklkdd8h561la4i"))))
-    (build-system copy-build-system)
-    (arguments
-     `(#:install-plan
-       '(("direct.so" "lib/python2.4/site-packages/"))
-       #:phases
-       (modify-phases %standard-phases
-         (replace 'unpack
-           (lambda* (#:key inputs #:allow-other-keys)
-             (copy-file (assoc-ref inputs "source") "direct.so")
-             #t))
-         (add-after 'unpack 'patchelf
-           (lambda* (#:key inputs #:allow-other-keys)
-             ;; Writable so we can use patchelf, executable so it is useful.
-             ;; After installation the writable bit is stripped off.
-             (chmod "direct.so" #o777)
-             (invoke "patchelf"
-                     "--set-rpath"
-                     (string-append (assoc-ref inputs "gcc:lib") "/lib")
-                     "direct.so")
-             #t)))))
-    (inputs
-     `(("gcc:lib" ,gcc "lib")))
-    (native-inputs
-     `(("patchelf" ,patchelf)))
-    (home-page "")
-    (synopsis "")
-    (description "")
-    (license #f)))
diff --git a/gn/packages/quality-control.scm b/gn/packages/quality-control.scm
deleted file mode 100644
index f0a9c2f..0000000
--- a/gn/packages/quality-control.scm
+++ /dev/null
@@ -1,176 +0,0 @@
-(define-module (gn packages quality-control)
-  #:use-module ((guix licenses) #:prefix license:)
-  #:use-module (guix packages)
-  #:use-module (guix utils)
-  #:use-module (guix download)
-  #:use-module (guix git-download)
-  #:use-module (guix build-system gnu)
-  #:use-module (guix build-system asdf)
-  #:use-module (gnu packages lisp-check)
-  #:use-module (gnu packages lisp-xyz)
-  #:use-module (gnu packages)
-  #:use-module (gnu packages check)
-  #:use-module (gnu packages databases)
-  #:use-module (gnu packages python-xyz)
-  #:use-module (gnu packages python-web)
-  #:use-module (guix build-system python)
-  #:use-module (gnu packages python-check))
-
-(define-public libcsv
-  (let ((commit "b1d5212831842ee5869d99bc208a21837e4037d5")
-        (revision "0"))
-    (package
-      (name "libcsv")
-      (version commit)
-      (source
-       (origin
-         (method git-fetch)
-         (uri
-          (git-reference
-           (url "https://github.com/rgamble/libcsv")
-           (commit commit)))
-         (file-name (git-file-name name commit))
-         (sha256
-          (base32 "0nni9y0prz8lh3dywbha52yfg8qcf3dn0nb7iinfwlrmmamfyzg2"))))
-      (build-system gnu-build-system)
-      (arguments
-        `(#:make-flags
-          (list (string-append "CC=" ,(cc-for-target)))))
-      (home-page "https://github.com/rgamble/libcsv")
-      (synopsis "CSV library written in pure ANSI C")
-      (description
-"CSV library written in pure ANSI C that can read and write CSV data.")
-      (license license:lgpl2.1+))))
-
-(define-public sbcl-qc
-  (let ((commit "a0d8c807fa3f817f977a64f02f5f8936044050ad")
-        (revision "4"))
-    (package
-      (name "sbcl-qc")
-      (version (git-version "20220331" revision commit))
-      (source
-        (origin
-          (method git-fetch)
-          (uri (git-reference
-                (url "https://git.genenetwork.org/jgart/qc")
-                (commit commit)))
-          (sha256
-           (base32 "12i9s1ipqarvq6gsjqycfm8d3ym7dv7vn3nxb5c6214xrd4mmzjj"))
-          (file-name (git-file-name name commit))))
-      (build-system asdf-build-system/sbcl)
-      (arguments
-        `(#:tests? #f)) ; Need to fix tests.
-      (native-inputs
-        (list sbcl-1am))
-      (inputs
-        (list sbcl-alexandria
-              sbcl-split-sequence))
-      (home-page "https://git.genenetwork.org/jgart/qc/")
-      (synopsis "Quality control of delimited files")
-      (description
-"@code{cl-qc} is a Common Lisp library for linting the following in
-delimited text files:
-@itemize
-@item Whitespace
-@item Floating-point number well-formedness
-@item GeneChip Platform ID checks for Affymetrix, Illumina, and others
-@end itemize\n")
-      (license license:unlicense))))
-
-(define-public cl-qc
-  (sbcl-package->cl-source-package sbcl-qc))
-
-(define-public ecl-qc
-  (sbcl-package->ecl-package sbcl-qc))
-
-
-;;  The file
-;;  #P"/tmp/guix-build-sbcl-qc-uploads-20220301-0.76f870e.drv-0/source/strains.csv"
-;;  does not exist:
-;;    No such file or directory
-#;(define-public sbcl-qc-uploads
-  (let ((commit "76f870efad964bf680bf633e272094082008e69c")
-        (revision "0"))
-    (package
-      (name "sbcl-qc-uploads")
-      (version (git-version "20220301" revision commit))
-      (source
-        (origin
-          (method git-fetch)
-          (uri (git-reference
-                (url "https://git.genenetwork.org/jgart/qc-uploads")
-                (commit commit)))
-          (sha256
-           (base32 "1nzcdqjwh1xpr92d01fvlmdysxizyklaid10zrxbi12jmdydapil"))
-          (file-name (git-file-name name commit))))
-      (build-system asdf-build-system/sbcl)
-      ;; needs install-file for strains.tsv. This require more testing.
-      ;; todo: see for an example: https://github.com/interactive-ssr/issr-server/blob/master/guix.scm#L46
-      (arguments
-       `(#:tests? #f ; There are no tests yet.
-         #:asd-files '("qc-uploads.asd")))
-      (inputs
-        (list sbcl-alexandria
-              sbcl-ningle
-              sbcl-clack
-              sbcl-cl-css
-              sbcl-cl-who
-              sbcl-cl-fad
-              sbcl-qc ; packaged in guix-bioinformatics
-              sbcl-woo))
-      (home-page "https://git.genenetwork.org/jgart/qc-uploads/")
-      (synopsis "Web UI for qc")
-      (description 
-"@code{qc-uploads} provides a web UI for @code{qc}.")
-      (license license:expat))))
-
-#;(define-public cl-qc-uploads
-  (sbcl-package->cl-source-package sbcl-qc-uploads))
-
-#;(define-public ecl-qc-uploads
-  (sbcl-package->ecl-package sbcl-qc-uploads))
-
-(define-public genenetwork-qc
-  (let ((commit "b735cae93ac8243bc9b07a10549a68330934d9bf")
-	(revision "2"))
-    (package
-      (name "genenetwork-qc")
-      (version (git-version "0.0.1" revision commit))
-      (source
-       (origin
-	 (method git-fetch)
-	 (uri
-	  (git-reference
-	   ;;(url "https://git.genenetwork.org/fredmanglis/gnqc_py.git")
-	   (url "https://gitlab.com/fredmanglis/gnqc_py.git")
-	   (commit commit)))
-	 (sha256
-	  (base32 "0my3zm7kc5ijsp7lmh5qf6z198x1gw1cr17230d20za65pssri3j"))))
-      (build-system python-build-system)
-      (arguments
-       `(#:tests? #f ; Tests requiring redis server fail. Figure out how to start redis
-	 #:phases
-	 (modify-phases %standard-phases
-	   (replace 'check
-	     (lambda* (#:key tests? #:allow-other-keys)
-	       (when tests?
-		 (invoke "pytest")))))))
-      (inputs
-       (list python-mypy
-	     python-pylint
-	     python-pytest
-	     python-hypothesis))
-      (propagated-inputs
-       (list redis
-	     mariadb
-	     gunicorn
-	     python-redis
-	     python-flask
-	     python-jsonpickle
-	     python-mysqlclient))
-      (synopsis "GeneNetwork Quality Control Application")
-      (description
-       "GeneNetwork qc is a quality control application for the data files that
- eventually are used to add to the data in the GeneNetwork project.")
-      (home-page "https://git.genenetwork.org/fredmanglis/gnqc_py")
-      (license license:agpl3+))))
diff --git a/gn/packages/r-shiny.scm b/gn/packages/r-shiny.scm
deleted file mode 100644
index c2e61a6..0000000
--- a/gn/packages/r-shiny.scm
+++ /dev/null
@@ -1,61 +0,0 @@
-(define-module (gn packages r-shiny)
-  #:use-module ((guix licenses) #:prefix license:)
-  #:use-module (guix download)
-  #:use-module (guix build-system r)
-  #:use-module (guix packages)
-  #:use-module ((guix licenses) #:prefix license:)
-  #:use-module (gnu packages bioconductor)
-  #:use-module (gnu packages cran)
-  #:use-module (gnu packages javascript))
-
-(define-public r-shiny-gn
-  (deprecated-package "r-shiny-gn" r-shiny))
-
-(define-public js-strftime-0.9
-  (deprecated-package "js-strftime" js-strftime))
-
-(define-public js-es5-shim-2
-  (deprecated-package "js-es5-shim" js-es5-shim))
-
-
-(define-public r-runit
-  (package
-    (name "r-runit")
-    (version "0.4.33")
-    (source
-     (origin
-       (method url-fetch)
-       (uri (cran-uri "RUnit" version))
-       (sha256
-        (base32 "0pybwvd57vf71vvlxdrynw5n6s5gnbqnwvq0qpd395ggqypwb95j"))))
-    (properties `((upstream-name . "RUnit")))
-    (build-system r-build-system)
-    (home-page "https://cran.r-project.org/package=RUnit")
-    (synopsis "R Unit Test Framework")
-    (description
-     "R functions implementing a standard Unit Testing framework, with additional code
-inspection and report generation tools.")
-    (license license:gpl2)))
-
-(define-public r-org-rn-eg-db ; used by jumpshiny service
-  (package
-    (name "r-org-rn-eg-db")
-    (version "3.20.0")
-    (source (origin
-              (method url-fetch)
-              (uri (bioconductor-uri "org.Rn.eg.db" version 'annotation))
-              (sha256
-               (base32
-                "009c22ry5nnklzdc5dywnf8lq41cj3141yr5vw1kgifys6lanj01"))))
-    (properties
-     `((upstream-name . "org.Rn.eg.db")))
-    (build-system r-build-system)
-    (propagated-inputs
-     (list r-annotationdbi))
-    (native-inputs (list r-runit))
-    (home-page "https://www.bioconductor.org/packages/org.Rn.eg.db/")
-    (synopsis "Genome wide annotation for Rat")
-    (description
-     "This package provides mappings from Entrez gene identifiers to various
-annotations for the genome of the rat.")
-    (license license:artistic2.0)))
diff --git a/gn/packages/riscv.scm b/gn/packages/riscv.scm
deleted file mode 100644
index e87f8a9..0000000
--- a/gn/packages/riscv.scm
+++ /dev/null
@@ -1,98 +0,0 @@
-;;;
-;;; Commentary:
-;;;
-;;; This module is a temporary staging ground for Guix packages ported
-;;; to RISC-V. They should be contributed upstream at the earliest.
-;;;
-
-;;;
-;;; Code:
-;;;
-
-(define-module (gn packages riscv)
-  #:use-module (gn packages fpga)
-  #:use-module (gnu packages cpp)
-  #:use-module (gnu packages virtualization)
-  #:use-module (guix build-system gnu)
-  #:use-module (guix gexp)
-  #:use-module (guix git-download)
-  #:use-module ((guix licenses) #:prefix license:)
-  #:use-module (guix packages))
-
-;; Improvements to riscv support have been merged since the last release.
-(define-public atomic-queue-git
-  (let ((commit "7d75e9ed0359650224b29cdf6728c5fe0a19fffb")     ; 2022-03-11
-        (revision "1"))
-    (package
-      (inherit atomic-queue)
-      (name "atomic-queue")
-      (version (git-version "1.0" revision commit))
-      (source (origin
-                (method git-fetch)
-                (uri (git-reference
-                      (url "https://github.com/max0x7ba/atomic_queue")
-                      (commit commit)))
-                (file-name (git-file-name name version))
-                (sha256
-                 (base32
-                  "1dh8x0ikfwk0by5avwfv9gvr9ay6jy13yr66rvgw9wwyxmklz848")))))))
-
-(define-public cva6
-  (let ((commit "b40bb3264bc0ca0b5b9e9a3eb351cbaaa9b50b62")
-        (revision "1"))
-    (package
-     (name "cva6")
-     (version (git-version "4.2.0" revision commit))
-     (source (origin
-              (method git-fetch)
-              (uri (git-reference
-                    (url "https://github.com/openhwgroup/cva6")
-                    (commit commit)
-                    (recursive? #t)))
-              (file-name (git-file-name name version))
-              (sha256
-               (base32
-                "16zyfqfycii25sirh3bm80dws2fn10a02ny8kzijr0p0a1azklmv"))))
-     (build-system gnu-build-system)
-     (arguments
-      (list
-       #:tests? #f
-       #:make-flags #~(list "verilate"
-                            ;; Dummy RISCV to suppress Makefile error.
-                            "RISCV=foo")
-       #:phases
-       #~(modify-phases %standard-phases
-           ;; Patch cva6 to print to stdout correctly. See
-           ;; https://github.com/openhwgroup/cva6/issues/748
-           (add-after 'unpack 'fix-stdout
-             (lambda _
-               (substitute* "corev_apu/tb/rvfi_tracer.sv"
-                 (("rvfi_i\\[i\\].insn == 32'h00000073")
-                  "0"))))
-           (delete 'configure)
-           (replace 'install
-             (lambda* (#:key outputs #:allow-other-keys)
-               (let ((bin (string-append (assoc-ref outputs "out")
-                                         "/bin")))
-                 (mkdir-p bin)
-                 (copy-file "work-ver/Variane_testharness"
-                            (string-append bin "/ariane"))))))))
-     (inputs
-      (list spike verilator-4.110))
-     (home-page "https://docs.openhwgroup.org/projects/cva6-user-manual/")
-     (synopsis "Application class 6-stage RISC-V CPU")
-     (description "CVA6 is a 6-stage, single issue, in-order CPU which
-implements the 64-bit RISC-V instruction set. It fully implements I,
-M, A and C extensions as specified in Volume I: User-Level ISA V 2.3
-as well as the draft privilege extension 1.10. It implements three
-privilege levels M, S, U to fully support a Unix-like operating
-system. Furthermore it is compliant to the draft external debug spec
-0.13.
-
-It has configurable size, separate TLBs, a hardware PTW and
-branch-prediction (branch target buffer and branch history table). The
-primary design goal was on reducing critical path length.")
-     (license (list license:asl2.0
-                    license:bsd-3
-                    ;; TODO: Add Solderpad Hardware license.
-                    )))))
diff --git a/gn/packages/ruby.scm b/gn/packages/ruby.scm
deleted file mode 100644
index 4b5d903..0000000
--- a/gn/packages/ruby.scm
+++ /dev/null
@@ -1,6269 +0,0 @@
-;;; GNU Guix --- Functional package management for GNU
-;;; Copyright © 2014, 2015 Pjotr Prins <pjotr.guix@thebird.nl>
-;;; Copyright © 2021 Efraim Flashner <efraim@flashner.co.il>
-;;;
-;;; This file is part of GNU Guix.
-;;;
-;;; GNU Guix is free software; you can redistribute it and/or modify it
-;;; under the terms of the GNU General Public License as published by
-;;; the Free Software Foundation; either version 3 of the License, or (at
-;;; your option) any later version.
-;;;
-;;; GNU Guix is distributed in the hope that it will be useful, but
-;;; WITHOUT ANY WARRANTY; without even the implied warranty of
-;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-;;; GNU General Public License for more details.
-;;;
-;;; You should have received a copy of the GNU General Public License
-;;; along with GNU Guix.  If not, see <http://www.gnu.org/licenses/>.
-
-(define-module (gn packages ruby)
-  #:use-module ((guix licenses) #:prefix license:)
-  #:use-module (gnu packages)
-  #:use-module (gnu packages compression)
-  #:use-module (gnu packages databases)
-  #:use-module (gnu packages readline)
-  #:use-module (gnu packages autotools)
-  #:use-module (gnu packages java)
-  #:use-module (gnu packages libffi)
-  #:use-module (gnu packages python)
-  #:use-module (gnu packages ragel)
-  #:use-module (gnu packages rails)
-  #:use-module (gnu packages rdf)
-  #:use-module (gnu packages ruby)
-  #:use-module (gnu packages ruby-check)
-  #:use-module (gnu packages ruby-xyz)
-  #:use-module (gnu packages ruby-check)
-  #:use-module (gnu packages tls)
-  #:use-module (gnu packages version-control)
-  #:use-module (guix packages)
-  #:use-module (guix download)
-  #:use-module (guix git-download)
-  #:use-module (guix utils)
-  #:use-module (guix build-system gnu)
-  #:use-module (guix build-system meson)
-  #:use-module (guix build-system python)
-  #:use-module (gnu packages python-xyz)
-  #:use-module (gnu packages xml)
-  #:use-module (gnu packages web)
-  #:use-module (guix build-system ruby))
-
-
-(define-public apache-maven
-  (package
-    (name "apache-maven")
-    (version "3.3.9")
-    (source (origin
-              (method url-fetch)
-              (uri (string-append
-                    "http://ftp.tudelft.nl/apache/maven/maven-3/3.3.9/source/apache-maven-" version "-src.tar.gz"))
-              (sha256               (base32
-                "1g0iavyb34kvs3jfrx2hfnr8lr11m39sj852cy7528wva1glfl4i"))))
-    (build-system gnu-build-system)
-    (home-page "http://ant.apache.org")
-    (synopsis "Build tool for Java")
-    (description
-     "Ant is a platform-independent build tool for Java.  It is similar to
-make but is implemented using the Java language, requires the Java platform,
-and is best suited to building Java projects.  Ant uses XML to describe the
-build process and its dependencies, whereas Make uses Makefile format.")
-    (license license:asl2.0)))
-
-
-(define-public jruby
-  (package
-    (name "jruby")
-    (version "9.0.5.0")
-    (source
-     (origin
-       (method url-fetch)
-       (uri (string-append "https://s3.amazonaws.com/jruby.org/downloads/9.0.5.0/jruby-bin-"
-                           version ".tar.gz"))
-       (sha256
-        (base32
-         "1wysymqzc7591743f2ycgwpm232y6i050izn72lck44nhnyr5wwy"))
-        ))
-    (build-system gnu-build-system)
-    (native-inputs
-     `(("ant" ,ant)
-       ;; ("maven" ,maven)
-       ("jdk" ,icedtea "jdk")))
-    (inputs
-     `(("readline" ,readline)
-       ("openssl" ,openssl)
-       ("zlib" ,zlib)))
-    (native-search-paths
-     (list (search-path-specification
-            (variable "GEM_PATH")
-            (files (list (string-append "lib/ruby/gems/"
-                                        (version-major+minor version)
-                                        ".0"))))))
-    (synopsis "Programming language interpreter")
-    (description "Ruby is a dynamic object-oriented programming language with
-a focus on simplicity and productivity.")
-    (home-page "https://ruby-lang.org")
-    (license license:ruby)))
-
-(define-public bio-table ; guix ready with tests
-  (package
-   (name "bio-table")
-   (version "1.0.0")
-   (source
-    (origin
-     (method url-fetch)
-     (uri (rubygems-uri "bio-table" version))
-     (sha256
-      (base32
-       "1jlpls734kd41rffn2y2747nr14k5rwgaj2g3k48i9xgsfcmrn6r"))))
-   (build-system ruby-build-system)
-   (arguments
-    `(#:tests? #f ; There are no tests.
-   ))
-   (propagated-inputs
-    `(("ruby-bio-logger" ,ruby-bio-logger)))
-   (synopsis
-    "Functions and tools for tranforming and changing tab delimited
-and comma separated table files - useful for Excel sheets and SQL/RDF
-output")
-   (description
-    "Functions and tools for tranforming and changing tab delimited
-and comma separated table files - useful for Excel sheets and SQL/RDF
-output")
-   (home-page
-    "http://github.com/pjotrp/bioruby-table")
-   (license license:expat)))
-
-(define-public ruby-ntlm-http
-  (package
-    (name "ruby-ntlm-http")
-    (version "0.1.1")
-    (source
-     (origin
-       (method url-fetch)
-       (uri (rubygems-uri "ntlm-http" version))
-       (sha256
-        (base32
-         "0yx01ffrw87wya1syivqzf8hz02axk7jdpw6aw221xwvib767d36"))))
-    (build-system ruby-build-system)
-    (arguments
-     `(#:tests? #f))
-    (synopsis
-     "Ruby/NTLM HTTP provides NTLM authentication over http.")
-    (description
-     "Ruby/NTLM HTTP provides NTLM authentication over http.")
-    (home-page "http://www.mindflowsolutions.net")
-    (license (license:non-copyleft
-               "will fill in later"))))
-
-(define-public ruby-webrobots
-  (package
-    (name "ruby-webrobots")
-    (version "0.1.2")
-    (source
-     (origin
-       (method url-fetch)
-       (uri (rubygems-uri "webrobots" version))
-       (sha256
-        (base32
-         "19ndcbba8s8m62hhxxfwn83nax34rg2k5x066awa23wknhnamg7b"))))
-    (build-system ruby-build-system)
-    (arguments
-     `(#:tests? #f))
-    (synopsis
-     "This library helps write robots.txt compliant web robots in Ruby.
-")
-    (description
-     "This library helps write robots.txt compliant web robots in Ruby.
-")
-    (home-page "https://github.com/knu/webrobots")
-    (license (license:non-copyleft
-               "will fill in later"))))
-
-(define-public ruby-mechanize ; guix maybe ready
-  (package
-    (name "ruby-mechanize")
-    (version "2.7.5")
-    (source
-     (origin
-       (method url-fetch)
-       (uri (rubygems-uri "mechanize" version))
-       (sha256
-        (base32
-         "1f861x62kmggy60krv229s5jl7afq9nblwcfih3kp9bm5c5jn16y"))))
-    (build-system ruby-build-system)
-    (arguments '(#:tests? #f)) ; one test fails
-    (inputs
-     `(("ruby" ,ruby)))
-    (propagated-inputs
-     `(("ruby-domain-name" ,ruby-domain-name)
-       ("ruby-http-cookie" ,ruby-http-cookie)
-       ("ruby-mime-types" ,ruby-mime-types)
-       ("ruby-net-http-digest-auth"
-        ,ruby-net-http-digest-auth)
-       ("ruby-net-http-persistent"
-        ,ruby-net-http-persistent)
-       ("ruby-nokogiri" ,ruby-nokogiri)
-       ("ruby-ntlm-http" ,ruby-ntlm-http)
-       ("ruby-webrobots" ,ruby-webrobots)))
-    (synopsis
-     "The Mechanize library is used for automating interaction with websites.
-Mechanize automatically stores and sends cookies, follows redirects,
-and can follow links and submit forms.  Form fields can be populated and
-submitted.  Mechanize also keeps track of the sites that you have visited as
-a history.")
-    (description
-     "The Mechanize library is used for automating interaction with websites.
-Mechanize automatically stores and sends cookies, follows redirects,
-and can follow links and submit forms.  Form fields can be populated and
-submitted.  Mechanize also keeps track of the sites that you have visited as
-a history.")
-  (home-page
-   "http://docs.seattlerb.org/mechanize/")
-  (license license:expat)))
-
-(define-public ruby-elasticsearch-transport
-(package
-  (name "ruby-elasticsearch-transport")
-  (version "6.0.2")
-  (source
-    (origin
-      (method url-fetch)
-      (uri (rubygems-uri "elasticsearch-transport" version))
-      (sha256
-        (base32
-          "0gpwbw70qisx681j1bw8xq6shg5kdxmcdzg6425af0b5881jg7iy"))))
-  (build-system ruby-build-system)
-  (propagated-inputs
-    `(("ruby-faraday" ,ruby-faraday)
-      ("ruby-multi-json" ,ruby-multi-json)))
-  (arguments
-   `(#:tests? #f)) ;; no bundler/cucumber
-  (synopsis
-    "Ruby client for Elasticsearch. See the `elasticsearch` gem for full integration.
-")
-  (description
-    "Ruby client for Elasticsearch.  See the `elasticsearch` gem for full integration.
-")
-  (home-page
-    "https://github.com/elasticsearch/elasticsearch-ruby/tree/master/elasticsearch-transport")
-  (license (license:non-copyleft "will fill in later"))))
-
-(define-public ruby-elasticsearch-api
-(package
-  (name "ruby-elasticsearch-api")
-  (version "6.0.2")
-  (source
-    (origin
-      (method url-fetch)
-      (uri (rubygems-uri "elasticsearch-api" version))
-      (sha256
-        (base32
-          "1vkahknqn85vvwr1gzh8jf3pvdial0c0d524icg8x06vibqgzd5h"))))
-  (build-system ruby-build-system)
-  (propagated-inputs
-    `(("ruby-multi-json" ,ruby-multi-json)))
-  (arguments
-   `(#:tests? #f)) ;; no bundler/cucumber
-  (synopsis
-    "Ruby API for Elasticsearch. See the `elasticsearch` gem for full integration.
-")
-  (description
-    "Ruby API for Elasticsearch.  See the `elasticsearch` gem for full integration.
-")
-  (home-page
-    "https://github.com/elasticsearch/elasticsearch-ruby/tree/master/elasticsearch-api")
-  (license (license:non-copyleft "will fill in later"))))
-
-(define-public ruby-elasticsearch
-  (package
-   (name "ruby-elasticsearch")
-   (version "6.0.2")
-   (source
-    (origin
-     (method url-fetch)
-     (uri (rubygems-uri "elasticsearch" version))
-     (sha256
-      (base32
-       "0a08ynvxz5clfm2ndqpgjrv4aiga9m2y1ab34s3qkihdfdzdzhj8"))))
-   (build-system ruby-build-system)
-   (propagated-inputs
-    `(("ruby-elasticsearch-api"
-       ,ruby-elasticsearch-api)
-      ("ruby-elasticsearch-transport"
-       ,ruby-elasticsearch-transport)))
-  (arguments
-   `(#:tests? #f)) ;; no bundler/cucumber
-   (synopsis
-    "Ruby integrations for Elasticsearch (client, API, etc.)
-")
-   (description
-    "Ruby integrations for Elasticsearch (client, API, etc.)
-")
-   (home-page
-    "http://github.com/elasticsearch/elasticsearch-ruby")
-   (license (license:non-copyleft "will fill in later"))))
-
-
-
-
-
-;;;
-
-(define-public discourse
-  (package
-    (name "discourse")
-    (version "2.6.3")
-    (source
-      (origin
-        (method git-fetch)
-        (uri (git-reference
-               (url "https://github.com/discourse/discourse")
-               (commit (string-append "v" version))))
-        (file-name (git-file-name name version))
-        (sha256
-         (base32
-          "06ykn53m7mmdk71szk86nlq87rspqlb3fjpdmqi133z63dbj20ll"))))
-    (build-system ruby-build-system)
-    (arguments
-     `(#:phases
-       (modify-phases %standard-phases
-         (delete 'replace-git-ls-files)
-         (add-before 'build 'delete-gemfile-lock
-           (lambda _
-             (delete-file "Gemfile.lock")
-             #t))
-         (add-after 'unpack 'adjust-version-dependencies
-           (lambda _
-             (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.*") "")
-               )
-             #t))
-         (replace 'build
-           (lambda _
-             ;; https://github.com/discourse/discourse/blob/v2.6.3/docs/DEVELOPER-ADVANCED.md
-             (setenv "HOME" (getcwd))
-             (setenv "RAILS_ENV" "test")
-
-             ;; Launch Redis and Postgresql before continuing
-
-             ;(invoke "bundle" "exec" "rake" "db:create" "db:migrate")
-             ;(invoke "bundle" "exec" "rake" "autospec")
-             ))
-         ;(replace 'check
-         ;  (lambda _
-         ;    (invoke "rubocop")
-         ;    (invoke "rubocop" "plugins")))
-         (replace 'install
-           (lambda* (#:key outputs #:allow-other-keys)
-             (let* ((out (assoc-ref outputs "out"))
-                    (vendor-dir (string-append out "/lib/ruby/vendor_ruby"))
-                    )
-               (copy-recursively (getcwd) out)
-               (for-each make-file-writable (find-files out "\\.gz$"))
-               ;(with-output-to-file (string-append out "/bundler")
-               ;  (lambda _
-
-               ;(setenv "GEM_VENDOR" vendor-dir)
-               ;(setenv "BUNDLE_PATH" (getenv "GEM_PATH"))
-               ;(invoke "bundle" "install"
-               ;        "--path" out
-               ;        "--verbose"
-               ;        "--deployment"
-               ;        "--local"
-               ;        "--standalone"
-               ;        )
-               ;(invoke "gem" "install"
-               ;        "--verbose"
-               ;        ;"--vendor"
-               ;        "--local"
-               ;        "--bindir" (string-append out "/bin")
-               )))
-         )
-       ))
-    ;;TODO: What should be moved to native-inputs?
-    (inputs
-     `(
-       ("node" ,(@ (gnu packages node) node))
-       ("ruby-actionmailer" ,ruby-actionmailer)
-       ("ruby-actionview-precompiler" ,ruby-actionview-precompiler)
-       ("ruby-active-model-serializers" ,ruby-active-model-serializers)
-       ("ruby-activemodel" ,ruby-activemodel)
-       ("ruby-activerecord" ,ruby-activerecord)
-       ("ruby-aws-sdk-s3" ,ruby-aws-sdk-s3)
-       ("ruby-aws-sdk-sns" ,ruby-aws-sdk-sns)
-       ("ruby-bootsnap" ,ruby-bootsnap)
-       ("ruby-cbor" ,ruby-cbor)
-       ;("ruby-cppjieba-rb" ,ruby-cppjieba-rb)
-       ("ruby-colored2" ,ruby-colored2)
-       ("ruby-cose" ,ruby-cose)
-       ("ruby-css-parser" ,ruby-css-parser)
-       ("ruby-diffy" ,ruby-diffy)
-       ("ruby-discourse-ember-rails" ,ruby-discourse-ember-rails)
-       ("ruby-discourse-ember-source" ,ruby-discourse-ember-source)
-       ("ruby-discourse-fonts" ,ruby-discourse-fonts)
-       ("ruby-discourse-image-optim" ,ruby-discourse-image-optim)
-       ("ruby-email-reply-trimmer" ,ruby-email-reply-trimmer)
-       ("ruby-excon" ,ruby-excon)
-       ("ruby-fast-blank" ,ruby-fast-blank)
-       ("ruby-fast-xs" ,ruby-fast-xs)
-       ("ruby-fastimage" ,ruby-fastimage)
-       ("ruby-flamegraph" ,ruby-flamegraph)
-       ("ruby-gc-tracer" ,ruby-gc-tracer)
-       ("ruby-highline" ,ruby-highline)
-       ("ruby-http-accept-language" ,ruby-http-accept-language)
-       ("ruby-lograge" ,ruby-lograge)
-       ("ruby-logstash-event" ,ruby-logstash-event)
-       ("ruby-logstash-logger" ,ruby-logstash-logger)
-       ("ruby-logster" ,ruby-logster)
-       ("ruby-lru-redux" ,ruby-lru-redux)
-       ("ruby-lz4-ruby" ,ruby-lz4-ruby)
-       ("ruby-maxminddb" ,ruby-maxminddb)
-       ("ruby-memory-profiler" ,ruby-memory-profiler)
-       ("ruby-message-bus" ,ruby-message-bus)
-       ("ruby-mini-mime" ,ruby-mini-mime)
-       ("ruby-mini-racer" ,ruby-mini-racer-0.2.4)
-       ("ruby-mini-scheduler" ,ruby-mini-scheduler)
-       ("ruby-mini-sql" ,ruby-mini-sql)
-       ("ruby-mini-suffix" ,ruby-mini-suffix)
-       ("ruby-oj" ,ruby-oj)
-       ("ruby-omniauth" ,ruby-omniauth)
-       ("ruby-omniauth-facebook" ,ruby-omniauth-facebook)
-       ("ruby-omniauth-github" ,ruby-omniauth-github)
-       ("ruby-omniauth-google-oauth2" ,ruby-omniauth-google-oauth2)
-       ("ruby-omniauth-twitter" ,ruby-omniauth-twitter)
-       ("ruby-onebox" ,ruby-onebox)
-       ("ruby-pg" ,ruby-pg)
-       ("ruby-pry-byebug" ,ruby-pry-byebug)
-       ("ruby-pry-rails" ,ruby-pry-rails)
-       ("ruby-puma" ,ruby-puma)
-       ("ruby-r2" ,ruby-r2)
-       ("ruby-rack-mini-profiler" ,ruby-rack-mini-profiler)
-       ("ruby-rack-protection" ,ruby-rack-protection)
-       ("ruby-rails-failover" ,ruby-rails-failover)
-       ("ruby-rails-multisite" ,ruby-rails-multisite)
-       ("ruby-railties" ,ruby-railties)
-       ("ruby-rake" ,ruby-rake)
-       ("ruby-rbtrace" ,ruby-rbtrace)
-       ("ruby-rchardet" ,ruby-rchardet)
-       ("ruby-redis" ,ruby-redis)
-       ("ruby-redis-namespace" ,ruby-redis-namespace)
-       ("ruby-rinku" ,ruby-rinku)
-       ("ruby-rotp" ,ruby-rotp)
-       ("ruby-rqrcode" ,ruby-rqrcode)
-       ("ruby-rtlit" ,ruby-rtlit)
-       ("ruby-ruby-readability" ,ruby-ruby-readability)
-       ("ruby-rubyzip" ,ruby-rubyzip)
-       ("ruby-sassc" ,ruby-sassc)
-       ("ruby-sassc-rails" ,ruby-sassc-rails)
-       ("ruby-seed-fu" ,ruby-seed-fu)
-       ("ruby-shoulda-matchers" ,ruby-shoulda-matchers)
-       ("ruby-sidekiq" ,ruby-sidekiq)
-       ("ruby-sprockets-rails" ,ruby-sprockets-rails)
-       ("ruby-sshkey" ,ruby-sshkey)
-       ("ruby-stackprof" ,ruby-stackprof)
-       ("ruby-uglifier" ,ruby-uglifier)
-       ("ruby-unf" ,ruby-unf)
-       ("ruby-unicorn" ,ruby-unicorn)
-       ("ruby-webpush" ,ruby-webpush)
-       ("ruby-xorcist" ,ruby-xorcist)
-       ))
-    (native-inputs
-     `(
-       ("ruby-annotate" ,ruby-annotate)
-       ("ruby-better-errors" ,ruby-better-errors)
-       ("ruby-binding-of-caller" ,ruby-binding-of-caller)
-       ("ruby-bullet" ,ruby-bullet)
-       ("ruby-certified" ,ruby-certified)
-       ("ruby-fabrication" ,ruby-fabrication)
-       ("ruby-fakeweb" ,ruby-fakeweb)
-       ("ruby-listen" ,ruby-listen)
-       ("ruby-mocha" ,ruby-mocha)
-       ("ruby-mock-redis" ,ruby-mock-redis)
-       ("ruby-parallel-tests" ,ruby-parallel-tests)
-       ("ruby-rspec" ,ruby-rspec)
-       ("ruby-rspec-html-matchers" ,ruby-rspec-html-matchers)
-       ("ruby-rspec-rails" ,ruby-rspec-rails)
-       ("ruby-rswag-specs" ,ruby-rswag-specs)
-       ("ruby-rubocop-discourse" ,ruby-rubocop-discourse)
-       ("ruby-ruby-prof" ,ruby-ruby-prof)
-       ("ruby-simplecov" ,ruby-simplecov)
-       ("ruby-test-prof" ,ruby-test-prof)
-       ("ruby-webmock" ,ruby-webmock)
-       ("ruby-yaml-lint" ,ruby-yaml-lint)
-       ;("tzdata" ,(@ (gnu packages base) tzdata))
-       ))
-    (synopsis "Platform for community discussion")
-    (description "Discourse is the 100% open source discussion platform built
-for the next decade of the Internet.  Use it as a mailing list, discussion
-forum, long-form chat room, and more!")
-    (home-page "https://www.discourse.org/")
-    (license license:gpl2)))
-
-(define-public ruby-seed-fu
-  (package
-    (name "ruby-seed-fu")
-    (version "2.3.9")
-    (source
-      (origin
-        (method url-fetch)
-        (uri (rubygems-uri "seed-fu" version))
-        (sha256
-         (base32
-          "0y7lzcshsq6i20qn1p8zczir4fivr6nbl1km91ns320vvh92v43d"))))
-    (build-system ruby-build-system)
-    (arguments
-     `(#:tests? #f))    ; no tests
-    (propagated-inputs
-     `(("ruby-activerecord" ,ruby-activerecord)
-       ("ruby-activesupport" ,ruby-activesupport)))
-    (synopsis "Advanced seed data handling for Rails")
-    (description
-     "Seed Fu is an attempt to once and for all solve the problem of inserting
-and maintaining seed data in a database.  It uses a variety of techniques
-gathered from various places around the web and combines them to create what is
-hopefully the most robust seed data system around.")
-    (home-page "https://github.com/mbleigh/seed-fu")
-    (license license:expat)))
-
-;; TODO: deal with bundled libraries
-(define-public ruby-mini-suffix
-  (package
-    (name "ruby-mini-suffix")
-    (version "0.3.2")
-    (source
-      (origin
-        (method url-fetch)
-        (uri (rubygems-uri "mini_suffix" version))
-        (sha256
-         (base32
-          "1r6pwyv1vpyza0rn1pyxls4qdw5jd3vg4k5dp1iaqa57n6fiqrvi"))))
-    (build-system ruby-build-system)
-    (arguments
-     `(#:test-target "spec"
-       #:phases
-       (modify-phases %standard-phases
-         ;(add-after 'unpack 'remove-vendored-libraries
-         ;  (lambda _
-         ;   (delete-file-recursively "vendor") #t))
-         (add-after 'install 'replace-vendored-libraries
-           (lambda* (#:key inputs outputs #:allow-other-keys)
-             (let* ((out (assoc-ref outputs "out"))
-                    (vendor (string-append out "/lib/ruby/vendor_ruby/gems"
-                                           "/mini_suffix-" ,version "/vendor/")))
-               (for-each delete-file (find-files vendor))
-               (symlink (string-append (assoc-ref inputs "libpsl")
-                                       "/lib/libpsl.so")
-                        (string-append vendor "libpsl.x86_64.so"))
-               #t)))
-         )
-       #:tests? #f))    ; cannot load such file -- spec_helper
-    (propagated-inputs
-     `(("ruby-ffi" ,ruby-ffi)))
-    (inputs
-     `(("libpsl" ,libpsl)))
-    (native-inputs
-     `(("ruby-rake" ,ruby-rake)
-       ("ruby-rspec" ,ruby-rspec)))
-    (synopsis "FFI wrapper for libpsl")
-    (description "This package provides an FFI wrapper for libpsl in Ruby.")
-    (home-page "https://github.com/discourse/mini_suffix")
-    (license license:expat)))
-
-(define-public ruby-redis-namespace
-  (package
-    (name "ruby-redis-namespace")
-    (version "1.8.1")
-    (source
-      (origin
-        (method git-fetch)
-        (uri (git-reference
-               (url "https://github.com/resque/redis-namespace")
-               (commit (string-append "v" version))))
-        (file-name (git-file-name name version))
-        (sha256
-         (base32
-          "0dk8kgx6ii3xfv39x7m62bmahp29gv7pz8c8105mxqyxnx9pl525"))))
-    (build-system ruby-build-system)
-    (arguments
-     `(#:tests? #f))    ; cannot load such file -- rspec
-    (propagated-inputs
-     `(("ruby-redis" ,ruby-redis)))
-    (native-inputs
-     `(
-       ("ruby-rspec" ,ruby-rspec)
-       ("ruby-rspec-its" ,ruby-rspec-its)
-       ))
-    (synopsis "Namespace calls to Redis")
-    (description
-     "This package provides a @code{Redis::Namespace} class which can be used to
-namespace calls to Redis.  This is useful when using a single instance of Redis
-with multiple, different applications.")
-    (home-page "https://github.com/resque/redis-namespace")
-    (license license:expat)))
-
-(define-public ruby-jsonapi-renderer
-  (package
-    (name "ruby-jsonapi-renderer")
-    (version "0.2.2")
-    (source
-      (origin
-        ;; No rakefile included in gem
-        (method git-fetch)
-        (uri (git-reference
-               (url "https://github.com/jsonapi-rb/jsonapi-renderer")
-               (commit (string-append "v" version))))
-        (file-name (git-file-name name version))
-        (sha256
-         (base32
-          "11i4jbliidi7r04fg4g33hgn1yvfi1rjbsrc7m6gjj06zhflzn5s"))))
-    (build-system ruby-build-system)
-    (native-inputs
-     `(("ruby-rspec" ,ruby-rspec)
-       ("ruby-simplecov" ,ruby-simplecov)))
-    (synopsis "Render JSON API documents")
-    (description
-     "This package provides a ruby gem for rendering JSON API documents.")
-    (home-page "https://github.com/jsonapi-rb/jsonapi-renderer")
-    (license license:expat)))
-
-(define-public ruby-case-transform
-  (let ((commit "b957f9c933efa3894589af0ee7313660ebb552d8")
-        (revision "1"))
-    (package
-      (name "ruby-case-transform")
-      (version (git-version "0.2" revision commit))
-      (source
-        (origin
-          ;; No rakefile included in gem
-          (method git-fetch)
-          (uri (git-reference
-                 (url "https://github.com/rails-api/case_transform")
-                 (commit commit)))
-          (file-name (git-file-name name version))
-          (sha256
-           (base32
-            "0z6pn2c4ksnphy3rbjy2ml40lhl7dznxi19ny4nlk9m071cb0l93"))))
-      (build-system ruby-build-system)
-      (arguments
-       `(#:phases
-         (modify-phases %standard-phases
-           (add-after 'unpack 'patch-source
-             (lambda _
-               (delete-file "Gemfile.lock")
-               #t)))))
-      (propagated-inputs
-       `(("ruby-activesupport" ,ruby-activesupport)))
-      (native-inputs
-       `(("ruby-awesome-print" ,ruby-awesome-print)
-         ("ruby-codeclimate-test-reporter" ,ruby-codeclimate-test-reporter)
-         ("ruby-pry-byebug" ,ruby-pry-byebug)
-         ("ruby-rubocop" ,ruby-rubocop)))
-      (synopsis "@code{key_transform} abilities of ActiveModelSerializers")
-      (description
-       "This package provides the extraction of the @code{key_transform} abilities
-of @code{ActiveModelSerializers}.")
-      (home-page "https://github.com/rails-api/case_transform")
-      (license license:expat))))
-
-(define-public ruby-active-model-serializers
-  (package
-    (name "ruby-active-model-serializers")
-    (version "0.10.12")
-    (source
-      (origin
-        ;; No rakefile included in gem
-        (method git-fetch)
-        (uri (git-reference
-               (url "https://github.com/rails-api/active_model_serializers")
-               (commit (string-append "v" version))))
-        (file-name (git-file-name name version))
-        (sha256
-         (base32
-          "1d2lywfzj4h117b67cwl76a6zl7q1vmgajzn51w5ifvdpc5rssli"))))
-    (build-system ruby-build-system)
-    (arguments
-     `(#:tests? #f  ; TODO: enable
-       #:phases
-       (modify-phases %standard-phases
-         (add-after 'unpack 'adjust-dependency-version-contstriants
-           (lambda _
-             (setenv "RAILS_VERSION"
-                     ,(version-major+minor (package-version ruby-rails)))
-             (substitute* "active_model_serializers.gemspec"
-               (("grape.*") "grape'\n")
-               (("kaminari.*") "kaminari'\n")
-               (("minitest.*") "minitest'\n")
-               ((".*json_schema.*") "") ; can't seem to find it during the 'check phase
-               )
-             (substitute* "Gemfile"
-               (("rubocop.*") "rubocop'\n")
-               )
-             #t)))))
-    (propagated-inputs
-     `(("ruby-actionpack" ,ruby-actionpack)
-       ("ruby-activemodel" ,ruby-activemodel)
-       ("ruby-case-transform" ,ruby-case-transform)
-       ("ruby-jsonapi-renderer" ,ruby-jsonapi-renderer)))
-    (native-inputs
-     `(
-       ("ruby-benchmark-ips" ,ruby-benchmark-ips)
-       ("ruby-codeclimate-test-reporter" ,ruby-codeclimate-test-reporter)
-       ("ruby-grape" ,ruby-grape)
-       ("ruby-json-schema" ,ruby-json-schema)
-       ("ruby-kaminari" ,ruby-kaminari)
-       ("ruby-m" ,ruby-m)
-       ("ruby-minitest" ,ruby-minitest)
-       ("ruby-pry" ,ruby-pry)
-       ("ruby-rails" ,ruby-rails)
-       ("ruby-rubocop" ,ruby-rubocop)
-       ("ruby-simplecov" ,ruby-simplecov)
-       ("ruby-sqlite3" ,ruby-sqlite3-1.3)
-       ("ruby-timecop" ,ruby-timecop)
-       ("ruby-will-paginate" ,ruby-will-paginate)
-       ("ruby-yard" ,ruby-yard)
-       ))
-    (synopsis "Generate JSON in an object-oriented manner")
-    (description
-     "@code{ActiveModel::Serializers} allows one to generate your JSON in an
-object-oriented and convention-driven manner.")
-    (home-page "https://github.com/rails-api/active_model_serializers")
-    (license license:expat)))
-
-(define-public ruby-onebox
-  (package
-    (name "ruby-onebox")
-    (version "2.2.2")
-    (source
-      (origin
-        (method url-fetch)
-        (uri (rubygems-uri "onebox" version))
-        (sha256
-         (base32
-          "1lj5x8jrs9whgynfksvlnlds4crdi6dm9bb3vh654s8vpqxbjcbn"))))
-    (build-system ruby-build-system)
-    (arguments
-     `(#:tests? #f  ; Tests require ancient version of ruby-twitter.
-       #:phases
-       (modify-phases %standard-phases
-         (add-after 'unpack 'adjust-version-requirements
-           (lambda _
-             (substitute* "onebox.gemspec"
-               (("twitter.*") "twitter'\n"))
-             #t)))))
-    (propagated-inputs
-     `(("ruby-addressable" ,ruby-addressable)
-       ("ruby-htmlentities" ,ruby-htmlentities)
-       ("ruby-multi-json" ,ruby-multi-json)
-       ("ruby-mustache" ,ruby-mustache)
-       ("ruby-nokogiri" ,ruby-nokogiri)
-       ("ruby-sanitize" ,ruby-sanitize)))
-    (native-inputs
-     `(("ruby-fakeweb" ,ruby-fakeweb)
-       ("ruby-mocha" ,ruby-mocha)
-       ("ruby-pry" ,ruby-pry)
-       ("ruby-rake" ,ruby-rake)
-       ("ruby-rspec" ,ruby-rspec)
-       ("ruby-rubocop-discourse" ,ruby-rubocop-discourse)
-       ("ruby-twitter" ,ruby-twitter)))
-    (synopsis "Generate embeddable HTML previews from URLs")
-    (description "This package provides a gem for generating embeddable HTML
-previews from URLs.")
-    (home-page "https://github.com/discourse/onebox")
-    (license license:expat)))
-
-(define-public ruby-discourse-ember-source
-  (package
-    (name "ruby-discourse-ember-source")
-    (version "3.12.2.2")
-    (source
-      (origin
-        (method url-fetch)
-        (uri (rubygems-uri "discourse-ember-source" version))
-        (sha256
-         (base32
-          "0mqkwiqb5n64lc5jdjnmpgb9apq08ywkz9yk8mj1sx2lqcsw11pc"))))
-    (build-system ruby-build-system)
-    (arguments
-     `(#:tests? #f))    ; no rakefile found
-    (synopsis "Fork of Ember source to permit latest ember versions")
-    (description "This package provides a fork of Ember source to permit the
-latest ember versions.")
-    (home-page "https://github.com/discourse/discourse-ember-source")
-    (license license:expat)))
-
-(define-public ruby-jquery-rails
-  (package
-    (name "ruby-jquery-rails")
-    (version "4.4.0")
-    (source
-      (origin
-        (method url-fetch)
-        (uri (rubygems-uri "jquery-rails" version))
-        (sha256
-         (base32
-          "0dkhm8lan1vnyl3ll0ks2q06576pdils8a1dr354vfc1y5dqw15i"))))
-    (build-system ruby-build-system)
-    (propagated-inputs
-     `(("ruby-rails-dom-testing" ,ruby-rails-dom-testing)
-       ("ruby-railties" ,ruby-railties)
-       ("ruby-thor" ,ruby-thor)))
-    (synopsis
-     "This gem provides jQuery and the jQuery-ujs driver for your Rails 4+ application.")
-    (description
-     "This gem provides jQuery and the jQuery-ujs driver for your Rails 4+ application.")
-    (home-page "https://github.com/rails/jquery-rails")
-    (license license:expat)))
-
-(define-public ruby-barber
-  (package
-    (name "ruby-barber")
-    (version "0.12.2")
-    (source
-      (origin
-        (method url-fetch)
-        (uri (rubygems-uri "barber" version))
-        (sha256
-         (base32
-          "07rnlbh7kgamcbnl1sqlcdrjj8src4qc687klqq4a3vqq2slnscx"))))
-    (build-system ruby-build-system)
-    (arguments
-     `(#:phases
-       (modify-phases %standard-phases
-         (add-before 'check 'pre-check
-           (lambda _
-             (setenv "HOME" (getcwd))
-             #t)))))
-    (propagated-inputs
-     `(("ruby-ember-source" ,ruby-ember-source)
-       ("ruby-execjs" ,ruby-execjs)))
-    (native-inputs
-     `(
-       ("ruby-handlebars-source" ,ruby-handlebars-source-4.1)   ; < 4.2
-       ("ruby-mocha" ,ruby-mocha)
-       ("ruby-simplecov" ,ruby-simplecov)
-       ))
-    (synopsis "Handlebars precompilation")
-    (description "Handlebars precompilation")
-    (home-page "https://github.com/tchak/barber")
-    (license license:expat)))
-
-(define-public ruby-ember-handlebars-template
-  (package
-    (name "ruby-ember-handlebars-template")
-    (version "0.8.0")
-    (source
-      (origin
-        (method url-fetch)
-        (uri (rubygems-uri
-               "ember-handlebars-template"
-               version))
-        (sha256
-         (base32
-          "1wxj3vi4xs3vjxrdbzi4j4w6vv45r5dkz2rg2ldid3p8dp3irlf4"))))
-    (build-system ruby-build-system)
-    (propagated-inputs
-     `(("ruby-barber" ,ruby-barber)
-       ("ruby-sprockets" ,ruby-sprockets)))
-    (synopsis
-      "The sprockets template for Ember Handlebars.")
-    (description
-      "The sprockets template for Ember Handlebars.")
-    (home-page "https://github.com/tricknotes/ember-handlebars-template")
-    (license license:expat)))
-
-(define-public ruby-babel-source
-  (package
-    (name "ruby-babel-source")
-    (version "5.8.35")
-    (source
-      (origin
-        (method url-fetch)
-        (uri (rubygems-uri "babel-source" version))
-        (sha256
-         (base32
-          "1ncq8h82k6hypzfb5dk7z95mmcdwnhsxmc53xz17m1nbklm25vvr"))))
-    (build-system ruby-build-system)
-    (arguments
-     `(#:tests? #f))    ; no rakefile found
-    (synopsis "Babel JS source")
-    (description "Babel JS source")
-    (home-page "https://github.com/babel/ruby-babel-transpiler")
-    (license license:expat)))
-
-(define-public ruby-babel-transpiler
-  (package
-    (name "ruby-babel-transpiler")
-    (version "0.7.0")
-    (source
-      (origin
-        (method url-fetch)
-        (uri (rubygems-uri "babel-transpiler" version))
-        (sha256
-         (base32
-          "0w0minwxj56w96xps1msm6n75fs0y7r1vqcr9zlsn74fksnz81jc"))))
-    (build-system ruby-build-system)
-    (arguments
-     `(#:tests? #f))    ; no rakefile found
-    (propagated-inputs
-     `(("ruby-babel-source" ,ruby-babel-source)
-       ("ruby-execjs" ,ruby-execjs)))
-    (synopsis
-      "    Ruby Babel is a bridge to the JS Babel transpiler.
-")
-    (description
-      "    Ruby Babel is a bridge to the JS Babel transpiler.
-")
-    (home-page "https://github.com/babel/ruby-babel-transpiler")
-    (license license:expat)))
-
-(define-public ruby-ember-es6-template
-  (package
-    (name "ruby-ember-es6-template")
-    (version "0.7.0")
-    (source
-      (origin
-        (method url-fetch)
-        (uri (rubygems-uri "ember-es6_template" version))
-        (sha256
-         (base32
-          "0cb9yfwwxvi615k1vg20zkm6czkpapcncwbznbch58zkp5rdw7i9"))))
-    (build-system ruby-build-system)
-    (propagated-inputs
-     `(("ruby-babel-transpiler" ,ruby-babel-transpiler)
-       ("ruby-sprockets" ,ruby-sprockets)))
-    (synopsis
-      "The tilt template for Ember specified ES6.")
-    (description
-      "The tilt template for Ember specified ES6.")
-    (home-page "https://github.com/tricknotes/ember-es6_template")
-    (license license:expat)))
-
-(define-public ruby-ember-cli-assets
-  (package
-    (name "ruby-ember-cli-assets")
-    (version "0.0.37")
-    (source
-      (origin
-        (method url-fetch)
-        (uri (rubygems-uri "ember-cli-assets" version))
-        (sha256
-         (base32
-          "057dhafsdr4lbagx5k7sdrh2vfmy1llqpv347qy7d5jkhxdmns96"))))
-    (build-system ruby-build-system)
-    (arguments
-     `(#:tests? #f))    ; cannot load such file -- ember/cli/assets
-    (synopsis "The assets for Ember CLI.")
-    (description "The assets for Ember CLI.")
-    (home-page "https://github.com/tricknotes/ember-cli-assets")
-    (license license:expat)))
-
-(define-public ruby-ember-source
-  (package
-    (name "ruby-ember-source")
-    (version "2.18.2")
-    (source
-      (origin
-        (method url-fetch)
-        (uri (rubygems-uri "ember-source" version))
-        (sha256
-         (base32
-          "0sixy30ym9j2slhlr0lfq943g958w8arlb0lsizh59iv1w5gmxxy"))))
-    (build-system ruby-build-system)
-    (arguments
-     `(#:tests? #f))    ; no rakefile found
-    (synopsis
-      "Ember.js source code wrapper for use with Ruby libs.")
-    (description
-      "Ember.js source code wrapper for use with Ruby libs.")
-    (home-page "https://github.com/emberjs/ember.js")
-    (license license:expat)))
-
-(define-public ruby-ember-data-source
-  (package
-    (name "ruby-ember-data-source")
-    (version "3.0.2")
-    (source
-      (origin
-        (method url-fetch)
-        (uri (rubygems-uri "ember-data-source" version))
-        (sha256
-         (base32
-          "1803nh3knvwl12h63jd48qvbbrp42yy291wcb35960daklip0fd8"))))
-    (build-system ruby-build-system)
-    (arguments
-     `(#:tests? #f))    ; no rakefile found
-    (propagated-inputs
-     `(("ruby-ember-source" ,ruby-ember-source)))
-    (synopsis
-      "ember-data source code wrapper for use with Ruby libs.")
-    (description
-      "ember-data source code wrapper for use with Ruby libs.")
-    (home-page "https://github.com/emberjs/data")
-    (license license:expat)))
-
-(define-public ruby-active-model-adapter-source
-  (package
-    (name "ruby-active-model-adapter-source")
-    (version "2.1.1")
-    (source
-      (origin
-        (method url-fetch)
-        (uri (rubygems-uri
-               "active-model-adapter-source"
-               version))
-        (sha256
-         (base32
-          "0hr8a4nyppnqs053i1badjwhm095scrp0x1w7v742r9s5sxp8pyd"))))
-    (build-system ruby-build-system)
-    (arguments
-     `(#:tests? #f))    ; no rakefile found
-    (propagated-inputs
-     `(("ruby-ember-data-source" ,ruby-ember-data-source)))
-    (synopsis
-      "ember-data active-model-adapter code wrapper for use with Ruby libs.")
-    (description
-      "ember-data active-model-adapter code wrapper for use with Ruby libs.")
-    (home-page "https://github.com/ember-data/active-model-adapter")
-    (license license:expat)))
-
-(define-public ruby-ember-rails
-  (package
-    (name "ruby-ember-rails")
-    (version "0.21.0")
-    (source
-      (origin
-        (method url-fetch)
-        (uri (rubygems-uri "ember-rails" version))
-        (sha256
-         (base32
-          "0f1vd6l35d4q589sbmyxpjfs777kf0r5x6s6aap1v2r0i1x342a3"))))
-    (build-system ruby-build-system)
-    (arguments
-     `(#:tests? #f))    ; no rakefile found
-    (propagated-inputs
-     `(("ruby-active-model-adapter-source" ,ruby-active-model-adapter-source)
-       ("ruby-active-model-serializers" ,ruby-active-model-serializers)
-       ("ruby-ember-cli-assets" ,ruby-ember-cli-assets)
-       ("ruby-ember-data-source" ,ruby-ember-data-source)
-       ("ruby-ember-es6-template" ,ruby-ember-es6-template)
-       ("ruby-ember-handlebars-template" ,ruby-ember-handlebars-template)
-       ("ruby-ember-source" ,ruby-ember-source)
-       ("ruby-jquery-rails" ,ruby-jquery-rails)
-       ("ruby-railties" ,ruby-railties)))
-    (synopsis "Ember for Rails 3.1+")
-    (description "Ember for Rails 3.1+")
-    (home-page "https://github.com/emberjs/ember-rails")
-    (license license:expat)))
-
-(define-public ruby-handlebars-source
-  (package
-    (name "ruby-handlebars-source")
-    (version "4.7.7")
-    (source
-      (origin
-        (method url-fetch)
-        (uri (rubygems-uri "handlebars-source" version))
-        (sha256
-         (base32
-          "0sjir1fwrqajkcc8blr32vnkamcqma8b0na6fm562hh9rdzcxb0c"))))
-    (build-system ruby-build-system)
-    (arguments
-     `(#:tests? #f))    ; no rakefile found
-    (synopsis
-      "Handlebars.js source code wrapper for (pre)compilation gems.")
-    (description
-      "Handlebars.js source code wrapper for (pre)compilation gems.")
-    (home-page "https://github.com/wycats/handlebars.js/")
-    (license license:expat)))
-
-(define-public ruby-handlebars-source-4.1
-  (package
-    (inherit ruby-handlebars-source)
-    (name "ruby-handlebars-source")
-    (version "4.1.2")
-    (source
-      (origin
-        (method url-fetch)
-        (uri (rubygems-uri "handlebars-source" version))
-        (sha256
-         (base32
-          "0w8xq7nnrwhz5bfcamkvkkcb10rw7kjb809n7w949mc5h0b4l8r5"))))))
-
-(define-public ruby-discourse-ember-rails
-  (package
-    (name "ruby-discourse-ember-rails")
-    (version "0.18.6")
-    (source
-      (origin
-        (method url-fetch)
-        (uri (rubygems-uri "discourse-ember-rails" version))
-        (sha256
-         (base32
-          "0ax5x2d6q6hkm7r58ai9p0sahlg842aqlm7dpv6svrfpnjlaz7sf"))))
-    (build-system ruby-build-system)
-    (arguments
-     `(#:tests? #f))    ; no rakefile found
-    (propagated-inputs
-     `(("ruby-active-model-serializers" ,ruby-active-model-serializers)
-       ("ruby-ember-data-source" ,ruby-ember-data-source)
-       ("ruby-ember-handlebars-template" ,ruby-ember-handlebars-template)
-       ("ruby-ember-source" ,ruby-ember-source)
-       ("ruby-jquery-rails" ,ruby-jquery-rails)
-       ("ruby-railties" ,ruby-railties)))
-    (synopsis "Ember for Rails 3.1+")
-    (description "Ember for Rails 3.1+")
-    (home-page "https://github.com/emberjs/ember-rails")
-    (license license:expat)))
-
-(define-public ruby-discourse-fonts
-  (package
-    (name "ruby-discourse-fonts")
-    (version "0.0.6")
-    (source
-      (origin
-        (method url-fetch)
-        (uri (rubygems-uri "discourse-fonts" version))
-        (sha256
-         (base32
-          "101fhmgzrkwa8rvqrac3ccqp54aizm553n167ikzg7mcgbyrxw4a"))))
-    (build-system ruby-build-system)
-    (arguments
-     `(#:tests? #f))    ; no rakefile found
-    (synopsis
-      "Bundle of fonts which can be used to customize the look of Discourse")
-    (description
-      "Bundle of fonts which can be used to customize the look of Discourse")
-    (home-page "https://github.com/discourse/discourse-fonts")
-    (license license:expat)))
-
-(define-public ruby-message-bus
-  (package
-    (name "ruby-message-bus")
-    (version "3.3.4")
-    (source
-      (origin
-        (method url-fetch)
-        (uri (rubygems-uri "message_bus" version))
-        (sha256
-         (base32
-          "0hckijk9aa628nx66vr7axfsk7zfdkskaxj1mdzikk019q3h54fr"))))
-    (build-system ruby-build-system)
-    (arguments
-     `(#:tests? #f  ; Tests require running redis instance.
-       #:test-target "default"
-       #:phases
-       (modify-phases %standard-phases
-         (add-before 'check 'pre-check
-           (lambda _
-             (setenv "HOME" (getcwd))
-             #t)))))
-    (propagated-inputs
-     `(("ruby-rack" ,ruby-rack)))
-    (native-inputs
-     `(
-       ("ruby-byebug" ,ruby-byebug)
-       ("ruby-concurrent" ,ruby-concurrent)
-       ("ruby-http-parser.rb" ,ruby-http-parser.rb)
-       ("ruby-jasmine" ,ruby-jasmine)
-       ("ruby-minitest-global-expectations" ,ruby-minitest-global-expectations)
-       ("ruby-minitest-hooks" ,ruby-minitest-hooks)
-       ("ruby-pg" ,ruby-pg)
-       ("ruby-puma" ,ruby-puma)
-       ("ruby-rack-test" ,ruby-rack-test)
-       ("ruby-redis" ,ruby-redis)
-       ("ruby-rubocop-discourse" ,ruby-rubocop-discourse)
-       ("ruby-thin" ,ruby-thin)
-       ("ruby-yard" ,ruby-yard)
-       ))
-    (synopsis "Message bus for rack")
-    (description "This package provides a message bus for rack.")
-    (home-page "https://github.com/SamSaffron/message_bus")
-    (license license:expat)))
-
-(define-public ruby-phantomjs
-  (package
-    (name "ruby-phantomjs")
-    (version "2.1.1.0")
-    (source
-      (origin
-        (method url-fetch)
-        (uri (rubygems-uri "phantomjs" version))
-        (sha256
-         (base32
-          "0y8pbbyq9dirxb7igkb2s5limz2895qmr41c09fjhx6k6fxcz4mk"))))
-    (build-system ruby-build-system)
-    (arguments
-     `(#:tests? #f))    ; don't know how to build task 'test'
-    (synopsis
-      "Auto-install phantomjs on demand for current platform. Comes with poltergeist integration.")
-    (description
-      "Auto-install phantomjs on demand for current platform.  Comes with poltergeist integration.")
-    (home-page "https://github.com/colszowka/phantomjs-gem")
-    (license license:expat)))
-
-(define-public ruby-jasmine-core
-  (package
-    (name "ruby-jasmine-core")
-    (version "3.6.0")
-    (source
-      (origin
-        (method url-fetch)
-        (uri (rubygems-uri "jasmine-core" version))
-        (sha256
-         (base32
-          "0072bf0l1y6gnqw3mm4mlq7ivs19lyzr074sjibpfvryi7b449r6"))))
-    (build-system ruby-build-system)
-    (arguments
-     `(#:tests? #f))    ; no rakefile found
-    (synopsis
-      "Test your JavaScript without any framework dependencies, in any environment, and with a nice descriptive syntax.")
-    (description
-      "Test your JavaScript without any framework dependencies, in any environment, and with a nice descriptive syntax.")
-    (home-page "http://jasmine.github.io")
-    (license license:expat)))
-
-(define-public ruby-jasmine
-  (package
-    (name "ruby-jasmine")
-    (version "3.6.0")
-    (source
-      (origin
-        (method url-fetch)
-        (uri (rubygems-uri "jasmine" version))
-        (sha256
-         (base32
-          "1zbsr1d6507pvcfr3ji5hv0ksaaygi8jfp4dz1y1k1jdkkapy24b"))))
-    (build-system ruby-build-system)
-    (arguments
-     `(#:tests? #f))    ; cannot load such file -- rpsec
-    (propagated-inputs
-     `(("ruby-jasmine-core" ,ruby-jasmine-core)
-       ("ruby-phantomjs" ,ruby-phantomjs)
-       ("ruby-rack" ,ruby-rack)
-       ("ruby-rake" ,ruby-rake)))
-    (synopsis
-      "Test your JavaScript without any framework dependencies, in any environment, and with a nice descriptive syntax.")
-    (description
-      "Test your JavaScript without any framework dependencies, in any environment, and with a nice descriptive syntax.")
-    (home-page "http://jasmine.github.io/")
-    (license license:expat)))
-
-(define-public ruby-rubocop-discourse
-  (package
-    (name "ruby-rubocop-discourse")
-    (version "2.4.1")
-    (source
-      (origin
-        (method url-fetch)
-        (uri (rubygems-uri "rubocop-discourse" version))
-        (sha256
-         (base32
-          "1z1h8spsjnsqz6c25n9ib1yimkwr7a76bas8w1k9c404hcqhlahv"))))
-    (build-system ruby-build-system)
-    (arguments
-     `(#:tests? #f))    ; don't know how to build task 'test'
-    (propagated-inputs
-     `(("ruby-rubocop" ,ruby-rubocop)
-       ("ruby-rubocop-rspec" ,ruby-rubocop-rspec)))
-    (synopsis
-      "Custom rubocop cops used by Discourse")
-    (description
-      "Custom rubocop cops used by Discourse")
-    (home-page "https://github.com/discourse/rubocop-discourse")
-    (license license:expat)))
-
-;; 2.1.0+ have ActiveRecord::ConnectionAdapters::ConnectionSpecification which causes failures
-(define-public ruby-rails-multisite
-  (package
-    (name "ruby-rails-multisite")
-    (version "2.0.7")
-    (source
-      (origin
-        (method git-fetch)
-        (uri (git-reference
-               ;; No tests included in release gem.
-               (url "https://github.com/discourse/rails_multisite")
-               (commit (string-append "v" version))))
-        (file-name (git-file-name name version))
-        (sha256
-         (base32
-          "1k6bvymilcg0mvaszc5g14f87p6bvbm911dv6g4sa3asfgw62cdp"))))
-    (build-system ruby-build-system)
-    (arguments
-     '(#:tests? #f))    ; tests not working with 2.0.7.
-    (propagated-inputs
-     `(("ruby-activerecord" ,ruby-activerecord)
-       ("ruby-railties" ,ruby-railties)))
-    (native-inputs
-     `(("ruby-byebug" ,ruby-byebug)
-       ("ruby-rspec" ,ruby-rspec)
-       ("ruby-sqlite3" ,ruby-sqlite3-1.3)))
-    (synopsis "Multi tenancy support for Rails")
-    (description "This gem provides multi-db support for Rails applications.
-Using its middleware you can partition your app so each hostname has its own db.
-It provides a series of helper for working with multiple database, and some
-additional rails tasks for working with them.")
-    (home-page "https://github.com/discourse/rails_multisite")
-    (license license:expat)))
-
-(define-public ruby-fast-xs
-  (package
-    (name "ruby-fast-xs")
-    (version "0.8.0")
-    (source
-      (origin
-        (method url-fetch)
-        (uri (rubygems-uri "fast_xs" version))
-        (sha256
-         (base32
-          "1iydzaqmvqq7ncxkr182aybkk6xap0cb2w9amr73vbdxi2qf3wjz"))))
-    (build-system ruby-build-system)
-    (arguments
-     `(#:tests? #f))    ; undefined method `url='
-    (propagated-inputs
-     `(("ruby-hoe" ,ruby-hoe)))
-    (synopsis "Ruby extensions for escaping text")
-    (description
-     "@code{fast_xs} escapes text so it can be embedded more directly into XML
-and HTML without having to deal with character set issues.")
-    (home-page "http://fast-xs.rubyforge.org/")
-    (license license:expat)))
-
-(define-public ruby-xorcist
-  (package
-    (name "ruby-xorcist")
-    (version "1.1.2")
-    (source
-      (origin
-        (method url-fetch)
-        (uri (rubygems-uri "xorcist" version))
-        (sha256
-         (base32
-          "1q7hr3qyn1hczv9fglqc2cbaax0fb37gjjr0y24x19mmp817csdn"))))
-    (build-system ruby-build-system)
-    (arguments
-     `(#:tests? #f))    ; no rakefile found
-    (synopsis
-      "Blazing-fast-cross-platform-monkey-patch-free string XOR. Yes, that means JRuby too.")
-    (description
-      "Blazing-fast-cross-platform-monkey-patch-free string XOR.  Yes, that means JRuby too.")
-    (home-page "https://github.com/fny/xorcist")
-    (license license:expat)))
-
-(define-public ruby-fastimage
-  (package
-    (name "ruby-fastimage")
-    (version "2.2.2")
-    (source
-      (origin
-        (method url-fetch)
-        (uri (rubygems-uri "fastimage" version))
-        (sha256
-         (base32
-          "1zgv6588jiaisgng3bkcf5a3rlia82yrs39g7n27jhmpmhgk8j1w"))))
-    (build-system ruby-build-system)
-    (arguments
-     `(#:tests? #f))    ; no rakefile found
-    (synopsis
-      "FastImage finds the size or type of an image given its uri by fetching as little as needed.")
-    (description
-      "FastImage finds the size or type of an image given its uri by fetching as little as needed.")
-    (home-page "https://github.com/sdsykes/fastimage")
-    (license license:expat)))
-
-(define-public ruby-progress
-  (package
-    (name "ruby-progress")
-    (version "3.5.2")
-    (source
-      (origin
-        (method url-fetch)
-        (uri (rubygems-uri "progress" version))
-        (sha256
-         (base32
-          "1pm3bv5n8c8j0vfm7wghd7xf6yq4m068cksxjldmna11qi0h0s8s"))))
-    (build-system ruby-build-system)
-    (arguments
-     `(#:tests? #f))    ; no rakefile found
-    (synopsis "Show progress of long running tasks")
-    (description
-      "Show progress of long running tasks")
-    (home-page "https://github.com/toy/progress")
-    (license license:expat)))
-
-(define-public ruby-in-threads
-  (package
-    (name "ruby-in-threads")
-    (version "1.5.4")
-    (source
-      (origin
-        (method url-fetch)
-        (uri (rubygems-uri "in_threads" version))
-        (sha256
-         (base32
-          "0m71806p1gm4kxiz4gvkyr8qip16hifn2kdf926jz44jj6kc6bbs"))))
-    (build-system ruby-build-system)
-    (arguments
-     `(#:tests? #f))    ; no rakefile found
-    (synopsis
-      "Run all possible enumerable methods in concurrent/parallel threads")
-    (description
-      "Run all possible enumerable methods in concurrent/parallel threads")
-    (home-page "https://github.com/toy/in_threads")
-    (license license:expat)))
-
-(define-public ruby-image-size
-  (package
-    (name "ruby-image-size")
-    (version "2.1.0")
-    (source
-      (origin
-        (method url-fetch)
-        (uri (rubygems-uri "image_size" version))
-        (sha256
-         (base32
-          "00irlgdpg67ay3wf5ljmphpdk6wc6khs6nhc5ysl5l10mmfi62p6"))))
-    (build-system ruby-build-system)
-    (arguments
-     `(#:tests? #f))    ; no rakefile found
-    (synopsis
-      "Measure following file dimensions: apng, bmp, cur, gif, ico, j2c, jp2, jpeg, jpx, mng, pam, pbm, pcx, pgm, png, ppm, psd, svg, swf, tiff, webp, xbm, xpm")
-    (description
-      "Measure following file dimensions: apng, bmp, cur, gif, ico, j2c, jp2, jpeg, jpx, mng, pam, pbm, pcx, pgm, png, ppm, psd, svg, swf, tiff, webp, xbm, xpm")
-    (home-page "https://github.com/toy/image_size")
-    (license license:ruby)))
-
-(define-public ruby-image-size-1.5
-  (package
-    (inherit ruby-image-size)
-    (name "ruby-image-size")
-    (version "1.5.0")
-    (source
-      (origin
-        (method url-fetch)
-        (uri (rubygems-uri "image_size" version))
-        (sha256
-         (base32
-          "0zrn2mqaf1kk548wn1y35i1a6kwh3320q62m929kn9m8sqpy4fk7"))))))
-
-(define-public ruby-fspath
-  (package
-    (name "ruby-fspath")
-    (version "3.1.2")
-    (source
-      (origin
-        (method url-fetch)
-        (uri (rubygems-uri "fspath" version))
-        (sha256
-         (base32
-          "0xcxikkrjv8ws328nn5ax5pyfjs8pn7djg1hks7qyb3yp6prpb5m"))))
-    (build-system ruby-build-system)
-    (arguments
-     `(#:tests? #f))    ; no rakefile found
-    (synopsis "Better than Pathname")
-    (description "Better than Pathname")
-    (home-page "https://github.com/toy/fspath")
-    (license license:expat)))
-
-(define-public ruby-exifr
-  (package
-    (name "ruby-exifr")
-    (version "1.3.9")
-    (source
-      (origin
-        (method url-fetch)
-        (uri (rubygems-uri "exifr" version))
-        (sha256
-         (base32
-          "0mylhwmh6n4xihxr9s3zj0lc286f5maxbqd4dgk3paqnd7afz88s"))))
-    (build-system ruby-build-system)
-    (arguments
-     `(#:tests? #f))    ; test files missing?
-    (synopsis
-      "EXIF Reader is a module to read EXIF from JPEG and TIFF images.")
-    (description
-      "EXIF Reader is a module to read EXIF from JPEG and TIFF images.")
-    (home-page "https://remvee.github.io/exifr/")
-    (license license:expat)))
-
-(define-public ruby-image-optim
-  (package
-    (name "ruby-image-optim")
-    (version "0.28.0")
-    (source
-      (origin
-        (method url-fetch)
-        (uri (rubygems-uri "image_optim" version))
-        (sha256
-         (base32
-          "04n7xia22pr4ihzyf7bprnn630284cnfy2p3pk9q4b2cxaf5gj3s"))))
-    (build-system ruby-build-system)
-    (arguments
-     `(#:tests? #f))    ; no rakefile found
-    (propagated-inputs
-     `(("ruby-exifr" ,ruby-exifr)
-       ("ruby-fspath" ,ruby-fspath)
-       ("ruby-image-size" ,ruby-image-size)
-       ("ruby-in-threads" ,ruby-in-threads)
-       ("ruby-progress" ,ruby-progress)))
-    (synopsis
-      "Command line tool and ruby interface to optimize (lossless compress, optionally lossy) jpeg, png, gif and svg images using external utilities (advpng, gifsicle, jhead, jpeg-recompress, jpegoptim, jpegrescan, jpegtran, optipng, pngcrush, pngout, pngquant, svgo)")
-    (description
-      "Command line tool and ruby interface to optimize (lossless compress, optionally lossy) jpeg, png, gif and svg images using external utilities (advpng, gifsicle, jhead, jpeg-recompress, jpegoptim, jpegrescan, jpegtran, optipng, pngcrush, pngout, pngquant, svgo)")
-    (home-page "https://github.com/toy/image_optim")
-    (license license:expat)))
-
-(define-public ruby-discourse-image-optim
-  (package
-    (name "ruby-discourse-image-optim")
-    (version "0.26.2")
-    (source
-      (origin
-        (method url-fetch)
-        (uri (rubygems-uri "discourse_image_optim" version))
-        (sha256
-         (base32
-          "11nqmga5ygxyhjmsc07gsa0fwwyhdpwi20yyr4fnh263xs1xylvv"))))
-    (build-system ruby-build-system)
-    (arguments
-     `(#:tests? #f))    ; no rakefile found
-    (propagated-inputs
-     `(("ruby-exifr" ,ruby-exifr)
-       ("ruby-fspath" ,ruby-fspath)
-       ("ruby-image-size" ,ruby-image-size-1.5)
-       ("ruby-in-threads" ,ruby-in-threads)
-       ("ruby-progress" ,ruby-progress)))
-    (synopsis
-      "Optimize (lossless compress, optionally lossy) images (jpeg, png, gif, svg) using external utilities (advpng, gifsicle, jhead, jpeg-recompress, jpegoptim, jpegrescan, jpegtran, optipng, pngcrush, pngout, pngquant, svgo)")
-    (description
-      "Optimize (lossless compress, optionally lossy) images (jpeg, png, gif, svg) using external utilities (advpng, gifsicle, jhead, jpeg-recompress, jpegoptim, jpegrescan, jpegtran, optipng, pngcrush, pngout, pngquant, svgo)")
-    (home-page "https://github.com/toy/discourse_image_optim")
-    (license license:expat)))
-
-(define-public ruby-omniauth-facebook
-  (package
-    (name "ruby-omniauth-facebook")
-    (version "8.0.0")
-    (source
-      (origin
-        (method url-fetch)
-        (uri (rubygems-uri "omniauth-facebook" version))
-        (sha256
-         (base32
-          "1z0f5sr2ddnvfva0jrfd4926nlv4528rfj7z595288n39304r092"))))
-    (build-system ruby-build-system)
-    (propagated-inputs
-     `(("ruby-omniauth-oauth2" ,ruby-omniauth-oauth2)))
-    (native-inputs
-     `(("ruby-mocha" ,ruby-mocha)))
-    (synopsis "Facebook OAuth2 Strategy for OmniAuth")
-    (description
-      "Facebook OAuth2 Strategy for OmniAuth")
-    (home-page "https://github.com/simi/omniauth-facebook")
-    (license license:expat)))
-
-(define-public ruby-oauth
-  (package
-    (name "ruby-oauth")
-    (version "0.5.5")
-    (source
-      (origin
-        (method url-fetch)
-        (uri (rubygems-uri "oauth" version))
-        (sha256
-         (base32
-          "1m08365nyp0fgw2iyzj8q8qy8zml0c1hw2dd8cp82pp6656ahbh3"))))
-    (build-system ruby-build-system)
-    (arguments
-     `(#:tests? #f))    ; no rakefile found
-    (synopsis "OAuth Core Ruby implementation")
-    (description "OAuth Core Ruby implementation")
-    (home-page #f)
-    (license license:expat)))
-
-(define-public ruby-omniauth-oauth
-  (package
-    (name "ruby-omniauth-oauth")
-    (version "1.2.0")
-    (source
-      (origin
-        (method url-fetch)
-        (uri (rubygems-uri "omniauth-oauth" version))
-        (sha256
-         (base32
-          "0yw2vzx633p9wpdkd4jxsih6mw604mj7f6myyfikmj4d95c8d9z7"))))
-    (build-system ruby-build-system)
-    (arguments
-     `(#:tests? #f))    ; cannot load such file -- rspec/core/rake_task
-    (propagated-inputs
-     `(("ruby-oauth" ,ruby-oauth)
-       ("ruby-omniauth" ,ruby-omniauth)))
-    (synopsis
-      "A generic OAuth (1.0/1.0a) strategy for OmniAuth.")
-    (description
-      "This package provides a generic OAuth (1.0/1.0a) strategy for OmniAuth.")
-    (home-page "https://github.com/intridea/omniauth-oauth")
-    (license license:expat)))
-
-(define-public ruby-omniauth-twitter
-  (package
-    (name "ruby-omniauth-twitter")
-    (version "1.4.0")
-    (source
-      (origin
-        (method url-fetch)
-        (uri (rubygems-uri "omniauth-twitter" version))
-        (sha256
-         (base32
-          "0r5j65hkpgzhvvbs90id3nfsjgsad6ymzggbm7zlaxvnrmvnrk65"))))
-    (build-system ruby-build-system)
-    (arguments
-     `(#:tests? #f))    ; cannot load such file -- rspec/core/rake_task
-    (propagated-inputs
-     `(("ruby-omniauth-oauth" ,ruby-omniauth-oauth)
-       ("ruby-rack" ,ruby-rack)))
-    (synopsis "OmniAuth strategy for Twitter")
-    (description "OmniAuth strategy for Twitter")
-    (home-page "https://github.com/arunagw/omniauth-twitter")
-    (license license:expat)))
-
-(define-public ruby-omniauth-github
-  (package
-    (name "ruby-omniauth-github")
-    (version "2.0.0")
-    (source
-      (origin
-        (method url-fetch)
-        (uri (rubygems-uri "omniauth-github" version))
-        (sha256
-         (base32
-          "0jc66zp4bhwy7c6s817ws0nkimski3crrhwd7xyy55ss29v6b8hw"))))
-    (build-system ruby-build-system)
-    (arguments
-     `(#:tests? #f))    ; cannot load such file -- rspec/core/rake_task
-    (propagated-inputs
-     `(("ruby-omniauth" ,ruby-omniauth)
-       ("ruby-omniauth-oauth2" ,ruby-omniauth-oauth2)))
-    (synopsis "Official OmniAuth strategy for GitHub")
-    (description
-      "Official OmniAuth strategy for GitHub.")
-    (home-page "https://github.com/intridea/omniauth-github")
-    (license license:expat)))
-
-(define-public ruby-omniauth-google-oauth2
-  (package
-    (name "ruby-omniauth-google-oauth2")
-    (version "0.8.1")
-    (source
-      (origin
-        (method url-fetch)
-        (uri (rubygems-uri "omniauth-google-oauth2" version))
-        (sha256
-         (base32
-          "10awaj2s3c46knpv9vawhjzbbaygp685dm9n8blq2d3j4w5m3d53"))))
-    (build-system ruby-build-system)
-    (arguments
-     `(#:tests? #f))    ; cannot load such file -- rspec/core/rake_task
-    (propagated-inputs
-     `(("ruby-jwt" ,ruby-jwt)
-       ("ruby-oauth2" ,ruby-oauth2)
-       ("ruby-omniauth" ,ruby-omniauth)
-       ("ruby-omniauth-oauth2" ,ruby-omniauth-oauth2)))
-    (synopsis
-      "A Google OAuth2 strategy for OmniAuth 1.x. This allows you to login to Google with your ruby app.")
-    (description
-      "This package provides a Google OAuth2 strategy for OmniAuth 1.x.  This allows you to login to Google with your ruby app.")
-    (home-page "https://github.com/zquestz/omniauth-google-oauth2")
-    (license license:expat)))
-
-(define-public ruby-mini-sql
-  (package
-    (name "ruby-mini-sql")
-    (version "1.0.1")
-    (source
-      (origin
-        (method url-fetch)
-        (uri (rubygems-uri "mini_sql" version))
-        (sha256
-         (base32
-          "1a2s8n4nq3w86hx3ya7xs2fkzz8rp0kmz0zqzhf9r5rybprr702m"))))
-    (build-system ruby-build-system)
-    (synopsis
-      "A fast, safe, simple direct SQL executor for PG")
-    (description
-      "This package provides a fast, safe, simple direct SQL executor for PG")
-    (home-page "https://github.com/discourse/mini_sql")
-    (license license:expat)))
-
-(define-public ruby-rinku
-  (package
-    (name "ruby-rinku")
-    (version "2.0.6")
-    (source
-      (origin
-        (method url-fetch)
-        (uri (rubygems-uri "rinku" version))
-        (sha256
-         (base32
-          "0zcdha17s1wzxyc5814j6319wqg33jbn58pg6wmxpws36476fq4b"))))
-    (build-system ruby-build-system)
-    (arguments
-     `(#:tests? #f))    ; cannot load such file -- rake/extensiontask
-    (synopsis
-      "    A fast and very smart autolinking library that
-    acts as a drop-in replacement for Rails `auto_link`
-")
-    (description
-      "    A fast and very smart autolinking library that
-    acts as a drop-in replacement for Rails `auto_link`
-")
-    (home-page "https://github.com/vmg/rinku")
-    (license (license:non-copyleft
-               "will fill in later"))))
-
-(define-public ruby-sidekiq
-  (package
-    (name "ruby-sidekiq")
-    (version "6.1.3")
-    (source
-      (origin
-        (method url-fetch)
-        (uri (rubygems-uri "sidekiq" version))
-        (sha256
-         (base32
-          "0ir95jdcv7ch57xiirmy6mjh8z2lm39nnwcpkwcjqx5698w0lsvs"))))
-    (build-system ruby-build-system)
-    (arguments
-     `(#:tests? #f))    ; cannot load such file -- standard/rake
-    (propagated-inputs
-     `(("ruby-connection-pool" ,ruby-connection-pool)
-       ("ruby-rack" ,ruby-rack)
-       ("ruby-redis" ,ruby-redis)))
-    (synopsis
-      "Simple, efficient background processing for Ruby.")
-    (description
-      "Simple, efficient background processing for Ruby.")
-    (home-page "https://sidekiq.org")
-    (license (license:non-copyleft
-               "will fill in later"))))
-
-(define-public ruby-mini-scheduler
-  (package
-    (name "ruby-mini-scheduler")
-    (version "0.13.0")
-    (source
-      (origin
-        (method url-fetch)
-        (uri (rubygems-uri "mini_scheduler" version))
-        (sha256
-         (base32
-          "1cy9c2wv19m4h2sv9fs66hh1an7hq3y9513678dzx43vm3kjvhz5"))))
-    (build-system ruby-build-system)
-    (arguments
-     `(#:tests? #f))    ; cannot load such file -- rspec/core/rake_task
-    (propagated-inputs
-     `(("ruby-sidekiq" ,ruby-sidekiq)))
-    (synopsis "Adds recurring jobs for Sidekiq")
-    (description "Adds recurring jobs for Sidekiq")
-    (home-page "https://github.com/discourse/mini_scheduler")
-    (license license:expat)))
-
-;; TODO: This package needs fixing!
-(define-public ruby-libv8
-  (package
-    (name "ruby-libv8")
-    (version "8.4.255.0")
-    (source
-      (origin
-        (method url-fetch)
-        (uri (rubygems-uri "libv8" version))
-        (sha256
-         (base32
-          "0317sr3nrl51sp844bps71smkrwim3fjn47wdfpbycixnbxspivm"))))
-    (build-system ruby-build-system)
-    (arguments
-     `(
-       ;#:test-target "spec binary"
-       #:phases
-       (modify-phases %standard-phases
-         (delete 'check)
-         (add-after 'install 'check
-           (assoc-ref %standard-phases 'check))
-         (add-after 'unpack 'adjust-version-requirements
-           (lambda _
-             (substitute* "libv8.gemspec"
-               (("rake-compiler.*") "rake-compiler'\n"))
-             #t))
-         (add-before 'build 'pre-build
-           (lambda _
-             (setenv "HOME" (getcwd))
-             ;(invoke "bundle" "install")   ; no network access
-             (invoke "bundle" "exec" "rake" "compile")
-             ))
-         )
-       ))
-    (native-inputs
-     `(
-       ("glib" ,(@ (gnu packages glib) glib))
-       ("pkg-config" ,(@ (gnu packages pkg-config) pkg-config))
-       ("python" ,python-2)
-       ("ruby-rake" ,ruby-rake)
-       ("ruby-rake-compiler" ,ruby-rake-compiler)
-       ("ruby-rspec" ,ruby-rspec)
-       ))
-    (synopsis
-      "Distributes the V8 JavaScript engine in binary and source forms in order to support fast builds of The Ruby Racer")
-    (description
-      "Distributes the V8 JavaScript engine in binary and source forms in order to support fast builds of The Ruby Racer")
-    (home-page "https://github.com/rubyjs/libv8")
-    (license license:expat)))
-
-(define-public ruby-libv8-7.3
-  (package
-    (name "ruby-libv8")
-    (version "7.3.492.27.1")
-    (source
-      (origin
-        (method url-fetch)
-        (uri (rubygems-uri "libv8" version))
-        (sha256
-         (base32
-          "1jivcckillfvd4n2jnsnnlf93z3gpvqbwsczs0fvv9hc90zpj7yh"))))
-        ;(method git-fetch)
-        ;(uri (git-reference
-        ;       (url "https://github.com/rubyjs/libv8")
-        ;       (commit (string-append "v" version))
-        ;       (recursive? #t)))
-        ;(file-name (git-file-name name version))
-        ;(sha256
-        ; (base32
-        ;  "0sq026lxspglvnad2w3qiplcg8dc6ffj5130zm379yz7dncwgwdf"))))
-    (build-system ruby-build-system)
-    (arguments
-     `(
-       #:tests? #f  ; no test target
-       #:gem-flags (list "--" "--with-system-v8"
-                         (string-append "--with-v8-dir=" (assoc-ref %build-inputs "libnode")))
-       #:phases
-       (modify-phases %standard-phases
-         ;(delete 'check)
-         ;(add-after 'install 'check
-         ;  (assoc-ref %standard-phases 'check))
-         ;(add-after 'unpack 'patch-source
-         ;  (lambda* (#:key inputs #:allow-other-keys)
-         ;    (copy-file (assoc-ref inputs "cipd-client")
-         ;               "vendor/depot_tools/.cipd_client")
-         ;    (invoke "ls" "vendor/depot_tools/" "-la")
-         ;    #t))
-         (replace 'replace-git-ls-files
-           (lambda _
-             (substitute* "libv8.gemspec"
-               ;(("git submodule.*`") "ls -d vendor/*`")
-               ;(("^\\s+submodules.*") "")
-               ;(("^\\s+end.*") "")
-               ;(("^\\s+s.files \\+=.*") "")
-               ;(("^\\s+`git.*") "")
-
-               ;(("',.*") "'\n")
-
-               (("`git ls-files`")  "`find . -type f`")
-               )
-             #t))
-         ;; Unconditionally clones v8 for compilation.
-         ;(delete 'build)
-         ;(add-before 'build 'pre-build
-         ;  (lambda _
-         ;    ;(setenv "HOME" (getcwd))
-         ;    (invoke "rake" "compile")
-         ;    ))
-         )
-       ))
-    (native-inputs
-     `(
-       ("glib" ,(@ (gnu packages glib) glib))
-       ;("llvm" ,(@ (gnu packages llvm) llvm))
-       ("pkg-config" ,(@ (gnu packages pkg-config) pkg-config))
-       ("python" ,python-2)
-       ;("ruby-rake" ,ruby-rake)
-       ("ruby-rake-compiler" ,ruby-rake-compiler)
-       ("ruby-rspec" ,ruby-rspec)
-       ("which" ,(@ (gnu packages base) which))
-       ;("cipd-client"
-       ; ,(origin
-       ;    (method url-fetch)
-       ;    (uri "https://chrome-infra-packages.appspot.com/client?platform=linux-amd64&version=git_revision:bd09df254cc0d6ca4319f23c16b9039091be5b00")
-       ;    (file-name "ruby-libv8-cipd-client")
-       ;    (sha256
-       ;     (base32 "1wznd036rj7a6wpqdbbp0imlxqcv20iic1xhwg0rz7fp9x9zciz6"))))
-       ))
-    (inputs
-     `(
-       ("libnode" ,(@ (gnu packages node) libnode))
-       ))
-    (synopsis
-      "Distributes the V8 JavaScript engine in binary and source forms in order to support fast builds of The Ruby Racer")
-    (description
-      "Distributes the V8 JavaScript engine in binary and source forms in order to support fast builds of The Ruby Racer")
-    (home-page "https://github.com/rubyjs/libv8")
-    (license license:expat)))
-
-;; The last version of libv8 that can use system v8?
-(define-public ruby-libv8-6.3
-  (package
-    (name "ruby-libv8")
-    (version "6.3.292.48.1")
-    (source
-      (origin
-        (method url-fetch)
-        (uri (rubygems-uri "libv8" version))
-        (sha256
-         (base32
-          "0fispdxscqnghahxhcb360lly25r7zsg695ygb8d79g4n03wx2js"))))
-    (build-system ruby-build-system)
-    (arguments
-     `(#:tests? #f  ; no test target / can't find rake-compiler
-       #:gem-flags (list "--"
-                         "--with-system-v8"
-                         (string-append "--with-v8-dir="
-                                        (assoc-ref %build-inputs "libnode"))
-                         ;(string-append "--with-v8-include="
-                         ;               (assoc-ref %build-inputs "libnode")
-                         ;               "/include/node")
-                         )
-       #:phases
-       (modify-phases %standard-phases
-         (replace 'replace-git-ls-files
-           (lambda _
-             (substitute* "libv8.gemspec"
-               (("`git ls-files`") "`find . -type f`"))
-             #t))
-         (add-after 'unpack 'patch-source
-           ;; v8.h includes <memory>, which breaks the autotools-like detection scripts
-           (lambda _
-             (substitute* "ext/libv8/location.rb"
-               ;((".*find_header, 'v8.h.*") ""))
-               ((".*find_header.*") ""))
-             #t))
-         (add-after 'install 'remove-depot-tools
-           (lambda* (#:key outputs #:allow-other-keys)
-             (delete-file-recursively
-               (string-append (assoc-ref outputs "out")
-                              "/lib/ruby/vendor_ruby/gems/libv8-"
-                              ,version "/vendor"))
-             #t)))))
-    (native-inputs
-     `(("ruby-rake" ,ruby-rake)
-       ("ruby-rake-compiler" ,ruby-rake-compiler)
-       ("ruby-rspec" ,ruby-rspec)))
-    (inputs
-     `(("libnode" ,(@ (gnu packages node) libnode))))
-    (synopsis "V8 JavaScript engine for The Ruby Racer")
-    (description
-     "This package provides a Ruby wrapper around the Javascript V8 engine.")
-    (home-page "https://github.com/rubyjs/libv8")
-    (license license:expat)))
-
-(define-public libv8-7.3
-  (package
-    (name "libv8")
-    (version "7.3.492.27")
-    (source
-      (origin
-        (method git-fetch)
-        (uri (git-reference
-               (url "https://chromium.googlesource.com/v8/v8")
-               (commit version)))
-        (file-name (git-file-name name version))
-        (sha256
-         (base32
-          "0y9awgbryap4z9kb9zhih4ri3kqkw7imxnjn3fzcm9mwzbj4wn0j"))))
-    (build-system python-build-system)
-    (arguments
-     `(#:python ,python-2
-       #:phases
-       (modify-phases %standard-phases
-         (replace 'build
-           (lambda _
-             (substitute* ".gn"
-               ;; Files refered to seems to not exist in repository.
-               ((".*dotfile_settings.*") "")
-               ;((".*BUILDCONFIG.*") "")
-               )
-             ;(invoke "tools/dev/gm.py" "x64.release")
-             (invoke "gn" "gen" "out/x64" "--args is_debug=false target_cpu=\"x64\" v8_target_cpu=\"arm64\" use_goma=false")
-             ))
-         (replace 'check
-           (lambda* (#:key tests? #:allow-other-keys)
-             (when tests?
-               (invoke "tools/dev/gm.py" "x64.release.check"))
-             #t))
-         )
-       ))
-    (native-inputs
-     `(
-       ("gn" ,generate-ninja)
-       ;("python-gyp" ,python2-gyp)
-       ))
-    (synopsis "")
-    (description "")
-    (home-page "")
-    (license (license:non-copyleft
-               "will fill in later"))))
-
-(define-public generate-ninja   ; or 'gn'
-  (let ((commit "dfcbc6fed0a8352696f92d67ccad54048ad182b3")
-        (revision "1"))
-    (package
-      (name "generate-ninja")
-      (version (git-version "0.0.0" revision commit))
-      (source
-        (origin
-          (method git-fetch)
-          (uri (git-reference
-                 (url "https://gn.googlesource.com/gn")
-                 (commit commit)))
-          (file-name (git-file-name name version))
-          (sha256
-           (base32
-            "1941bzg37c4dpsk3sh6ga3696gpq6vjzpcw9rsnf6kdr9mcgdxvn"))))
-      (build-system meson-build-system)
-      (arguments
-       `(#:phases
-         (modify-phases %standard-phases
-           (replace 'configure
-             (lambda _
-               (setenv "CC" ,(cc-for-target))
-               (setenv "CXX" ,(cxx-for-target))
-               (substitute* "build/gen.py"
-                 (("      \\['git.*\\]")
-                  (string-append "      ['" (which "echo")
-                                 "', 'initial-commit-1111-g"
-                                 ,(string-take commit 10) "']")))
-               (invoke "python" "build/gen.py")
-               ;; This is an expected part of 'configure in the meson-build-system.
-               (chdir "out")
-               #t))
-           (delete 'patch-generated-file-shebangs)
-           (replace 'check
-             (lambda* (#:key tests? #:allow-other-keys)
-               (when tests?
-                 (invoke "./gn_unittests"))
-               #t))
-           (replace 'install
-             (lambda* (#:key outputs #:allow-other-keys)
-               (let ((out (assoc-ref outputs "out")))
-                 (install-file "gn" (string-append out "/bin"))
-                 (install-file "../LICENSE"
-                               (string-append out "/share/doc/"
-                                              ,name "-" ,version))
-                 #t))))))
-      (native-inputs
-       `(("python" ,python-wrapper)))
-      (home-page "https://gn.googlesource.com/gn")
-      (synopsis "Meta-build system for ninja")
-      (description "Generate-Ninja, or GN, is a meta-build system that generates
-Ninja build files so that you can build your project with Ninja.  GN was,
-originally, part of the Chromium source tree, and has since been extracted into
-its own standalone repo.")
-      (license license:bsd-3))))
-
-(define-public ruby-mini-racer
-  (package
-    (name "ruby-mini-racer")
-    (version "0.3.1")
-    (source
-      (origin
-        (method url-fetch)
-        (uri (rubygems-uri "mini_racer" version))
-        (sha256
-         (base32
-          "0r7j241mvhyyc017bqgp0pvf3jyrwbcqvz2pzm0r8zn2r85ks1jl"))))
-    (build-system ruby-build-system)
-    (propagated-inputs `(("ruby-libv8" ,ruby-libv8)))
-    (synopsis "Minimal embedded v8 engine for Ruby")
-    (description
-      "Minimal embedded v8 engine for Ruby")
-    (home-page "https://github.com/discourse/mini_racer")
-    (license license:expat)))
-
-(define-public ruby-mini-racer-0.2
-  (package
-    (inherit ruby-mini-racer)
-    (version "0.2.15")
-    (source
-      (origin
-        (method url-fetch)
-        (uri (rubygems-uri "mini_racer" version))
-        (sha256
-         (base32
-          "1gm4lin39pj0xi9ip22ynafxhq9xn79fq4fspqhph6bqv02cyv6a"))))
-    (arguments
-     `(#:gem-flags (list "--" "--with-system-v8"
-                         ;(string-append "--with-v8-dir="
-                         ;               (assoc-ref %build-inputs "libnode"))
-                         (string-append "--with-v8-include="
-                                        (assoc-ref %build-inputs "libnode")
-                                        "/include/node")
-                         )
-       ))
-    (propagated-inputs
-     `(
-       ("ruby-libv8" ,ruby-libv8-7.3)
-       ))
-    (inputs
-     `(("libnode" ,(@ (gnu packages node) libnode))))
-    (native-inputs
-     `(
-       ("ruby-rake-compiler" ,ruby-rake-compiler)
-       ))
-    ))
-
-;; The last version which uses ruby-libv8@6.3
-(define-public ruby-mini-racer-0.2.4
-  (package
-    (inherit ruby-mini-racer)
-    (version "0.2.4")
-    (source
-      (origin
-        (method url-fetch)
-        (uri (rubygems-uri "mini_racer" version))
-        (sha256
-         (base32
-          "1c3a61l805slbvqscmc2wbv6bvw37gs2dchyhbfql178mnb7vnwg"))))
-    (arguments
-     `(#:gem-flags
-       (list "--"
-             ;; Include the correct lib directory and then fake
-             ;; linking to '-llibnode' / '-lv8'.
-             (string-append "--with-v8-lib="
-                            (assoc-ref %build-inputs "libnode")
-                            "/lib")
-             "--with-v8lib=ruby"
-             (string-append "--with-v8-include="
-                            (assoc-ref %build-inputs "libnode")
-                            "/include/node"))))
-    (propagated-inputs
-     `(("ruby-libv8" ,ruby-libv8-6.3)))
-    (inputs
-     `(("libnode" ,(@ (gnu packages node) libnode))))
-    (native-inputs
-     `(("ruby-rake-compiler" ,ruby-rake-compiler)))))
-
-(define-public ruby-uglifier
-  (package
-    (name "ruby-uglifier")
-    (version "4.2.0")
-    (source
-      (origin
-        (method url-fetch)
-        (uri (rubygems-uri "uglifier" version))
-        (sha256
-         (base32
-          "0wgh7bzy68vhv9v68061519dd8samcy8sazzz0w3k8kqpy3g4s5f"))))
-    (build-system ruby-build-system)
-    (arguments
-     `(#:tests? #f))    ; Tests not included in gem
-    (propagated-inputs
-     `(("ruby-execjs" ,ruby-execjs)))
-    (native-inputs
-     `(("ruby-rspec" ,ruby-rspec)))
-    (synopsis
-      "Uglifier minifies JavaScript files by wrapping UglifyJS to be accessible in Ruby")
-    (description
-      "Uglifier minifies JavaScript files by wrapping UglifyJS to be accessible in Ruby")
-    (home-page "https://github.com/lautis/uglifier")
-    (license license:expat)))
-
-(define-public ruby-fast-blank
-  (package
-    (name "ruby-fast-blank")
-    (version "1.0.0")
-    (source
-      (origin
-        (method url-fetch)
-        (uri (rubygems-uri "fast_blank" version))
-        (sha256
-         (base32
-          "16s1ilyvwzmkcgmklbrn0c2pch5n02vf921njx0bld4crgdr6z56"))))
-    (build-system ruby-build-system)
-    (arguments
-     `(#:tests? #f))    ; no rakefile found
-    (synopsis
-      "Provides a C-optimized method for determining if a string is blank")
-    (description
-      "This package provides a C-optimized method for determining if a string is blank")
-    (home-page "https://github.com/SamSaffron/fast_blank")
-    (license license:expat)))
-
-(define-public ruby-lru-redux
-  (package
-    (name "ruby-lru-redux")
-    (version "1.1.0")
-    (source
-      (origin
-        (method url-fetch)
-        (uri (rubygems-uri "lru_redux" version))
-        (sha256
-         (base32
-          "1yxghzg7476sivz8yyr9nkak2dlbls0b89vc2kg52k0nmg6d0wgf"))))
-    (build-system ruby-build-system)
-    (native-inputs
-     `(("ruby-timecop" ,ruby-timecop)))
-    (synopsis
-      "An efficient implementation of an lru cache")
-    (description
-      "An efficient implementation of an lru cache")
-    (home-page "https://github.com/SamSaffron/lru_redux")
-    (license license:expat)))
-
-(define-public ruby-rack-mini-profiler
-  (package
-    (name "ruby-rack-mini-profiler")
-    (version "2.3.1")
-    (source
-      (origin
-        (method url-fetch)
-        (uri (rubygems-uri "rack-mini-profiler" version))
-        (sha256
-         (base32
-          "1zir2lf9vc6h98gly4qmsd2gdvly4pn8576pl9kzx7i9j4v54ysh"))))
-    (build-system ruby-build-system)
-    (arguments
-     `(#:tests? #f))    ; no rakefile found
-    (propagated-inputs
-     `(("ruby-rack" ,ruby-rack)))
-    (synopsis
-      "Profiling toolkit for Rack applications with Rails integration. Client Side profiling, DB profiling and Server profiling.")
-    (description
-      "Profiling toolkit for Rack applications with Rails integration.  Client Side profiling, DB profiling and Server profiling.")
-    (home-page "https://miniprofiler.com")
-    (license license:expat)))
-
-(define-public ruby-logster
-  (package
-    (name "ruby-logster")
-    (version "2.9.5")
-    (source
-      (origin
-        (method url-fetch)
-        (uri (rubygems-uri "logster" version))
-        (sha256
-         (base32
-          "1r0s6y2gh81vsajnc1ny5k9lv9zdm7667v4b3kh2w0w4v82kiiw1"))))
-    (build-system ruby-build-system)
-    (arguments
-     `(#:tests? #f))    ; TODO: only disable network tests
-    (native-inputs
-     `(
-       ("ruby-byebug" ,ruby-byebug)
-       ("ruby-rack" ,ruby-rack)
-       ("ruby-redis" ,ruby-redis)
-       ("ruby-timecop" ,ruby-timecop)
-       ))
-    (synopsis "UI for viewing logs in Rack")
-    (description "UI for viewing logs in Rack")
-    (home-page "https://github.com/discourse/logster")
-    (license license:expat)))
-
-(define-public ruby-sassc-rails
-  (package
-    (name "ruby-sassc-rails")
-    (version "2.1.2")
-    (source
-      (origin
-        (method url-fetch)
-        (uri (rubygems-uri "sassc-rails" version))
-        (sha256
-         (base32
-          "1d9djmwn36a5m8a83bpycs48g8kh1n2xkyvghn7dr6zwh4wdyksz"))))
-    (build-system ruby-build-system)
-    (arguments
-     `(#:tests? #f  ; cannot find tzinfo-data
-       #:phases
-       (modify-phases %standard-phases
-         (add-before 'check 'pre-check
-           (lambda _
-             (setenv "HOME" (getcwd))
-             (substitute* "sassc-rails.gemspec"
-               (("~> 10.0") ">= 10.0"))
-             #t)))))
-    (propagated-inputs
-     `(("ruby-railties" ,ruby-railties)
-       ("ruby-sassc" ,ruby-sassc)
-       ("ruby-sprockets" ,ruby-sprockets)
-       ("ruby-sprockets-rails" ,ruby-sprockets-rails)
-       ("ruby-tilt" ,ruby-tilt)))
-    (native-inputs
-     `(
-       ("ruby-mocha" ,ruby-mocha)
-       ("ruby-pry" ,ruby-pry)
-       ("ruby-rake" ,ruby-rake)
-       ("ruby-tzinfo-data" ,ruby-tzinfo-data)
-       ))
-    (synopsis "Integrate SassC-Ruby into Rails.")
-    (description "Integrate SassC-Ruby into Rails.")
-    (home-page "https://github.com/sass/sassc-rails")
-    (license license:expat)))
-
-(define-public ruby-rqrcode-core
-  (package
-    (name "ruby-rqrcode-core")
-    (version "0.2.0")
-    (source
-      (origin
-        (method url-fetch)
-        (uri (rubygems-uri "rqrcode_core" version))
-        (sha256
-         (base32
-          "00kqasqja8zyzqvlgiwd9r0wndqk01qk5j68a8lhlz4ayrd4qy0y"))))
-    (build-system ruby-build-system)
-    (synopsis
-      "rqrcode_core is a Ruby library for encoding QR Codes. The simple
-interface (with no runtime dependencies) allows you to create QR Code data structures.
-")
-    (description
-      "rqrcode_core is a Ruby library for encoding QR Codes.  The simple
-interface (with no runtime dependencies) allows you to create QR Code data structures.
-")
-    (home-page "https://github.com/whomwah/rqrcode_core")
-    (license license:expat)))
-
-(define-public ruby-rqrcode
-  (package
-    (name "ruby-rqrcode")
-    (version "1.2.0")
-    (source
-      (origin
-        (method url-fetch)
-        (uri (rubygems-uri "rqrcode" version))
-        (sha256
-         (base32
-          "0f1cv9a9sjqc898qm3h7zmkhwglrjw5blsskbg3gsaws01d4bc47"))))
-    (build-system ruby-build-system)
-    (arguments
-     `(#:tests? #f))    ; no rakefile found
-    (propagated-inputs
-     `(("ruby-chunky-png" ,ruby-chunky-png)
-       ("ruby-rqrcode-core" ,ruby-rqrcode-core)))
-    (synopsis
-      "rqrcode is a library for encoding QR Codes. The simple
-interface allows you to create QR Code data structures
-and then render them in the way you choose.
-")
-    (description
-      "rqrcode is a library for encoding QR Codes.  The simple
-interface allows you to create QR Code data structures
-and then render them in the way you choose.
-")
-    (home-page "https://github.com/whomwah/rqrcode")
-    (license license:expat)))
-
-(define-public ruby-sqlite3-1.3
-  (package
-    (inherit ruby-sqlite3)
-    (name "ruby-sqlite3")
-    (version "1.3.13")
-    (source
-      (origin
-        (method url-fetch)
-        (uri (rubygems-uri "sqlite3" version))
-        (sha256
-         (base32
-          "01ifzp8nwzqppda419c9wcvr8n82ysmisrs0hph9pdmv1lpa4f5i"))))))
-
-(define-public ruby-bbcode-to-md
-  (let ((commit "3b9aaf2b634704a415788c94f7dee93a81f616b5")
-           (revision "1"))
-    (package
-      (name "ruby-bbcode-to-md")
-      (version (git-version "0.0.15" revision commit))
-      (source
-        (origin
-          (method git-fetch)
-          (uri (git-reference
-                 (url "https://github.com/nlalonde/ruby-bbcode-to-md")
-                 (commit commit)))
-          (file-name (git-file-name name version))
-          (sha256
-           (base32
-            "1c173jr1y4z7vxk7cshh17mjdkq8d690zzs3kc76j2wbvfbmcpcp"))))
-      (build-system ruby-build-system)
-      (arguments
-       `(#:phases
-         (modify-phases %standard-phases
-           (add-after 'unpack 'patch-source
-             (lambda _
-               (delete-file "Gemfile.lock")
-               #t)))))
-      (propagated-inputs
-       `(("ruby-activesupport" ,ruby-activesupport)))
-      (native-inputs
-       `(("ruby-pry" ,ruby-pry)))
-      (synopsis
-        "Convert BBCode to Markdown and check whether the BBCode is valid.")
-      (description
-        "Convert BBCode to Markdown and check whether the BBCode is valid.")
-      (home-page "https://github.com/rikkit/ruby-bbcode-to-md")
-      (license license:expat))))
-
-(define-public ruby-tiny-tds
-  (package
-    (name "ruby-tiny-tds")
-    (version "2.1.3")
-    (source
-      (origin
-        (method url-fetch)
-        (uri (rubygems-uri "tiny_tds" version))
-        (sha256
-         (base32
-          "0hy3kbcb6nwydy312rhjm4b30yavmayszzzyjpfdv6p0s8d9mfvb"))))
-    (build-system ruby-build-system)
-    (arguments
-     `(#:tests? #f))    ; File does not exist: tiny_tds/tiny_tds
-    (inputs
-     `(("freetds" ,freetds)))
-    (native-inputs
-     `(("ruby-connection-pool" ,ruby-connection-pool)
-       ("ruby-mini-portile" ,ruby-mini-portile-2)
-       ("ruby-rake" ,ruby-rake)
-       ("ruby-rake-compiler" ,ruby-rake-compiler)
-       ("ruby-rake-compiler-dock" ,ruby-rake-compiler-dock)))
-    (synopsis
-      "TinyTDS - A modern, simple and fast FreeTDS library for Ruby using DB-Library. Developed for the ActiveRecord SQL Server adapter.")
-    (description
-      "TinyTDS - A modern, simple and fast FreeTDS library for Ruby using DB-Library.  Developed for the ActiveRecord SQL Server adapter.")
-    (home-page "https://github.com/rails-sqlserver/tiny_tds")
-    (license license:expat)))
-
-(define-public ruby-rake-compiler-dock
-  (package
-    (name "ruby-rake-compiler-dock")
-    (version "1.1.0")
-    (source
-      (origin
-        (method url-fetch)
-        (uri (rubygems-uri "rake-compiler-dock" version))
-        (sha256
-         (base32
-          "0z70p0jdp4ww0ax783nvfz1ppr8bf31kgy3la8wrcyhz1lvpq799"))))
-    (build-system ruby-build-system)
-    (arguments
-     `(#:tests? #f))    ; cannot load rake_compiler_dock
-    (synopsis
-      "Easy to use and reliable cross compiler environment for building Windows and Linux binary gems.
-Use rake-compiler-dock to enter an interactive shell session or add a task to your Rakefile to automate your cross build.")
-    (description
-      "Easy to use and reliable cross compiler environment for building Windows and Linux binary gems.
-Use rake-compiler-dock to enter an interactive shell session or add a task to your Rakefile to automate your cross build.")
-    (home-page "https://github.com/rake-compiler/rake-compiler-dock")
-    (license license:expat)))
-
-(define-public ruby-csv
-  (package
-    (name "ruby-csv")
-    (version "3.1.9")
-    (source
-      (origin
-        (method url-fetch)
-        (uri (rubygems-uri "csv" version))
-        (sha256
-         (base32
-          "07mgyalwdxaxnff86j5p6n5szmhqz7nrlkb40826mzggrmva8v1m"))))
-    (build-system ruby-build-system)
-    (arguments
-     `(#:tests? #f))    ; no rakefile found
-    (synopsis
-      "The CSV library provides a complete interface to CSV files and data. It offers tools to enable you to read and write to and from Strings or IO objects, as needed.")
-    (description
-      "The CSV library provides a complete interface to CSV files and data.  It offers tools to enable you to read and write to and from Strings or IO objects, as needed.")
-    (home-page "https://github.com/ruby/csv")
-    (license (list (license:non-copyleft "will fill in later")
-                   (license:non-copyleft "will fill in later")))))
-
-(define-public ruby-maxminddb
-  (package
-    (name "ruby-maxminddb")
-    (version "0.1.22")
-    (source
-      (origin
-        (method url-fetch)
-        (uri (rubygems-uri "maxminddb" version))
-        (sha256
-         (base32
-          "0zlhqilyggiryywgswfi624bv10qnkm66hggmg79vvgv73j3p4sh"))))
-    (build-system ruby-build-system)
-    (arguments
-     `(#:tests? #f))    ; don't how how to build task 'test'
-    (native-inputs
-     `(
-       ("ruby-rspec" ,ruby-rspec)
-       ("ruby-rspec-its" ,ruby-rspec-its)
-       ))
-    (synopsis
-      "Pure Ruby MaxMind DB (GeoIP2) binary file reader.")
-    (description
-      "Pure Ruby MaxMind DB (GeoIP2) binary file reader.")
-    (home-page "https://github.com/yhirose/maxminddb")
-    (license license:expat)))
-
-(define-public ruby-codeclimate-test-reporter
-  (package
-    (name "ruby-codeclimate-test-reporter")
-    (version "1.0.9")
-    (source
-      (origin
-        (method url-fetch)
-        (uri (rubygems-uri
-               "codeclimate-test-reporter"
-               version))
-        (sha256
-         (base32
-          "1hq1f9c3f9lh0wr0apccgl6w1q2w39q93raagg50kchi7zp288cm"))))
-    (build-system ruby-build-system)
-    (arguments
-     `(#:tests? #f))    ; no rakefile found
-    (propagated-inputs
-     `(("ruby-simplecov" ,ruby-simplecov-0.13)))
-    (synopsis
-      "Collects test coverage data from your Ruby test suite and sends it to Code Climate's hosted, automated code review service. Based on SimpleCov.")
-    (description
-      "Collects test coverage data from your Ruby test suite and sends it to Code Climate's hosted, automated code review service.  Based on SimpleCov.")
-    (home-page "https://github.com/codeclimate/ruby-test-reporter")
-    (license license:expat)))
-
-(define-public ruby-simplecov-0.13
-  (package
-    (inherit ruby-simplecov)
-    (name "ruby-simplecov")
-    (version "0.13.0")
-    (source
-      (origin
-        (method url-fetch)
-        (uri (rubygems-uri "simplecov" version))
-        (sha256
-         (base32
-          "1r46dxq6r5rc7mgfb4w68qsm27w4qrp9kwjpssch9d5ngr12g0n7"))))))
-
-(define-public ruby-kaminari-activerecord
-  (package
-    (name "ruby-kaminari-activerecord")
-    (version "1.2.1")
-    (source
-      (origin
-        (method url-fetch)
-        (uri (rubygems-uri "kaminari-activerecord" version))
-        (sha256
-         (base32
-          "02n5xxv6ilh39q2m6vcz7qrdai7ghk3s178dw6f0b3lavwyq49w3"))))
-    (build-system ruby-build-system)
-    (arguments
-     `(#:tests? #f))    ; no rakefile found
-    (propagated-inputs
-     `(("ruby-activerecord" ,ruby-activerecord)
-       ("ruby-kaminari-core" ,ruby-kaminari-core)))
-    (synopsis
-      "kaminari-activerecord lets your Active Record models be paginatable")
-    (description
-      "kaminari-activerecord lets your Active Record models be paginatable")
-    (home-page "https://github.com/kaminari/kaminari")
-    (license license:expat)))
-
-(define-public ruby-kaminari-core
-  (package
-    (name "ruby-kaminari-core")
-    (version "1.2.1")
-    (source
-      (origin
-        (method url-fetch)
-        (uri (rubygems-uri "kaminari-core" version))
-        (sha256
-         (base32
-          "0h04cr4y1jfn81gxy439vmczifghc2cvsyw47aa32is5bbxg1wlz"))))
-    (build-system ruby-build-system)
-    (arguments
-     `(#:tests? #f))    ; no rakefile found
-    (synopsis
-      "kaminari-core includes pagination logic independent from ORMs and view libraries")
-    (description
-      "kaminari-core includes pagination logic independent from ORMs and view libraries")
-    (home-page "https://github.com/kaminari/kaminari")
-    (license license:expat)))
-
-(define-public ruby-kaminari-actionview
-  (package
-    (name "ruby-kaminari-actionview")
-    (version "1.2.1")
-    (source
-      (origin
-        (method url-fetch)
-        (uri (rubygems-uri "kaminari-actionview" version))
-        (sha256
-         (base32
-          "0w0p1hyv6lgf6h036cmn2kbkdv4x7g0g9q9kc5gzkpz7amlxr8ri"))))
-    (build-system ruby-build-system)
-    (arguments
-     `(#:tests? #f))    ; no rakefile found
-    (propagated-inputs
-     `(("ruby-actionview" ,ruby-actionview)
-       ("ruby-kaminari-core" ,ruby-kaminari-core)))
-    (synopsis
-      "kaminari-actionview provides pagination helpers for your Action View templates")
-    (description
-      "kaminari-actionview provides pagination helpers for your Action View templates")
-    (home-page "https://github.com/kaminari/kaminari")
-    (license license:expat)))
-
-(define-public ruby-kaminari
-  (package
-    (name "ruby-kaminari")
-    (version "1.2.1")
-    (source
-      (origin
-        (method url-fetch)
-        (uri (rubygems-uri "kaminari" version))
-        (sha256
-         (base32
-          "1vxkqciny5v4jgmjxl8qrgbmig2cij2iskqbwh4bfcmpxf467ch3"))))
-    (build-system ruby-build-system)
-    (arguments
-     `(#:tests? #f))    ; cannot load such file -- kaminari
-    (propagated-inputs
-      `(("ruby-activesupport" ,ruby-activesupport)
-        ("ruby-kaminari-actionview" ,ruby-kaminari-actionview)
-        ("ruby-kaminari-activerecord" ,ruby-kaminari-activerecord)
-        ("ruby-kaminari-core" ,ruby-kaminari-core)))
-    (synopsis
-      "Kaminari is a Scope & Engine based, clean, powerful, agnostic, customizable and sophisticated paginator for Rails 4+")
-    (description
-      "Kaminari is a Scope & Engine based, clean, powerful, agnostic, customizable and sophisticated paginator for Rails 4+")
-    (home-page "https://github.com/kaminari/kaminari")
-    (license license:expat)))
-
-;; TODO? Replace ruby-kaminari-* inputs with correct version?
-(define-public ruby-kaminari-0.16
-  (package
-    (inherit ruby-kaminari)
-    (name "ruby-kaminari")
-    (version "0.16.3")
-    (source
-      (origin
-        (method url-fetch)
-        (uri (rubygems-uri "kaminari" version))
-        (sha256
-         (base32
-          "14vx3kgssl4lv2kn6grr5v2whsynx5rbl1j9aqiq8nc3d7j74l67"))))))
-
-(define-public ruby-will-paginate
-  (package
-    (name "ruby-will-paginate")
-    (version "3.3.0")
-    (source
-      (origin
-        (method url-fetch)
-        (uri (rubygems-uri "will_paginate" version))
-        (sha256
-         (base32
-          "10qk4mf3rfc0vr26j0ba6vcz7407rdjfn13ph690pkzr94rv8bay"))))
-    (build-system ruby-build-system)
-    (arguments
-     `(#:tests? #f))    ; no rakefile found
-    (synopsis
-      "will_paginate provides a simple API for performing paginated queries with Active Record, DataMapper and Sequel, and includes helpers for rendering pagination links in Rails, Sinatra, Hanami, and Merb web apps.")
-    (description
-      "will_paginate provides a simple API for performing paginated queries with Active Record, DataMapper and Sequel, and includes helpers for rendering pagination links in Rails, Sinatra, Hanami, and Merb web apps.")
-    (home-page "https://github.com/mislav/will_paginate")
-    (license license:expat)))
-
-(define-public ruby-rack-accept
-  (package
-    (name "ruby-rack-accept")
-    (version "0.4.5")
-    (source
-      (origin
-        (method url-fetch)
-        (uri (rubygems-uri "rack-accept" version))
-        (sha256
-         (base32
-          "18jdipx17b4ki33cfqvliapd31sbfvs4mv727awynr6v95a7n936"))))
-    (build-system ruby-build-system)
-    (propagated-inputs `(("ruby-rack" ,ruby-rack)))
-    (synopsis
-      "HTTP Accept, Accept-Charset, Accept-Encoding, and Accept-Language for Ruby/Rack")
-    (description
-      "HTTP Accept, Accept-Charset, Accept-Encoding, and Accept-Language for Ruby/Rack")
-    (home-page "http://mjijackson.github.com/rack-accept")
-    (license (license:non-copyleft
-               "will fill in later"))))
-
-(define-public ruby-mustermann
- (package
-  (name "ruby-mustermann")
-  (version "1.1.1")
-  (source
-    (origin
-      (method url-fetch)
-      (uri (rubygems-uri "mustermann" version))
-      (sha256
-        (base32
-          "0ccm54qgshr1lq3pr1dfh7gphkilc19dp63rw6fcx7460pjwy88a"))))
-  (build-system ruby-build-system)
-  (propagated-inputs
-    `(("ruby-ruby2-keywords" ,ruby-ruby2-keywords)))
-  (synopsis
-    "A library implementing patterns that behave like regular expressions.")
-  (description
-    "This package provides a library implementing patterns that behave like regular expressions.")
-  (home-page
-    "https://github.com/sinatra/mustermann")
-  (license license:expat)))
-
-(define-public ruby-mustermann-grape
-  (package
-    (name "ruby-mustermann-grape")
-    (version "1.0.1")
-    (source
-      (origin
-        (method url-fetch)
-        (uri (rubygems-uri "mustermann-grape" version))
-        (sha256
-         (base32
-          "0djlbi7nh161a5mwjdm1ya4hc6lyzc493ah48gn37gk6vyri5kh0"))))
-    (build-system ruby-build-system)
-    (arguments
-     `(#:tests? #f))    ; You must use Bundler 2 or greater with this lockfile.
-    (propagated-inputs
-     `(("ruby-mustermann" ,ruby-mustermann)))
-    (synopsis
-      "Adds Grape style patterns to Mustermman")
-    (description
-      "Adds Grape style patterns to Mustermman")
-    (home-page "https://github.com/ruby-grape/mustermann-grape")
-    (license license:expat)))
-
-(define-public ruby-dry-logic
-  (package
-    (name "ruby-dry-logic")
-    (version "1.1.0")
-    (source
-      (origin
-        (method url-fetch)
-        (uri (rubygems-uri "dry-logic" version))
-        (sha256
-         (base32
-          "17dnc3g9y2nj42rdx2bdvsvvms10vgw4qzjb2iw2gln9hj8b797c"))))
-    (build-system ruby-build-system)
-    (arguments
-     `(#:tests? #f))    ; no rakefile found
-    (propagated-inputs
-     `(("ruby-concurrent-ruby" ,ruby-concurrent)
-       ("ruby-dry-core" ,ruby-dry-core)))
-    (synopsis
-      "Predicate logic with rule composition")
-    (description
-      "Predicate logic with rule composition")
-    (home-page "https://dry-rb.org/gems/dry-logic")
-    (license license:expat)))
-
-(define-public ruby-dry-inflector
-  (package
-    (name "ruby-dry-inflector")
-    (version "0.2.0")
-    (source
-      (origin
-        (method url-fetch)
-        (uri (rubygems-uri "dry-inflector" version))
-        (sha256
-         (base32
-          "17mkdwglqsd9fg272y3zms7rixjgkb1km1xcb88ir5lxvk1jkky7"))))
-    (build-system ruby-build-system)
-    (arguments
-     `(#:tests? #f))    ; no rakefile found
-    (synopsis "String inflections for dry-rb")
-    (description "String inflections for dry-rb")
-    (home-page "https://dry-rb.org")
-    (license license:expat)))
-
-(define-public ruby-dry-core
-  (package
-    (name "ruby-dry-core")
-    (version "0.5.0")
-    (source
-      (origin
-        (method url-fetch)
-        (uri (rubygems-uri "dry-core" version))
-        (sha256
-         (base32
-          "14s45hxcqpp2mbvwlwzn018i8qhcjzgkirigdrv31jd741rpgy9s"))))
-    (build-system ruby-build-system)
-    (arguments
-     `(#:tests? #f))    ; no rakefile found
-    (propagated-inputs
-     `(("ruby-concurrent-ruby" ,ruby-concurrent)))
-    (synopsis
-      "A toolset of small support modules used throughout the dry-rb ecosystem")
-    (description
-      "This package provides a toolset of small support modules used throughout the dry-rb ecosystem")
-    (home-page "https://dry-rb.org/gems/dry-core")
-    (license license:expat)))
-
-(define-public ruby-dry-configurable
-  (package
-    (name "ruby-dry-configurable")
-    (version "0.12.1")
-    (source
-      (origin
-        (method url-fetch)
-        (uri (rubygems-uri "dry-configurable" version))
-        (sha256
-         (base32
-          "1fxr1352sgjbyk85qh4nfj974czw5b3rqjnl71q9p8v8fxrl6ln3"))))
-    (build-system ruby-build-system)
-    (arguments
-     `(#:tests? #f))    ; no rakefile found
-    (propagated-inputs
-     `(("ruby-concurrent-ruby" ,ruby-concurrent)
-       ("ruby-dry-core" ,ruby-dry-core)))
-    (synopsis
-      "A mixin to add configuration functionality to your classes")
-    (description
-      "This package provides a mixin to add configuration functionality to your classes")
-    (home-page "https://dry-rb.org/gems/dry-configurable")
-    (license license:expat)))
-
-(define-public ruby-dry-container
-  (package
-    (name "ruby-dry-container")
-    (version "0.7.2")
-    (source
-      (origin
-        (method url-fetch)
-        (uri (rubygems-uri "dry-container" version))
-        (sha256
-         (base32
-          "1npnhs3x2xcwwijpys5c8rpcvymrlab0y8806nr4h425ld5q4wd0"))))
-    (build-system ruby-build-system)
-    (arguments
-     `(#:tests? #f))    ; no rakefile found
-    (propagated-inputs
-     `(("ruby-concurrent-ruby" ,ruby-concurrent)
-       ("ruby-dry-configurable" ,ruby-dry-configurable)))
-    (native-inputs
-     `(
-       ("ruby-rspec" ,ruby-rspec)
-       ))
-    (synopsis
-      "A simple container intended for use as an IoC container")
-    (description
-      "This package provides a simple container intended for use as an IoC container")
-    (home-page "https://github.com/dry-rb/dry-container")
-    (license license:expat)))
-
-(define-public ruby-dry-types
-  (package
-    (name "ruby-dry-types")
-    (version "1.5.1")
-    (source
-      (origin
-        (method url-fetch)
-        (uri (rubygems-uri "dry-types" version))
-        (sha256
-         (base32
-          "1gv0s396lzxlr882qgwi90462wn6f99wq6g0y204r94i3yfh1lvd"))))
-    (build-system ruby-build-system)
-    (arguments
-     `(#:tests? #f))    ; no rakefile found
-    (propagated-inputs
-     `(("ruby-concurrent-ruby" ,ruby-concurrent)
-       ("ruby-dry-container" ,ruby-dry-container)
-       ("ruby-dry-core" ,ruby-dry-core)
-       ("ruby-dry-inflector" ,ruby-dry-inflector)
-       ("ruby-dry-logic" ,ruby-dry-logic)))
-    (synopsis
-      "Type system for Ruby supporting coercions, constraints and complex types like structs, value objects, enums etc")
-    (description
-      "Type system for Ruby supporting coercions, constraints and complex types like structs, value objects, enums etc")
-    (home-page "https://dry-rb.org/gems/dry-types")
-    (license license:expat)))
-
-(define-public ruby-grape
-  (package
-    (name "ruby-grape")
-    (version "1.5.2")
-    (source
-      (origin
-        (method url-fetch)
-        (uri (rubygems-uri "grape" version))
-        (sha256
-         (base32
-          "0adf01kihxbmh8q84r6zyfgdmpbyb0lwcar3fi8j6bl6qcsbgwqx"))))
-    (build-system ruby-build-system)
-    (arguments
-     `(#:tests? #f))    ; no rakefile found
-    (propagated-inputs
-     `(("ruby-activesupport" ,ruby-activesupport)
-       ("ruby-builder" ,ruby-builder)
-       ("ruby-dry-types" ,ruby-dry-types)
-       ("ruby-mustermann-grape" ,ruby-mustermann-grape)
-       ("ruby-rack" ,ruby-rack)
-       ("ruby-rack-accept" ,ruby-rack-accept)))
-    (synopsis
-      "A Ruby framework for rapid API development with great conventions.")
-    (description
-      "This package provides a Ruby framework for rapid API development with great conventions.")
-    (home-page "https://github.com/ruby-grape/grape")
-    (license license:expat)))
-
-(define-public ruby-m
-  (package
-    (name "ruby-m")
-    (version "1.5.1")
-    (source
-      (origin
-        (method url-fetch)
-        (uri (rubygems-uri "m" version))
-        (sha256
-         (base32
-          "15jnbpl7b08im4g42ambc850w01lmc49k1z4438ipj83xsj5x32w"))))
-    (build-system ruby-build-system)
-    (arguments
-     `(#:tests? #f  ; needs pygments
-       #:phases
-       (modify-phases %standard-phases
-         (add-after 'unpack 'patch-source
-           (lambda _
-             (substitute* "Gemfile.lock"
-               (("\\(.*\\)") ""))
-             #t)))))
-    (propagated-inputs
-     `(("ruby-method-source" ,ruby-method-source)
-       ("ruby-rake" ,ruby-rake)))
-    (native-inputs
-     `(("ruby-activesupport" ,ruby-activesupport)
-       ("ruby-allocation-stats" ,ruby-allocation-stats)
-       ("ruby-appraisal" ,ruby-appraisal)
-       ("ruby-benchmark-ips" ,ruby-benchmark-ips)
-       ("ruby-coveralls" ,ruby-coveralls)
-       ("ruby-rdiscount" ,ruby-rdiscount)
-       ("ruby-rocco" ,ruby-rocco)
-       ("ruby-simplecov" ,ruby-simplecov)))
-    (synopsis
-      "Run test/unit tests by line number. Metal!")
-    (description
-      "Run test/unit tests by line number.  Metal!")
-    (home-page "https://github.com/qrush/m")
-    (license (license:non-copyleft
-               "will fill in later"))))
-
-(define-public ruby-allocation-stats
-  (package
-    (name "ruby-allocation-stats")
-    (version "0.1.5")
-    (source
-      (origin
-        (method url-fetch)
-        (uri (rubygems-uri "allocation_stats" version))
-        (sha256
-         (base32
-          "00xrlbprgnval73s0na9365zd6qapr260cgqww4d7l3ir0wb56yb"))))
-    (build-system ruby-build-system)
-    (arguments
-     `(#:tests? #f  ; TODO: fix tests
-       #:test-target "spec"))
-    (native-inputs
-     `(
-       ("ruby-pry" ,ruby-pry)
-       ("ruby-rspec" ,ruby-rspec)
-       ("ruby-simplecov" ,ruby-simplecov)
-       ("ruby-yajl-ruby" ,ruby-yajl-ruby)
-       ("ruby-yard" ,ruby-yard)
-       ))
-    (synopsis
-      "Tooling for tracing object allocations in Ruby 2.1")
-    (description
-      "Tooling for tracing object allocations in Ruby 2.1")
-    (home-page "https://github.com/srawlins/allocation_stats")
-    (license license:asl2.0)))
-
-(define-public ruby-rdiscount
-  (package
-    (name "ruby-rdiscount")
-    (version "2.2.0.2")
-    (source
-      (origin
-        (method url-fetch)
-        (uri (rubygems-uri "rdiscount" version))
-        (sha256
-         (base32
-          "16srf8cr8ynlafyh6ls654b9a3bqgai8n3y86zzv9mcpvlk6k27g"))))
-    (build-system ruby-build-system)
-    (arguments
-     `(#:tests? #f))    ; TODO: figure this out later
-    (synopsis
-      "Fast Implementation of Gruber's Markdown in C")
-    (description
-      "Fast Implementation of Gruber's Markdown in C")
-    (home-page "http://dafoster.net/projects/rdiscount/")
-    (license license:bsd-3)))
-
-(define-public ruby-fakeweb
-  (package
-    (name "ruby-fakeweb")
-    (version "1.3.0")
-    (source
-      (origin
-        (method url-fetch)
-        (uri (rubygems-uri "fakeweb" version))
-        (sha256
-         (base32
-          "1a09z9nb369bvwpghncgd5y4f95lh28w0q258srh02h22fz9dj8y"))))
-    (build-system ruby-build-system)
-    (arguments
-     `(#:tests? #f))    ; File does not exist: samuel/net_http
-    (native-inputs
-     `(
-       ;("ruby-jeweler" ,ruby-jeweler)
-       ("ruby-mocha" ,ruby-mocha)
-       ;("ruby-rcov" ,ruby-rcov)
-       ("ruby-sdoc" ,ruby-sdoc)
-       ))
-    (synopsis
-      "FakeWeb is a helper for faking web requests in Ruby. It works at a global level, without modifying code or writing extensive stubs.")
-    (description
-      "FakeWeb is a helper for faking web requests in Ruby.  It works at a global level, without modifying code or writing extensive stubs.")
-    (home-page "http://github.com/chrisk/fakeweb")
-    (license (license:non-copyleft
-               "will fill in later"))))
-
-(define-public ruby-simple-oauth
-  (package
-    (name "ruby-simple-oauth")
-    (version "0.3.1")
-    (source
-      (origin
-        (method url-fetch)
-        (uri (rubygems-uri "simple_oauth" version))
-        (sha256
-         (base32
-          "0dw9ii6m7wckml100xhjc6vxpjcry174lbi9jz5v7ibjr3i94y8l"))))
-    (build-system ruby-build-system)
-    (native-inputs
-     `(
-       ("ruby-rspec" ,ruby-rspec)
-       ("ruby-yardstick" ,ruby-yardstick)
-       ))
-    (synopsis "Build and verify OAuth headers")
-    (description
-      "Simply builds and verifies OAuth headers")
-    (home-page "https://github.com/laserlemon/simple_oauth")
-    (license license:expat)))
-
-(define-public ruby-naught
-  (package
-    (name "ruby-naught")
-    (version "1.1.0")
-    (source
-      (origin
-        (method url-fetch)
-        (uri (rubygems-uri "naught" version))
-        (sha256
-         (base32
-          "1wwjx35zgbc0nplp8a866iafk4zsrbhwwz4pav5gydr2wm26nksg"))))
-    (build-system ruby-build-system)
-    (arguments
-     `(#:test-target "default"))
-    (native-inputs
-     `(("ruby-coveralls" ,ruby-coveralls)
-       ("ruby-rspec" ,ruby-rspec)
-       ("ruby-simplecov" ,ruby-simplecov)))
-    (synopsis "Toolkit for building Null Objects")
-    (description "Naught is a toolkit for building Null Objects.")
-    (home-page "https://github.com/avdi/naught")
-    (license license:expat)))
-
-(define-public ruby-memoizable
-  (package
-    (name "ruby-memoizable")
-    (version "0.4.2")
-    (source
-      (origin
-        (method url-fetch)
-        (uri (rubygems-uri "memoizable" version))
-        (sha256
-         (base32
-          "0v42bvghsvfpzybfazl14qhkrjvx0xlmxz0wwqc960ga1wld5x5c"))))
-    (build-system ruby-build-system)
-    (propagated-inputs
-     `(("ruby-thread-safe" ,ruby-thread-safe)))
-    (native-inputs
-     `(("ruby-coveralls" ,ruby-coveralls)
-       ("ruby-rspec" ,ruby-rspec)
-       ("ruby-simplecov" ,ruby-simplecov)))
-    (synopsis "Memoize method return values")
-    (description "Memoize method return values")
-    (home-page "https://github.com/dkubb/memoizable")
-    (license license:expat)))
-
-(define-public ruby-ffi-compiler
-  (package
-    (name "ruby-ffi-compiler")
-    (version "1.0.1")
-    (source
-      (origin
-        (method url-fetch)
-        (uri (rubygems-uri "ffi-compiler" version))
-        (sha256
-         (base32
-          "0c2caqm9wqnbidcb8dj4wd3s902z15qmgxplwyfyqbwa0ydki7q1"))))
-    (build-system ruby-build-system)
-    (arguments
-     `(#:tests? #f))    ; LoadError: cannot load such file -- rubygems/tasks
-    (propagated-inputs
-     `(("ruby-ffi" ,ruby-ffi)
-       ("ruby-rake" ,ruby-rake)))
-    (synopsis "Ruby FFI library")
-    (description "Ruby FFI library")
-    (home-page "http://wiki.github.com/ffi/ffi")
-    (license license:asl2.0)))
-
-(define-public ruby-http-parser
-  (package
-    (name "ruby-http-parser")
-    (version "1.2.3")
-    (source
-      (origin
-        (method url-fetch)
-        (uri (rubygems-uri "http-parser" version))
-        (sha256
-         (base32
-          "18qqvckvqjffh88hfib6c8pl9qwk9gp89w89hl3f2s1x8hgyqka1"))))
-    (build-system ruby-build-system)
-    (arguments
-     `(#:phases
-       (modify-phases %standard-phases
-         (add-before 'build 'pre-build
-           (lambda _
-             (invoke "rake" "compile"))))))
-    (propagated-inputs
-     `(("ruby-ffi-compiler" ,ruby-ffi-compiler)))
-    (native-inputs
-     `(("ruby-rspec" ,ruby-rspec)))
-    (synopsis "Http parser for Ruby")
-    (description
-      "    A super fast http parser for ruby.
-    Cross platform and multiple ruby implementation support thanks to ffi.
-")
-    (home-page "https://github.com/cotag/http-parser")
-    (license license:expat)))
-
-(define-public ruby-http-form-data
-  (package
-    (name "ruby-http-form-data")
-    (version "2.3.0")
-    (source
-      (origin
-        (method url-fetch)
-        (uri (rubygems-uri "http-form_data" version))
-        (sha256
-         (base32
-          "1wx591jdhy84901pklh1n9sgh74gnvq1qyqxwchni1yrc49ynknc"))))
-    (build-system ruby-build-system)
-    (arguments
-     `(#:test-target "default"))
-    (native-inputs
-     `(("ruby-coveralls" ,ruby-coveralls)
-       ("ruby-guard" ,ruby-guard)
-       ("ruby-rspec" ,ruby-rspec)
-       ("ruby-simplecov" ,ruby-simplecov)))
-    (synopsis
-      "Utility-belt to build form data request bodies. Provides support for `application/x-www-form-urlencoded` and `multipart/form-data` types.")
-    (description
-      "Utility-belt to build form data request bodies.  Provides support for `application/x-www-form-urlencoded` and `multipart/form-data` types.")
-    (home-page "https://github.com/httprb/form_data.rb")
-    (license license:expat)))
-
-(define-public ruby-http
-  (package
-    (name "ruby-http")
-    (version "4.4.1")
-    (source
-      (origin
-        (method url-fetch)
-        (uri (rubygems-uri "http" version))
-        (sha256
-         (base32
-          "0z8vmvnkrllkpzsxi94284di9r63g9v561a16an35izwak8g245y"))))
-    (build-system ruby-build-system)
-    (arguments
-     `(#:test-target "default"
-       ;; A bunch of tests require network access. Should we borrow Debain's patches?
-       #:tests? #f))
-    (propagated-inputs
-     `(("ruby-addressable" ,ruby-addressable)
-       ("ruby-http-cookie" ,ruby-http-cookie)
-       ("ruby-http-form-data" ,ruby-http-form-data)
-       ("ruby-http-parser" ,ruby-http-parser)))
-    (native-inputs
-     `(("ruby-certificate-authority" ,ruby-certificate-authority)
-       ("ruby-coveralls" ,ruby-coveralls)
-       ("ruby-rspec" ,ruby-rspec)
-       ("ruby-rspec-its" ,ruby-rspec-its)
-       ("ruby-rubocop" ,ruby-rubocop)
-       ("ruby-simplecov" ,ruby-simplecov)
-       ("ruby-yardstick" ,ruby-yardstick)))
-    (synopsis "Client library for making requests from Ruby")
-    (description "This package provides a client library for making requests
-from Ruby.  It uses a simple method chaining system for building requests,
-similar to Python's Requests.")
-    (home-page "https://github.com/httprb/http")
-    (license license:expat)))
-
-(define-public ruby-equalizer
-  (package
-    (name "ruby-equalizer")
-    (version "0.0.11")
-    (source
-      (origin
-        (method url-fetch)
-        (uri (rubygems-uri "equalizer" version))
-        (sha256
-         (base32
-          "1kjmx3fygx8njxfrwcmn7clfhjhb6bvv3scy2lyyi0wqyi3brra4"))))
-    (build-system ruby-build-system)
-    (arguments
-     `(#:tests? #f))    ; Prevent cycle with ruby-devtools.
-    (synopsis
-      "Module to define equality, equivalence and inspection methods")
-    (description
-      "Module to define equality, equivalence and inspection methods")
-    (home-page "https://github.com/dkubb/equalizer")
-    (license license:expat)))
-
-(define-public ruby-buftok
-  (package
-    (name "ruby-buftok")
-    (version "0.2.0")
-    (source
-      (origin
-        (method url-fetch)
-        (uri (rubygems-uri "buftok" version))
-        (sha256
-         (base32
-          "1rzsy1vy50v55x9z0nivf23y0r9jkmq6i130xa75pq9i8qrn1mxs"))))
-    (build-system ruby-build-system)
-    (synopsis
-      "BufferedTokenizer extracts token delimited entities from a sequence of arbitrary inputs")
-    (description
-      "BufferedTokenizer extracts token delimited entities from a sequence of arbitrary inputs")
-    (home-page "https://github.com/sferik/buftok")
-    (license license:expat)))
-
-(define-public ruby-twitter
-  (package
-    (name "ruby-twitter")
-    (version "7.0.0")
-    (source
-      (origin
-        (method git-fetch)
-        (uri (git-reference
-               (url "https://github.com/sferik/twitter")
-               (commit (string-append "v" version))))
-        (file-name (git-file-name name version))
-        (sha256
-         (base32
-          "057d3wg3850r7xyhb5xv8xgxv7qra31ic0m317mwi2n5w1p4n480"))))
-    (build-system ruby-build-system)
-    (propagated-inputs
-     `(("ruby-addressable" ,ruby-addressable)
-       ("ruby-buftok" ,ruby-buftok)
-       ("ruby-equalizer" ,ruby-equalizer)
-       ("ruby-http" ,ruby-http)
-       ("ruby-http-form-data" ,ruby-http-form-data)
-       ("ruby-http-parser.rb" ,ruby-http-parser.rb)
-       ("ruby-memoizable" ,ruby-memoizable)
-       ("ruby-multipart-post" ,ruby-multipart-post)
-       ("ruby-naught" ,ruby-naught)
-       ("ruby-simple-oauth" ,ruby-simple-oauth)))
-    (native-inputs
-     `(("ruby-coveralls" ,ruby-coveralls)
-       ("ruby-rspec" ,ruby-rspec)
-       ("ruby-rubocop" ,ruby-rubocop)
-       ("ruby-simplecov" ,ruby-simplecov)
-       ("ruby-timecop" ,ruby-timecop)
-       ("ruby-webmock" ,ruby-webmock)
-       ("ruby-yard" ,ruby-yard)
-       ("ruby-yardstick" ,ruby-yardstick)))
-    (synopsis "Ruby interface to the Twitter API")
-    (description "This package provides a Ruby interface to the Twitter API.")
-    (home-page "https://sferik.github.io/twitter/")
-    (license license:expat)))
-
-(define-public ruby-yardstick
-  (package
-    (name "ruby-yardstick")
-    (version "0.9.9")
-    (source
-      (origin
-        (method url-fetch)
-        (uri (rubygems-uri "yardstick" version))
-        (sha256
-         (base32
-          "0vn0br8x0n7b9i2raz79g480cn711zichs8rvijb3h1pk9m1d6n3"))))
-    (build-system ruby-build-system)
-    (arguments
-     `(#:tests? #f))    ; Prevent cycle with ruby-devtools.
-    (propagated-inputs
-     `(("ruby-yard" ,ruby-yard)))
-    (synopsis "Measure YARD documentation coverage")
-    (description
-      "Measure YARD documentation coverage")
-    (home-page "https://github.com/dkubb/yardstick")
-    (license license:expat)))
-
-(define-public ruby-psych
-  (package
-    (name "ruby-psych")
-    (version "3.3.0")
-    (source
-      (origin
-        (method url-fetch)
-        (uri (rubygems-uri "psych" version))
-        (sha256
-         (base32
-          "0r8rd9q4g6wda6k2bvsgpwnn9wbaqglb843bm4f1q6xfjkhs5h0l"))))
-    (build-system ruby-build-system)
-    (native-inputs
-     `(
-       ("ruby-rake-compiler" ,ruby-rake-compiler)
-       ))
-    (synopsis
-      "Psych is a YAML parser and emitter. Psych leverages libyaml[https://pyyaml.org/wiki/LibYAML]
-for its YAML parsing and emitting capabilities. In addition to wrapping libyaml,
-Psych also knows how to serialize and de-serialize most Ruby objects to and from the YAML format.
-")
-    (description
-      "Psych is a YAML parser and emitter.  Psych leverages libyaml[https://pyyaml.org/wiki/LibYAML]
-for its YAML parsing and emitting capabilities.  In addition to wrapping libyaml,
-Psych also knows how to serialize and de-serialize most Ruby objects to and from the YAML format.
-")
-    (home-page "https://github.com/ruby/psych")
-    (license license:expat)))
-
-(define-public ruby-kwalify
-  (package
-    (name "ruby-kwalify")
-    (version "0.7.2")
-    (source
-      (origin
-        (method url-fetch)
-        (uri (rubygems-uri "kwalify" version))
-        (sha256
-         (base32
-          "1ngxg3ysq5vip9dn3d32ajc7ly61kdin86hfycm1hkrcvkkn1vjf"))))
-    (build-system ruby-build-system)
-    (arguments
-     `(#:tests? #f))    ; old package is old
-    (synopsis
-      "   Kwalify is a parser, schema validator, and data binding tool for YAML and JSON.
-")
-    (description
-      "   Kwalify is a parser, schema validator, and data binding tool for YAML and JSON.
-")
-    (home-page "http://www.kuwata-lab.com/kwalify/")
-    (license (license:non-copyleft
-               "will fill in later"))))
-
-(define-public ruby-reek
-  (package
-    (name "ruby-reek")
-    (version "6.0.3")
-    (source
-      (origin
-        (method url-fetch)
-        (uri (rubygems-uri "reek" version))
-        (sha256
-         (base32
-          "1zlfvj1dh064y119sfz9w3rkj3d9qkwm1k6dkcjymr6cwj6cqqp2"))))
-    (build-system ruby-build-system)
-    (arguments
-     `(#:tests? #f))    ; needs aruba ~> 1.0
-    (propagated-inputs
-     `(("ruby-kwalify" ,ruby-kwalify)
-       ("ruby-parser" ,ruby-parser)
-       ("ruby-psych" ,ruby-psych)
-       ("ruby-rainbow" ,ruby-rainbow)))
-    (native-inputs
-     `(
-       ("ruby-aruba" ,ruby-aruba)
-       ("ruby-cucumber" ,ruby-cucumber)
-       ("ruby-rspec" ,ruby-rspec)
-       ))
-    (synopsis
-      "Reek is a tool that examines Ruby classes, modules and methods and reports any code smells it finds.")
-    (description
-      "Reek is a tool that examines Ruby classes, modules and methods and reports any code smells it finds.")
-    (home-page "https://github.com/troessner/reek")
-    (license license:expat)))
-
-(define-public ruby-procto
-  (package
-    (name "ruby-procto")
-    (version "0.0.3")
-    (source
-      (origin
-        (method url-fetch)
-        (uri (rubygems-uri "procto" version))
-        (sha256
-         (base32
-          "13imvg1x50rz3r0yyfbhxwv72lbf7q28qx9l9nfbb91h2n9ch58c"))))
-    (build-system ruby-build-system)
-    (arguments
-     `(#:tests? #f))    ; Break dependency cycle with ruby-devtools.
-    (synopsis
-      "Turns your object into a method object")
-    (description
-      "Turns your object into a method object")
-    (home-page "https://github.com/snusnu/procto")
-    (license license:expat)))
-
-(define-public ruby-flog
-  (package
-    (name "ruby-flog")
-    (version "4.6.4")
-    (source
-      (origin
-        (method url-fetch)
-        (uri (rubygems-uri "flog" version))
-        (sha256
-         (base32
-          "0qy7s5q450wbc78av8h0w8inrdz46vp4rqnm5ikpsnh7dilh7amm"))))
-    (build-system ruby-build-system)
-    (propagated-inputs
-     `(("ruby-path-expander" ,ruby-path-expander)
-       ("ruby-ruby-parser" ,ruby-ruby-parser)
-       ("ruby-sexp-processor" ,ruby-sexp-processor)))
-    (native-inputs
-     `(
-       ("ruby-hoe" ,ruby-hoe)
-       ))
-    (synopsis
-      "Flog reports the most tortured code in an easy to read pain
-report. The higher the score, the more pain the code is in.")
-    (description
-      "Flog reports the most tortured code in an easy to read pain
-report.  The higher the score, the more pain the code is in.")
-    (home-page "http://ruby.sadi.st/")
-    (license license:expat)))
-
-(define-public ruby-path-expander
-  (package
-    (name "ruby-path-expander")
-    (version "1.1.0")
-    (source
-      (origin
-        (method url-fetch)
-        (uri (rubygems-uri "path_expander" version))
-        (sha256
-         (base32
-          "1l40n8i959c8bk5m9cfs4m75h2cq01wjwhahnkw7jxgicpva30gv"))))
-    (build-system ruby-build-system)
-    (native-inputs
-     `(
-       ("ruby-hoe" ,ruby-hoe)
-       ))
-    (synopsis
-      "PathExpander helps pre-process command-line arguments expanding
-directories into their constituent files. It further helps by
-providing additional mechanisms to make specifying subsets easier
-with path subtraction and allowing for command-line arguments to be
-saved in a file.
-
-NOTE: this is NOT an options processor. It is a path processor
-(basically everything else besides options). It does provide a
-mechanism for pre-filtering cmdline options, but not with the intent
-of actually processing them in PathExpander. Use OptionParser to
-deal with options either before or after passing ARGV through
-PathExpander.")
-    (description
-      "PathExpander helps pre-process command-line arguments expanding
-directories into their constituent files.  It further helps by
-providing additional mechanisms to make specifying subsets easier
-with path subtraction and allowing for command-line arguments to be
-saved in a file.
-
-NOTE: this is NOT an options processor.  It is a path processor
-(basically everything else besides options).  It does provide a
-mechanism for pre-filtering cmdline options, but not with the intent
-of actually processing them in PathExpander.  Use OptionParser to
-deal with options either before or after passing ARGV through
-PathExpander.")
-    (home-page "https://github.com/seattlerb/path_expander")
-    (license license:expat)))
-
-(define-public ruby-flay
-  (package
-    (name "ruby-flay")
-    (version "2.12.1")
-    (source
-      (origin
-        (method url-fetch)
-        (uri (rubygems-uri "flay" version))
-        (sha256
-         (base32
-          "1my4ga8a8wsqb4nqbf31gvml64ngr66r0zim4mx2kvi76zygczv7"))))
-    (build-system ruby-build-system)
-    (arguments
-     `(#:tests? #f))    ; TODO: fix! only 1 failing test!
-    (propagated-inputs
-     `(("ruby-erubis" ,ruby-erubis)
-       ("ruby-path-expander" ,ruby-path-expander)
-       ("ruby-ruby-parser" ,ruby-ruby-parser)
-       ("ruby-sexp-processor" ,ruby-sexp-processor)))
-    (native-inputs
-     `(
-       ("ruby-hoe" ,ruby-hoe)
-       ))
-    (synopsis
-      "Flay analyzes code for structural similarities. Differences in literal
-values, variable, class, method names, whitespace, programming style,
-braces vs do/end, etc are all ignored. Making this totally rad.")
-    (description
-      "Flay analyzes code for structural similarities.  Differences in literal
-values, variable, class, method names, whitespace, programming style,
-braces vs do/end, etc are all ignored.  Making this totally rad.")
-    (home-page "http://ruby.sadi.st/")
-    (license license:expat)))
-
-(define-public ruby-concord
-  (package
-    (name "ruby-concord")
-    (version "0.1.6")
-    (source
-      (origin
-        (method url-fetch)
-        (uri (rubygems-uri "concord" version))
-        (sha256
-         (base32
-          "1vznyzcd3z7wiwjfgr941nq405kd7zm5vjb3sv2mzbbrcla9qkhq"))))
-    (build-system ruby-build-system)
-    (arguments
-     `(#:tests? #f))    ; Break dependency cycle with ruby-devtools.
-    (propagated-inputs
-     `(("ruby-adamantium" ,ruby-adamantium)
-       ("ruby-equalizer" ,ruby-equalizer)))
-    (synopsis "Helper for object composition")
-    (description "Helper for object composition")
-    (home-page "https://github.com/mbj/concord")
-    (license license:expat)))
-
-(define-public ruby-anima
-  (package
-    (name "ruby-anima")
-    (version "0.3.2")
-    (source
-      (origin
-        (method url-fetch)
-        (uri (rubygems-uri "anima" version))
-        (sha256
-         (base32
-          "007wrc8px9ql4nqp34w0ffb9nj2nrbrcxvy036ng28bpbig7fzs6"))))
-    (build-system ruby-build-system)
-    (arguments
-     `(#:tests? #f))    ; Break dependency cycle with ruby-devtools.
-    (propagated-inputs
-     `(("ruby-abstract-type" ,ruby-abstract-type)
-       ("ruby-adamantium" ,ruby-adamantium)
-       ("ruby-equalizer" ,ruby-equalizer)))
-    (synopsis
-      "Initialize object attributes via attributes hash")
-    (description
-      "Initialize object attributes via attributes hash")
-    (home-page "http://github.com/mbj/anima")
-    (license license:expat)))
-
-(define-public ruby-ice-nine
-  (package
-    (name "ruby-ice-nine")
-    (version "0.11.2")
-    (source
-      (origin
-        (method url-fetch)
-        (uri (rubygems-uri "ice_nine" version))
-        (sha256
-         (base32
-          "1nv35qg1rps9fsis28hz2cq2fx1i96795f91q4nmkm934xynll2x"))))
-    (build-system ruby-build-system)
-    (arguments
-     `(#:tests? #f))    ; Break dependency cycle with ruby-devtools.
-    (synopsis "Deep Freeze Ruby Objects")
-    (description "Deep Freeze Ruby Objects")
-    (home-page "https://github.com/dkubb/ice_nine")
-    (license license:expat)))
-
-(define-public ruby-adamantium
-  (package
-    (name "ruby-adamantium")
-    (version "0.2.0")
-    (source
-      (origin
-        (method url-fetch)
-        (uri (rubygems-uri "adamantium" version))
-        (sha256
-         (base32
-          "0165r2ikgfwv2rm8dzyijkp74fvg0ni72hpdx8ay2v7cj08dqyak"))))
-    (build-system ruby-build-system)
-    (arguments
-     `(#:tests? #f))    ; Break dependency cycle with ruby-devtools.
-    (propagated-inputs
-     `(("ruby-ice-nine" ,ruby-ice-nine)
-       ("ruby-memoizable" ,ruby-memoizable)))
-    (synopsis "Immutable extensions to objects")
-    (description "Immutable extensions to objects")
-    (home-page "https://github.com/dkubb/adamantium")
-    (license license:expat)))
-
-(define-public ruby-abstract-type
-  (package
-    (name "ruby-abstract-type")
-    (version "0.0.7")
-    (source
-      (origin
-        (method url-fetch)
-        (uri (rubygems-uri "abstract_type" version))
-        (sha256
-         (base32
-          "09330cmhrc2wmfhdj9zzg82sv6cdhm3qgdkva5ni5xfjril2pf14"))))
-    (build-system ruby-build-system)
-    (arguments
-     `(#:tests? #f))    ; Break dependency cycle with ruby-devtools.
-    (synopsis
-      "Module to declare abstract classes and methods")
-    (description
-      "Module to declare abstract classes and methods")
-    (home-page "https://github.com/dkubb/abstract_type")
-    (license license:expat)))
-
-;; TODO: This package somehow hardcodes the versions of its dependencies
-(define-public ruby-devtools
-  (package
-    (name "ruby-devtools")
-    (version "0.1.26")
-    (source
-      (origin
-        (method url-fetch)
-        (uri (rubygems-uri "devtools" version))
-        (sha256
-         (base32
-          "08c8j2zcq9hhxpz9wsyy9v8mfs4d4smyagi0qr398w1qryb6w4m0"))))
-    (build-system ruby-build-system)
-    (arguments
-     `(#:tests? #f  ; Devtools requires devtools for the tests.
-       #:phases
-       (modify-phases %standard-phases
-         (add-after 'unpack 'patch-source
-           (lambda _
-             ;; Don't require self
-             (substitute* "Rakefile"
-               (("require 'devtools'") ""))
-             ;; Don't hardcode version dependencies
-             (substitute* "devtools.gemspec"
-               (("',\\s+'.*") "'\n"))
-             #t))
-         (add-after 'build 'unpin-versions
-           (lambda _
-             ;; Don't hardcode version dependencies
-             (substitute* "devtools.gemspec"
-               ((", \\[\\\"~>.*") ")\n"))
-             #t))
-         )
-       ))
-    (propagated-inputs
-     `(("ruby-abstract-type" ,ruby-abstract-type)
-       ("ruby-adamantium" ,ruby-adamantium)
-       ("ruby-anima" ,ruby-anima)
-       ("ruby-concord" ,ruby-concord)
-       ("ruby-flay" ,ruby-flay)
-       ("ruby-flog" ,ruby-flog)
-       ("ruby-procto" ,ruby-procto)
-       ("ruby-rake" ,ruby-rake)
-       ("ruby-reek" ,ruby-reek)
-       ("ruby-rspec" ,ruby-rspec)
-       ("ruby-rspec-core" ,ruby-rspec-core)
-       ("ruby-rspec-its" ,ruby-rspec-its)
-       ("ruby-rubocop" ,ruby-rubocop)
-       ("ruby-simplecov" ,ruby-simplecov)
-       ("ruby-yard" ,ruby-yard)
-       ("ruby-yardstick" ,ruby-yardstick)))
-    (synopsis "A metagem wrapping development tools")
-    (description
-      "This package provides a metagem wrapping development tools")
-    (home-page "https://github.com/rom-rb/devtools")
-    (license license:expat)))
-
-(define-public ruby-certificate-authority
-  (package
-    (name "ruby-certificate-authority")
-    (version "1.0.0")
-    (source
-      (origin
-        (method url-fetch)
-        (uri (rubygems-uri "certificate_authority" version))
-        (sha256
-         (base32
-          "1d4j37i40l76pdkxx9964f58d83fjv82x3c0sykrpiixcmjcax44"))))
-    (build-system ruby-build-system)
-    (arguments
-     `(#:test-target "spec"
-       ;; An error occurred while loading spec_helper.
-       ;; Failure/Error: return gem_original_require(path)
-       #:tests? #f))
-    (native-inputs
-     `(
-       ("ruby-rspec" ,ruby-rspec)
-       ("ruby-rubocop" ,ruby-rubocop)
-       ))
-    (synopsis
-      "Ruby gem for managing the core functions outlined in RFC-3280 for PKI")
-    (description
-      "Ruby gem for managing the core functions outlined in RFC-3280 for PKI")
-    (home-page "https://github.com/cchandler/certificate_authority")
-    (license license:expat)))
-
-(define-public ruby-msgpack
-  (package
-    (name "ruby-msgpack")
-    (version "1.4.2")
-    (source
-      (origin
-        (method url-fetch)
-        (uri (rubygems-uri "msgpack" version))
-        (sha256
-         (base32
-          "06iajjyhx0rvpn4yr3h1hc4w4w3k59bdmfhxnjzzh76wsrdxxrc6"))))
-    (build-system ruby-build-system)
-    (arguments
-     `(#:test-target "default"
-       #:phases
-       (modify-phases %standard-phases
-         (add-before 'install 'install-fake-gem
-           (lambda* (#:key outputs #:allow-other-keys)
-             (let ((target (string-append (assoc-ref outputs "out") "/lib/ruby/vendor_ruby/cache/./pkg/msgpack-" ,version ".gem")))
-               (mkdir-p (dirname target))
-               (symlink
-                        (string-append "../../../msgpack-" ,version ".gem")
-                 target
-                        )
-               #t)))
-         )
-       ))
-    (native-inputs
-     `(
-       ("ruby-rake" ,ruby-rake)
-       ("ruby-rake-compiler" ,ruby-rake-compiler)
-       ("ruby-rspec" ,ruby-rspec)
-       ("ruby-yard" ,ruby-yard)
-       ))
-    (synopsis
-      "MessagePack is a binary-based efficient object serialization library. It enables to exchange structured objects between many languages like JSON. But unlike JSON, it is very fast and small.")
-    (description
-      "MessagePack is a binary-based efficient object serialization library.  It enables to exchange structured objects between many languages like JSON.  But unlike JSON, it is very fast and small.")
-    (home-page "http://msgpack.org/")
-    (license license:asl2.0)))
-
-(define-public ruby-bootsnap
-  (package
-    (name "ruby-bootsnap")
-    (version "1.7.2")
-    (source
-      (origin
-        (method git-fetch)
-        (uri (git-reference
-               (url "https://github.com/Shopify/bootsnap")
-               (commit (string-append "v" version))))
-        (file-name (git-file-name name version))
-        (sha256
-         (base32
-          "14l0r074kpy9pwzs6zbgq3zpx32mpk4905k23v0znqgkmrb6s5bm"))))
-    (build-system ruby-build-system)
-    (arguments
-     `(#:tests? #f  ; can't find rake-compiler
-       #:phases
-       (modify-phases %standard-phases
-         (replace 'replace-git-ls-files
-           (lambda _
-             (substitute* "bootsnap.gemspec"
-               (("git ls-files -z ext lib")
-                "find ext lib -type f -print0 | sort -z"))
-             #t)))))
-    (propagated-inputs
-     `(("ruby-msgpack" ,ruby-msgpack)))
-    (native-inputs
-     `(("ruby-minitest" ,ruby-minitest)
-       ("ruby-mocha" ,ruby-mocha)
-       ("ruby-rake" ,ruby-rake)
-       ("ruby-rake-compiler" ,ruby-rake-compiler)))
-    (synopsis "Boot large ruby/rails apps faster")
-    (description "Boot large ruby/rails apps faster")
-    (home-page "https://github.com/Shopify/bootsnap")
-    (license license:expat)))
-
-(define-public ruby-actionview-precompiler
-  (package
-    (name "ruby-actionview-precompiler")
-    (version "0.2.3")
-    (source
-      (origin
-        (method git-fetch)
-        (uri (git-reference
-               (url "https://github.com/jhawthorn/actionview_precompiler")
-               (commit (string-append "v" version))))
-        (file-name (git-file-name name version))
-        (sha256
-         (base32
-          "0hyvzhyx3bmvnmmj247vyfznps835d0zmi3xb6y6s4v570d8mrf0"))))
-    (build-system ruby-build-system)
-    (arguments
-     `(#:tests? #f  ; tests expect ruby-actionview >=6.0.a
-       #:phases
-       (modify-phases %standard-phases
-         (add-after 'unpack 'patch-source
-           (lambda _
-             (substitute* "actionview_precompiler.gemspec"
-               (("actionview\\\".*") "actionview\"\n")
-               )
-             #t))
-         (add-before 'build 'delete-gemfile-lock
-           (lambda _
-             (delete-file "Gemfile.lock")
-             #t)))))
-    (propagated-inputs
-     `(("ruby-actionview" ,ruby-actionview)))
-    (native-inputs
-     `(("ruby-minitest" ,ruby-minitest)
-       ("ruby-pry" ,ruby-pry)))
-    (synopsis
-      "Parses templates for render calls and uses them to precompile")
-    (description
-      "Parses templates for render calls and uses them to precompile")
-    (home-page "https://github.com/jhawthorn/actionview_precompiler")
-    (license license:expat)))
-
-(define-public ruby-rocco
-  (package
-    (name "ruby-rocco")
-    (version "0.8.2")
-    (source
-      (origin
-        (method url-fetch)
-        (uri (rubygems-uri "rocco" version))
-        (sha256
-         (base32
-          "0z3wnk8848wphrzyb61adl1jbfjlsqnzkayp2m0qmisg566352l1"))))
-    (build-system ruby-build-system)
-    (arguments
-     `(#:tests? #f))    ; needs pygments
-    (propagated-inputs
-     `(("ruby-mustache" ,ruby-mustache)
-       ;; pygments
-       ("ruby-redcarpet" ,ruby-redcarpet)))
-    (synopsis "Docco in Ruby")
-    (description "Docco in Ruby")
-    (home-page "https://rtomayko.github.com/rocco/")
-    (license license:expat)))
-
-(define-public ruby-bundler
-  (package
-    (name "ruby-bundler")
-    (version "2.2.11")
-    (source
-      (origin
-        (method url-fetch)
-        (uri (rubygems-uri "bundler" version))
-        (sha256
-         (base32
-          "1izx6wsjdm6mnbxazgz1z5qbhwrrisbq0np2nmx4ij6lrqjy18jf"))))
-    (build-system ruby-build-system)
-    (arguments
-     `(#:tests? #f))    ; no rakefile
-    (synopsis
-      "Bundler manages an application's dependencies through its entire life, across many machines, systematically and repeatably")
-    (description
-      "Bundler manages an application's dependencies through its entire life, across many machines, systematically and repeatably")
-    (home-page "https://bundler.io/")
-    (license license:expat)))
-
-(define-public ruby-appraisal
-  (package
-    (name "ruby-appraisal")
-    (version "2.3.0")
-    (source
-      (origin
-        (method url-fetch)
-        (uri (rubygems-uri "appraisal" version))
-        (sha256
-         (base32
-          "0j092f2zfgb6afimidgspzqg4iw6n4mrs2zp8hhs2m2giav4mkrn"))))
-    (build-system ruby-build-system)
-    (arguments
-     `(#:tests? #f))    ; Tests require activesupport, cycle with ruby-m
-    (propagated-inputs
-     `(("bundler" ,bundler)
-       ("ruby-rake" ,ruby-rake)
-       ("ruby-thor" ,ruby-thor)))
-    (synopsis
-      "Appraisal integrates with bundler and rake to test your library against different versions of dependencies in repeatable scenarios called \"appraisals.\"")
-    (description
-      "Appraisal integrates with bundler and rake to test your library against different versions of dependencies in repeatable scenarios called \"appraisals.\"")
-    (home-page
-      "http://github.com/thoughtbot/appraisal")
-    (license license:expat)))
-
-(define-public ruby-http-accept-language
-  (package
-    (name "ruby-http-accept-language")
-    (version "2.1.1")
-    (source
-      (origin
-        (method url-fetch)
-        (uri (rubygems-uri "http_accept_language" version))
-        (sha256
-         (base32
-          "0d0nlfz9vm4jr1l6q0chx4rp2hrnrfbx3gadc1dz930lbbaz0hq0"))))
-    (build-system ruby-build-system)
-    (arguments
-     `(#:test-target "spec"
-       #:phases
-       (modify-phases %standard-phases
-         (add-before 'check 'pre-check
-           (lambda _
-             (setenv "HOME" (getcwd))
-             (substitute* "cucumber.yml"
-               (("~@") "'not @'"))
-             #t)))))
-    (native-inputs
-     `(
-       ("ruby-aruba" ,ruby-aruba)
-       ("ruby-cucumber" ,ruby-cucumber)
-       ("ruby-guard-rspec" ,ruby-guard-rspec)
-       ("ruby-rack" ,ruby-rack)
-       ("ruby-rack-test" ,ruby-rack-test)
-       ("ruby-rails" ,ruby-rails)
-       ("ruby-rspec" ,ruby-rspec)
-       ))
-    (synopsis
-      "Find out which locale the user preferes by reading the languages they specified in their browser")
-    (description
-      "Find out which locale the user preferes by reading the languages they specified in their browser")
-    (home-page "https://github.com/iain/http_accept_language")
-    (license license:expat)))
-
-(define-public ruby-guard-compat
-  (package
-    (name "ruby-guard-compat")
-    (version "1.2.1")
-    (source
-      (origin
-        (method url-fetch)
-        (uri (rubygems-uri "guard-compat" version))
-        (sha256
-         (base32
-          "1zj6sr1k8w59mmi27rsii0v8xyy2rnsi09nqvwpgj1q10yq1mlis"))))
-    (build-system ruby-build-system)
-    (arguments
-     `(#:test-target "spec" ; not default, tests not upgraded for newer rubocop versions.
-       #:phases
-       (modify-phases %standard-phases
-         (add-before 'check 'pre-check
-           (lambda _
-             (setenv "HOME" (getcwd))
-             #t)))))
-    (native-inputs
-     `(
-       ("ruby-rspec" ,ruby-rspec)
-       ("ruby-rubocop" ,ruby-rubocop)
-       ))
-    (synopsis
-      "Helps creating valid Guard plugins and testing them")
-    (description
-      "Helps creating valid Guard plugins and testing them")
-    (home-page "https://github.com/guard/guard-compat")
-    (license license:expat)))
-
-(define-public ruby-guard-rspec
-  (package
-    (name "ruby-guard-rspec")
-    (version "4.7.3")
-    (source
-      (origin
-        (method url-fetch)
-        (uri (rubygems-uri "guard-rspec" version))
-        (sha256
-         (base32
-          "1jkm5xp90gm4c5s51pmf92i9hc10gslwwic6mvk72g0yplya0yx4"))))
-    (build-system ruby-build-system)
-    (arguments
-     `(#:tests? #f))    ; Tests not included in release.
-    (propagated-inputs
-     `(("ruby-guard" ,ruby-guard)
-       ("ruby-guard-compat" ,ruby-guard-compat)
-       ("ruby-rspec" ,ruby-rspec)))
-    (synopsis
-      "Guard::RSpec automatically run your specs (much like autotest).")
-    (description
-      "Guard::RSpec automatically run your specs (much like autotest).")
-    (home-page "https://github.com/guard/guard-rspec")
-    (license license:expat)))
-
-(define-public ruby-aws-sdk-kms
-  (package
-    (name "ruby-aws-sdk-kms")
-    (version "1.42.0")
-    (source
-      (origin
-        (method url-fetch)
-        (uri (rubygems-uri "aws-sdk-kms" version))
-        (sha256
-         (base32
-          "00wgf83cdy6z77b2y0ld0aqiidfyldi71hx0z8b73gxjdlbwpq1i"))))
-    (build-system ruby-build-system)
-    (arguments `(#:tests? #f))  ; no tests
-    (propagated-inputs
-     `(("ruby-aws-sdk-core" ,ruby-aws-sdk-core)
-       ("ruby-aws-sigv4" ,ruby-aws-sigv4)))
-    (synopsis
-      "Official AWS Ruby gem for AWS Key Management Service (KMS). This gem is part of the AWS SDK for Ruby.")
-    (description
-      "Official AWS Ruby gem for AWS Key Management Service (KMS).  This gem is part of the AWS SDK for Ruby.")
-    (home-page "https://github.com/aws/aws-sdk-ruby")
-    (license license:asl2.0)))
-
-(define-public ruby-jmespath
-  (package
-    (name "ruby-jmespath")
-    (version "1.4.0")
-    (source
-      (origin
-        (method url-fetch)
-        (uri (rubygems-uri "jmespath" version))
-        (sha256
-         (base32
-          "1d4wac0dcd1jf6kc57891glih9w57552zgqswgy74d1xhgnk0ngf"))))
-    (build-system ruby-build-system)
-    (arguments
-     `(#:tests? #f))    ; tests not included
-    (synopsis "Implements JMESPath for Ruby")
-    (description "Implements JMESPath for Ruby")
-    (home-page "https://github.com/trevorrowe/jmespath.rb")
-    (license license:asl2.0)))
-
-(define-public ruby-aws-sigv4
-  (package
-    (name "ruby-aws-sigv4")
-    (version "1.2.2")
-    (source
-      (origin
-        (method url-fetch)
-        (uri (rubygems-uri "aws-sigv4" version))
-        (sha256
-         (base32
-          "1ll9382c1x2hp750cilh01h1cycgyhdr4cmmgx23k94hyyb8chv5"))))
-    (build-system ruby-build-system)
-    (arguments `(#:tests? #f))  ; no tests
-    (propagated-inputs
-     `(("ruby-aws-eventstream" ,ruby-aws-eventstream)))
-    (synopsis
-      "Amazon Web Services Signature Version 4 signing library. Generates sigv4 signature for HTTP requests.")
-    (description
-      "Amazon Web Services Signature Version 4 signing library.  Generates sigv4 signature for HTTP requests.")
-    (home-page "https://github.com/aws/aws-sdk-ruby")
-    (license license:asl2.0)))
-
-(define-public ruby-aws-partitions
-  (package
-    (name "ruby-aws-partitions")
-    (version "1.428.0")
-    (source
-      (origin
-        (method url-fetch)
-        (uri (rubygems-uri "aws-partitions" version))
-        (sha256
-         (base32
-          "13rvpllihvpksf1jqwa2i5vbv2hhb34viaidw4rkxr3dyygkdpj8"))))
-    (build-system ruby-build-system)
-    (arguments `(#:tests? #f))  ; no tests
-    (synopsis
-      "Provides interfaces to enumerate AWS partitions, regions, and services.")
-    (description
-      "This package provides interfaces to enumerate AWS partitions, regions, and services.")
-    (home-page "https://github.com/aws/aws-sdk-ruby")
-    (license license:asl2.0)))
-
-(define-public ruby-aws-eventstream
-  (package
-    (name "ruby-aws-eventstream")
-    (version "1.1.0")
-    (source
-      (origin
-        (method url-fetch)
-        (uri (rubygems-uri "aws-eventstream" version))
-        (sha256
-         (base32
-          "0r0pn66yqrdkrfdin7qdim0yj2x75miyg4wp6mijckhzhrjb7cv5"))))
-    (build-system ruby-build-system)
-    (arguments `(#:tests? #f))  ; no tests
-    (synopsis
-      "Amazon Web Services event stream library. Decodes and encodes binary stream under `vnd.amazon.event-stream` content-type")
-    (description
-      "Amazon Web Services event stream library.  Decodes and encodes binary stream under `vnd.amazon.event-stream` content-type")
-    (home-page "https://github.com/aws/aws-sdk-ruby")
-    (license license:asl2.0)))
-
-(define-public ruby-aws-sdk-core
-  (package
-    (name "ruby-aws-sdk-core")
-    (version "3.112.0")
-    (source
-      (origin
-        (method url-fetch)
-        (uri (rubygems-uri "aws-sdk-core" version))
-        (sha256
-         (base32
-          "15lynby6r91p9hh5h92pg4jr8xgnjr52px5ax0p0wncdw4vz0skp"))))
-    (build-system ruby-build-system)
-    (arguments `(#:tests? #f))  ; no tests
-    (propagated-inputs
-     `(("ruby-aws-eventstream" ,ruby-aws-eventstream)
-       ("ruby-aws-partitions" ,ruby-aws-partitions)
-       ("ruby-aws-sigv4" ,ruby-aws-sigv4)
-       ("ruby-jmespath" ,ruby-jmespath)))
-    (synopsis
-      "Provides API clients for AWS. This gem is part of the official AWS SDK for Ruby.")
-    (description
-      "This package provides API clients for AWS.  This gem is part of the official AWS SDK for Ruby.")
-    (home-page "https://github.com/aws/aws-sdk-ruby")
-    (license license:asl2.0)))
-
-(define-public ruby-aws-sdk-s3
-  (package
-    (name "ruby-aws-sdk-s3")
-    (version "1.88.1")
-    (source
-      (origin
-        (method url-fetch)
-        (uri (rubygems-uri "aws-sdk-s3" version))
-        (sha256
-         (base32
-          "01zlv2icx3m0pq94z9fcsp1r9ivdqhfpnpbrv63fpr6m7yqww24y"))))
-    (build-system ruby-build-system)
-    (arguments `(#:tests? #f))  ; no tests
-    (propagated-inputs
-     `(("ruby-aws-sdk-core" ,ruby-aws-sdk-core)
-       ("ruby-aws-sdk-kms" ,ruby-aws-sdk-kms)
-       ("ruby-aws-sigv4" ,ruby-aws-sigv4)))
-    (synopsis
-      "Official AWS Ruby gem for Amazon Simple Storage Service (Amazon S3). This gem is part of the AWS SDK for Ruby.")
-    (description
-      "Official AWS Ruby gem for Amazon Simple Storage Service (Amazon S3).  This gem is part of the AWS SDK for Ruby.")
-    (home-page "https://github.com/aws/aws-sdk-ruby")
-    (license license:asl2.0)))
-
-(define-public ruby-aws-sdk-sns
-  (package
-    (name "ruby-aws-sdk-sns")
-    (version "1.38.0")
-    (source
-      (origin
-        (method url-fetch)
-        (uri (rubygems-uri "aws-sdk-sns" version))
-        (sha256
-         (base32
-          "0cqri14igfmcxlapbagg0nmy79zzg29awzybv51gl76m3mljbafb"))))
-    (build-system ruby-build-system)
-    (arguments `(#:tests? #f))  ; no tests
-    (propagated-inputs
-     `(("ruby-aws-sdk-core" ,ruby-aws-sdk-core)
-       ("ruby-aws-sigv4" ,ruby-aws-sigv4)))
-    (synopsis
-      "Official AWS Ruby gem for Amazon Simple Notification Service (Amazon SNS). This gem is part of the AWS SDK for Ruby.")
-    (description
-      "Official AWS Ruby gem for Amazon Simple Notification Service (Amazon SNS).  This gem is part of the AWS SDK for Ruby.")
-    (home-page "https://github.com/aws/aws-sdk-ruby")
-    (license license:asl2.0)))
-
-(define-public ruby-excon
-  (package
-    (name "ruby-excon")
-    (version "0.79.0")
-    (source
-      (origin
-        (method git-fetch)
-        (uri (git-reference
-               (url "https://github.com/excon/excon")
-               (commit (string-append "v" version))))
-        (file-name (git-file-name name version))
-        (sha256
-         (base32
-          "0cm3rpkzdmq78ni7irw449qrya8wgb6hfzxjwkyq4pkalc21afqb"))))
-    (build-system ruby-build-system)
-    (arguments
-     `(
-       #:phases
-       (modify-phases %standard-phases
-         (replace 'replace-git-ls-files
-           (lambda _
-             (substitute* "excon.gemspec"
-               (("git ls-files -- data/\\* lib/\\*")
-                "find data lib -type f"))
-             #t))
-         (add-before 'check 'pre-check
-           (lambda _
-             ;; Don't demand the latest ruby-rack
-             (substitute* "Gemfile"
-               (("rack.*") "rack'\n"))
-             ;; No network connection inside the container.
-             (delete-file "tests/basic_tests.rb")
-             #t))
-         (replace 'check
-           (lambda* (#:key tests? #:allow-other-keys)
-             (when tests?
-               (setenv "HOME" (getcwd))
-               (invoke "bundle" "exec" "shindont")
-               (invoke "bundle" "exec" "rake" "spec[progress]"))
-             #t))
-         )))
-    (native-inputs
-     `(
-       ("ruby-activesupport" ,ruby-activesupport)
-       ("ruby-delorean" ,ruby-delorean)
-       ("ruby-eventmachine" ,ruby-eventmachine)
-       ("ruby-open4" ,ruby-open4)
-       ("ruby-puma" ,ruby-puma)
-       ("ruby-rack" ,ruby-rack)
-       ("ruby-rspec" ,ruby-rspec)
-       ("ruby-rubocop" ,ruby-rubocop)
-       ("ruby-shindo" ,ruby-shindo)
-       ("ruby-sinatra" ,ruby-sinatra)
-       ("ruby-sinatra-contrib" ,ruby-sinatra-contrib)
-       ("ruby-unicorn" ,ruby-unicorn)
-       ))
-    (synopsis "EXtended http(s) CONnections")
-    (description "EXtended http(s) CONnections")
-    (home-page "https://github.com/excon/excon")
-    (license license:expat)))
-
-(define-public ruby-chronic
-  (package
-    (name "ruby-chronic")
-    (version "0.10.2")
-    (source
-      (origin
-        (method url-fetch)
-        (uri (rubygems-uri "chronic" version))
-        (sha256
-         (base32
-          "1hrdkn4g8x7dlzxwb1rfgr8kw3bp4ywg5l4y4i9c2g5cwv62yvvn"))))
-    (build-system ruby-build-system)
-    (synopsis
-      "Chronic is a natural language date/time parser written in pure Ruby.")
-    (description
-      "Chronic is a natural language date/time parser written in pure Ruby.")
-    (home-page "http://github.com/mojombo/chronic")
-    (license license:expat)))
-
-(define-public ruby-delorean
-  (package
-    (name "ruby-delorean")
-    (version "2.1.0")
-    (source
-      (origin
-        (method url-fetch)
-        (uri (rubygems-uri "delorean" version))
-        (sha256
-         (base32
-          "0k39ix0a9rf4fd05ncml4h9r29dzwgzdbhp01gp67baid6adxwf4"))))
-    (build-system ruby-build-system)
-    (arguments
-     `(#:tests? #f))    ; tests not included
-    (propagated-inputs
-     `(("ruby-chronic" ,ruby-chronic)))
-    (synopsis
-      "Delorean lets you travel in time with Ruby by mocking Time.now")
-    (description
-      "Delorean lets you travel in time with Ruby by mocking Time.now")
-    (home-page "http://github.com/bebanjo/delorean")
-    (license license:expat)))
-
-(define-public ruby-sinatra-contrib
-  (package
-    (name "ruby-sinatra-contrib")
-    (version "2.0.8.1")
-    (source
-      (origin
-        (method url-fetch)
-        (uri (rubygems-uri "sinatra-contrib" version))
-        (sha256
-         (base32
-          "1mmrfm4pqh98f3irjpkvfpazhcx6q42bnx6bbms9dqvmck3mid28"))))
-    (build-system ruby-build-system)
-    (propagated-inputs
-     `(("ruby-backports" ,ruby-backports)
-       ("ruby-multi-json" ,ruby-multi-json)
-       ("ruby-mustermann" ,ruby-mustermann)
-       ("ruby-rack-protection" ,ruby-rack-protection)
-       ("ruby-sinatra" ,ruby-sinatra)
-       ("ruby-tilt" ,ruby-tilt)))
-    (native-inputs
-     `(
-       ("ruby-rspec" ,ruby-rspec)
-       ))
-    (synopsis "Collection of useful Sinatra extensions")
-    (description
-      "Collection of useful Sinatra extensions")
-    (home-page "http://sinatrarb.com/contrib/")
-    (license license:expat)))
-
-(define-public ruby-raindrops
-  (package
-    (name "ruby-raindrops")
-    (version "0.19.1")
-    (source
-      (origin
-        (method url-fetch)
-        (uri (rubygems-uri "raindrops" version))
-        (sha256
-         (base32
-          "0zjja00mzgx2lddb7qrn14k7qrnwhf4bpmnlqj78m1pfxh7svync"))))
-    (build-system ruby-build-system)
-    (arguments
-     `(#:tests? #f  ; not clear how to run tests
-       #:phases
-       (modify-phases %standard-phases
-         (replace 'check
-           (lambda* (#:key tests? #:allow-other-keys)
-             (when tests?
-               (invoke "ruby" "setup.rb" "tests"))
-             #t)))))
-    (synopsis "real-time stats for preforking Rack servers")
-    (description
-      "raindrops is a real-time stats toolkit to show statistics for Rack HTTP
-servers.  It is designed for preforking servers such as unicorn, but
-should support any Rack HTTP server on platforms supporting POSIX shared
-memory.  It may also be used as a generic scoreboard for sharing atomic
-counters across multiple processes.")
-    (home-page "https://yhbt.net/raindrops/")
-    (license license:lgpl2.1+)))
-
-(define-public ruby-kgio
-  (package
-    (name "ruby-kgio")
-    (version "2.11.3")
-    (source
-      (origin
-        (method url-fetch)
-        (uri (rubygems-uri "kgio" version))
-        (sha256
-         (base32
-          "0ai6bzlvxbzpdl466p1qi4dlhx8ri2wcrp6x1l19y3yfs3a29rng"))))
-    (build-system ruby-build-system)
-    (arguments
-     `(#:tests? #f  ; not clear how to run tests
-       #:phases
-       (modify-phases %standard-phases
-         (replace 'check
-           (lambda* (#:key tests? #:allow-other-keys)
-             (when tests?
-               (invoke "ruby" "setup.rb" "tests"))
-             #t)))))
-    (synopsis "kinder, gentler I/O for Ruby")
-    (description
-      "This is a legacy project, do not use it for new projects.  Ruby
-2.3 and later should make this obsolete.  kgio provides
-non-blocking I/O methods for Ruby without raising exceptions on
-EAGAIN and EINPROGRESS.
-")
-    (home-page "https://yhbt.net/kgio/")
-    (license (license:non-copyleft
-               "will fill in later"))))
-
-(define-public ruby-unicorn
-  (package
-    (name "ruby-unicorn")
-    (version "5.8.0")
-    (source
-      (origin
-        (method url-fetch)
-        (uri (rubygems-uri "unicorn" version))
-        (sha256
-         (base32
-          "0ig48f4xhrssq5d11vkc41k7nj6pbv2jh1f8k5gfskfd469mcc2y"))))
-    (build-system ruby-build-system)
-    (propagated-inputs
-     `(("ruby-kgio" ,ruby-kgio)
-       ("ruby-raindrops" ,ruby-raindrops)))
-    (synopsis
-      "unicorn is an HTTP server for Rack applications designed to only serve
-fast clients on low-latency, high-bandwidth connections and take
-advantage of features in Unix/Unix-like kernels.  Slow clients should
-only be served by placing a reverse proxy capable of fully buffering
-both the the request and response in between unicorn and slow clients.")
-    (description
-      "unicorn is an HTTP server for Rack applications designed to only serve
-fast clients on low-latency, high-bandwidth connections and take
-advantage of features in Unix/Unix-like kernels.  Slow clients should
-only be served by placing a reverse proxy capable of fully buffering
-both the the request and response in between unicorn and slow clients.")
-    (home-page "https://yhbt.net/unicorn/")
-    (license (list (license:non-copyleft "will fill in later")
-                   (license:non-copyleft "will fill in later")))))
-
-(define-public ruby-pry-rails
-  (package
-    (name "ruby-pry-rails")
-    (version "0.3.9")
-    (source
-      (origin
-        (method url-fetch)
-        (uri (rubygems-uri "pry-rails" version))
-        (sha256
-         (base32
-          "1cf4ii53w2hdh7fn8vhqpzkymmchjbwij4l3m7s6fsxvb9bn51j6"))))
-    (build-system ruby-build-system)
-    (arguments
-     `(#:tests? #f      ; not clear what the test suite wants
-       #:test-target "appraisal"    ; as per the Rakefile
-       #:phases
-       (modify-phases %standard-phases
-         (add-before 'check 'pre-check
-           (lambda _
-             (setenv "HOME" (getcwd))
-             #t)))))
-    (propagated-inputs
-     `(("ruby-pry" ,ruby-pry)))
-    (native-inputs
-     `(
-       ("ruby-appraisal" ,ruby-appraisal)
-       ("ruby-minitest" ,ruby-minitest)
-       ))
-    (synopsis "Use Pry as your rails console")
-    (description "Use Pry as your rails console")
-    (home-page "https://github.com/rweng/pry-rails")
-    (license license:expat)))
-
-(define-public ruby-r2
-  (package
-    (name "ruby-r2")
-    (version "0.2.7")
-    (source
-      (origin
-        (method url-fetch)
-        (uri (rubygems-uri "r2" version))
-        (sha256
-         (base32
-          "0wk0p55zp3l96xy5ps28b33dn5z0jwsjl74bwfdn6z81pzjs5sfk"))))
-    (build-system ruby-build-system)
-    (arguments
-     `(#:test-target "default"))
-    (native-inputs
-     `(
-       ("ruby-rspec" ,ruby-rspec)
-       ))
-    (synopsis
-      "CSS flipper for right-to-left processing. A Ruby port of https://github.com/ded/r2")
-    (description
-      "CSS flipper for right-to-left processing.  A Ruby port of https://github.com/ded/r2")
-    (home-page "https://github.com/mzsanford/R2rb")
-    (license (license:non-copyleft
-               "will fill in later"))))
-
-(define-public ruby-openssl
-  (package
-    (name "ruby-openssl")
-    (version "2.2.0")
-    (source
-      (origin
-        (method git-fetch)
-        (uri (git-reference
-               (url "https://github.com/ruby/openssl")
-               (commit (string-append "v" version))))
-        (file-name (git-file-name name version))
-        (sha256
-         (base32
-          "01xigwxpwha9hj8r2synkl6c7xlhs02f27qv98a1b7cbhgqqs6n3"))))
-    (build-system ruby-build-system)
-    (inputs
-     `(
-       ("openssl" ,openssl)
-       ))
-    (native-inputs
-     `(
-       ("ruby-rake-compiler" ,ruby-rake-compiler)
-       ))
-    (synopsis "It wraps the OpenSSL library.")
-    (description "It wraps the OpenSSL library.")
-    (home-page "https://github.com/ruby/openssl")
-    (license license:ruby)))
-
-(define-public ruby-openssl-signature-algorithm
-  (package
-    (name "ruby-openssl-signature-algorithm")
-    (version "1.1.1")
-    (source
-      (origin
-        (method git-fetch)
-        (uri (git-reference
-               (url "https://github.com/cedarcode/openssl-signature_algorithm")
-               (commit (string-append "v" version))))
-        (file-name (git-file-name name version))
-        (sha256
-         (base32
-          "0ilshdmky1z8azm7szzbg129v5g2n54izzckhyqwnn1g8c55bmn5"))))
-    (build-system ruby-build-system)
-    (arguments
-     `(#:tests? #f  ; cannot load such file -- spec_helper
-       #:test-target "spec" ; not default, don't care about rubocop output
-       #:phases
-       (modify-phases %standard-phases
-         (add-before 'check 'pre-check
-           (lambda _
-             (setenv "HOME" (getcwd))
-             #t)))))
-    (propagated-inputs
-     `(("ruby-openssl" ,ruby-openssl)))
-    (native-inputs
-     `(("ruby-ed25519" ,ruby-ed25519)
-       ("ruby-rspec" ,ruby-rspec)
-       ("ruby-rubocop" ,ruby-rubocop)))
-    (synopsis
-      "ECDSA, EdDSA, RSA-PSS and RSA-PKCS#1 algorithms for ruby")
-    (description
-      "ECDSA, EdDSA, RSA-PSS and RSA-PKCS#1 algorithms for ruby")
-    (home-page "https://github.com/cedarcode/openssl-signature_algorithm")
-    (license license:asl2.0)))
-
-(define-public ruby-ed25519
-  (package
-    (name "ruby-ed25519")
-    (version "1.2.4")
-    (source
-      (origin
-        (method url-fetch)
-        (uri (rubygems-uri "ed25519" version))
-        (sha256
-          (base32
-            "1f5kr8za7hvla38fc0n9jiv55iq62k5bzclsa5kdb14l3r4w6qnw"))))
-    (build-system ruby-build-system)
-    (arguments
-     `(#:tests? #f      ; cannot load spec_helper
-       #:test-target "default"))
-    (native-inputs
-     `(("ruby-rake-compiler" ,ruby-rake-compiler)
-       ("ruby-rspec" ,ruby-rspec)
-       ("ruby-rubocop" ,ruby-rubocop)))
-    (synopsis "Ruby binding to the Ed25519 elliptic curve public-key system")
-    (description
-     "This package provides a Ruby binding to the Ed25519 elliptic curve
-public-key signature system described in RFC 8032.")
-    (home-page "https://github.com/crypto-rb/ed25519")
-    (license license:expat)))
-
-(define-public ruby-cose
-  (package
-    (name "ruby-cose")
-    (version "1.2.0")
-    (source
-      (origin
-        (method url-fetch)
-        (uri (rubygems-uri "cose" version))
-        (sha256
-         (base32
-          "1gx239d2fracq9az74wfdwmp5zm7zpzkcgchwnv2ng33d8r33p3m"))))
-    (build-system ruby-build-system)
-    (arguments
-     `(#:tests? #f  ; cannot load such file -- spec_helper
-       #:test-target "spec" ; not default, don't care about rubocop output
-       #:phases
-       (modify-phases %standard-phases
-         (add-before 'check 'pre-check
-           (lambda _
-             (setenv "HOME" (getcwd))
-             #t)))))
-    (propagated-inputs
-     `(("ruby-cbor" ,ruby-cbor)
-       ("ruby-openssl-signature-algorithm" ,ruby-openssl-signature-algorithm)))
-    (native-inputs
-     `(
-       ("ruby-rspec" ,ruby-rspec)
-       ("ruby-rubocop" ,ruby-rubocop)
-       ("ruby-rubocop-performance" ,ruby-rubocop-performance)
-       ))
-    (synopsis
-      "Ruby implementation of RFC 8152 CBOR Object Signing and Encryption (COSE)")
-    (description
-      "Ruby implementation of RFC 8152 CBOR Object Signing and Encryption (COSE)")
-    (home-page "https://github.com/cedarcode/cose-ruby")
-    (license license:expat)))
-
-(define-public ruby-rtlit
-  (package
-    (name "ruby-rtlit")
-    (version "0.0.5")
-    (source
-      (origin
-        (method url-fetch)
-        (uri (rubygems-uri "rtlit" version))
-        (sha256
-         (base32
-          "0srfh7cl95srjiwbyc9pmn3w739zlvyj89hyj0bm7g92zrsd27qm"))))
-    (build-system ruby-build-system)
-    (arguments
-     `(#:tests? #f))    ; tests don't want to run
-    (native-inputs
-     `(
-       ("ruby-rake", ruby-rake)
-       ))
-    (synopsis
-      "Converts CSS files from left-to-right to right-to-left")
-    (description
-      "Converts CSS files from left-to-right to right-to-left")
-    (home-page "https://github.com/zohararad/rtlit")
-    (license license:expat)))
-
-(define-public ruby-test-prof
-  (package
-    (name "ruby-test-prof")
-    (version "1.0.1")
-    (source
-      (origin
-        (method git-fetch)
-        (uri (git-reference
-               (url "https://github.com/test-prof/test-prof")
-               (commit (string-append "v" version))))
-        (file-name (git-file-name name version))
-        (sha256
-         (base32
-          "092q3m56843yrd94xby2a29vg8kca4lirgvqlkmdjyjckmi3qdzr"))))
-    (build-system ruby-build-system)
-    (arguments
-     `(#:tests? #f  ; seems to need running database
-       #:test-target "spec" ; not default, don't care about rubocop output
-       ;; cannot load such file -- standard/cop/semantic_blocks
-       ))
-    (native-inputs
-     `(
-       ("ruby-activerecord" ,ruby-activerecord)
-       ("ruby-fabrication" ,ruby-fabrication)
-       ("ruby-rspec" ,ruby-rspec)
-       ("ruby-rubocop" ,ruby-rubocop)
-       ("ruby-sqlite3" ,ruby-sqlite3-1.3)
-       ))
-    (synopsis
-      "
-    Ruby applications tests profiling tools.
-
-    Contains tools to analyze factories usage, integrate with Ruby profilers,
-    profile your examples using ActiveSupport notifications (if any) and
-    statically analyze your code with custom RuboCop cops.
-  ")
-    (description
-      "
-    Ruby applications tests profiling tools.
-
-    Contains tools to analyze factories usage, integrate with Ruby profilers,
-    profile your examples using ActiveSupport notifications (if any) and
-    statically analyze your code with custom RuboCop cops.
-  ")
-    (home-page "https://test-prof.evilmartians.io/")
-    (license license:expat)))
-
-(define-public ruby-fabrication
-  (package
-    (name "ruby-fabrication")
-    (version "2.21.1")
-    (source
-      (origin
-        (method url-fetch)
-        (uri (rubygems-uri "fabrication" version))
-        (sha256
-         (base32
-          "1pdrl55xf76pbc5kjzp7diawxxvgbk2cm38532in6df823431n6z"))))
-    (build-system ruby-build-system)
-    (arguments
-     `(#:tests? #f))    ; TODO later
-    (synopsis
-      "Fabrication is an object generation framework for ActiveRecord, Mongoid, DataMapper, Sequel, or any other Ruby object.")
-    (description
-      "Fabrication is an object generation framework for ActiveRecord, Mongoid, DataMapper, Sequel, or any other Ruby object.")
-    (home-page "http://fabricationgem.org")
-    (license license:expat)))
-
-(define-public ruby-ruby2-keywords
-  (package
-    (name "ruby-ruby2-keywords")
-    (version "0.0.4")
-    (source
-      (origin
-        (method git-fetch)
-        (uri (git-reference
-               (url "https://github.com/ruby/ruby2_keywords")
-               (commit (string-append "v" version))))
-        (file-name (git-file-name name version))
-        (sha256
-         (base32
-          "1fz81nw92cvpi1h99q1pvsnkdkpmp40jvvpkn1jnjbx9by04bw45"))))
-    (build-system ruby-build-system)
-    (arguments
-     `(#:test-target "default"))
-    (synopsis
-      "Shim library for Module#ruby2_keywords")
-    (description
-      "Shim library for Module#ruby2_keywords")
-    (home-page "https://github.com/ruby/ruby2_keywords")
-    (license (list license:ruby license:bsd-2))))
-
-(define-public ruby-mock-redis
-  (package
-    (name "ruby-mock-redis")
-    (version "0.27.3")
-    (source
-      (origin
-        (method url-fetch)
-        (uri (rubygems-uri "mock_redis" version))
-        (sha256
-         (base32
-          "0fhwhp0w2n79k9ibmqhq09m88rp2jmr7dknx9ibn84wf7r8a3a8k"))))
-    (build-system ruby-build-system)
-    (arguments
-     `(#:tests? #f  ; tests need a running redis server.
-       #:phases
-       (modify-phases %standard-phases
-         (replace 'check
-           (lambda* (#:key tests? #:allow-other-keys)
-             (when tests?
-               (invoke "rspec"))
-             #t)))))
-    (propagated-inputs
-     `(("ruby-ruby2-keywords" ,ruby-ruby2-keywords)))
-    (native-inputs
-     `(
-       ("ruby-redis" ,ruby-redis)
-       ("ruby-rspec" ,ruby-rspec)
-       ("ruby-rspec-its" ,ruby-rspec-its)
-       ("ruby-simplecov" ,ruby-simplecov)
-       ("ruby-timecop" ,ruby-timecop)
-       ))
-    (synopsis
-      "Instantiate one with `redis = MockRedis.new` and treat it like you would a normal Redis object. It supports all the usual Redis operations.")
-    (description
-      "Instantiate one with `redis = MockRedis.new` and treat it like you would a normal Redis object.  It supports all the usual Redis operations.")
-    (home-page "https://github.com/sds/mock_redis")
-    (license license:expat)))
-
-(define-public ruby-certified
-  (package
-    (name "ruby-certified")
-    (version "1.0.0")
-    (source
-      (origin
-        (method url-fetch)
-        (uri (rubygems-uri "certified" version))
-        (sha256
-         (base32
-          "1706p6p0a8adyvd943af2a3093xakvislgffw3v9dvp7j07dyk5a"))))
-    (build-system ruby-build-system)
-    (arguments
-     `(#:tests? #f))    ; no rakefile or tests
-    (synopsis
-      "Ensure net/https uses OpenSSL::SSL::VERIFY_PEER to verify SSL certificates and provides certificate bundle in case OpenSSL cannot find one")
-    (description
-      "Ensure net/https uses OpenSSL::SSL::VERIFY_PEER to verify SSL certificates and provides certificate bundle in case OpenSSL cannot find one")
-    (home-page "https://github.com/stevegraham/certified")
-    (license license:expat)))
-
-(define-public ruby-rspec-html-matchers
-  (package
-    (name "ruby-rspec-html-matchers")
-    (version "0.9.4")
-    (source
-      (origin
-        (method url-fetch)
-        (uri (rubygems-uri "rspec-html-matchers" version))
-        (sha256
-         (base32
-          "0883rqv77n2wawnk5lp3la48l7pckyz8l013qddngzmksi5p1v3f"))))
-    (build-system ruby-build-system)
-    (arguments
-     `(#:tests? #f))    ; no tests in gem release
-    (propagated-inputs
-     `(("ruby-nokogiri" ,ruby-nokogiri)
-       ("ruby-rspec" ,ruby-rspec)))
-    (synopsis
-      "Nokogiri based 'have_tag' and 'with_tag' matchers for rspec 3. Does not depend on assert_select matcher, provides useful error messages.
-")
-    (description
-      "Nokogiri based 'have_tag' and 'with_tag' matchers for rspec 3.  Does not depend on assert_select matcher, provides useful error messages.
-")
-    (home-page "https://github.com/kucaahbe/rspec-html-matchers")
-    (license license:expat)))
-
-(define-public ruby-rswag-specs
-  (package
-    (name "ruby-rswag-specs")
-    (version "2.4.0")
-    (source
-      (origin
-        (method url-fetch)
-        (uri (rubygems-uri "rswag-specs" version))
-        (sha256
-         (base32
-          "1dma3j5vfjhyclg8y0gsp44vs4wn9chf4jgfhc9r6ws018xrbxzd"))))
-    (build-system ruby-build-system)
-    (arguments
-     `(#:tests? #f))    ; no tests in Rakefile
-    (propagated-inputs
-     `(("ruby-activesupport" ,ruby-activesupport)
-       ("ruby-json-schema" ,ruby-json-schema)
-       ("ruby-railties" ,ruby-railties)))
-    (synopsis
-      "Simplify API integration testing with a succinct rspec DSL and generate OpenAPI specification files directly from your rspecs. More about the OpenAPI initiative here: http://spec.openapis.org/")
-    (description
-      "Simplify API integration testing with a succinct rspec DSL and generate OpenAPI specification files directly from your rspecs.  More about the OpenAPI initiative here: http://spec.openapis.org/")
-    (home-page "https://github.com/rswag/rswag")
-    (license license:expat)))
-
-(define-public ruby-uniform-notifier
-  (package
-    (name "ruby-uniform-notifier")
-    (version "1.13.2")
-    (source
-      (origin
-        (method url-fetch)
-        (uri (rubygems-uri "uniform_notifier" version))
-        (sha256
-         (base32
-          "05s2y76zqg391q65mvs1zsrmyn5bjxq3x54ikkqpqm3lzjjcg1pp"))))
-    (build-system ruby-build-system)
-    (arguments
-     `(#:tests? #f)) ; not clear how to successfully run tests
-    (native-inputs
-     `(
-       ("ruby-rspec" ,ruby-rspec)
-       ))
-    (synopsis "Uniform notifier for rails logger")
-    (description
-     "@code{uniform_notifier} is extracted from bullet, it gives you the ability to send notification through rails logger, customized logger, javascript alert, javascript console, growl, xmpp, airbrake and honeybadger.")
-    (home-page "https://rubygems.org/gems/uniform_notifier")
-    (license license:expat)))
-
-(define-public ruby-bullet
-  (package
-    (name "ruby-bullet")
-    (version "6.1.3")
-    (source
-      (origin
-        (method url-fetch)
-        (uri (rubygems-uri "bullet" version))
-        (sha256
-         (base32
-          "04wm807czdixpgnqp446vj8vc7dj96k26p90rmwll9ahlib37mmm"))))
-    (build-system ruby-build-system)
-    (arguments
-     `(#:tests? #f  ; tests want rails' source directory
-       #:test-target "default"
-       #:phases
-       (modify-phases %standard-phases
-         (add-before 'check 'pre-check
-           (lambda _
-             (setenv "HOME" (getcwd))
-             #t)))))
-    (propagated-inputs
-     `(("ruby-activesupport" ,ruby-activesupport)
-       ("ruby-uniform-notifier" ,ruby-uniform-notifier)))
-    (synopsis
-      "help to kill N+1 queries and unused eager loading.")
-    (description
-      "help to kill N+1 queries and unused eager loading.")
-    (home-page "https://github.com/flyerhzm/bullet")
-    (license license:expat)))
-
-(define-public ruby-better-errors
-  (package
-    (name "ruby-better-errors")
-    (version "2.9.1")
-    (source
-      (origin
-        (method git-fetch)
-        (uri (git-reference
-               (url "https://github.com/BetterErrors/better_errors")
-               (commit (string-append "v" version))))
-        (file-name (git-file-name name version))
-        (sha256
-         (base32
-          "185im2i62j9f3sa0xzq8q806xlckypjmi3lwdivrzln4gw2l4z38"))))
-    (build-system ruby-build-system)
-    (arguments
-     `(#:phases
-       (modify-phases %standard-phases
-         (add-before 'check 'pre-check
-           (lambda _
-             ;; Don't specify version numbers.
-             (substitute* "better_errors.gemspec"
-               (("rake.*") "rake\"\n"))
-             (substitute* "Gemfile"
-               ((".*gem-release.*") ""))
-             #t)))))
-    (propagated-inputs
-     `(("ruby-coderay" ,ruby-coderay)
-       ("ruby-erubi" ,ruby-erubi)
-       ("ruby-rack" ,ruby-rack)))
-    (native-inputs
-     `(
-       ("ruby-kramdown" ,ruby-kramdown)
-       ("ruby-rspec" ,ruby-rspec)
-       ("ruby-rspec-html-matchers" ,ruby-rspec-html-matchers)
-       ("ruby-rspec-its" ,ruby-rspec-its)
-       ("ruby-simplecov" ,ruby-simplecov)
-       ("ruby-simplecov-lcov" ,ruby-simplecov-lcov)
-       ("ruby-yard" ,ruby-yard)
-       ))
-    (synopsis "Error page for Rails and other Rack apps")
-    (description
-      "This package provides a better error page for Rails and other Rack apps.  Includes source code inspection, a live REPL and local/instance variable inspection for all stack frames.")
-    (home-page "https://github.com/BetterErrors/better_errors")
-    (license license:expat)))
-
-;; 0.8.0 needs simplecov ~> 0.18
-(define-public ruby-simplecov-lcov
-  (package
-    (name "ruby-simplecov-lcov")
-    (version "0.7.0")
-    (source
-      (origin
-        (method url-fetch)
-        (uri (rubygems-uri "simplecov-lcov" version))
-        (sha256
-         (base32
-          "0r3pmjjdjvprk8bzmcvarhf57sp5xzgj1c6007qaqhs7b4fhvxvb"))))
-    (build-system ruby-build-system)
-    (arguments
-     `(#:tests? #f  ; tests want rails' source directory. Also skip ruby-jeweler
-       ;#:test-target "default"
-       #:phases
-       (modify-phases %standard-phases
-         (add-before 'check 'pre-check
-           (lambda _
-             ;(setenv "HOME" (getcwd))
-             #t)))))
-    (native-inputs
-     `(
-       ;("ruby-jeweler" ,ruby-jeweler)
-       ("ruby-rspec" ,ruby-rspec)
-       ("ruby-simplecov" ,ruby-simplecov)
-       ))
-    (synopsis
-      "Custom SimpleCov formatter to generate a lcov style coverage.")
-    (description
-      "Custom SimpleCov formatter to generate a lcov style coverage.")
-    (home-page "https://github.com/fortissimo1997/simplecov-lcov")
-    (license license:expat)))
-
-(define-public ruby-semver2
-  (package
-    (name "ruby-semver2")
-    (version "3.4.2")
-    (source
-      (origin
-        (method git-fetch)
-        (uri (git-reference
-               (url "https://github.com/haf/semver")
-               (commit (string-append "v" version))))
-        (file-name (git-file-name name version))
-        (sha256
-         (base32
-          "10yj3vglkw8h1am80jpzkxq7l9ywbvd9fsdjg1mm0c33k1y2jw65"))))
-    (build-system ruby-build-system)
-    (arguments
-     `(#:test-target "spec"))
-    (native-inputs
-     `(
-       ("ruby-rake-compiler" ,ruby-rake-compiler)
-       ("ruby-rspec" ,ruby-rspec)
-       ))
-    (synopsis
-      "maintain versions as per http://semver.org")
-    (description
-      "maintain versions as per http://semver.org")
-    (home-page "https://github.com/haf/semver")
-    (license license:expat)))
-
-(define-public ruby-descendants-tracker
-  (package
-    (name "ruby-descendants-tracker")
-    (version "0.0.4")
-    (source
-      (origin
-        (method url-fetch)
-        (uri (rubygems-uri "descendants_tracker" version))
-        (sha256
-         (base32
-          "15q8g3fcqyb41qixn6cky0k3p86291y7xsh1jfd851dvrza1vi79"))))
-    (build-system ruby-build-system)
-    (arguments
-     `(#:tests? #f))    ; old package is old
-    (propagated-inputs
-     `(("ruby-thread-safe" ,ruby-thread-safe)))
-    (native-inputs
-     `(
-       ;("ruby-devtools" ,ruby-devtools)
-       ))
-    (synopsis
-      "Module that adds descendant tracking to a class")
-    (description
-      "Module that adds descendant tracking to a class")
-    (home-page "https://github.com/dkubb/descendants_tracker")
-    (license license:expat)))
-
-(define-public ruby-github-api
-  (package
-    (name "ruby-github-api")
-    (version "0.19.0")
-    (source
-      (origin
-        (method git-fetch)
-        (uri (git-reference
-               (url "https://github.com/piotrmurach/github")
-               (commit (string-append "v" version))))
-        (file-name (git-file-name name version))
-        (sha256
-         (base32
-          "13ysd56b473m0yvjdxmqgia2w96m3qq29xzvpdqhz50xjid2mqk2"))))
-    (build-system ruby-build-system)
-    (arguments
-     `(;#:tests? #f  ; tests depend on ruby-vcr, which is non-free
-       #:test-target "spec" ; default fails on the ':features' portion
-       #:phases
-       (modify-phases %standard-phases
-         (add-before 'check 'pre-check
-           (lambda _
-             (setenv "HOME" (getcwd))
-             ;; Don't specify version numbers.
-             (substitute* "github_api.gemspec"
-               (("cucumber.*") "cucumber\"\n")
-               (("vcr.*") "vcr\"\n")
-               )
-             #t)))))
-    (propagated-inputs
-     `(("ruby-addressable" ,ruby-addressable)
-       ("ruby-descendants-tracker" ,ruby-descendants-tracker)
-       ("ruby-faraday" ,ruby-faraday)
-       ("ruby-hashie" ,ruby-hashie)
-       ("ruby-oauth2" ,ruby-oauth2)))
-    (native-inputs
-     `(
-       ("ruby-cucumber" ,ruby-cucumber)
-       ("ruby-rspec" ,ruby-rspec)
-       ("ruby-rspec-its" ,ruby-rspec-its)
-       ("ruby-vcr" ,ruby-vcr)
-       ("ruby-webmock" ,ruby-webmock)
-       ))
-    (synopsis "Ruby client of GitHub API methods")
-    (description
-     "This package provides a Ruby client that supports all of the GitHub API methods.")
-    (home-page "https://piotrmurach.github.io/github/")
-    (license license:expat)))
-
-(define-public ruby-jeweler
-  (package
-    (name "ruby-jeweler")
-    (version "2.3.9")
-    (source
-      (origin
-        (method url-fetch)
-        (uri (rubygems-uri "jeweler" version))
-        (sha256
-         (base32
-          "0jbivh9vf9wm91kwjnlcvswqyk2g24bnxj9gavinx9jh4bphagi5"))))
-    (build-system ruby-build-system)
-    (propagated-inputs
-     `(("ruby-builder" ,ruby-builder)
-       ("bundler" ,bundler)
-       ("ruby-git" ,ruby-git)
-       ("ruby-github-api" ,ruby-github-api)
-       ("ruby-highline" ,ruby-highline)
-       ("ruby-nokogiri" ,ruby-nokogiri)
-       ("ruby-psych" ,ruby-psych)
-       ("ruby-rake" ,ruby-rake)
-       ("ruby-rdoc" ,ruby-rdoc)
-       ("ruby-semver2" ,ruby-semver2)))
-    (synopsis
-      "Simple and opinionated helper for creating Rubygem projects on GitHub")
-    (description
-      "Simple and opinionated helper for creating Rubygem projects on GitHub")
-    (home-page "https://github.com/technicalpickles/jeweler")
-    (license license:expat)))
-
-;; 5.0.0 is the last version under a free license. 5.1.0+ are under the Hippocratic License
-(define-public ruby-vcr
-  (package
-    (name "ruby-vcr")
-    (version "5.0.0")
-    (source
-      (origin
-        (method git-fetch)
-        (uri (git-reference
-               (url "https://github.com/vcr/vcr")
-               (commit (string-append "v" version))))
-        (file-name (git-file-name name version))
-        (sha256
-         (base32
-          "1anich4cgjz7adbk1sh07q494dgb757np74qdiz0nwjzl41s6iyp"))))
-    (build-system ruby-build-system)
-    (arguments
-     `(#:tests? #f  ; TODO: figure out test suite
-       #:test-target "default"))
-    (native-inputs
-     `(
-       ("ruby-codeclimate-test-reporter" ,ruby-codeclimate-test-reporter)
-       ("ruby-cucumber" ,ruby-cucumber)
-       ("ruby-rspec" ,ruby-rspec)
-       ("ruby-simplecov" ,ruby-simplecov)
-       ))
-    (synopsis
-      "Record your test suite's HTTP interactions and replay them during future test runs for fast, deterministic, accurate tests.")
-    (description
-      "Record your test suite's HTTP interactions and replay them during future test runs for fast, deterministic, accurate tests.")
-    (home-page "https://relishapp.com/vcr/vcr/docs")
-    (license license:expat)))
-
-(define-public ruby-annotate
-  (package
-    (name "ruby-annotate")
-    (version "3.1.1")
-    (source
-      (origin
-        (method url-fetch)
-        (uri (rubygems-uri "annotate" version))
-        (sha256
-         (base32
-          "1dxrfppwfg13vqmambbs56xjj8qsdgcy58r2yc44vvy3z1g5yflw"))))
-    (build-system ruby-build-system)
-    (arguments
-     `(#:tests? #f))    ; no tests in gem
-    (propagated-inputs
-     `(("ruby-activerecord" ,ruby-activerecord)
-       ("ruby-rake" ,ruby-rake)))
-    (synopsis
-      "Annotates Rails/ActiveRecord Models, routes, fixtures, and others based on the database schema.")
-    (description
-      "Annotates Rails/ActiveRecord Models, routes, fixtures, and others based on the database schema.")
-    (home-page "https://github.com/ctran/annotate_models")
-    (license (license:non-copyleft
-               "will fill in later"))))
-
-(define-public ruby-flamegraph
-  (package
-    (name "ruby-flamegraph")
-    (version "0.9.5")
-    (source
-      (origin
-        (method url-fetch)
-        (uri (rubygems-uri "flamegraph" version))
-        (sha256
-         (base32
-          "1p785nmhdzbwj0qpxn5fzrmr4kgimcds83v4f95f387z6w3050x6"))))
-    (build-system ruby-build-system)
-    (synopsis
-      "Flamegraph support for arbitrary ruby apps")
-    (description
-      "Flamegraph support for arbitrary ruby apps")
-    (home-page "https://github.com/SamSaffron/flamegraph")
-    (license license:expat)))
-
-(define-public ruby-optimist
-  (package
-    (name "ruby-optimist")
-    (version "3.0.1")
-    (source
-      (origin
-        (method url-fetch)
-        (uri (rubygems-uri "optimist" version))
-        (sha256
-         (base32
-          "1vg2chy1cfmdj6c1gryl8zvjhhmb3plwgyh1jfnpq4fnfqv7asrk"))))
-    (build-system ruby-build-system)
-    (native-inputs
-     `(
-       ;; https://github.com/ManageIQ/optimist/issues/109
-       ("ruby-chronic" ,ruby-chronic)
-       ))
-    (synopsis
-      "Optimist is a commandline option parser for Ruby that just
-gets out of your way. One line of code per option is all you need to write.
-For that, you get a nice automatically-generated help page, robust option
-parsing, command subcompletion, and sensible defaults for everything you don't
-specify.")
-    (description
-      "Optimist is a commandline option parser for Ruby that just
-gets out of your way.  One line of code per option is all you need to write.
-For that, you get a nice automatically-generated help page, robust option
-parsing, command subcompletion, and sensible defaults for everything you don't
-specify.")
-    (home-page "https://manageiq.github.io/optimist/")
-    (license license:expat)))
-
-;; TODO: Unbundle msgpack
-(define-public ruby-rbtrace
-  (package
-    (name "ruby-rbtrace")
-    (version "0.4.14")
-    (source
-      (origin
-        (method url-fetch)
-        (uri (rubygems-uri "rbtrace" version))
-        (sha256
-         (base32
-          "0s8prj0klfgpmpfcpdzbf149qrrsdxgnb6w6kkqc9gyars4vyaqn"))))
-    (build-system ruby-build-system)
-    (arguments
-     `(#:tests? #f  ; no test suite
-       #:phases
-       (modify-phases %standard-phases
-         (add-before 'build 'build-msgpack-library
-           (lambda* (#:key inputs outputs #:allow-other-keys)
-             (let ((msgpack (assoc-ref inputs "msgpack")))
-               ;; Don't try to build msgpack during 'install
-               (substitute* "rbtrace.gemspec"
-                 ((".*s.extensions.*") ""))
-
-               ;; Use shared library, built with -fPIC
-               (substitute* "ext/extconf.rb"
-                 (("libmsgpackc.a") "libmsgpackc.so")
-                 (("libmsgpackc_ext.a") "libmsgpackc_ext.so"))
-
-               (mkdir-p "ext/dst/lib")
-               (mkdir-p "ext/dst/include")
-               (symlink (string-append msgpack "/lib/libmsgpackc.so")
-                        "ext/dst/lib/libmsgpackc.so")
-               (symlink (string-append msgpack "/include/msgpack.h")
-                        "ext/dst/include/msgpack.h")
-
-               ;; compile the rbtrace binary, linking to msgpack
-               (setenv "CC" ,(cc-for-target))
-               (with-directory-excursion "ext"
-                 (invoke "ruby" "extconf.rb")
-                 (invoke "make"))
-               #t))))))
-    (propagated-inputs
-     `(("ruby-ffi" ,ruby-ffi)
-       ("ruby-msgpack" ,ruby-msgpack)
-       ("ruby-optimist" ,ruby-optimist)))
-    (inputs
-     `(("msgpack" ,(@ (gnu packages serialization) msgpack))))
-    (synopsis
-      "rbtrace shows you method calls happening inside another ruby process in real time.")
-    (description
-      "rbtrace shows you method calls happening inside another ruby process in real time.")
-    (home-page "https://github.com/tmm1/rbtrace")
-    (license license:expat)))
-
-(define-public ruby-gc-tracer
-  (package
-    (name "ruby-gc-tracer")
-    (version "1.5.1")
-    (source
-      (origin
-        (method url-fetch)
-        (uri (rubygems-uri "gc_tracer" version))
-        (sha256
-         (base32
-          "1yv3mp8lx74lfzs04fd5h4g89209iwhzpc407y35p7cmzgx6a4kv"))))
-    (build-system ruby-build-system)
-    (arguments
-     `(#:test-target "default"))
-    (native-inputs
-     `(
-       ("ruby-rake-compiler" ,ruby-rake-compiler)
-       ("ruby-rspec" ,ruby-rspec)
-       ))
-    (synopsis
-      "gc_tracer gem adds GC::Tracer module.")
-    (description
-      "gc_tracer gem adds GC::Tracer module.")
-    (home-page "https://github.com/ko1/gc_tracer")
-    (license license:expat)))
-
-(define-public ruby-guess-html-encoding
-  (package
-    (name "ruby-guess-html-encoding")
-    (version "0.0.11")
-    (source
-      (origin
-        (method url-fetch)
-        (uri (rubygems-uri "guess_html_encoding" version))
-        (sha256
-         (base32
-          "16700fk6kmif3q3kpc1ldhy3nsc9pkxlgl8sqhznff2zjj5lddna"))))
-    (build-system ruby-build-system)
-    (arguments
-     `(#:test-target "default"))
-    (native-inputs
-     `(
-       ("ruby-rspec" ,ruby-rspec)
-       ))
-    (synopsis
-      "A small gem that attempts to guess and then force encoding of HTML documents for Ruby 1.9")
-    (description
-      "This package provides a small gem that attempts to guess and then force encoding of HTML documents for Ruby 1.9")
-    (home-page "https://github.com/cantino/guess_html_encoding")
-   (license license:expat)))
-
-(define-public ruby-ruby-readability
-  (package
-    (name "ruby-ruby-readability")
-    (version "0.7.0")
-    (source
-      (origin
-        (method url-fetch)
-        (uri (rubygems-uri "ruby-readability" version))
-        (sha256
-         (base32
-          "15ivhbry7hf82lww1bzcrwfyjymijfb3rb0wdd32g2z0942wdspa"))))
-    (build-system ruby-build-system)
-    (arguments
-     `(#:tests? #f  ; ':spec" fails with newer ruby versions
-       #:test-target "default"))
-    (propagated-inputs
-     `(("ruby-guess-html-encoding" ,ruby-guess-html-encoding)
-       ("ruby-nokogiri" ,ruby-nokogiri)))
-    (native-inputs
-     `(
-       ("ruby-rspec" ,ruby-rspec)
-       ))
-    (synopsis
-      "Port of arc90's readability project to ruby")
-    (description
-      "Port of arc90's readability project to ruby")
-    (home-page "https://github.com/cantino/ruby-readability")
-    (license (license:non-copyleft
-               "will fill in later"))))
-
-;; TODO: 0.3.3 never finishes the install phase with ruby-2.6
-;; TODO: Unbundle cppjieba
-(define-public ruby-cppjieba-rb
-  (package
-    (name "ruby-cppjieba-rb")
-    (version "0.3.3")
-    (source
-      (origin
-        (method url-fetch)
-        (uri (rubygems-uri "cppjieba_rb" version))
-        (sha256
-         (base32
-          "1sslff7yy8jvp4rcn1b6jn9v0d3iibb68i79shgd94rs2yq8k117"))))
-    (build-system ruby-build-system)
-    (arguments
-     `(#:phases
-       (modify-phases %standard-phases
-         (add-before 'build 'pre-build
-           (lambda _
-             (invoke "rake" "compile"))))))
-    (native-inputs
-     `(("ruby-rake-compiler" ,ruby-rake-compiler)))
-    (synopsis "Cppjieba binding for Ruby")
-    (description
-     "This package provides Ruby bindles for @code{cppjieba}, a library to help
-with processing Chinese text.")
-    (home-page "https://github.com/fantasticfears/cppjieba_rb")
-    (license license:expat)))
-
-(define-public ruby-request-store
-  (package
-    (name "ruby-request-store")
-    (version "1.5.0")
-    (source
-      (origin
-        (method url-fetch)
-        (uri (rubygems-uri "request_store" version))
-        (sha256
-         (base32
-          "0cx74kispmnw3ljwb239j65a2j14n8jlsygy372hrsa8mxc71hxi"))))
-    (build-system ruby-build-system)
-    (propagated-inputs
-     `(("ruby-rack" ,ruby-rack)))
-    (synopsis
-      "RequestStore gives you per-request global storage.")
-    (description
-      "RequestStore gives you per-request global storage.")
-    (home-page "https://github.com/steveklabnik/request_store")
-    (license license:expat)))
-
-(define-public ruby-lograge
-  (package
-    (name "ruby-lograge")
-    (version "0.11.2")
-    (source
-      (origin
-        (method git-fetch)
-        (uri (git-reference
-               (url "https://github.com/roidrage/lograge")
-               (commit (string-append "v" version))))
-        (file-name (git-file-name name version))
-        (sha256
-         (base32
-          "1dlxzv0xjnjs95l4fzr1wcf2l7klnhji0fv51gl6wvkjpjdr9zcy"))))
-    (build-system ruby-build-system)
-    (arguments
-     `(#:tests? #f  ; cannot find logstash-event
-       #:test-target "spec" ; not default, rubocop compains about all the things
-       #:phases
-       (modify-phases %standard-phases
-         (replace 'replace-git-ls-files
-           (lambda _
-             (substitute* "lograge.gemspec"
-               (("git ls-files lib LICENSE.txt")
-                "find lib LICENSE.txt -type f | sort"))
-             #t))
-         (add-before 'check 'pre-check
-           (lambda _
-             (setenv "HOME" (getcwd))
-             #t)))))
-    (propagated-inputs
-     `(("ruby-actionpack" ,ruby-actionpack)
-       ("ruby-activesupport" ,ruby-activesupport)
-       ("ruby-railties" ,ruby-railties)
-       ("ruby-request-store" ,ruby-request-store)))
-    (native-inputs
-     `(
-       ("ruby-activerecord" ,ruby-activerecord)
-       ("ruby-lines" ,ruby-lines)
-       ("ruby-logstash-event" ,ruby-logstash-event)
-       ("ruby-rspec" ,ruby-rspec)
-       ("ruby-rubocop" ,ruby-rubocop)
-       ))
-    (synopsis
-      "Tame Rails' multi-line logging into a single line per request")
-    (description
-      "Tame Rails' multi-line logging into a single line per request")
-    (home-page "https://github.com/roidrage/lograge")
-    (license license:expat)))
-
-(define-public ruby-logstash-event
-  (package
-    (name "ruby-logstash-event")
-    (version "1.2.02")
-    (source
-      (origin
-        (method url-fetch)
-        (uri (rubygems-uri "logstash-event" version))
-        (sha256
-         (base32
-          "1bk7fhhryjxp1klr3hq6i6srrc21wl4p980bysjp0w66z9hdr9w9"))))
-    (build-system ruby-build-system)
-    (arguments
-     `(#:tests? #f))    ; no rakefile
-    (synopsis
-      "Library that contains the classes required to create LogStash events")
-    (description
-      "Library that contains the classes required to create LogStash events")
-    (home-page "https://github.com/logstash/logstash")
-    (license license:asl2.0)))
-
-(define-public ruby-lines
-  (package
-    (name "ruby-lines")
-    (version "0.9.1")
-    (source
-      (origin
-        (method url-fetch)
-        (uri (rubygems-uri "lines" version))
-        (sha256
-         (base32
-          "17hrpvqvc2li4rjnk75xy5qvylk0vg0z8if7q1m00al79d0mpbma"))))
-    (build-system ruby-build-system)
-    (arguments
-     `(#:test-target "default"))
-    (native-inputs
-     `(("ruby-rspec" ,ruby-rspec)))
-    (synopsis
-      "Readable log format for humans and computers")
-    (description
-     "This package provides a log format that's readable by humans and easily parseable by computers.")
-    (home-page "https://github.com/zimbatm/lines-ruby")
-    (license license:expat)))
-
-(define-public ruby-logstash-logger
-  (package
-    (name "ruby-logstash-logger")
-    (version "0.26.1")
-    (source
-      (origin
-        (method url-fetch)
-        (uri (rubygems-uri "logstash-logger" version))
-        (sha256
-         (base32
-          "1nh0jgz4rl46axqb9l0fa866kh34wb7yf11qc3j30xhprdqb8yjp"))))
-    (build-system ruby-build-system)
-    (arguments
-     `(#:tests? #f  ; incompatable dependencies on simplecov
-       #:phases
-       (modify-phases %standard-phases
-         (add-before 'check 'pre-check
-           (lambda _
-             (setenv "HOME" (getcwd))
-             #t)))))
-    (propagated-inputs
-     `(("ruby-logstash-event" ,ruby-logstash-event)))
-    (native-inputs
-     `(
-       ("ruby-appraisal" ,ruby-appraisal)
-       ("ruby-aws-sdk-firehose" ,ruby-aws-sdk-firehose)
-       ("ruby-aws-sdk-kinesis" ,ruby-aws-sdk-kinesis)
-       ("ruby-codeclimate-test-reporter" ,ruby-codeclimate-test-reporter)
-       ("ruby-codecov" ,ruby-codecov)
-       ("ruby-poseidon" ,ruby-poseidon)
-       ("ruby-pry" ,ruby-pry)
-       ("ruby-rails" ,ruby-rails)
-       ("ruby-redis" ,ruby-redis)
-       ("ruby-rspec" ,ruby-rspec)
-       ("ruby-rubocop" ,ruby-rubocop)
-       ("ruby-wwtd" ,ruby-wwtd)
-       ))
-    (synopsis
-      "Ruby logger that writes directly to LogStash")
-    (description
-      "Ruby logger that writes directly to LogStash")
-    (home-page "https://github.com/dwbutler/logstash-logger")
-    (license license:expat)))
-
-(define-public ruby-poseidon
-  (package
-    (name "ruby-poseidon")
-    (version "0.0.5")
-    (source
-      (origin
-        (method url-fetch)
-        (uri (rubygems-uri "poseidon" version))
-        (sha256
-         (base32
-          "0lxavrybqwa3xmsajvxp0ngqmn4jxw9q93398yxzdrx83i8a7l8p"))))
-    (build-system ruby-build-system)
-    (arguments
-     `(#:test-target "default"))
-    (native-inputs
-     `(
-       ("ruby-coveralls" ,ruby-coveralls)
-       ("ruby-rspec" ,ruby-rspec)
-       ("ruby-simplecov" ,ruby-simplecov)
-       ("ruby-snappy" ,ruby-snappy)
-       ))
-    (synopsis
-      "A Kafka (http://kafka.apache.org/) producer and consumer")
-    (description
-      "This package provides a Kafka (http://kafka.apache.org/) producer and consumer")
-    (home-page "https://github.com/bpot/poseidon")
-    (license license:expat)))
-
-(define-public ruby-snappy
-  (package
-    (name "ruby-snappy")
-    (version "0.2.0")
-    (source
-      (origin
-        (method url-fetch)
-        (uri (rubygems-uri "snappy" version))
-        (sha256
-         (base32
-          "0xl54r1vvrhlkxf16mxqk4kz18j0igf1f7l66kqd9dbyv6x99zfg"))))
-    (build-system ruby-build-system)
-    (arguments
-     `(#:phases
-       (modify-phases %standard-phases
-         (add-after 'unpack 'patch-source
-           (lambda _
-             ;; Test "VERSION" fails for unknown reasons
-             (delete-file "test/snappy_test.rb")
-             (with-output-to-file "test/snappy_test.rb"
-               (lambda _ ""))
-             #t)))))
-    (inputs
-     `(
-       ("snappy" ,snappy)
-       ))
-    (native-inputs
-     `(
-       ("ruby-rake" ,ruby-rake)
-       ("ruby-test-unit-rr" ,ruby-test-unit-rr)
-       ))
-    (synopsis "libsnappy binding for Ruby")
-    (description "libsnappy binding for Ruby")
-    (home-page "https://github.com/miyucy/snappy")
-    (license license:expat)))
-
-(define-public ruby-test-unit-rr
-  (package
-    (name "ruby-test-unit-rr")
-    (version "1.0.5")
-    (source
-      (origin
-        (method url-fetch)
-        (uri (rubygems-uri "test-unit-rr" version))
-        (sha256
-         (base32
-          "0l42wxvqqd4g1968syy1wmr4j9z3cad8v5vv22lr7my4wjgz0sil"))))
-    (build-system ruby-build-system)
-    (propagated-inputs
-     `(("ruby-rr" ,ruby-rr)
-       ("ruby-test-unit" ,ruby-test-unit)))
-    (native-inputs
-     `(
-       ("ruby-packnga" ,ruby-packnga)
-       ))
-    (synopsis
-      "You don't need RR setup codes with test-unit-rr. You just require
-\"test/unit/rr\".
-")
-    (description
-      "You don't need RR setup codes with test-unit-rr.  You just require
-\"test/unit/rr\".
-")
-    (home-page "https://github.com/test-unit/test-unit-rr")
-    (license (license:non-copyleft
-               "will fill in later"))))
-
-(define-public ruby-aws-sdk-kinesis
-  (package
-    (name "ruby-aws-sdk-kinesis")
-    (version "1.31.0")
-    (source
-      (origin
-        (method url-fetch)
-        (uri (rubygems-uri "aws-sdk-kinesis" version))
-        (sha256
-         (base32
-          "1wsnn4303q7501xp10gfr8s15cazm4a0xy8knz5b8pmaw93x0g4b"))))
-    (build-system ruby-build-system)
-    (arguments `(#:tests? #f))  ; no tests
-    (propagated-inputs
-     `(("ruby-aws-sdk-core" ,ruby-aws-sdk-core)
-       ("ruby-aws-sigv4" ,ruby-aws-sigv4)))
-    (synopsis
-      "Official AWS Ruby gem for Amazon Kinesis (Kinesis). This gem is part of the AWS SDK for Ruby.")
-    (description
-      "Official AWS Ruby gem for Amazon Kinesis (Kinesis).  This gem is part of the AWS SDK for Ruby.")
-    (home-page "https://github.com/aws/aws-sdk-ruby")
-    (license license:asl2.0)))
-
-(define-public ruby-aws-sdk-firehose
-  (package
-    (name "ruby-aws-sdk-firehose")
-    (version "1.36.0")
-    (source
-      (origin
-        (method url-fetch)
-        (uri (rubygems-uri "aws-sdk-firehose" version))
-        (sha256
-         (base32
-          "0ji75vqfprnkjsy6gdk9qci6wd9kwm7h7lycpx7jsw0fbv6hjx0p"))))
-    (build-system ruby-build-system)
-    (arguments `(#:tests? #f))  ; no tests
-    (propagated-inputs
-     `(("ruby-aws-sdk-core" ,ruby-aws-sdk-core)
-      ("ruby-aws-sigv4" ,ruby-aws-sigv4)))
-    (synopsis
-      "Official AWS Ruby gem for Amazon Kinesis Firehose (Firehose). This gem is part of the AWS SDK for Ruby.")
-    (description
-      "Official AWS Ruby gem for Amazon Kinesis Firehose (Firehose).  This gem is part of the AWS SDK for Ruby.")
-    (home-page "https://github.com/aws/aws-sdk-ruby")
-    (license license:asl2.0)))
-
-(define-public ruby-codecov
-  (package
-    (name "ruby-codecov")
-    (version "0.4.3")
-    (source
-      (origin
-        (method git-fetch)
-        (uri (git-reference
-               (url "https://github.com/codecov/codecov-ruby")
-               (commit (string-append "v" version))))
-        (file-name (git-file-name name version))
-        (sha256
-         (base32
-          "01x1n0j2awnpbnhzhsc058ni8bh2zw3vasbz9gkivydgv2r8xkpd"))))
-    (build-system ruby-build-system)
-    (arguments
-     `(#:tests? #f))    ; can't install gem
-    (propagated-inputs
-     `(("ruby-simplecov" ,ruby-simplecov)))
-    (synopsis "Hosted code coverage Ruby reporter")
-    (description
-      "Hosted code coverage Ruby reporter.")
-    (home-page "https://github.com/codecov/codecov-ruby")
-    (license license:expat)))
-
-(define-public ruby-rotp
-  (package
-    (name "ruby-rotp")
-    (version "6.2.0")
-    (source
-      (origin
-        (method url-fetch)
-        (uri (rubygems-uri "rotp" version))
-        (sha256
-         (base32
-          "11q7rkjx40yi6lpylgl2jkpy162mjw7mswrcgcax86vgpbpjx6i3"))))
-    (build-system ruby-build-system)
-    (arguments
-     `(
-       #:phases
-       (modify-phases %standard-phases
-         (replace 'check
-           (lambda* (#:key tests? #:allow-other-keys)
-             (when tests?
-               (invoke "rspec"))
-             #t)))))
-    (native-inputs
-     `(
-       ("ruby-rspec" ,ruby-rspec)
-       ("ruby-simplecov" ,ruby-simplecov)
-       ("ruby-timecop" ,ruby-timecop)
-       ))
-    (synopsis
-      "Works for both HOTP and TOTP, and includes QR Code provisioning")
-    (description
-      "Works for both HOTP and TOTP, and includes QR Code provisioning")
-    (home-page "https://github.com/mdp/rotp")
-    (license license:expat)))
-
-(define-public ruby-sshkey
-  (package
-    (name "ruby-sshkey")
-    (version "2.0.0")
-    (source
-      (origin
-        (method url-fetch)
-        (uri (rubygems-uri "sshkey" version))
-        (sha256
-         (base32
-          "03bkn55qsng484iqwz2lmm6rkimj01vsvhwk661s3lnmpkl65lbp"))))
-    (build-system ruby-build-system)
-    (synopsis
-      "Generate private/public SSH keypairs using pure Ruby")
-    (description
-      "Generate private/public SSH keypairs using pure Ruby")
-    (home-page "https://github.com/bensie/sshkey")
-    (license license:expat)))
-
-(define-public ruby-rchardet
-  (package
-    (name "ruby-rchardet")
-    (version "1.8.0")
-    (source
-      (origin
-        (method git-fetch)
-        (uri (git-reference
-               (url "https://github.com/jmhodges/rchardet")
-               (commit (string-append "v" version))))
-        (file-name (git-file-name name version))
-        (sha256
-         (base32
-          "12xcc4dq0k5gq5r142n7rr34lirfyzlkdh5by64cwz0bg5jfn8il"))))
-    (build-system ruby-build-system)
-    (arguments
-     `(#:phases
-       (modify-phases %standard-phases
-         (delete 'replace-git-ls-files)
-         (add-before 'build 'delete-gemfile-lock
-           (lambda _
-             (delete-file "Gemfile.lock")
-             #t))
-         )))
-    (native-inputs
-     `(
-       ("ruby-bump" ,ruby-bump)
-       ("ruby-minitest-rg" ,ruby-minitest-rg)
-       ("ruby-wwtd" ,ruby-wwtd)
-       ))
-    (synopsis
-      "Character encoding auto-detection in Ruby. As smart as your browser. Open source.")
-    (description
-      "Character encoding auto-detection in Ruby.  As smart as your browser.  Open source.")
-    (home-page "https://github.com/jmhodges/rchardet")
-    (license license:lgpl2.1+)))
-
-(define-public ruby-lz4-ruby
-  (package
-    (name "ruby-lz4-ruby")
-    (version "0.3.3")
-    (source
-      (origin
-        (method url-fetch)
-        (uri (rubygems-uri "lz4-ruby" version))
-        (sha256
-         (base32
-          "12fymsvcb9kw6ycyfzc8b9svriq0afqf1qnl121xrz8c4gpfa6q1"))))
-    (build-system ruby-build-system)
-    (arguments
-     `(#:tests? #f  ; tests require ruby-jeweler
-       #:phases
-       (modify-phases %standard-phases
-         (delete 'replace-git-ls-files)
-         (add-after 'unpack 'patch-source
-           (lambda _
-             (substitute* "Gemfile"
-               (("\\\", .*") "\"\n")
-               ;; NO JEWELER!
-               ((".*jeweler.*") "")
-               )
-             #t))
-         )))
-    (native-inputs
-     `(
-       ;("ruby-rdoc" ,ruby-rdoc)
-       ("ruby-rake-compiler" ,ruby-rake-compiler)
-       ("ruby-rspec" ,ruby-rspec)
-       ))
-    (synopsis
-      "Ruby bindings for LZ4. LZ4 is a very fast lossless compression algorithm.")
-    (description
-      "Ruby bindings for LZ4.  LZ4 is a very fast lossless compression algorithm.")
-    (home-page "https://github.com/komiya-atsushi/lz4-ruby")
-    (license license:expat)))
-
-(define-public ruby-webpush
-  (package
-    (name "ruby-webpush")
-    (version "1.1.0")
-    (source
-      (origin
-        (method url-fetch)
-        (uri (rubygems-uri "webpush" version))
-        (sha256
-         (base32
-          "1z9ma580q80czw46gi1bvsr2iwxr63aiyr7i9gilav6hbhg3sxv3"))))
-    (build-system ruby-build-system)
-    (arguments
-     `(#:test-target "default"))
-    (propagated-inputs
-     `(("ruby-hkdf" ,ruby-hkdf)
-       ("ruby-jwt" ,ruby-jwt)))
-    (native-inputs
-     `(
-       ("ruby-rspec" ,ruby-rspec)
-       ))
-    (synopsis
-      "Encryption Utilities for Web Push payload.")
-    (description
-      "Encryption Utilities for Web Push payload.")
-    (home-page "https://github.com/zaru/webpush")
-    (license license:expat)))
-
-(define-public ruby-colored2
-  (package
-    (name "ruby-colored2")
-    (version "3.1.2")
-    (source
-      (origin
-        (method url-fetch)
-        (uri (rubygems-uri "colored2" version))
-        (sha256
-         (base32
-          "0jlbqa9q4mvrm73aw9mxh23ygzbjiqwisl32d8szfb5fxvbjng5i"))))
-    (build-system ruby-build-system)
-    (arguments
-     `(#:test-target "default"))
-    (synopsis
-      "This is a heavily modified fork of http://github.com/defunkt/colored gem, with many
-sensible pull requests combined. Since the authors of the original gem no longer support it,
-this might, perhaps, be considered a good alternative.
-
-Simple gem that adds various color methods to String class, and can be used as follows:
-
-  require 'colored2'
-
-  puts 'this is red'.red
-  puts 'this is red with a yellow background'.red.on.yellow
-  puts 'this is red with and italic'.red.italic
-  puts 'this is green bold'.green.bold &lt;&lt; ' and regular'.green
-  puts 'this is really bold blue on white but reversed'.bold.blue.on.white.reversed
-  puts 'this is regular, but '.red! &lt;&lt; 'this is red '.yellow! &lt;&lt; ' and yellow.'.no_color!
-  puts ('this is regular, but '.red! do
-    'this is red '.yellow! do
-      ' and yellow.'.no_color!
-    end
-  end)
-
-")
-    (description
-      "This is a heavily modified fork of http://github.com/defunkt/colored gem, with many
-sensible pull requests combined.  Since the authors of the original gem no longer support it,
-this might, perhaps, be considered a good alternative.
-
-Simple gem that adds various color methods to String class, and can be used as follows:
-
-  require 'colored2'
-
-  puts 'this is red'.red
-  puts 'this is red with a yellow background'.red.on.yellow
-  puts 'this is red with and italic'.red.italic
-  puts 'this is green bold'.green.bold &lt;&lt; ' and regular'.green
-  puts 'this is really bold blue on white but reversed'.bold.blue.on.white.reversed
-  puts 'this is regular, but '.red! &lt;&lt; 'this is red '.yellow! &lt;&lt; ' and yellow.'.no_color!
-  puts ('this is regular, but '.red! do
-    'this is red '.yellow! do
-      ' and yellow.'.no_color!
-    end
-  end)
-
-")
-    (home-page "https://github.com/kigster/colored2")
-    (license license:expat)))
-
-(define-public ruby-rails-failover
-  (package
-    (name "ruby-rails-failover")
-    (version "0.6.5")
-    (source
-      (origin
-        (method url-fetch)
-        (uri (rubygems-uri "rails_failover" version))
-        (sha256
-         (base32
-          "1s8yfpam6qfs2bj596rfwhcgb4pjamg93ijqpa8c5d207sm45a07"))))
-    (build-system ruby-build-system)
-    (arguments
-     `(#:test-target "default"
-       #:tests? #f))    ; cannot load such file -- spec_helper
-    (propagated-inputs
-     `(("ruby-activerecord" ,ruby-activerecord)
-       ("ruby-concurrent-ruby" ,ruby-concurrent)
-       ("ruby-railties" ,ruby-railties)))
-    (native-inputs
-     `(
-       ("ruby-rspec" ,ruby-rspec)
-       ))
-    (synopsis "Failover for ActiveRecord and Redis")
-    (description
-      "Failover for ActiveRecord and Redis")
-    (home-page "https://github.com/discourse/rails_failover")
-    (license license:expat)))
-
-(define-public ruby-regressiontest
- (package
-  (name "ruby-regressiontest")
-  (version "0.0.3")
-  (source
-    (origin
-      (method url-fetch)
-      (uri (rubygems-uri "regressiontest" version))
-      (sha256
-        (base32
-          "03y5ksab6ybd2d586zmihpn2hzvqrxb9pfzh5i6a8f2ivcrfqn9k"))))
-  (build-system ruby-build-system)
-  (propagated-inputs
-    `(("ruby-shoulda" ,ruby-shoulda)))
-  (synopsis
-    "Regression testing for the command line, and library API")
-  (description
-    "Regression testing for the command line, and library API")
-  (home-page
-    "http://github.com/pjotrp/regressiontest")
-  (license license:expat)))
-
-(define-public ruby-lmdb ; note you may need to explicitly use ruby@3.3.8 to run the extension - the guix default
-  (package
-   (name "ruby-lmdb")
-   (version "0.6.5")
-   (source (origin
-            (method url-fetch)
-            (uri (rubygems-uri "lmdb" version))
-            (sha256
-             (base32
-              "094vwmp97av17k9sf8f42i308240a8aikbp3hf1f8wabcy7c7ar2"))))
-   (build-system ruby-build-system)
-   (inputs
-    (list lmdb))
-   (native-inputs
-    `(("ruby-rake" ,ruby-rake)
-       ("ruby-rake-compiler" ,ruby-rake-compiler)
-       ("ruby-rspec" ,ruby-rspec)
-       ("ruby-ruby-memcheck" ,ruby-ruby-memcheck)
-       ))
-   (arguments
-    `(#:tests? #f))
-   (synopsis "lmdb is a Ruby binding to OpenLDAP Lightning MDB.")
-   (description "lmdb is a Ruby binding to OpenLDAP Lightning MDB.")
-   (home-page "https://github.com/doriantaylor/rb-lmdb")
-   (license license:expat))) ;; note that all these license statements need to be checked!
-
-
-(define-public ruby-unicode-types
-  (package
-    (name "ruby-unicode-types")
-    (version "1.10.0")
-    (source
-     (origin
-       (method url-fetch)
-       (uri (rubygems-uri "unicode-types" version))
-       (sha256
-        (base32 "1mif6v3wlfpb69scikpv7i4zq9rhj19px23iym6j8m3wnnh7d2wi"))))
-    (build-system ruby-build-system)
-    (arguments
-     `(#:tests? #f))
-    (synopsis
-     "[Unicode 16.0.0] Determines the very basic type of codepoints (one of: Graphic, Format, Control, Private-use, Surrogate, Noncharacter, Reserved)")
-    (description
-     "[Unicode 16.0.0] Determines the very basic type of codepoints (one of: Graphic,
-Format, Control, Private-use, Surrogate, Noncharacter, Reserved).")
-    (home-page "https://github.com/janlelis/unicode-types")
-    (license license:expat)))
-
-(define-public ruby-sxp
-  (package
-    (name "ruby-sxp")
-    (version "2.0.0")
-    (source
-     (origin
-       (method url-fetch)
-       (uri (rubygems-uri "sxp" version))
-       (sha256
-        (base32 "08a7ha191gdc1n1pwaqgsx133wy1p1g4fchkhr5gx0jannx1p5vr"))))
-    (build-system ruby-build-system)
-    (arguments
-     `(#:tests? #f))
-    (propagated-inputs (list ruby-matrix ruby-rdf))
-    (synopsis
-     "Universal S-expression parser with specific support for Common Lisp, Scheme, and RDF/SPARQL")
-    (description
-     "Universal S-expression parser with specific support for Common Lisp, Scheme, and
-RDF/SPARQL.")
-    (home-page "https://github.com/dryruby/sxp")
-    (license license:expat)))
-
-(define-public ruby-scanf
-  (package
-    (name "ruby-scanf")
-    (version "1.0.0")
-    (source
-     (origin
-       (method url-fetch)
-       (uri (rubygems-uri "scanf" version))
-       (sha256
-        (base32 "000vxsci3zq8m1wl7mmppj7sarznrqlm6v2x2hdfmbxcwpvvfgak"))))
-    (build-system ruby-build-system)
-    (arguments
-     `(#:tests? #f))
-    (synopsis "scanf is an implementation of the C function scanf(3).")
-    (description "scanf is an implementation of the C function scanf(3).")
-    (home-page "https://github.com/ruby/scanf")
-    (license license:expat)))
-
-(define-public ruby-ebnf
-  (package
-    (name "ruby-ebnf")
-    (version "2.6.0")
-    (source
-     (origin
-       (method url-fetch)
-       (uri (rubygems-uri "ebnf" version))
-       (sha256
-        (base32 "0gpnphpp7qcdjh9vrj8bfrb3k54lq7pk7p23w92wr1d8r8ba6ip7"))))
-    (build-system ruby-build-system)
-    (arguments
-     `(#:tests? #f))
-    (propagated-inputs (list ruby-base64
-                             ruby-htmlentities
-                             ruby-rdf
-                             ruby-scanf
-                             ruby-sxp
-                             ruby-unicode-types))
-    (synopsis
-     "EBNF is a Ruby parser for W3C EBNF and a parser generator for PEG and LL(1). Also includes parsing modes for ISO EBNF and ABNF.")
-    (description
-     "EBNF is a Ruby parser for W3C EBNF and a parser generator for PEG and LL(1).
-Also includes parsing modes for ISO EBNF and ABNF.")
-    (home-page "https://github.com/dryruby/ebnf")
-    (license license:expat)))
-
-(define-public ruby-bigdecimal
-  (package
-    (name "ruby-bigdecimal")
-    (version "3.2.2")
-    (source
-     (origin
-       (method url-fetch)
-       (uri (rubygems-uri "bigdecimal" version))
-       (sha256
-        (base32 "1p2szbr4jdvmwaaj2kxlbv1rp0m6ycbgfyp0kjkkkswmniv5y21r"))))
-    (build-system ruby-build-system)
-    (arguments
-     `(#:tests? #f))
-    (synopsis
-     "This library provides arbitrary-precision decimal floating-point number class.")
-    (description
-     "This library provides arbitrary-precision decimal floating-point number class.")
-    (home-page "https://github.com/ruby/bigdecimal")
-    (license license:expat)))
-
-(define-public ruby-rdf-turtle
-  (package
-    (name "ruby-rdf-turtle")
-    (version "3.3.1")
-    (source
-     (origin
-       (method url-fetch)
-       (uri (rubygems-uri "rdf-turtle" version))
-       (sha256
-        (base32 "0irnlxnrkdqsk5wkjj51rwyj59lcj4j8y24s9yxplbksjy4vxwxs"))))
-    (build-system ruby-build-system)
-    (arguments
-     `(#:tests? #f))
-    (propagated-inputs (list ruby-base64 ruby-bigdecimal ruby-ebnf ruby-rdf))
-    (synopsis
-     "RDF::Turtle is an Turtle reader/writer for the RDF.rb library suite.")
-    (description
-     "RDF::Turtle is an Turtle reader/writer for the RDF.rb library suite.")
-    (home-page "https://github.com/ruby-rdf/rdf-turtle")
-    (license license:unlicense)))
-
-(define-public ruby-readline
-  (package
-    (name "ruby-readline")
-    (version "0.0.4")
-    (source
-     (origin
-       (method url-fetch)
-       (uri (rubygems-uri "readline" version))
-       (sha256
-        (base32 "0shxkj3kbwl43rpg490k826ibdcwpxiymhvjnsc85fg2ggqywf31"))))
-    (build-system ruby-build-system)
-    (arguments
-     `(#:tests? #f))
-    (propagated-inputs (list ruby-reline))
-    (synopsis
-     "This is just a loader for \"readline\". If Ruby has the \"readline-ext\" gem
-that is a native extension, this gem will load it. If Ruby does not have
-the \"readline-ext\" gem this gem will load \"reline\", a library that is
-compatible with the \"readline-ext\" gem and implemented in pure Ruby.
-")
-    (description
-     "This is just a loader for \"readline\".  If Ruby has the \"readline-ext\" gem that
-is a native extension, this gem will load it.  If Ruby does not have the
-\"readline-ext\" gem this gem will load \"reline\", a library that is compatible
-with the \"readline-ext\" gem and implemented in pure Ruby.")
-    (home-page "https://github.com/ruby/readline")
-    (license license:expat)))
-
-(define-public ruby-ostruct
-  (package
-    (name "ruby-ostruct")
-    (version "0.6.3")
-    (source
-     (origin
-       (method url-fetch)
-       (uri (rubygems-uri "ostruct" version))
-       (sha256
-        (base32 "04nrir9wdpc4izqwqbysxyly8y7hsfr4fsv69rw91lfi9d5fv8lm"))))
-    (build-system ruby-build-system)
-    (arguments
-     `(#:tests? #f))
-    (synopsis "Class to build custom data structures, similar to a Hash.")
-    (description "Class to build custom data structures, similar to a Hash.")
-    (home-page "https://github.com/ruby/ostruct")
-    (license license:expat)))
-
-(define-public ruby-logger
-  (package
-    (name "ruby-logger")
-    (version "1.7.0")
-    (source
-     (origin
-       (method url-fetch)
-       (uri (rubygems-uri "logger" version))
-       (sha256
-        (base32 "00q2zznygpbls8asz5knjvvj2brr3ghmqxgr83xnrdj4rk3xwvhr"))))
-    (build-system ruby-build-system)
-    (arguments
-     `(#:tests? #f))
-    (synopsis "Provides a simple logging utility for outputting messages.")
-    (description
-     "This package provides a simple logging utility for outputting messages.")
-    (home-page "https://github.com/ruby/logger")
-    (license license:expat)))
-
-(define-public ruby-bcp47-spec
-  (package
-    (name "ruby-bcp47-spec")
-    (version "0.2.1")
-    (source
-     (origin
-       (method url-fetch)
-       (uri (rubygems-uri "bcp47_spec" version))
-       (sha256
-        (base32 "043qld01c163yc7fxlar3046dac2833rlcg44jbbs9n1jvgjxmiz"))))
-    (build-system ruby-build-system)
-    (arguments
-     `(#:tests? #f))
-    (synopsis "A subset of the BCP 47 spec.")
-    (description "This package provides a subset of the BCP 47 spec.")
-    (home-page "https://github.com/dadah89/bcp47_spec")
-    (license license:expat)))
-
-(define-public ruby-rdf
-  (package
-    (name "ruby-rdf")
-    (version "3.3.4")
-    (source
-     (origin
-       (method url-fetch)
-       (uri (rubygems-uri "rdf" version))
-       (sha256
-        (base32 "1har1346p7jwrs89d5w1gv98jk2nh3cwkdyvkzm2nkjv3s1a0zx7"))))
-    (build-system ruby-build-system)
-    (propagated-inputs (list ruby-bcp47-spec
-                             ruby-bigdecimal
-                             ruby-link-header
-                             ruby-logger
-                             ruby-ostruct
-                             ruby-readline))
-    (arguments
-     `(#:tests? #f))
-    (synopsis
-     "RDF.rb is a pure-Ruby library for working with Resource Description Framework (RDF) data.")
-    (description
-     "RDF.rb is a pure-Ruby library for working with Resource Description Framework
-(RDF) data.")
-    (home-page "https://github.com/ruby-rdf/rdf")
-    (license license:unlicense)))
-
-(define-public ruby-rdf-raptor
-  (let ((commit "6392cea"))
-  (package
-    (name "ruby-rdf-raptor")
-    (version "3.3.0")
-    (source (origin
-             (method git-fetch)
-             (uri (git-reference
-                   (url "https://github.com/ruby-rdf/rdf-raptor")
-                   (commit commit)))
-             (file-name (string-append name "-" version "-checkout"))
-             (sha256
-              (base32
-            "1mqdddn8s3j0j7gqw0v34jw5cxg2mkka1x9fx46vy38v15m8bbn1"))))
-    (build-system ruby-build-system)
-    (propagated-inputs (list ruby-ffi ruby-rdf raptor2))
-    (arguments
-     `(#:tests? #f))
-    (synopsis
-     "RDF.rb plugin for parsing/serializing NTriples, RDF/XML, Turtle and RDFa data using the Raptor RDF Parser library.")
-    (description
-     "RDF.rb plugin for parsing/serializing NTriples, RDF/XML, Turtle and RDFa data
-using the Raptor RDF Parser library.")
-    (home-page "https://github.com/ruby-rdf/rdf-raptor")
-    (license license:unlicense))))
diff --git a/gn/packages/rust-crates.scm b/gn/packages/rust-crates.scm
new file mode 100644
index 0000000..e9945aa
--- /dev/null
+++ b/gn/packages/rust-crates.scm
@@ -0,0 +1,525 @@
+(define-module (gn packages rust-crates)
+  #:use-module (guix build-system cargo)
+  #:export (lookup-cargo-inputs))
+
+(define rust-adler2-2.0.1
+  (crate-source "adler2" "2.0.1"
+                "1ymy18s9hs7ya1pjc9864l30wk8p2qfqdi7mhhcc5nfakxbij09j"))
+
+(define rust-aho-corasick-1.1.4
+  (crate-source "aho-corasick" "1.1.4"
+                "00a32wb2h07im3skkikc495jvncf62jl6s96vwc7bhi70h9imlyx"))
+
+(define rust-anstream-0.6.21
+  (crate-source "anstream" "0.6.21"
+                "0jjgixms4qjj58dzr846h2s29p8w7ynwr9b9x6246m1pwy0v5ma3"))
+
+(define rust-anstyle-1.0.13
+  (crate-source "anstyle" "1.0.13"
+                "0y2ynjqajpny6q0amvfzzgw0gfw3l47z85km4gvx87vg02lcr4ji"))
+
+(define rust-anstyle-parse-0.2.7
+  (crate-source "anstyle-parse" "0.2.7"
+                "1hhmkkfr95d462b3zf6yl2vfzdqfy5726ya572wwg8ha9y148xjf"))
+
+(define rust-anstyle-query-1.1.5
+  (crate-source "anstyle-query" "1.1.5"
+                "1p6shfpnbghs6jsa0vnqd8bb8gd7pjd0jr7w0j8jikakzmr8zi20"))
+
+(define rust-anstyle-wincon-3.0.11
+  (crate-source "anstyle-wincon" "3.0.11"
+                "0zblannm70sk3xny337mz7c6d8q8i24vhbqi42ld8v7q1wjnl7i9"))
+
+(define rust-anyhow-1.0.101
+  (crate-source "anyhow" "1.0.101"
+                "1skmg90fnjnlgs3vl7bksw7036d3rqwqj20n2fxd2ppg67p0y3jz"))
+
+(define rust-arrayvec-0.5.2
+  (crate-source "arrayvec" "0.5.2"
+                "12q6hn01x5435bprwlb7w9m7817dyfq55yrl4psygr78bp32zdi3"))
+
+(define rust-autocfg-1.5.0
+  (crate-source "autocfg" "1.5.0"
+                "1s77f98id9l4af4alklmzq46f21c980v13z2r1pcxx6bqgw0d1n0"))
+
+(define rust-bitflags-1.3.2
+  (crate-source "bitflags" "1.3.2"
+                "12ki6w8gn1ldq7yz9y680llwk5gmrhrzszaa17g1sbrw2r2qvwxy"))
+
+(define rust-bitflags-2.11.0
+  (crate-source "bitflags" "2.11.0"
+                "1bwjibwry5nfwsfm9kjg2dqx5n5nja9xymwbfl6svnn8jsz6ff44"))
+
+(define rust-boomphf-0.5.9
+  (crate-source "boomphf" "0.5.9"
+                "0braniw72g9yq5006sfgc1g8d4317bb524c694jw6nggizrvg3sf"))
+
+(define rust-bstr-0.2.17
+  (crate-source "bstr" "0.2.17"
+                "08rjbhysy6gg27db2h3pnhvr2mlr5vkj797i9625kwg8hgrnjdds"))
+
+(define rust-bytemuck-1.25.0
+  (crate-source "bytemuck" "1.25.0"
+                "1v1z32igg9zq49phb3fra0ax5r2inf3aw473vldnm886sx5vdvy8"))
+
+(define rust-bytemuck-derive-1.10.2
+  (crate-source "bytemuck_derive" "1.10.2"
+                "1zvmjmw1sdmx9znzm4dpbb2yvz9vyim8w6gp4z256l46qqdvvazr"))
+
+(define rust-byteorder-1.5.0
+  (crate-source "byteorder" "1.5.0"
+                "0jzncxyf404mwqdbspihyzpkndfgda450l0893pz5xj685cg5l0z"))
+
+(define rust-cc-1.2.56
+  (crate-source "cc" "1.2.56"
+                "1chvh9g2izhqad7vzy4cc7xpdljdvqpsr6x6hv1hmyqv3mlkbgxf"))
+
+(define rust-cfg-if-1.0.4
+  (crate-source "cfg-if" "1.0.4"
+                "008q28ajc546z5p2hcwdnckmg0hia7rnx52fni04bwqkzyrghc4k"))
+
+(define rust-clap-4.5.59
+  (crate-source "clap" "4.5.59"
+                "16b4kgj909yyshz9kj7nkalbyi46yz1lrhqha54wbbn32x6zgjn5"))
+
+(define rust-clap-builder-4.5.59
+  (crate-source "clap_builder" "4.5.59"
+                "094fc76nsq3v52r1a9rbwix22cqnda8p2wr2a24j302v0r2sl39p"))
+
+(define rust-clap-derive-4.5.55
+  (crate-source "clap_derive" "4.5.55"
+                "1r949xis3jmhzh387smd70vc8a3b9734ck3g5ahg59a63bd969x9"))
+
+(define rust-clap-lex-1.0.0
+  (crate-source "clap_lex" "1.0.0"
+                "0c8888qi1l9sayqlv666h8s0yxn2qc6jr88v1zagk43mpjjjx0is"))
+
+(define rust-colorchoice-1.0.4
+  (crate-source "colorchoice" "1.0.4"
+                "0x8ymkz1xr77rcj1cfanhf416pc4v681gmkc9dzb3jqja7f62nxh"))
+
+(define rust-crc32fast-1.5.0
+  (crate-source "crc32fast" "1.5.0"
+                "04d51liy8rbssra92p0qnwjw8i9rm9c4m3bwy19wjamz1k4w30cl"))
+
+(define rust-crossbeam-channel-0.5.15
+  (crate-source "crossbeam-channel" "0.5.15"
+                "1cicd9ins0fkpfgvz9vhz3m9rpkh6n8d3437c3wnfsdkd3wgif42"))
+
+(define rust-crossbeam-deque-0.8.6
+  (crate-source "crossbeam-deque" "0.8.6"
+                "0l9f1saqp1gn5qy0rxvkmz4m6n7fc0b3dbm6q1r5pmgpnyvi3lcx"))
+
+(define rust-crossbeam-epoch-0.9.18
+  (crate-source "crossbeam-epoch" "0.9.18"
+                "03j2np8llwf376m3fxqx859mgp9f83hj1w34153c7a9c7i5ar0jv"))
+
+(define rust-crossbeam-utils-0.8.21
+  (crate-source "crossbeam-utils" "0.8.21"
+                "0a3aa2bmc8q35fb67432w16wvi54sfmb69rk9h5bhd18vw0c99fh"))
+
+(define rust-either-1.15.0
+  (crate-source "either" "1.15.0"
+                "069p1fknsmzn9llaizh77kip0pqmcwpdsykv2x30xpjyija5gis8"))
+
+(define rust-env-filter-1.0.0
+  (crate-source "env_filter" "1.0.0"
+                "13rhwy5arjn626a0z3hvvkpf9w9pnll14c35vscyqx3jwp43q73s"))
+
+(define rust-env-logger-0.11.9
+  (crate-source "env_logger" "0.11.9"
+                "13913sqpnhv741z5ixmcy5j3nnml53gmsllnhajjkx2ili7fxnmj"))
+
+(define rust-equivalent-1.0.2
+  (crate-source "equivalent" "1.0.2"
+                "03swzqznragy8n0x31lqc78g2af054jwivp7lkrbrc0khz74lyl7"))
+
+(define rust-errno-0.3.14
+  (crate-source "errno" "0.3.14"
+                "1szgccmh8vgryqyadg8xd58mnwwicf39zmin3bsn63df2wbbgjir"))
+
+(define rust-find-msvc-tools-0.1.9
+  (crate-source "find-msvc-tools" "0.1.9"
+                "10nmi0qdskq6l7zwxw5g56xny7hb624iki1c39d907qmfh3vrbjv"))
+
+(define rust-flate2-1.1.9
+  (crate-source "flate2" "1.1.9"
+                "0g2pb7cxnzcbzrj8bw4v6gpqqp21aycmf6d84rzb6j748qkvlgw4"))
+
+(define rust-fnv-1.0.7
+  (crate-source "fnv" "1.0.7"
+                "1hc2mcqha06aibcaza94vbi81j6pr9a1bbxrxjfhc91zin8yr7iz"))
+
+(define rust-gfa-0.10.1
+  (crate-source "gfa" "0.10.1"
+                "1x996rpfnflgi2j4dgaj5sdxdbf24zfm9d2ha0zy8aid0cd60cln"))
+
+(define rust-handlegraph-0.7.0-alpha.9
+  (crate-source "handlegraph" "0.7.0-alpha.9"
+                "1frlcdwhycjvizb0gfb0v36vxjdi0jxagl2l2v6dzdjxpaawv9rs"))
+
+(define rust-hashbrown-0.16.1
+  (crate-source "hashbrown" "0.16.1"
+                "004i3njw38ji3bzdp9z178ba9x3k0c1pgy8x69pj7yfppv4iq7c4"))
+
+(define rust-heck-0.5.0
+  (crate-source "heck" "0.5.0"
+                "1sjmpsdl8czyh9ywl3qcsfsq9a307dg4ni2vnlwgnzzqhc4y0113"))
+
+(define rust-indexmap-2.13.0
+  (crate-source "indexmap" "2.13.0"
+                "05qh5c4h2hrnyypphxpwflk45syqbzvqsvvyxg43mp576w2ff53p"))
+
+(define rust-is-terminal-polyfill-1.70.2
+  (crate-source "is_terminal_polyfill" "1.70.2"
+                "15anlc47sbz0jfs9q8fhwf0h3vs2w4imc030shdnq54sny5i7jx6"))
+
+(define rust-jiff-0.2.20
+  (crate-source "jiff" "0.2.20"
+                "0hv59kcqj5sc0jgk4q7yrq5dp8yb3qlan98qk3s36sq9ribc6ry8"))
+
+(define rust-jiff-static-0.2.20
+  (crate-source "jiff-static" "0.2.20"
+                "1rcvbp9aj8ll4ljxcgzq4l2h9idmkb0v6mdvf3r3i5r64m1np57p"))
+
+(define rust-lazy-static-1.5.0
+  (crate-source "lazy_static" "1.5.0"
+                "1zk6dqqni0193xg6iijh7i3i44sryglwgvx20spdvwk3r6sbrlmv"))
+
+(define rust-lexical-core-0.7.6
+  (crate-source "lexical-core" "0.7.6"
+                "1zjzab1fnaw4kj6ixyrskp4dyz761gdcab07m4bkvlk1l4mcc1v6"))
+
+(define rust-libc-0.2.182
+  (crate-source "libc" "0.2.182"
+                "04k1w1mq9f4cxv520dbr5xw1i7xkbc9fcrvaggyjy25jdkdvl038"))
+
+(define rust-libz-sys-1.1.23
+  ;; TODO: Check bundled sources.
+  (crate-source "libz-sys" "1.1.23"
+                "1xy0l46gmhfyk28r9pm7njl0h7dh8l2vpiqw67kn043pyfxiil8m"))
+
+(define rust-linux-raw-sys-0.11.0
+  ;; TODO: Check bundled sources.
+  (crate-source "linux-raw-sys" "0.11.0"
+                "0fghx0nn8nvbz5yzgizfcwd6ap2pislp68j8c1bwyr6sacxkq7fz"))
+
+(define rust-log-0.4.29
+  (crate-source "log" "0.4.29"
+                "15q8j9c8g5zpkcw0hnd6cf2z7fxqnvsjh3rw5mv5q10r83i34l2y"))
+
+(define rust-memchr-2.8.0
+  (crate-source "memchr" "2.8.0"
+                "0y9zzxcqxvdqg6wyag7vc3h0blhdn7hkq164bxyx2vph8zs5ijpq"))
+
+(define rust-memmap-0.7.0
+  (crate-source "memmap" "0.7.0"
+                "0ns7kkd1h4pijdkwfvw4qlbbmqmlmzwlq3g2676dcl5vwyazv1b5"))
+
+(define rust-miniz-oxide-0.8.9
+  (crate-source "miniz_oxide" "0.8.9"
+                "05k3pdg8bjjzayq3rf0qhpirq9k37pxnasfn4arbs17phqn6m9qz"))
+
+(define rust-nom-5.1.3
+  (crate-source "nom" "5.1.3"
+                "0jyxc4d3pih60pp8hvzpg5ajh16s273cpnsdpzp04qv7g8w9m588"))
+
+(define rust-num-traits-0.2.19
+  (crate-source "num-traits" "0.2.19"
+                "0h984rhdkkqd4ny9cif7y2azl3xdfb7768hb9irhpsch4q3gq787"))
+
+(define rust-once-cell-polyfill-1.70.2
+  (crate-source "once_cell_polyfill" "1.70.2"
+                "1zmla628f0sk3fhjdjqzgxhalr2xrfna958s632z65bjsfv8ljrq"))
+
+(define rust-pkg-config-0.3.32
+  (crate-source "pkg-config" "0.3.32"
+                "0k4h3gnzs94sjb2ix6jyksacs52cf1fanpwsmlhjnwrdnp8dppby"))
+
+(define rust-portable-atomic-1.13.1
+  (crate-source "portable-atomic" "1.13.1"
+                "0j8vlar3n5acyigq8q6f4wjx3k3s5yz0rlpqrv76j73gi5qr8fn3"))
+
+(define rust-portable-atomic-util-0.2.5
+  (crate-source "portable-atomic-util" "0.2.5"
+                "1xcm0ia8756k6hdgafx4g3lx3fw0hvz2zqswq7c2sy58gxnvk7bs"))
+
+(define rust-proc-macro2-1.0.106
+  (crate-source "proc-macro2" "1.0.106"
+                "0d09nczyaj67x4ihqr5p7gxbkz38gxhk4asc0k8q23g9n85hzl4g"))
+
+(define rust-quote-1.0.44
+  (crate-source "quote" "1.0.44"
+                "1r7c7hxl66vz3q9qizgjhy77pdrrypqgk4ghc7260xvvfb7ypci1"))
+
+(define rust-rand-core-0.6.4
+  (crate-source "rand_core" "0.6.4"
+                "0b4j2v4cb5krak1pv6kakv4sz6xcwbrmy2zckc32hsigbrwy82zc"))
+
+(define rust-rayon-1.11.0
+  (crate-source "rayon" "1.11.0"
+                "13x5fxb7rn4j2yw0cr26n7782jkc7rjzmdkg42qxk3xz0p8033rn"))
+
+(define rust-rayon-core-1.13.0
+  (crate-source "rayon-core" "1.13.0"
+                "14dbr0sq83a6lf1rfjq5xdpk5r6zgzvmzs5j6110vlv2007qpq92"))
+
+(define rust-regex-1.12.3
+  (crate-source "regex" "1.12.3"
+                "0xp2q0x7ybmpa5zlgaz00p8zswcirj9h8nry3rxxsdwi9fhm81z1"))
+
+(define rust-regex-automata-0.1.10
+  (crate-source "regex-automata" "0.1.10"
+                "0ci1hvbzhrfby5fdpf4ganhf7kla58acad9i1ff1p34dzdrhs8vc"))
+
+(define rust-regex-automata-0.4.14
+  (crate-source "regex-automata" "0.4.14"
+                "13xf7hhn4qmgfh784llcp2kzrvljd13lb2b1ca0mwnf15w9d87bf"))
+
+(define rust-regex-syntax-0.8.9
+  (crate-source "regex-syntax" "0.8.9"
+                "0k0a47r1rcl794wj8a948niakbg081s5pp5nlgcbmmr2iy3qfs59"))
+
+(define rust-rustc-hash-2.1.1
+  (crate-source "rustc-hash" "2.1.1"
+                "03gz5lvd9ghcwsal022cgkq67dmimcgdjghfb5yb5d352ga06xrm"))
+
+(define rust-rustix-1.1.3
+  (crate-source "rustix" "1.1.3"
+                "0d0z2zcw4rwzni1hm8snw8xdxwwrij336m31c4ghq66cghj9wv0l"))
+
+(define rust-ryu-1.0.23
+  (crate-source "ryu" "1.0.23"
+                "0zs70sg00l2fb9jwrf6cbkdyscjs53anrvai2hf7npyyfi5blx4p"))
+
+(define rust-serde-core-1.0.228
+  (crate-source "serde_core" "1.0.228"
+                "1bb7id2xwx8izq50098s5j2sqrrvk31jbbrjqygyan6ask3qbls1"))
+
+(define rust-serde-derive-1.0.228
+  (crate-source "serde_derive" "1.0.228"
+                "0y8xm7fvmr2kjcd029g9fijpndh8csv5m20g4bd76w8qschg4h6m"))
+
+(define rust-shlex-1.3.0
+  (crate-source "shlex" "1.3.0"
+                "0r1y6bv26c1scpxvhg2cabimrmwgbp4p3wy6syj9n0c4s3q2znhg"))
+
+(define rust-simd-adler32-0.3.8
+  (crate-source "simd-adler32" "0.3.8"
+                "18lx2gdgislabbvlgw5q3j5ssrr77v8kmkrxaanp3liimp2sc873"))
+
+(define rust-static-assertions-1.1.0
+  (crate-source "static_assertions" "1.1.0"
+                "0gsl6xmw10gvn3zs1rv99laj5ig7ylffnh71f9l34js4nr4r7sx2"))
+
+(define rust-strsim-0.11.1
+  (crate-source "strsim" "0.11.1"
+                "0kzvqlw8hxqb7y598w1s0hxlnmi84sg5vsipp3yg5na5d1rvba3x"))
+
+(define rust-succinct-0.5.2
+  (crate-source "succinct" "0.5.2"
+                "0654c9gq50x7djyf25zbzz3d2pc4x3z21wmjj3qbr6d9h4hbd63p"))
+
+(define rust-syn-2.0.116
+  (crate-source "syn" "2.0.116"
+                "1jv9pk48qmhn6yrdfl3lngy5i74wg7gcx13gfhvm4s8q0p3j9x1x"))
+
+(define rust-terminal-size-0.4.3
+  (crate-source "terminal_size" "0.4.3"
+                "1l7cicmz49c0cyskfp5a389rsai649xi7y032v73475ikjbwpf30"))
+
+(define rust-unicode-ident-1.0.24
+  (crate-source "unicode-ident" "1.0.24"
+                "0xfs8y1g7syl2iykji8zk5hgfi5jw819f5zsrbaxmlzwsly33r76"))
+
+(define rust-utf8parse-0.2.2
+  (crate-source "utf8parse" "0.2.2"
+                "088807qwjq46azicqwbhlmzwrbkz7l4hpw43sdkdyyk524vdxaq6"))
+
+(define rust-vcpkg-0.2.15
+  (crate-source "vcpkg" "0.2.15"
+                "09i4nf5y8lig6xgj3f7fyrvzd3nlaw4znrihw8psidvv5yk4xkdc"))
+
+(define rust-version-check-0.9.5
+  (crate-source "version_check" "0.9.5"
+                "0nhhi4i5x89gm911azqbn7avs9mdacw2i3vcz3cnmz3mv4rqz4hb"))
+
+(define rust-winapi-0.3.9
+  (crate-source "winapi" "0.3.9"
+                "06gl025x418lchw1wxj64ycr7gha83m44cjr5sarhynd9xkrm0sw"))
+
+(define rust-winapi-i686-pc-windows-gnu-0.4.0
+  (crate-source "winapi-i686-pc-windows-gnu" "0.4.0"
+                "1dmpa6mvcvzz16zg6d5vrfy4bxgg541wxrcip7cnshi06v38ffxc"
+                #:snippet '(delete-file-recursively "lib")))
+
+(define rust-winapi-x86-64-pc-windows-gnu-0.4.0
+  (crate-source "winapi-x86_64-pc-windows-gnu" "0.4.0"
+                "0gqq64czqb64kskjryj8isp62m2sgvx25yyj3kpc2myh85w24bki"
+                #:snippet '(delete-file-recursively "lib")))
+
+(define rust-windows-aarch64-gnullvm-0.53.1
+  (crate-source "windows_aarch64_gnullvm" "0.53.1"
+                "0lqvdm510mka9w26vmga7hbkmrw9glzc90l4gya5qbxlm1pl3n59"
+                #:snippet '(delete-file-recursively "lib")))
+
+(define rust-windows-aarch64-msvc-0.53.1
+  (crate-source "windows_aarch64_msvc" "0.53.1"
+                "01jh2adlwx043rji888b22whx4bm8alrk3khjpik5xn20kl85mxr"
+                #:snippet '(delete-file-recursively "lib")))
+
+(define rust-windows-i686-gnu-0.53.1
+  (crate-source "windows_i686_gnu" "0.53.1"
+                "18wkcm82ldyg4figcsidzwbg1pqd49jpm98crfz0j7nqd6h6s3ln"
+                #:snippet '(delete-file-recursively "lib")))
+
+(define rust-windows-i686-gnullvm-0.53.1
+  (crate-source "windows_i686_gnullvm" "0.53.1"
+                "030qaxqc4salz6l4immfb6sykc6gmhyir9wzn2w8mxj8038mjwzs"
+                #:snippet '(delete-file-recursively "lib")))
+
+(define rust-windows-i686-msvc-0.53.1
+  (crate-source "windows_i686_msvc" "0.53.1"
+                "1hi6scw3mn2pbdl30ji5i4y8vvspb9b66l98kkz350pig58wfyhy"
+                #:snippet '(delete-file-recursively "lib")))
+
+(define rust-windows-link-0.2.1
+  (crate-source "windows-link" "0.2.1"
+                "1rag186yfr3xx7piv5rg8b6im2dwcf8zldiflvb22xbzwli5507h"))
+
+(define rust-windows-sys-0.60.2
+  ;; TODO: Check bundled sources.
+  (crate-source "windows-sys" "0.60.2"
+                "1jrbc615ihqnhjhxplr2kw7rasrskv9wj3lr80hgfd42sbj01xgj"))
+
+(define rust-windows-sys-0.61.2
+  ;; TODO: Check bundled sources.
+  (crate-source "windows-sys" "0.61.2"
+                "1z7k3y9b6b5h52kid57lvmvm05362zv1v8w0gc7xyv5xphlp44xf"))
+
+(define rust-windows-targets-0.53.5
+  (crate-source "windows-targets" "0.53.5"
+                "1wv9j2gv3l6wj3gkw5j1kr6ymb5q6dfc42yvydjhv3mqa7szjia9"))
+
+(define rust-windows-x86-64-gnu-0.53.1
+  (crate-source "windows_x86_64_gnu" "0.53.1"
+                "16d4yiysmfdlsrghndr97y57gh3kljkwhfdbcs05m1jasz6l4f4w"
+                #:snippet '(delete-file-recursively "lib")))
+
+(define rust-windows-x86-64-gnullvm-0.53.1
+  (crate-source "windows_x86_64_gnullvm" "0.53.1"
+                "1qbspgv4g3q0vygkg8rnql5c6z3caqv38japiynyivh75ng1gyhg"
+                #:snippet '(delete-file-recursively "lib")))
+
+(define rust-windows-x86-64-msvc-0.53.1
+  (crate-source "windows_x86_64_msvc" "0.53.1"
+                "0l6npq76vlq4ksn4bwsncpr8508mk0gmznm6wnhjg95d19gzzfyn"
+                #:snippet '(delete-file-recursively "lib")))
+
+(define rust-wyhash-0.5.0
+  (crate-source "wyhash" "0.5.0"
+                "15f26hvx6nyp4d6iswha7rm3psidxa2k2iab1f1aqgsyq9iy3xms"))
+
+(define-cargo-inputs lookup-cargo-inputs
+                     (gfaffix =>
+                              (list rust-adler2-2.0.1
+                                    rust-aho-corasick-1.1.4
+                                    rust-anstream-0.6.21
+                                    rust-anstyle-1.0.13
+                                    rust-anstyle-parse-0.2.7
+                                    rust-anstyle-query-1.1.5
+                                    rust-anstyle-wincon-3.0.11
+                                    rust-anyhow-1.0.101
+                                    rust-arrayvec-0.5.2
+                                    rust-autocfg-1.5.0
+                                    rust-bitflags-1.3.2
+                                    rust-bitflags-2.11.0
+                                    rust-boomphf-0.5.9
+                                    rust-bstr-0.2.17
+                                    rust-bytemuck-1.25.0
+                                    rust-bytemuck-derive-1.10.2
+                                    rust-byteorder-1.5.0
+                                    rust-cc-1.2.56
+                                    rust-cfg-if-1.0.4
+                                    rust-clap-4.5.59
+                                    rust-clap-builder-4.5.59
+                                    rust-clap-derive-4.5.55
+                                    rust-clap-lex-1.0.0
+                                    rust-colorchoice-1.0.4
+                                    rust-crc32fast-1.5.0
+                                    rust-crossbeam-channel-0.5.15
+                                    rust-crossbeam-deque-0.8.6
+                                    rust-crossbeam-epoch-0.9.18
+                                    rust-crossbeam-utils-0.8.21
+                                    rust-either-1.15.0
+                                    rust-env-filter-1.0.0
+                                    rust-env-logger-0.11.9
+                                    rust-equivalent-1.0.2
+                                    rust-errno-0.3.14
+                                    rust-find-msvc-tools-0.1.9
+                                    rust-flate2-1.1.9
+                                    rust-fnv-1.0.7
+                                    rust-gfa-0.10.1
+                                    rust-handlegraph-0.7.0-alpha.9
+                                    rust-hashbrown-0.16.1
+                                    rust-heck-0.5.0
+                                    rust-indexmap-2.13.0
+                                    rust-is-terminal-polyfill-1.70.2
+                                    rust-jiff-0.2.20
+                                    rust-jiff-static-0.2.20
+                                    rust-lazy-static-1.5.0
+                                    rust-lexical-core-0.7.6
+                                    rust-libc-0.2.182
+                                    rust-libz-sys-1.1.23
+                                    rust-linux-raw-sys-0.11.0
+                                    rust-log-0.4.29
+                                    rust-memchr-2.8.0
+                                    rust-memmap-0.7.0
+                                    rust-miniz-oxide-0.8.9
+                                    rust-nom-5.1.3
+                                    rust-num-traits-0.2.19
+                                    rust-once-cell-polyfill-1.70.2
+                                    rust-pkg-config-0.3.32
+                                    rust-portable-atomic-1.13.1
+                                    rust-portable-atomic-util-0.2.5
+                                    rust-proc-macro2-1.0.106
+                                    rust-quote-1.0.44
+                                    rust-rand-core-0.6.4
+                                    rust-rayon-1.11.0
+                                    rust-rayon-core-1.13.0
+                                    rust-regex-1.12.3
+                                    rust-regex-automata-0.1.10
+                                    rust-regex-automata-0.4.14
+                                    rust-regex-syntax-0.8.9
+                                    rust-rustc-hash-2.1.1
+                                    rust-rustix-1.1.3
+                                    rust-ryu-1.0.23
+                                    rust-serde-core-1.0.228
+                                    rust-serde-derive-1.0.228
+                                    rust-shlex-1.3.0
+                                    rust-simd-adler32-0.3.8
+                                    rust-static-assertions-1.1.0
+                                    rust-strsim-0.11.1
+                                    rust-succinct-0.5.2
+                                    rust-syn-2.0.116
+                                    rust-terminal-size-0.4.3
+                                    rust-unicode-ident-1.0.24
+                                    rust-utf8parse-0.2.2
+                                    rust-vcpkg-0.2.15
+                                    rust-version-check-0.9.5
+                                    rust-winapi-0.3.9
+                                    rust-winapi-i686-pc-windows-gnu-0.4.0
+                                    rust-winapi-x86-64-pc-windows-gnu-0.4.0
+                                    rust-windows-link-0.2.1
+                                    rust-windows-sys-0.60.2
+                                    rust-windows-sys-0.61.2
+                                    rust-windows-targets-0.53.5
+                                    rust-windows-aarch64-gnullvm-0.53.1
+                                    rust-windows-aarch64-msvc-0.53.1
+                                    rust-windows-i686-gnu-0.53.1
+                                    rust-windows-i686-gnullvm-0.53.1
+                                    rust-windows-i686-msvc-0.53.1
+                                    rust-windows-x86-64-gnu-0.53.1
+                                    rust-windows-x86-64-gnullvm-0.53.1
+                                    rust-windows-x86-64-msvc-0.53.1
+                                    rust-wyhash-0.5.0)))
diff --git a/gn/packages/sambamba.scm b/gn/packages/sambamba.scm
index e5623d4..cc15f77 100644
--- a/gn/packages/sambamba.scm
+++ b/gn/packages/sambamba.scm
@@ -19,158 +19,3 @@
   #:use-module (gnu packages tls)
   #:use-module (gn packages shell)
   #:use-module (srfi srfi-1))
-
-
-(define-public htslib
-  (package
-    (name "htslib")
-    (version "1.11-codecs")
-    (source (origin
-              (method url-fetch)
-              (uri (string-append
-                    "https://github.com/samtools/htslib/releases/download/"
-                    version "/htslib-" version ".tar.bz2"))
-              (sha256
-               (base32
-                "1mrq4mihzx37yqhj3sfz6da6mw49niia808bzsw2gkkgmadxvyng"))))
-    (build-system gnu-build-system)
-    ;; Let htslib translate "gs://" and "s3://" to regular https links with
-    ;; "--enable-gcs" and "--enable-s3". For these options to work, we also
-    ;; need to set "--enable-libcurl".
-    (arguments
-     `(#:configure-flags '("--enable-gcs"
-                           "--enable-libcurl"
-                           "--enable-s3"
-                           "--enable-lzma"
-                           "--enable-bz2")))
-    (inputs
-     `(("curl" ,curl)
-       ("openssl" ,openssl)
-       ("xz" ,xz)          ; for liblzma codec
-       ("bzip2" ,bzip2)))  ; for libz2 codec
-    ;; This is referred to in the pkg-config file as a required library.
-    (propagated-inputs
-     `(("zlib" ,zlib)))
-    (native-inputs
-     `(("perl" ,perl)))
-    (home-page "https://www.htslib.org")
-    (synopsis "C library for reading/writing high-throughput sequencing data")
-    (description
-     "HTSlib is a C library for reading/writing high-throughput sequencing
-data.  It also provides the @command{bgzip}, @command{htsfile}, and
-@command{tabix} utilities.")
-    ;; Files under cram/ are released under the modified BSD license;
-    ;; the rest is released under the Expat license
-    (license (list license:expat license:bsd-3))))
-
-
-(define-public sambamba
-  (let ((commit "7cff06533b539a99b4e0db681fb573214d63aae2"))
-    (package
-      (name "sambamba")
-      (version (string-append "0.6.7-pre1-" (string-take commit 7)))
-      (source (origin
-        (method git-fetch)
-        (uri (git-reference
-              (url "https://github.com/pjotrp/sambamba.git")
-              (commit commit)))
-        (file-name (string-append name "-" version "-checkout"))
-        (sha256
-         (base32
-          "11k2xqgmbvxwki569439kvzf2b0cqy2x21kbgjijwvpqk9j8czx4"))))
-      (build-system gnu-build-system)
-      (outputs '("out"     ; disable all checks for speed
-                 "debug"))
-      (inputs
-       `(("samtools" ,samtools) ; for pileup
-         ("bcftools" ,bcftools) ; for pileup
-         ("lz4" ,lz4)
-         ("zlib" ,zlib)
-       ))
-      (native-inputs
-       `(("ldc" ,ldc)
-         ;; ("shunit2-old" ,shunit2-old) disable for a bit
-         ("coreutils" ,coreutils) ; for env
-         ("perl" ,perl) ; Needed for building htslib
-         ("ruby" ,ruby) ; Needed for building htslib
-         ("python" ,python-2) ; Needed for building htslib and sambamba
-         ("gcc" ,gcc)
-         ("which" ,which)
-         ("htslib-src"
-          ,(origin
-             (method git-fetch)
-             (uri (git-reference
-                   (url "https://github.com/pjotrp/htslib.git")
-                   (commit "2f3c3ea7b301f9b45737a793c0b2dcf0240e5ee5")))
-             (file-name (string-append "htslib-src-" (string-take commit 7) "-checkout"))
-             (sha256
-              (base32 "0g38g8s3npr0gjm9fahlbhiskyfws9l5i0x1ml3rakzj7az5l9c9"))))
-         ("biod-src"
-          ,(origin
-             (method git-fetch)
-             (uri (git-reference
-                   (url "https://github.com/biod/BioD.git")
-                   (commit "c778e4f2d8bacea7499283ce39f5577b232732c6")))
-             (file-name (string-append "biod-src-" (string-take commit 7) "-checkout"))
-             (sha256
-              (base32 "1z90562hg47i63gx042wb3ak2vqjg5z7hwgn9bp2pdxfg3nxrw37"))))
-         ("dlang-undeaD-src"
-          ,(origin
-             (method git-fetch)
-             (uri (git-reference
-                   (url "https://github.com/dlang/undeaD.git")
-                   (commit "92803d25c88657e945511f0976a0c79d8da46e89")))
-             (file-name (string-append "dlang-undeaD-src-" (string-take commit 7) "-checkout"))
-             (sha256
-              (base32 "0vq6n81vzqvgphjw54lz2isc1j8lcxwjdbrhqz1h5gwrvw9w5138"))))))
-      (arguments
-       `(#:phases
-         (modify-phases %standard-phases
-           (delete 'configure)
-           (add-after 'unpack 'patch-pileup-d
-              (lambda* (#:key inputs #:allow-other-keys)
-                (substitute* "sambamba/pileup.d"
-                             (("string samtoolsBin     = null;") (string-append "string samtoolsBin = \"" (which "samtools") "\";"))
-                             (("string bcftoolsBin     = null;") (string-append "string bcftoolsBin = \"" (which "bcftools") "\";"))
-                             (("    this_app = args[0];") (string-append "    this_app = \"" (which "sambamba") "\";")))))
-           (add-after 'unpack 'unpack-htslib-sources
-             (lambda* (#:key inputs #:allow-other-keys)
-               ;; The current build compiles htslib statically into the
-               ;; executable.  On top of that, we need to patch the latest
-               ;; version of htslib to have it working with Sambamba.
-               (and
-                    (copy-recursively (assoc-ref inputs "htslib-src") "htslib")
-                    (copy-recursively (assoc-ref inputs "dlang-undeaD-src") "undeaD")
-                    (copy-recursively (assoc-ref inputs "biod-src") "BioD"))))
-           (replace
-            'build
-            (lambda* (#:key inputs outputs make-flags #:allow-other-keys)
-              (let* ((out        (assoc-ref outputs "out"))
-                     (debug-out  (assoc-ref outputs "debug")))
-                (zero? (system* "make" "-f" "Makefile.guix" "guix" "-j" "8"
-                                (string-append "LDC_LIB_PATH="
-                                               (assoc-ref inputs "ldc")
-                                               "/lib"))))))
-           (replace
-            'check
-            (lambda* (#:key inputs outputs make-flags #:allow-other-keys)
-              (let* ((out        (assoc-ref outputs "out"))
-                     (debug-out  (assoc-ref outputs "debug")))
-                (zero? (system* "make" "-f" "Makefile.guix" "check"
-                                (string-append "LDC_LIB_PATH="
-                                               (assoc-ref inputs "ldc")
-                                               "/lib"))))))
-           (replace
-            'install
-            (lambda* (#:key outputs #:allow-other-keys)
-              (let ((bin (string-append (assoc-ref outputs "out") "/bin")))
-                (install-file "build/sambamba" bin)))))))
-      (home-page "https://github.com/lomereiter/sambamba")
-      (synopsis "Fast tool for working with SAM, BAM and CRAM files written in D.")
-      (description
-       "Sambamba is a high performance modern robust and fast
-tool (and library), written in the D programming language, for working
-with SAM, BAM and CRAM files.  Current parallelised functionality is
-an important subset of samtools functionality, including view, index,
-sort, markdup, and depth.")
-      (license license:gpl2+))))
diff --git a/gn/packages/static.scm b/gn/packages/static.scm
deleted file mode 100644
index 67b4873..0000000
--- a/gn/packages/static.scm
+++ /dev/null
@@ -1,83 +0,0 @@
-;;;
-;;; Commentary:
-;;;
-;;; This module contains statically linked executables meant for use
-;;; with spike and gem5.
-;;;
-
-;;;
-;;; Code:
-;;;
-
-(define-module (gn packages static)
-  #:use-module (gnu packages base)
-  #:use-module (gnu packages bioinformatics)
-  #:use-module (gnu packages compression)
-  #:use-module (gnu packages cpp)
-  #:use-module (gnu packages jemalloc)
-  #:use-module (gnu packages maths)
-  #:use-module (guix build-system gnu)
-  #:use-module (guix gexp)
-  #:use-module (guix packages)
-  #:use-module (guix utils))
-
-;; Static hello, for testing
-(define-public hello-static
-  (package
-    (inherit (static-package hello))
-    (name "hello-static")))
-
-;; A minimal version of htslib that does not depend on curl and openssl. This
-;; reduces the number of higher order dependencies in static linking.
-(define htslib-minimal
-  (package
-    (inherit htslib)
-    (arguments
-     (substitute-keyword-arguments (package-arguments htslib)
-       ((#:configure-flags flags ''())
-        ''())))
-    (inputs
-     (list bzip2 xz))))
-
-(define-public wfmash-static
-  (package
-    (inherit wfmash)
-    (name "wfmash-static")
-    (arguments
-     (substitute-keyword-arguments (package-arguments wfmash)
-       ((#:configure-flags flags ''())
-        `(cons* "-DCMAKE_EXE_LINKER_FLAGS=-static"
-                "-DCMAKE_SKIP_RPATH=TRUE"
-                ,flags))
-       ((#:phases phases ''())
-        #~(modify-phases #$phases
-            ;; When static linking, we need to link against the entire
-            ;; dependency tree, not just the direct first-order dependencies.
-            (add-after 'unpack 'add-higher-order-dependencies
-              (lambda _
-                (substitute* "CMakeLists.txt"
-                  (("hts" all)
-                   (string-append all " bz2 dl lzma"))
-                  (("jemalloc" all)
-                   ;; We add atomic because riscv64 has no lock-free atomic
-                   ;; instructions.
-                   (string-append all " atomic pthread")))))))))
-    (inputs
-     (list atomic-queue
-           (list gsl "static")
-           htslib-minimal
-           jemalloc
-           (list zlib "static")
-
-           ;; Second-order dependencies from htslib
-           (list bzip2 "static")
-           (list xz "static")))))
-
-(define-public smithwaterman-static
-  (package
-    (inherit smithwaterman)
-    (name "smithwaterman-static")
-    (arguments
-     (substitute-keyword-arguments (package-arguments smithwaterman)
-       ((#:make-flags flags ''())
-        #~(cons "CFLAGS=-static" #$flags))))))
diff --git a/gn/packages/statistics.scm b/gn/packages/statistics.scm
index 8e8483a..c391b2d 100644
--- a/gn/packages/statistics.scm
+++ b/gn/packages/statistics.scm
@@ -15,8 +15,6 @@
   #:use-module (gnu packages python-xyz)
   #:use-module (gnu packages statistics)
   #:use-module (gnu packages cran)
-  #:use-module (past packages python27)
-
   ;; for python-rpy2 and dependencies
   #:use-module (gnu packages python-build)
   #:use-module (guix build-system pyproject); python-rpy2-rinterface
@@ -27,45 +25,6 @@
   #:use-module (gnu packages time); python-rpy2-robjects
   #:use-module (guix gexp))
 
-(define-public r-hmisc-3
-  (package
-    (name "r-hmisc")
-    (version "3.17-2")
-    (source
-      (origin
-        (method url-fetch)
-        (uri (cran-uri "Hmisc" version))
-        (sha256
-         (base32
-          "110w5hbrl10isslqs0iq6w2ll0dafqyqznb50cdcallnlnvbvxrg"))))
-    (properties `((upstream-name . "Hmisc")))
-    (build-system r-build-system)
-    (inputs
-     `(("gfortran" ,gfortran)))
-    (arguments
-     `(#:tests? #f))   ; no 'setup.py test'
-    (propagated-inputs
-     `(("r-acepack" ,r-acepack)
-       ("r-cluster" ,r-cluster)
-       ("r-foreign" ,r-foreign)
-       ("r-formula" ,r-formula)
-       ("r-ggplot2" ,r-ggplot2)
-       ; ("r-grid" ,r-grid)
-       ("r-gridextra" ,r-gridextra)
-       ("r-gtable" ,r-gtable)
-       ("r-lattice" ,r-lattice)
-       ("r-latticeextra" ,r-latticeextra)
-       ; ("r-methods" ,r-methods)
-       ("r-nnet" ,r-nnet)
-       ("r-rpart" ,r-rpart)
-       ("r-survival" ,r-survival)
-       ))
-    (home-page "http://biostat.mc.vanderbilt.edu/Hmisc")
-    (synopsis "Harrell Miscellaneous")
-    (description
-     "Contains many functions useful for data analysis, high-level graphics, utility operations, functions for computing sample size and power, importing and annotating datasets, imputing missing values, advanced table making, variable clustering, character string manipulation, conversion of R objects to LaTeX code, and recoding variables.")
-    (license license:gpl2+)))
-
 (define-public r-graphics
   (package
     (name "r-graphics")
@@ -96,46 +55,6 @@
      "Data and Functions from the book R Graphics, Second Edition.  There is a function to produce each figure in the book, plus several functions, classes, and methods defined in Chapter 8.")
     (license license:gpl2+)))
 
-(define-public pylmm-gn2
-  (let ((commit "3c6d1cac8"))
-    (package
-      (name "pylmm-gn2")
-      (version (string-append "1.0-" commit ))
-      (source (origin
-                (method git-fetch)
-                (uri (git-reference
-                       (url "https://github.com/genenetwork/pylmm.git")
-                       (commit commit)))
-                (file-name (string-append name "-" commit))
-                (sha256
-                 (base32
-                  "0wryaadb36i275p9d2i1kzflahvbl9kj5wlk8jlbvjij8gpqg964"))))
-      (build-system python-build-system)
-      (inputs `(
-                ("python2-setuptools" ,python2-setuptools)
-                ("python2-scipy" ,python2-scipy)
-                ("python2-numpy" ,python2-numpy)
-                ))
-      (arguments
-       `(#:python ,python-2
-         #:tests? #f        ; no 'setup.py test'
-         #:phases
-         (modify-phases %standard-phases
-           (add-before
-             'build 'change-paths
-             (lambda* (#:key outputs #:allow-other-keys)
-               (let ((out (assoc-ref outputs "out")))
-                 (substitute* "scripts/pylmm_redis"
-                   (("/usr/bin/python") (which "python"))
-                   (("\\$PACKAGEDIR") (string-append out "/lib/python2.7/site-packages")))
-                 ))))))
-
-      (home-page "http://genenetwork.org/")
-      (synopsis "LMM resolver")
-      (description "Fast and lightweight linear mixed-model (LMM) solver
-for use in genome-wide association studies (GWAS).")
-      (license license:agpl3+))))
-
 (define-public r-ctl ; guix: ready
   (package
     (name "r-ctl")
@@ -161,7 +80,6 @@ combined with QTL information to perform de novo reconstruction of
 interaction networks.")
     (license license:gpl3)))
 
-
 (define-public python-rpy2-rinterface
   (package
     (name "python-rpy2-rinterface")
@@ -194,7 +112,6 @@ interaction networks.")
  running embedded in a Python process.")
     (license license:gpl2)))
 
-
 (define-public python-rpy2-robjects
   (package
     (name "python-rpy2-robjects")
@@ -206,6 +123,17 @@ interaction networks.")
        (sha256
         (base32 "0yn4nq26na9hzlm08vsxr050ls5nmngpyma49fpfwc9mhxc7njlk"))))
     (build-system pyproject-build-system)
+    (arguments
+     (list
+      #:phases
+      #~(modify-phases %standard-phases
+          (replace 'check
+            (lambda* (#:key tests? #:allow-other-keys)
+              (when tests?
+                ;; test_rmagic.py fails with pytest 9: marks on fixtures
+                ;; are no longer allowed.
+                (invoke "pytest" "-vv"
+                        "--ignore=src/rpy2/ipython/tests/test_rmagic.py")))))))
     (propagated-inputs (list python-jinja2
                              python-packaging
                              python-rpy2-rinterface
@@ -225,7 +153,6 @@ interaction networks.")
     (description "Python interface to the R language (embedded R).")
     (license #f)))
 
-
 (define-public python-rpy2-patched
   ;; TODO: Delete this after python-rpy2 is fixed upstream.
   (package
@@ -258,7 +185,6 @@ interaction networks.")
                  "license = {file = \"LICENSE\"}\n"))))
           (delete 'check))))))
 
-
 (define-public r-thor
   (package
     (name "r-thor")
diff --git a/gn/packages/tcl.scm b/gn/packages/tcl.scm
deleted file mode 100644
index d71c1c6..0000000
--- a/gn/packages/tcl.scm
+++ /dev/null
@@ -1,50 +0,0 @@
-
-(define-module (gn packages tcl)
-  #:use-module (guix packages)
-  #:use-module (guix download)
-  #:use-module (guix build-system gnu)
-  #:use-module (guix build-system perl)
-  #:use-module (gnu packages)
-  #:use-module (gnu packages tcl)
-  #:use-module (gnu packages image)
-  #:use-module (gnu packages fontutils)
-  #:use-module (gnu packages perl)
-  #:use-module (gnu packages pkg-config)
-  #:use-module (gnu packages xorg)
-  #:use-module (guix licenses))
-
-(define-public environment-modules ; guix: fix DL and tests
-  (package
-    (name "environment-modules")
-    (version "3.2.10")
-    (source
-     (origin
-      (method url-fetch)
-      ;; Would be nice to have a versioned download URL
-      (uri "http://sourceforge.net/projects/modules/files/latest/download?source=directory")
-      (sha256
-       (base32
-        "0m9rn1vr9acvc3qh9rdwnxlkzchdrbqajdvpv6hhay27hcmch1gv"))))
-    (build-system gnu-build-system)
-    (inputs
-     `(("tcl" ,tcl)))
-    (arguments
-     '(#:configure-flags
-       (let ((out (assoc-ref %outputs "out"))
-             (tcl (assoc-ref %build-inputs "tcl")))
-         (list (string-append "--with-tcl=" tcl "/lib")
-               (string-append "--with-tclinclude=" tcl "/include")
-               (string-append "--exec-prefix=" out)
-               (string-append "--disable-versioning")
-               (string-append "--mandir=" out "/share/man")
-               "CPPFLAGS=-DUSE_INTERP_ERRORLINE"))
-       #:tests? #f))
-
-    (home-page "")
-    (synopsis "Tool for managing the shell environment")
-    (description
-     "The Environment Modules system is a tool to help users manage
-their Unix or Linux shell environment, by allowing groups of related
-environment-variable settings to be made or removed dynamically.")
-    (license gpl2)))
-
diff --git a/gn/packages/traefik.scm b/gn/packages/traefik.scm
deleted file mode 100644
index d77ec93..0000000
--- a/gn/packages/traefik.scm
+++ /dev/null
@@ -1,52 +0,0 @@
-(define-module (gn packages traefik)
-  #:use-module ((guix licenses) #:prefix license:)
-  #:use-module (guix packages)
-  #:use-module (guix download)
-  #:use-module (guix build-system trivial)
-  #:use-module (gnu packages base)
-  #:use-module (gnu packages compression))
-
-(define-public traefik
-  (package
-    (name "traefik")
-    (version "2.0.4")
-    (source (origin
-              (method url-fetch)
-              (uri (string-append "https://github.com/containous/traefik/"
-                                  "releases/download/v" version
-                                  "/traefik_v" version "_linux_amd64.tar.gz"))
-              (sha256
-               (base32
-                "0i0c2d647ks7x3p8l46rslrmnasdk88a6caq1c6diy3ngdcwik23"))))
-    (build-system trivial-build-system)
-    (arguments
-     `(#:modules ((guix build utils))
-       #:builder
-       (begin
-         (use-modules (guix build utils))
-         (let* ((out     (assoc-ref %outputs "out"))
-                (bin     (string-append out "/bin"))
-                (target  (string-append bin "/traefik"))
-                (gzip    (assoc-ref %build-inputs "gzip"))
-                (tar     (assoc-ref %build-inputs "tar"))
-                (source  (assoc-ref %build-inputs "source")))
-           (setenv "PATH" (string-append gzip "/bin"))
-           (invoke (string-append tar "/bin/tar") "xvf" source)
-           (install-file "traefik" bin)
-           (install-file "LICENSE.md" (string-append out "/share/doc/"
-                                                     ,name "-" ,version)))
-         #t)))
-    (native-inputs
-     `(("gzip" ,gzip)
-       ("source" ,source)
-       ("tar"  ,tar)))
-    (home-page "https://traefik.io/")
-    (synopsis "Cloud Native Edge Router")
-    (description "Traefik (pronounced traffic) is a modern HTTP reverse proxy
-and load balancer that makes deploying microservices easy.  Traefik integrates
-with your existing infrastructure components (Docker, Swarm mode, Kubernetes,
-Marathon, Consul, Etcd, Rancher, Amazon ECS, ...) and configures itself
-automatically and dynamically.  Pointing Traefik at your orchestrator should be
-the only configuration step you need.")
-    (supported-systems '("x86_64-linux"))
-    (license license:expat)))
diff --git a/gn/packages/twint.scm b/gn/packages/twint.scm
deleted file mode 100644
index b61b6ca..0000000
--- a/gn/packages/twint.scm
+++ /dev/null
@@ -1,191 +0,0 @@
-(define-module (gn packages twint)
-  #:use-module ((guix licenses) #:prefix license:)
-  #:use-module (gnu packages)
-  #:use-module (guix build-system python)
-  #:use-module (guix git-download)
-  #:use-module (guix packages)
-  #:use-module (guix download)
-  #:use-module (gnu packages check)
-  #:use-module (gnu packages geo)
-  #:use-module (gnu packages python)
-  #:use-module (gnu packages python-web)
-  #:use-module (gnu packages python-science)
-  #:use-module (gnu packages python-xyz)
-  #:use-module (gnu packages sphinx)
-  #:use-module (gnu packages time))
-
-(define-public python-googletransx
-  (package
-    (name "python-googletransx")
-    (version "2.4.2")
-    (source
-     (origin
-       (method url-fetch)
-       (uri (pypi-uri "googletransx" version))
-       (sha256
-        (base32
-         "1nnn08cqc57d8lq1qp82fazk1x83ccdi410hmzlbnajw6vinfrf4"))))
-    (build-system python-build-system)
-    (arguments
-     `(#:tests? #f))
-    (propagated-inputs
-     `(("python-requests" ,python-requests)))
-    (home-page
-     "https://github.com/x0rkov/py-googletrans")
-    (synopsis
-     "Free Google Translate API for Python. Translates totally free of charge.")
-    (description
-     "Free Google Translate API for Python. Translates totally free of charge.")
-    (license license:expat)))
-
-(define-public python-statistics
-  (package
-    (name "python-statistics")
-    (version "1.0.3.5")
-    (source
-     (origin
-       (method url-fetch)
-       (uri (pypi-uri "statistics" version))
-       (sha256
-        (base32
-         "0f61hrj25p60kvf09nqysd6xlccm5dmx1jl8akfjvgq71fw7khrd"))))
-    (build-system python-build-system)
-    (arguments
-     `(#:tests? #f))
-    (propagated-inputs
-     `(("python-docutils" ,python-docutils)))
-    (home-page "UNKNOWN")
-    (synopsis
-     "A Python 2.* port of 3.4 Statistics Module")
-    (description
-     "A Python 2.* port of 3.4 Statistics Module")
-    (license #f)))
-
-(define-public python-fake-useragent
-  (package
-    (name "python-fake-useragent")
-    (version "0.1.11")
-    (source
-     (origin
-       (method url-fetch)
-       (uri (pypi-uri "fake-useragent" version))
-       (sha256
-        (base32
-         "0dfz3bpmjmaxlhda6hfgsac7afb65pljibi8zkp9gc0ffn5rj161"))))
-    (build-system python-build-system)
-    (arguments
-     `(#:tests? #f))
-    (home-page
-     "https://github.com/hellysmile/fake-useragent")
-    (synopsis
-     "Up to date simple useragent faker with real world database")
-    (description
-     "Up to date simple useragent faker with real world database")
-    (license #f)))
-
-(define-public python-cchardet
-  (package
-    (name "python-cchardet")
-    (version "2.1.6")
-    (source
-     (origin
-       (method url-fetch)
-       (uri (pypi-uri "cchardet" version))
-       (sha256
-        (base32
-         "1cs6y59qhbal8fgbyjk2lpjykh8kfjhq16clfssylsddb4hgnsmp"))))
-    (build-system python-build-system)
-    (arguments
-     `(#:tests? #f))
-    (home-page "https://github.com/PyYoshi/cChardet")
-    (synopsis
-     "cChardet is high speed universal character encoding detector.")
-    (description
-     "cChardet is high speed universal character encoding detector.")
-    (license #f)))
-
-;; TODO: Upstream
-(define-public python-socks
-  (package
-    (name "python-socks")
-    (version "1.1.0")
-    (source
-     (origin
-       (method url-fetch)
-       (uri (pypi-uri "python-socks" version))
-       (sha256
-        (base32
-         "1w5gdlz6jaflzmzf8d6s81k4qwzb0q8xq2s76bj04sv11nm2lkiv"))))
-    (build-system python-build-system)
-    (propagated-inputs
-     `(("python-async-timeout" ,python-async-timeout)
-       ("python-trio" ,python-trio)
-       ("python-curio" ,python-curio)))
-    (home-page
-     "https://github.com/romis2012/python-socks")
-    (synopsis
-     "Core proxy (SOCKS4, SOCKS5, HTTP tunneling) functionality for Python")
-    (description
-     "Core proxy (SOCKS4, SOCKS5, HTTP tunneling) functionality for Python")
-    (license #f)))
-
-(define-public python-twint
-  (package
-    (name "python-twint")
-    (version "2.1.20")
-    (source
-     (origin
-       (method git-fetch)
-       (uri (git-reference
-             (url "https://github.com/twintproject/twint")
-             (commit "a45a8ac719d5710e7da92f77d9801b351e505c1f")))
-       (sha256
-        (base32
-         "1bixwrwh1v7vpv0y6skgkml8zm82w00qwkvd6q79pkdj3hczha75"))
-       (patches (search-patches "python-twint-userlist.patch"
-                                "python-twint-mentions.patch"
-                                "python-twint-token.patch"))))
-    (build-system python-build-system)
-    (arguments
-     `(#:tests? #f
-       #:phases
-       (modify-phases %standard-phases
-         (add-after 'unpack 'remove-deps
-           (lambda _
-             (substitute* "setup.py"
-               (("'dataclasses',") ""))))
-         (add-after 'unpack 'twint-hot-fixes
-           (lambda _
-             ;; TODO: Upstream this fix
-             (begin
-               (substitute* "twint/format.py"
-                 ((", t.replies_count)")
-                  ", str(t.replies_count))"))
-               (substitute* "twint/format.py"
-                 ((", t.retweets_count)")
-                  ", str(t.retweets_count))"))
-               (substitute* "twint/format.py"
-                 ((", t.quote_url)")
-                  ", str(t.quote_url))"))
-               (substitute* "twint/format.py"
-                 ((", t.likes_count)")
-                  ", str(t.likes_count))"))))))))
-    (propagated-inputs
-     `(("python-pycares" ,python-pycares)
-       ("python-aiohttp-socks" ,python-aiohttp-socks)
-       ("python-beautifulsoup4" ,python-beautifulsoup4)
-       ("python-cchardet" ,python-cchardet)
-       ("python-elasticsearch" ,python-elasticsearch)
-       ("python-fake-useragent" ,python-fake-useragent)
-       ("python-geopy" ,python-geopy)
-       ("python-yarl" ,python-yarl)
-       ("python-googletransx" ,python-googletransx)
-       ("python-pandas" ,python-pandas)
-       ("python-schedule" ,python-schedule)))
-    (home-page
-     "https://github.com/twintproject/twint")
-    (synopsis
-     "An advanced Twitter scraping & OSINT tool.")
-    (description
-     "An advanced Twitter scraping & OSINT tool.")
-    (license license:expat)))
diff --git a/gn/packages/virtualization.scm b/gn/packages/virtualization.scm
deleted file mode 100644
index 22753f8..0000000
--- a/gn/packages/virtualization.scm
+++ /dev/null
@@ -1,163 +0,0 @@
-(define-module (gn packages virtualization)
-  #:use-module ((guix licenses) #:prefix license:)
-  #:use-module (guix gexp)
-  #:use-module (guix utils)
-  #:use-module (guix packages)
-  #:use-module (guix download)
-  #:use-module (guix git-download)
-  #:use-module (guix build-system scons)
-  #:use-module (gnu packages)
-  #:use-module (gnu packages boost)
-  #:use-module (gnu packages compression)
-  #:use-module (gnu packages cpp)
-  #:use-module (gnu packages graphviz)
-  #:use-module (gnu packages image)
-  #:use-module (gnu packages m4)
-  #:use-module (gnu packages pkg-config)
-  #:use-module (gnu packages protobuf)
-  #:use-module (gnu packages python)
-  #:use-module (gnu packages python-xyz)
-  #:use-module (past packages python27))
-
-(define-public gem5
-  (package
-    (name "gem5")
-    (version "22.1.0.0")
-    (source
-      (origin
-        (method git-fetch)
-        (uri (git-reference
-               (url "https://gem5.googlesource.com/public/gem5")
-               (commit (string-append "v" version))))
-        (file-name (git-file-name name version))
-        (sha256
-         (base32 "1kcdn8rawzhf88lcb2app8m1r1px4ba041kyl7xigslix7qs05k3"))
-        (snippet
-          #~(begin
-              (use-modules (guix build utils))
-              ;; For reproducibility.
-              (substitute* "src/base/date.cc"
-                (("__DATE__") "\"1970-01-01\"")
-                (("__TIME__") "\"00:00:00\""))
-              ;; Remove vendored pybind11.
-              (substitute* "ext/sst/Makefile"
-                (("-I../../ext/pybind11/include/")
-                 "${shell pybind11-config --includes}"))
-              (substitute* "SConstruct"
-                ((".*pybind11.*") ""))
-              (delete-file-recursively "ext/pybind11")))))
-    (build-system scons-build-system)
-    (arguments
-     `(#:scons-flags
-       (list "--verbose")
-       #:build-targets '("build/ARM/gem5.opt"
-                         "build/MIPS/gem5.opt"
-                         "build/NULL/gem5.opt"
-                         "build/POWER/gem5.opt"
-                         "build/RISCV/gem5.opt"
-                         "build/SPARC/gem5.opt"
-                         "build/X86/gem5.opt")
-       #:phases
-       (modify-phases %standard-phases
-         (add-after 'unpack 'patch-source
-           (lambda* (#:key inputs #:allow-other-keys)
-             (substitute* "SConstruct"
-               ;; Scons does not use the environment variables by default,
-               ;; but this substitution makes it do so.
-               ;(("main = Environment")
-               ; "main = Environment(ENV=os.environ)\nmain = Environment")
-               ;; Force adding missing includes into the environment.
-               (("main\\.Append\\(CPPPATH=\\[Dir\\('" all)
-                (string-append
-                  all (assoc-ref inputs "kernel-headers") "/include')])\n"
-                  all (assoc-ref inputs "libpng") "/include')])\n"
-                  all (assoc-ref inputs "pybind11") "/include')])\n"
-                  all (assoc-ref inputs "zlib") "/include')])\n"
-                  all)))
-             (substitute* "ext/libelf/SConscript"
-               (("m4env\\.Tool" all)
-                (string-append
-                  "m4env.Append(CPPPATH=[Dir('"
-                  (assoc-ref inputs "kernel-headers")
-                  "/include')])\n"
-                  all)))
-             (substitute* "ext/libelf/native-elf-format"
-               (("cc") ,(cc-for-target)))))
-         ;; This uses the cached results from the previous 'build phase.
-         ;; Move to after 'install and delete build dir first?
-         (replace 'check
-           (lambda* (#:key tests? #:allow-other-keys #:rest args)
-             (when tests?
-               (apply (assoc-ref %standard-phases 'build)
-                      #:build-targets '("build/NULL/unittests.opt")
-                      args))))
-         (replace 'install
-           (lambda* (#:key outputs #:allow-other-keys)
-             (let* ((out (assoc-ref outputs "out"))
-                    (bin (string-append out "/bin/")))
-               (mkdir-p bin)
-               (for-each
-                 (lambda (arch)
-                   (when (directory-exists?
-                           (string-append "build/" (string-upcase arch)))
-                     (copy-file
-                       (string-append "build/" (string-upcase arch) "/gem5.opt")
-                       (string-append bin "gem5-" arch ".opt"))
-                     (copy-file
-                       (string-append "build/" (string-upcase arch) "/gem5py")
-                       (string-append bin "gem5py-" arch))
-                     (copy-file
-                       (string-append "build/" (string-upcase arch) "/gem5py_m5")
-                       (string-append bin "gem5py_m5-" arch))))
-                 (list "arm" "mips" "null" "power" "riscv" "sparc" "x86")))))
-         (add-after 'install 'install-configs
-           (lambda* (#:key outputs #:allow-other-keys)
-             (let* ((out  (assoc-ref outputs "out"))
-                    (dest (string-append out "/share/gem5/configs")))
-               (copy-recursively "configs" dest))))
-         (add-after 'install 'wrap-binaries
-           (lambda* (#:key outputs #:allow-other-keys)
-             (let ((out (assoc-ref outputs "out")))
-               (for-each
-                 (lambda (file)
-                   (wrap-program file
-                     `("GUIX_PYTHONPATH" ":" prefix
-                       (,(getenv "GUIX_PYTHONPATH")))))
-                 (find-files (string-append out "/bin")))))))))
-    (inputs
-     (list gperftools
-           libpng
-           protobuf
-           pybind11
-           python
-           python-pydot
-           python-six
-           zlib))
-    (native-inputs
-     (list boost
-           m4
-           pkg-config))
-    (home-page "http://gem5.org/")
-    (synopsis "Modular platform for computer-system architecture research")
-    (description "The gem5 simulator is a modular platform for computer-system
-architecture research, encompassing system-level architecture as well as
-processor microarchitecture.")
-    (license license:bsd-2)))
-
-(define-public gem5-riscv
-  (package
-    (inherit gem5)
-    (name "gem5-riscv")
-    (arguments
-     (substitute-keyword-arguments (package-arguments gem5)
-       ((#:build-targets _ '())
-        `(list "build/RISCV/gem5.opt"))
-       ((#:phases phases)
-        `(modify-phases ,phases
-           (replace 'install
-               (lambda* (#:key outputs #:allow-other-keys)
-               (let* ((out (assoc-ref outputs "out"))
-                      (bin (string-append out "/bin")))
-                 (install-file "build/RISCV/gem5.opt" bin)
-                 (install-file "build/RISCV/gem5py" bin)
-                 (install-file "build/RISCV/gem5py_m5" bin))))))))))
diff --git a/gn/packages/web.scm b/gn/packages/web.scm
index 734cbe1..585c56a 100644
--- a/gn/packages/web.scm
+++ b/gn/packages/web.scm
@@ -126,22 +126,6 @@ extensive prebuilt components, and powerful plugins built on jQuery.")
            #t))))
     (native-inputs `(("source" ,source)))))
 
-(define-public web-bootstrap-3.3
-  (package
-    (inherit web-bootstrap-3)
-    (name "web-bootstrap")
-    (version "3.3.7") ; July 25, 2016
-    (source
-      (origin
-        (method git-fetch)
-        (uri (git-reference
-               (url "https://github.com/twbs/bootstrap.git")
-               (commit (string-append "v" version))))
-        (file-name (git-file-name name version))
-        (sha256
-         (base32 "0li7vdr4avz34b9xvwk7skbvnvzbx002cw5nfm7iwvi1wk8v5bri"))))
-    (native-inputs `(("source" ,source)))))
-
 (define-public web-bootstrap-native
   (let ((commit "2e48d7ee29d4063e3bd2024ff83ddc50a550c4dd"))
     (package
diff --git a/gn/packages/yaj.scm b/gn/packages/yaj.scm
deleted file mode 100644
index aa5a0eb..0000000
--- a/gn/packages/yaj.scm
+++ /dev/null
@@ -1,91 +0,0 @@
-(define-module (gn packages yaj)
-  #:use-module ((guix licenses) #:prefix license:)
-  #:use-module (guix packages)
-  #:use-module (guix utils)
-  #:use-module (guix download)
-  #:use-module (guix build-system python)
-  #:use-module (guix build-system trivial)
-  #:use-module (gn packages python)
-  #:use-module (gnu packages)
-  #:use-module (gnu packages check)
-  #:use-module (gnu packages compression)
-  #:use-module (gnu packages python)
-  #:use-module (gnu packages python-web)
-  #:use-module (gnu packages python-xyz)
-  #:use-module (gnu packages web)
-  #:use-module (gn packages web)
-  #:use-module (gn packages check))
-
-(define-public python-elasticsearch
-  (package
-    (name "python-elasticsearch")
-    (version "6.3.0")
-    (source
-      (origin
-        (method url-fetch)
-        (uri (pypi-uri "elasticsearch" version))
-        (sha256
-         (base32
-          "1gpgb2vxl1q7hqrxxdlmfp9dxcl5wg3k78vxk2lka1cjaqd7mzw0"))))
-    (build-system python-build-system)
-    (native-inputs
-     `(("python-mock" ,python-mock)
-       ("python-nosexcover" ,python-nosexcover)
-       ("python-pyaml" ,python-pyaml)
-       ("python-requests" ,python-requests)))
-    (propagated-inputs
-     `(("urllib3" ,python-urllib3)))
-    (arguments
-     ;; tests require the test_elasticsearch module but it is not distributed.
-     `(#:tests? #f))
-    (home-page "https://github.com/elastic/elasticsearch-py")
-    (synopsis "Low-level client for Elasticsearch")
-    (description "Official low-level client for Elasticsearch.  Its goal is to
-provide common ground for all Elasticsearch-related code in Python; because of
-this it tries to be opinion-free and very extendable.")
-    (license license:expat)))
-
-(define-public yaj
-  (let ((md5 "93e745e9c"))
-    (package
-    (name "yaj")
-    (version "0.0.1")
-    (source
-     (origin
-       (method url-fetch)
-       (uri "http://biogems.info/genenetwork2-2.0-a8fcff4.svg") ; any old file
-       (file-name (string-append name "-" md5))
-       (sha256
-        (base32 "0rir1mcn3a8i1mbw3ppgnjl7wg71mapljik7n3v5i8j5ic95mqr5"))))
-    (build-system trivial-build-system)
-    (native-inputs `(("unzip" ,unzip)
-                     ("source" ,source)))
-    (inputs `(("sassc" ,sassc)))
-    (propagated-inputs
-     `(("python" ,python)
-       ("python-elasticsearch" ,python-elasticsearch)
-       ("python-flask" ,python-flask)
-       ("python-jinja2" ,python-jinja2)
-       ("python-mako" ,python-mako)
-       ("python-markdown" ,python-markdown)
-       ("python-misaka" ,python-misaka)
-       ("python-pygit2" ,python-pygit2)
-       ("web-bootstrap" ,web-bootstrap)
-       ("sassc" ,sassc)
-       ))
-    (arguments
-     `(#:modules ((guix build utils))
-       #:builder
-       (begin
-         (use-modules (guix build utils))
-         (let ((target (string-append (assoc-ref %outputs "out")
-                                      "/share")))
-             (write target)
-             (mkdir-p target)
-             ; (copy-recursively (assoc-ref %build-inputs "source") target)
-             #t))))
-
-    (home-page "http://github.com/pjotrp/yaj/")
-    (synopsis "Yet another journal")
-    (description "YAJ.")
-    (license license:agpl3+))))
diff --git a/gn/past/genenetwork1.scm b/gn/past/genenetwork1.scm
deleted file mode 100644
index ff5c7a4..0000000
--- a/gn/past/genenetwork1.scm
+++ /dev/null
@@ -1,295 +0,0 @@
-;; Bioinformatics module
-
-(define-module (gn past genenetwork1)
-  #:use-module ((guix licenses) #:prefix license:)
-  #:use-module (guix packages)
-  #:use-module (guix utils)
-  #:use-module (guix download)
-  #:use-module (guix git-download)
-  #:use-module (guix build-system cargo)
-  #:use-module (guix build-system gnu)
-  #:use-module (guix build-system python)
-  #:use-module (guix build-system trivial)
-  #:use-module (guix graph)
-  #:use-module (guix scripts graph)
-  #:use-module (guix store)
-  #:use-module (guix gexp)
-  #:use-module (gnu packages)
-  #:use-module (gnu packages base)
-  #:use-module (gnu packages bioconductor)
-  #:use-module (gnu packages bioinformatics)
-  #:use-module (gnu packages bootstrap)
-  #:use-module (gnu packages check)
-  #:use-module (gnu packages cran)
-  #:use-module (past-crates packages crates-io)
-  #:use-module (gnu packages compression)
-  #:use-module (gnu packages databases)
-  #:use-module (gnu packages ghostscript)
-  #:use-module (gnu packages graphviz)
-  #:use-module (gnu packages parallel)
-  #:use-module (gnu packages python)
-  #:use-module (gnu packages python-check)
-  #:use-module (gnu packages python-crypto)
-  #:use-module (gnu packages python-science)
-  #:use-module (gnu packages python-web)
-  #:use-module (gnu packages python-xyz)
-  #:use-module (gnu packages rdf)
-  #:use-module (gnu packages scheme)
-  #:use-module (gnu packages statistics)
-  #:use-module (gnu packages version-control)
-  #:use-module (gnu packages vim)
-  #:use-module (gnu packages web)
-  #:use-module (gnu packages wget)
-  #:use-module (gnu packages xml)
-  #:use-module (past packages python)
-  #:use-module (past packages web)
-  #:use-module (gn packages bioinformatics)
-  #:use-module (gn packages databases)
-  #:use-module (gn packages elixir)
-  #:use-module (gn packages gemma)
-  #:use-module (gn packages javascript)
-  #:use-module (gn packages phewas)
-  #:use-module (gn packages python)
-  #:use-module (gn packages python24)
-  #:use-module (gn packages statistics)
-  #:use-module (gn packages web)
-  #:use-module (srfi srfi-1))
-
-
-(define-public python2-qtlreaper
-  (let ((commit "442c217b90393380a8634ff8636b44992f5c53dd"))
-  (package
-    (name "python2-qtlreaper")
-    (version (string-append "1.11-gn2-" (string-take commit 7) ))
-    (source (origin
-             (method git-fetch)
-             (uri (git-reference
-                   ;; (url "https://github.com/genenetwork/genenetwork2.git")
-                   (url "https://github.com/pjotrp/QTLreaper.git")
-                   (commit commit)))
-             (file-name (string-append name "-" (string-take commit 7)))
-             (sha256
-              (base32
-               "1rrbm1ap2zzyjxmrs9aa1d18sgiba5dhj1fmkl7wmab06jv3j1hm"))))
-    (build-system python-build-system)
-    (arguments
-     `(#:python ,python-2
-       #:tests? #f))   ; no 'setup.py test' really!
-    (home-page "http://qtlreaper.sourceforge.net/")
-    (synopsis "Scan expression data for QTLs")
-    (description
-     "Batch-oriented version of WebQTL. It requires, as input,
-expression data from members of a set of recombinant inbred lines and
-genotype information for the same lines.  It searches for an
-association between each expression trait and all genotypes and
-evaluates that association by a permutation test.  For the permutation
-test, it performs only as many permutations as are necessary to define
-the empirical P-value to a reasonable precision. It also performs
-bootstrap resampling to estimate the confidence region for the
-location of a putative QTL.")
-    (license license:gpl2+))))
-
-(define-public python24-qtlreaper
-  (let ((commit "442c217b90393380a8634ff8636b44992f5c53dd"))
-    (package
-      (name "python24-qtlreaper")
-      (version (git-version "1.11" "gn1" commit))
-      (source (origin
-                (method git-fetch)
-                (uri (git-reference
-                       ;; (url "https://github.com/genenetwork/genenetwork2.git")
-                       (url "https://github.com/pjotrp/QTLreaper.git")
-                       (commit commit)))
-                (file-name (git-file-name name version))
-                (sha256
-                 (base32
-                  "1rrbm1ap2zzyjxmrs9aa1d18sgiba5dhj1fmkl7wmab06jv3j1hm"))))
-      (build-system python-build-system)
-      (arguments
-       `(#:python ,python-2.4
-         #:phases
-         (modify-phases %standard-phases
-           (replace 'add-install-to-pythonpath
-             (lambda* (#:key inputs outputs #:allow-other-keys)
-               (setenv "PYTHONPATH"
-                       (string-append (site-packages inputs outputs) ":"
-                                      (getenv "PYTHONPATH")))))
-           (delete 'sanity-check)       ; Not applicable to python-2.4
-           (add-after 'unpack 'make-max-markername-size-larger
-             (lambda _
-               (substitute* "Src/dataset.c"
-                 (("512") "2048"))))
-           (replace 'check
-             (lambda* (#:key tests? inputs outputs #:allow-other-keys)
-               (when tests?
-                 (setenv "PYTHONPATH" (string-append (site-packages inputs outputs) ":"
-                                                     (getenv "PYTHONPATH")))
-                 (invoke "python" "test/runtest.py")))))))
-      (native-inputs
-       `(("python24-setuptools" ,python24-setuptools)))
-      (home-page "http://qtlreaper.sourceforge.net/")
-      (synopsis "Scan expression data for QTLs")
-      (description
-       "Batch-oriented version of WebQTL. It requires, as input,
-expression data from members of a set of recombinant inbred lines and
-genotype information for the same lines.  It searches for an
-association between each expression trait and all genotypes and
-evaluates that association by a permutation test.  For the permutation
-test, it performs only as many permutations as are necessary to define
-the empirical P-value to a reasonable precision. It also performs
-bootstrap resampling to estimate the confidence region for the
-location of a putative QTL.")
-      (license license:gpl2+))))
-
-(define-public genenetwork1
-  (let ((commit "acf65ac9ae4be395c07c1629758f7408bf4eab5f") ; June 3, 2020
-        (revision "2"))
-    (package
-      (name "genenetwork1")
-      (version (git-version "0.0.0" revision commit))
-      (source (origin
-        (method git-fetch)
-        (uri (git-reference
-               (url "https://github.com/genenetwork/genenetwork1.git")
-               (commit commit)))
-        (file-name (git-file-name name version))
-        (sha256
-         (base32
-          "0xmmmjyvh80yd8b0cjrwpdmxl8k9zj5ly65r2g9aygx74njsp4fi"))))
-      (build-system gnu-build-system)
-      (native-inputs
-       `(("ghostscript" ,ghostscript)
-         ("graphviz" ,graphviz)
-         ("wget" ,wget)))
-      (propagated-inputs
-       `(("python" ,python-2.4)
-         ("httpd-with-mod-python" ,httpd22-with-mod-python)
-         ("python-direct" ,python24-direct-gn)
-         ("python-htmlgen-GN1" ,python24-htmlgen-GN1)
-         ("python-json-GN1" ,python24-json-GN1)
-         ("python-mysqlclient" ,python24-mysqlclient)
-         ("python-numarray" ,python24-numarray)
-         ("python-piddle" ,python24-piddle)
-         ("python-pp-GN1" ,python24-pp-GN1)
-         ("python-pyx" ,python24-pyx)
-         ("python-pyxlwriter" ,python24-pyxlwriter)
-         ("python-qtlreaper" ,python24-qtlreaper)
-         ("python-rpy2" ,python24-rpy2)
-         ("python-svg-GN1" ,python24-svg-GN1)))
-      (arguments
-       `(#:tests? #f ; no tests
-         #:phases
-         (modify-phases %standard-phases
-           (delete 'configure)
-           (delete 'build)
-           (add-after 'patch-generated-file-shebangs 'patch-more-files
-             (lambda* (#:key inputs #:allow-other-keys)
-               (let ((piddle (assoc-ref inputs "python-piddle")))
-                 (substitute* "web/webqtl/networkGraph/networkGraphUtils.py"
-                   (("/usr/local/bin/neato") (which "neato"))
-                   (("/usr/local/bin/circo") (which "circo"))
-                   (("/usr/local/bin/twopi") (which "twopi"))
-                   (("/usr/local/bin/fdp") (which "fdp"))
-                   (("ps2pdf") (which "ps2pdf")))
-                 (substitute* "web/webqtl/maintainance/addRif.py"
-                   (("rm ") (string-append (which "rm") " "))
-                   (("wget ") (string-append (which "wget") " "))
-                   (("gunzip") (which "gunzip")))
-                 (substitute* "web/webqtl/misc/editHtmlPage.py"
-                   (("/bin/cp") (which "cp")))
-                 (substitute* "web/webqtl/geneWiki/AddGeneRIFPage.py"
-                   (("touch") (which "touch")))
-                 (substitute* '("web/webqtl/maintainance/addRif.py"
-                                "web/webqtl/networkGraph/networkGraphPage.py"
-                                "web/webqtl/utility/svg.py")
-                   (("/usr/bin/(env )?python") (which "python")))
-                 (substitute* "web/webqtl/base/webqtlConfigLocal.py"
-                   (("PythonPath.*")
-                    (string-append "PythonPath = '" (which "python") "'\n"))
-                   (("PIDDLE_FONT_PATH.*/lib")
-                    (string-append "PIDDLE_FONT_PATH = '" piddle "/lib"))))
-               #t))
-           (add-after 'patch-generated-file-shebangs 'changes-for-deployed-service
-             (lambda* (#:key outputs #:allow-other-keys)
-               (let ((out    (assoc-ref outputs "out")))
-                 (substitute* "web/webqtl/base/webqtlConfigLocal.py"
-                   ;; Where GN1 is located: (GNROOT)
-                   (("/gnshare/gn") out)
-                   ;; Where the database is located: (sql_host)
-                   (("tux01.uthsc.edu") "127.0.0.1"))
-                   (substitute* '("web/webqtl/maintainance/QTL_Reaper_cal_lrs.py")
-                     (("128\\.169\\.5\\.59") "localhost"))
-                 ;; This directory (TMPDIR) is expected to be writable by apache.
-                 ;; /tmp is private inside the container.
-                 (symlink "/tmp" "web/tmp")
-                 ;; IMGDIR is expected to be writable.
-                 (symlink "/tmp" "web/image")
-                 (system "chmod 0777 web/tmp")
-                 ;; More writable locations:
-                 (substitute* (list "web/webqtl/collection/ExportSelectionDetailInfoPage.py"
-                                    "web/webqtl/pairScan/DirectPlotPage.py"
-                                    "web/webqtl/updateTrait/DataUpdatePage.py"
-                                    "web/webqtl/utility/Plot.py")
-                   (("/gnshare/gn/web/debug_file.txt") "/tmp/debug_file.txt"))
-                 ;; We mount the genotypes folder (GENODIR) in the OS-config and
-                 ;; provide the symlink to that location from the package.
-                 ;; And now the directory is magically available!
-                 (symlink "/gnshare/gn/web/genotypes" "web/genotypes")
-                 (substitute* "web/webqtl/base/webqtlConfig.py"
-                   (("http://www.genenetwork.org") "http://gn1-test.genenetwork.org"))
-                 ;; Inside the gn1 container, there's some conflict when
-                 ;; importing the user module, therefore, as a hack, rename
-                 ;; user to useralt
-                 (mkdir "web/webqtl/useralt")
-                 (copy-recursively "web/webqtl/user" "web/webqtl/useralt")
-                 (substitute* '("web/webqtl/main.py")
-                   (("from user import") "from useralt import"))
-                 #t)))
-           (add-after 'unpack 'use-local-links
-             (lambda _
-               (substitute* '("web/javascript/menu_items.js"
-                              "web/webqtl/maintainance/updateMenuJS.py")
-                 (("http://(www|gn1).genenetwork.org") ""))
-
-               ;; Move this file out of the way while patching files.
-               (rename-file "web/infoshare/manager/MDB-Free/index.html"
-                            "web/infoshare/manager/MDB-Free/index.htm")
-               (substitute* (cons*
-                              "web/webqtl/base/indexBody.py"
-                              "web/webqtl/submitTrait/BatchSubmitPage.py"
-                              (find-files "web" "\\.html"))
-                 ((".*base href.*") "")
-                 (("(HREF|href)=\\\"http://(www.)?genenetwork.org")
-                  "href=\""))
-               ;; Move this file back to its original location.
-               (rename-file "web/infoshare/manager/MDB-Free/index.htm"
-                            "web/infoshare/manager/MDB-Free/index.html")
-
-               (substitute* (cons*
-                              "web/humanCross.html"
-                              "web/webqtl/base/indexBody.py"
-                              "web/whats_new.html"
-                              (find-files "web/dbdoc" "\\.html"))
-                 (("src=\\\"http://www.genenetwork.org") "src=\""))
-               #t))
-           (replace 'install
-             (lambda* (#:key outputs #:allow-other-keys)
-               (copy-recursively "." (assoc-ref outputs "out"))
-               #t)))))
-      (home-page "http://www.genenetwork.org/webqtl/main.py")
-      (synopsis
-       "Combined database and data analysis software resource for systems genetics")
-      (description "GeneNetwork is a group of linked data sets and tools used to
-study complex networks of genes, molecules, and higher order gene function and
-phenotypes.  GeneNetwork combines more than 25 years of legacy data generated by
-hundreds of scientists together with sequence data (SNPs) and massive
-transcriptome data sets (expression genetic or eQTL data sets).  The
-@dfn{quantitative trait locus} (QTL) mapping module that is built into GN is
-optimized for fast on-line analysis of traits that are controlled by
-combinations of gene
-variants and environmental factors.  GeneNetwork can be used to study humans,
-mice (BXD, AXB, LXS, etc.), rats (HXB), Drosophila, and plant species (barley
-and Arabidopsis).  Most of these population data sets are linked with dense
-genetic maps (genotypes) that can be used to locate the genetic modifiers that
-cause differences in expression and phenotypes, including disease susceptibility.")
-      (license license:agpl3+))))
diff --git a/gn/services/bxd-power-container.scm b/gn/services/bxd-power-container.scm
deleted file mode 100644
index 9191302..0000000
--- a/gn/services/bxd-power-container.scm
+++ /dev/null
@@ -1,24 +0,0 @@
-(define-module (gn services bxd-power-container))
-
-(use-modules (gnu)
-             (gn packages bioinformatics)
-             (gn services rshiny))
-
-(operating-system
-  (host-name "bxd-power")
-  (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 '())
-  ;; We only need a few packages inside the container.
-  (packages (list coreutils))
-
-  (services (list (service rshiny-service-type
-                           (rshiny-configuration
-                             (package bxd-power-calculator-app)
-                             (binary "bxd-power-calculator-app"))))))
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")))
-                           ))))
diff --git a/gn/services/file-systems.scm b/gn/services/file-systems.scm
deleted file mode 100644
index 386f2ac..0000000
--- a/gn/services/file-systems.scm
+++ /dev/null
@@ -1,653 +0,0 @@
-(define-module (gn services file-systems)
-  #:use-module (guix gexp)
-  #:use-module (guix records)
-  #:use-module (gnu services)
-  #:use-module (gnu services shepherd)
-  #:use-module (gnu system accounts)
-  #:use-module (gnu system shadow)
-  #:use-module (gnu packages admin)
-  #:use-module (gnu packages linux)
-  #:use-module (gn packages file-systems)
-  #:use-module (ice-9 match)
-  #:use-module (srfi srfi-1)
-  #:use-module (srfi srfi-9)
-
-  #:export (lizardfs-configuration
-            lizardfs-configuration?
-            lizardfs-service-type
-
-            lizardfs-mfschunkserver-config-file
-            lizardfs-mfschunkserver-config-file?
-            lizardfs-mfshdd-config-file
-            lizardfs-mfshdd-config-file?
-            lizardfs-mfsmaster-config-file
-            lizardfs-mfsmaster-config-file?
-            lizardfs-mfsmetalogger-config-file
-            lizardfs-mfsmetalogger-config-file?))
-
-
-(define %lizardfs-accounts
-  (list (user-group
-          (name "lizardfs")
-          (system? #t))
-        (user-account
-          (name "lizardfs")
-          (group "lizardfs")
-          (system? #t)
-          (comment "Lizardfs User")
-          (home-directory "/var/lib/lizardfs")
-          (shell (file-append shadow "/sbin/nologin")))))
-
-(define-record-type* <lizardfs-mfsmetalogger-config-file>
-  lizardfs-mfsmetalogger-config-file
-  make-lizardfs-mfsmetalogger-config-file
-  lizardfs-mfsmetalogger-config-file?
-  (working-user     lizardfs-mfsmetalogger-config-file-working-user
-                    (default "lizardfs"))
-  (working-group    lizardfs-mfsmetalogger-config-file-working-group
-                    (default "lizardfs"))
-  (syslog-identifier lizardfs-mfsmetalogger-config-file-syslog-identifier
-                     (default "mfsmetalogger"))
-  (lock-memory      lizardfs-mfsmetalogger-config-file-lock-memory
-                    (default #f))   ; 0 or 1
-  (nice-level       lizardfs-mfsmetalogger-config-file-nice-level
-                    (default -19))
-  (data-path        lizardfs-mfsmetalogger-config-file-data-path
-                    (default "/var/lib/lizardfs"))
-  (back-logs        lizardfs-mfsmetalogger-config-file-back-logs
-                    (default 50))
-  (back-meta-keep-previous  lizardfs-mfsmetalogger-config-file-back-meta-keep-previous
-                            (default 3))
-  (meta-download-frequency  lizardfs-mfsmetalogger-config-file-meta-download-frequency
-                            (default 24))
-  (master-reconnection-delay    lizardfs-mfsmetalogger-config-file-master-reconnection-delay
-                                (default 5))
-  (master-host      lizardfs-mfsmetalogger-config-file-master-host
-                    (default "mfsmaster"))
-  (master-port      lizardfs-mfsmetalogger-config-file-master-port
-                    (default 9419))
-  (master-timeout   lizardfs-mfsmetalogger-config-file-master-timeout
-                    (default 60)))
-
-(define-gexp-compiler (lizardfs-mfsmetalogger-config-file-compiler
-                        (file <lizardfs-mfsmetalogger-config-file>) system target)
-  (match file
-         (($ <lizardfs-mfsmetalogger-config-file> working-user working-group syslog-identifier lock-memory nice-level data-path back-logs back-meta-keep-previous meta-download-frequency master-reconnection-delay master-host master-port master-timeout)
-          (gexp->derivation
-            "mfsmetalogger.cfg"
-            #~(call-with-output-file #$output
-                (lambda (port)
-                  (display
-                    (string-append
-                      "# This file generated by GNU Guix\n\n"
-                      (ungexp-splicing
-                        `(,@`("WORKING_USER = " ,working-user "\n")
-                          ,@`("WORKING_GROUP = " ,working-group "\n")
-                          ,@`("SYSLOG_IDENT = " ,syslog-identifier "\n")
-                          ,@(if lock-memory
-                              `("LOCK_MEMORY = 1\n")
-                              `("LOCK_MEMORY = 0\n"))
-                          ,@`("NICE_LEVEL = " ,(number->string nice-level) "\n")
-                          ,@`("DATA_PATH = " ,data-path "\n")
-                          ,@`("BACK_LOGS = " ,(number->string back-logs) "\n")
-                          ,@`("BACK_META_KEEP_PREVIOUS = " ,(number->string back-meta-keep-previous) "\n")
-                          ,@`("META_DOWNLOAD_FREQ = " ,(number->string meta-download-frequency) "\n")
-                          ,@`("MASTER_RECONNECTION_DELAY = " ,(number->string master-reconnection-delay) "\n")
-                          ,@`("MASTER_HOST = " ,master-host "\n")
-                          ,@`("MASTER_PORT = " ,(number->string master-port) "\n")
-                          ,@`("MASTER_TIMEOUT = " ,(number->string master-timeout) "\n"))))
-                    port)))
-            #:local-build? #t))))
-
-(define-record-type* <lizardfs-mfschunkserver-config-file>
-  lizardfs-mfschunkserver-config-file
-  make-lizardfs-mfschunkserver-config-file
-  lizardfs-mfschunkserver-config-file?
-  (label            lizardfs-mfschunkserver-label
-                    (default "_"))
-  (working-user     lizardfs-mfschunkserver-config-file-working-user
-                    (default "lizardfs"))
-  (working-group    lizardfs-mfschunkserver-config-file-working-group
-                    (default "lizardfs"))
-  (syslog-identifier lizardfs-mfschunkserver-config-file-syslog-identifier
-                     (default "mfschunkserver"))
-  (lock-memory      lizardfs-mfschunkserver-config-file-lock-memory
-                    (default #f))   ; 0 or 1
-  (nice-level       lizardfs-mfschunkserver-config-file-nice-level
-                    (default -19))
-  (data-path        lizardfs-mfschunkserver-config-file-data-path
-                    (default "/var/lib/lizardfs"))
-  (master-reconnection-delay    lizardfs-mfschunkserver-config-file-master-reconnection-delay
-                                (default 5))
-  (bind-host        lizardfs-mfschunkserver-bind-host
-                    (default "*"))
-  (master-host      lizardfs-mfschunkserver-config-file-master-host
-                    (default "mfsmaster"))
-  (master-port      lizardfs-mfschunkserver-config-file-master-port
-                    (default 9420))
-  (master-timeout   lizardfs-mfschunkserver-config-file-master-timeout
-                    (default 60))
-  (csserv-listen-host       lizardfs-mfschunkserver-config-csserv-listen-host
-                            (default "*"))
-  (csserv-listen-port       lizardfs-mfschunkserver-config-csserv-listen-port
-                            (default 9422))
-  (hdd-conf-filename        lizardfs-mfschunkserver-config-hdd-conf-filename
-                            (default "/etc/lizardfs/mfshdd.cfg"))      ; This should be our generated one
-  (hdd-leave-space-default  lizardfs-mfschunkserver-config-hdd-leave-space-default
-                            (default "4GiB"))
-  (hdd-test-freq        lizardfs-mfschunkserver-config-hdd-test-freq
-                        (default 10))
-  (hdd-advise-no-cache  lizardfs-mfschunkserver-config-hdd-advise-no-cache
-                        (default #t))   ; 0 or 1
-  (hdd-punch-holes      lizardfs-mfschunkserver-config-hdd-punch-holes
-                        (default #t))   ; 0 or 1
-  (enable-load-factor   lizardfrs-mfschunkserver-config-enable-load-factor
-                        (default #f))   ; 0 or 1
-  (replication-bandwidth-limit-kbps
-                        lizardfs-mfschunkserver-config-replication-bandwidth-limit-kbps
-                        (default 8192))
-  (nr-of-network-workers    lizardfs-mfschunkserver-config-nr-of-network-workers
-                            (default 1))
-  (nr-of-hdd-workers-per-network-worker
-                        lizardfs-mfschunkerver-config-nr-of-hdd-workers-per-network-pworker
-                        (default 20))
-  (read-ahead-kb        lizardfs-mfschunkserver-config-read-ahead-kb
-                        (default 0))
-  (max-read-behind-kb   lizardfs-mfschunkserver-config-max-read-behind-kb
-                        (default 0))
-  (create-new-chunks-in-moosefs-format
-                        lizardfs-mfschunkserver-config-crate-new-chunks-in-moosefs-format
-                        (default #t))   ; 0 or 1
-  (perform-fsync        lizardfs-mfschunkserver-config-perform-fsync
-                        (default #t))   ; 0 or 1
-  )
-
-(define-gexp-compiler (lizardfs-mfschunkserver-config-file-compiler
-                        (file <lizardfs-mfschunkserver-config-file>) system target)
-  (match file
-         (($ <lizardfs-mfschunkserver-config-file> label working-user working-group syslog-identifier lock-memory nice-level data-path master-reconnection-delay bind-host master-host master-port master-timeout csserv-listen-host csserv-listen-port hdd-conf-filename hdd-leave-space-default hdd-test-freq hdd-advise-no-cache hdd-punch-holes enable-load-factor replication-bandwidth-limit-kbps nr-of-network-workers nr-of-hdd-workers-per-network-worker read-ahead-kb max-read-behind-kb create-new-chunks-in-moosefs-format perform-fsync)
-          (gexp->derivation
-            "mfschunkserver.cfg"
-            #~(call-with-output-file #$output
-                (lambda (port)
-                  (display
-                    (string-append
-                      "# This file generated by GNU Guix\n\n"
-                      (ungexp-splicing
-                        `(,@`("LABEL = " ,label "\n")
-                          ,@`("WORKING_USER = " ,working-user "\n")
-                          ,@`("WORKING_GROUP = " ,working-group "\n")
-                          ,@`("SYSLOG_IDENT = " ,syslog-identifier "\n")
-                          ,@(if lock-memory
-                              `("LOCK_MEMORY = 1\n")
-                              `("LOCK_MEMORY = 0\n"))
-                          ,@`("NICE_LEVEL = " ,(number->string nice-level) "\n")
-                          ,@`("DATA_PATH = " ,data-path "\n")
-                          ,@`("MASTER_RECONNECTION_DELAY = " ,(number->string master-reconnection-delay) "\n")
-                          ,@`("MASTER_HOST = " ,master-host "\n")
-                          ,@`("MASTER_PORT = " ,(number->string master-port) "\n")
-                          ,@`("MASTER_TIMEOUT = " ,(number->string master-timeout) "\n")
-                          ,@`("CSSERV_LISTEN_HOST = " ,csserv-listen-host "\n")
-                          ,@`("CSSERV_LISTEN_PORT = " ,(number->string csserv-listen-port) "\n")
-                          ,@`("HDD_CONF_FILENAME = " ,hdd-conf-filename "\n")
-                          ,@`("HDD_LEAVE_SPACE_DEFAULT = " ,hdd-leave-space-default "\n")
-                          ,@`("HDD_TEST_FREQ = " ,(number->string hdd-test-freq) "\n")
-                          ,@(if hdd-advise-no-cache
-                              `("HDD_ADVISE_NO_CACHE = 1\n")
-                              `("HDD_ADVISE_NO_CACHE = 0\n"))
-                          ,@(if hdd-punch-holes
-                              `("HDD_PUNCH_HOLES = 1\n")
-                              `("HDD_PUNCH_HOLES = 0\n"))
-                          ,@(if enable-load-factor
-                              `("ENABLE_LOAD_FACTOR = 1\n")
-                              `("ENABLE_LOAD_FACTOR = 0\n"))
-                          ,@`("REPLICATION_BANDWIDTH_LIMIT_KBPS = " ,(number->string replication-bandwidth-limit-kbps) "\n")
-                          ,@`("NR_OF_NETWORK_WORKERS = " ,(number->string nr-of-network-workers) "\n")
-                          ,@`("NR_OF_HDD_WORKERS_PER_NETWORK_WORKER = " ,(number->string nr-of-hdd-workers-per-network-worker) "\n")
-                          ,@`("READ_AHEAD_KB = " ,(number->string read-ahead-kb) "\n")
-                          ,@`("MAX_READ_BEHIND_KB = " ,(number->string max-read-behind-kb) "\n")
-                          ,@(if create-new-chunks-in-moosefs-format
-                              `("CREATE_NEW_CHUNKS_IN_MOOSEFS_FORMAT = 1\n")
-                              `("CREATE_NEW_CHUNKS_IN_MOOSEFS_FORMAT = 0\n"))
-                          ,@(if perform-fsync
-                              `("PERFORM_FSYNC = 1\n")
-                              `("PERFORM_FSYNC = 0\n")))))
-                    port)))
-            #:local-build? #t))))
-
-(define-record-type* <lizardfs-mfshdd-config-file>
-  lizardfs-mfshdd-config-file
-  make-lizardfs-mfshdd-config-file
-  lizardfs-mfshdd-config-file?
-  (disks-to-use     lizardfs-mfshdd-config-file-disks-to-use
-                    (default '()))
-  (disks-to-remove  lizardfs-mfshdd-config-file-disks-to-remove
-                    (default '())))
-
-(define-gexp-compiler (lizardfs-mfshdd-config-file-compiler
-                        (file <lizardfs-mfshdd-config-file>) system target)
-  (match file
-         (($ <lizardfs-mfshdd-config-file> disks-to-use disks-to-remove)
-          (gexp->derivation
-            "mfshdd.cfg"
-            #~(call-with-output-file #$output
-                (lambda (port)
-                  (display
-                    (string-append
-                      "# This file generated by GNU Guix\n\n"
-                      (ungexp-splicing
-                        `(,@(append-map
-                              (lambda (disk)
-                                `(,disk "\n"))
-                              disks-to-use)
-                          ,@(append-map
-                              (lambda (disk)
-                                `("*" ,disk "\n"))
-                              disks-to-remove))))
-                    port)))
-            #:local-build? #t))))
-
-(define-record-type* <lizardfs-mfsmaster-config-file>
-  lizardfs-mfsmaster-config-file
-  make-lizardfs-mfsmaster-config-file
-  lizardfs-mfsmaster-config-file?
-  (personality      lizardsf-mfsmaster-config-personality
-                    (default ""))
-  (admin-password   lizardfs-mfsmaster-config-admin-password
-                    (default ""))
-  (working-user     lizardfs-mfsmaster-config-working-user
-                    (default "lizardfs"))
-  (working-group    lizardfs-mfsmaster-config-working-group
-                    (default "lizardfs"))
-  (syslog-ident     lizardfs-mfsmaster-config-syslog-ident
-                    (default "mfsmaster"))
-  (lock-memory      lizardfs-mfsmaster-config-lock-memory
-                    (default #f))   ; 0 or 1
-  (nice-level       lizardfs-mfsmaster-config-nice-level
-                    (default -19))
-  (exports-filename lizardfs-mfsmaster-config-exports-filename
-                    (default "/etc/lizardfs/mfsexports.cfg"))   ; our created one?
-  (topology-filename    lizardfs-mfsmaster-config-topology-filename
-                        (default "/etc/lizardfs/mfstopology.cfg"))   ; our created one?
-  (custom-goals-filename    lizardfs-mfsmaster-config-custom-goals-filename
-                            (default "/etc/lizardfs/mfsgoals.cfg"))  ; our created one?
-  (data-path        lizardfs-mfsmaster-config-data-path
-                    (default "/var/lib/lizardfs"))
-  (prefer-local-chunkserver lizardfs-mfsmaster-prefer-local-chunkserver
-                            (default #t))    ; 0 or 1
-  (auto-recovery    lizardfs-mfsmaster-config-auto-recovery
-                    (default #f))       ; 0 or 1
-  (back-logs        lizardfs-mfsmaster-config-back-logs
-                    (default 50))
-  (back-meta-keep-previous  lizardfs-mfsmaster-config-back-meta-keep-previous
-                            (default 1))
-  (operations-delay-init    lizardfs-mfsmaster-config-operations-delay-init
-                            (default 300))
-  (operations-delay-disconnect  lizardfs-mfsmaster-config-operations-delay-disconnect
-                                (default 3600))
-  (matoml-listen-host   lizardfs-mfsmaster-config-matoml-listen-host
-                        (default "*"))
-  (matoml-listen-port   lizardfs-mfsmaster-config-matoml-listen-port
-                        (default 9419))
-  (matoml-log-preserve-seconds  lizardfs-mfsmaster-config-matoml-log-preserve-seconds
-                                (default 600))
-  (matocs-listen-host   lizardfs-mfsmaster-config-matocs-listen-host
-                        (default "*"))
-  (matocs-listen-port   lizardfs-mfsmaster-config-matocs-listen-port
-                        (default 9420))
-  (matocl-listen-host   lizardfs-mfsmaster-config-matocl-listen-host
-                        (default "*"))
-  (matocl-listen-port   lizardfs-mfsmaster-config-matocl-listen-port
-                        (default 9421))
-  (matots-listen-host   lizardfs-mfsmaster-config-matots-listen-host
-                        (default "*"))
-  (matots-listen-port   lizardfs-mfsmaster-config-matots-listen-port
-                        (default 9424))
-  (chunks-loop-max-cps  lizardfs-mfsmaster-config-chunks-loop-max-cps
-                        (default 100000))
-  (chunks-loop-min-time lizardfs-mfsmaster-config-chunks-loop-min-time
-                        (default 300))
-  (chunks-loop-peroid   lizardfs-mfsmaster-config-chunks-loop-period
-                        (default 1000))
-  (chunks-loop-max-cpu  lizardfs-mfsmaster-config-chunks-loop-max-cpu
-                        (default 60))
-  (chunks-soft-del-limit    lizardfs-mfsmaster-config-chunks-soft-del-limit
-                            (default 10))
-  (chunks-hard-del-limit    lizardfs-mfsmaster-config-chunks-hard-del-limit
-                            (default 25))
-  (chunks-write-rep-limit   lizardfs-mfsmaster-config-chunks-write-rep-limit
-                            (default 2))
-  (chunks-read-rep-limit    lizardfs-mfsmaster-config-chunks-read-rep-limit
-                            (default 10))
-  (endangered-chunks-priority   lizardfs-mfsmaster-config-endangered-chunks-priority
-                                (default 0))
-  (endangered-chunks-max-capacity   lizardfs-mfsmaster-config-endangered-chunks-max-capacity
-                                    (default "1Mi"))
-  (acceptable-difference    lizardfs-mfsmaster-config-acceptable-difference
-                            (default 0.1))
-  (chunks-rebalancing-between-labels    lizardfs-mfsmaster-config-chunks-rebalancing-between-labels
-                                        (default 0))
-  (free-inodes-period   lizardfs-mfsmaster-config-free-inodes-period
-                        (default 60))
-  (no-atime             lizardfs-mfsmaster-config-no-atime
-                        (default #f))       ; 0 or 1
-  (session-sustain-time lizardfs-mfsmaster-config-session-sustain-time
-                        (default 86400))
-  (reject-old-client    lizardfs-mfsmaster-config-reject-old-clients
-                        (default #f))       ; 0 or 1
-  (globaliolimits-filename  lizardfs-mfsmaster-config-globaliolimits-filename
-                            (default "/etc/lizardfs/globaliolimits.cfg"))   ; our generated one?
-  (globaliolimits-renegotiation-period-settings
-                        lizardfs-mfsmaster-config-globaliolmits-renegotiation-period-settings
-                        (default 0.1))
-  (globaliolimits-accumulate-ms lizardfs-mfsmaster-config-globaliolimits-accumulate-ms
-                                (default 250))
-  (mfsmetarestore-path  lizardfs-mfsmaster-config-mfsmeaterestore-path
-                        (default (file-append lizardfs "/sbin/mfsmetarestore")))
-  (master-reconnection-delay    lizardfs-mfsmaster-config-master-reconnection-delay
-                                (default 5))
-  (master-host      lizardfs-mfsmaster-config-master-host
-                    (default "mfsmaster"))
-  (master-port      lizardfs-mfsmaster-config-master-port
-                    (default 9419))
-  (master-timeout   lizardfs-mfsmaster-config-master-timeout
-                    (default 60))
-  (metadata-checksum-interval   lizardfs-mfsmaster-config-metadata-checksum-interval
-                                (default 50))
-  (metadata-checksum-recalculation-speed    lizardfs-mfsmaster-config-metadata-recalculation-speed
-                                            (default 100))
-  (disable-metadata-checksum-verification   lizardfs-mfsmaster-config-disable-metadata-checksum-verification
-                                            (default #f))   ; 0 or 1
-  (metadata-save-request-min-period     lizardfs-mfsmaster-config-metadata-save-request-min-period
-                                        (default 1800))
-  (use-bdb-for-name-storage     lizardfs-mfsmaster-config-use-bdb-for-name-storage
-                                (default #t))       ; 0 or 1
-  (bdb-name-storage-cache       lizardfs-mfsmaster-config-bdb-name-storage-cache
-                                (default 10))
-  (avoid-same-ip-chunkservers   lizardfs-mfsmaster-config-avoid-same-ip-chunkservers
-                                (default #f))       ; 0 or 1
-  (load-factor-penalty      lizardfs-mfsmaster-config-load-factor-penalty
-                            (default 0))        ; between 0, 0.5, inclusive
-  (redundancy-level         lizardfs-mfsmaster-config-redundancy-level
-                            (default 0))
-  (snapshot-initial-batch-size-limit    lizardfs-mfsmaster-config-snapshot-initial-batch-size-limit
-                                        (default 10000))
-  (file-test-loop-min-time  lizardfs-mfsmaster-config-file-test-loop-min-time
-                            (default 3600)))
-
-
-(define-gexp-compiler (lizardfs-mfsmaster-config-file-compiler
-                        (file <lizardfs-mfsmaster-config-file>) system target)
-  (match file
-         (($ <lizardfs-mfsmaster-config-file> personality admin-password working-user working-group syslog-ident lock-memory nice-level exports-filename topology-filename custom-goals-filename data-path prefer-local-chunkserver auto-recovery back-logs back-meta-keep-previous operations-delay-init operations-delay-disconnect matoml-listen-host matoml-listen-port matoml-log-preserve-seconds matocs-listen-host matocs-listen-port matocl-listen-host matocl-listen-port matots-listen-host matots-listen-port chunks-loop-max-cps chunks-loop-min-time chunks-loop-period chunks-loop-max-cpu chunks-soft-del-limit chunks-hard-del-limit chunks-write-rep-limit chunks-read-rep-limit endangered-chunks-priority endangered-chunks-max-capacity acceptable-difference chunks-rebalancing-between-labels free-inodes-period no-atime session-sustain-time reject-old-client globaliolimits-filename globaliolimits-renegotiation-period-settings globaliolimits-accumulate-ms mfsmetarestore-path master-reconnection-delay master-host master-port master-timeout metadata-checksum-interval metadata-checksum-recalculation-speed disable-metadata-checksum-verification metadata-save-request-min-period use-bdb-for-name-storage bdb-name-storage-cache avoid-same-ip-chunkservers load-factor-penalty redundancy-level snapshot-initial-batch-size-limit file-test-loop-min-time)
-          (gexp->derivation
-            "mfsmaster.cfg"
-            #~(call-with-output-file #$output
-                (lambda (port)
-                  (display
-                    (string-append
-                      "# This file generated by GNU Guix\n\n"
-                      (ungexp-splicing
-                        `(,@`("PERSONALITY = " ,personality "\n")
-                          ,@`("ADMIN_PASSWORD = \"" ,admin-password "\"\n")
-                          ,@`("WORKING_USER = " ,working-user "\n")
-                          ,@`("WORKING_GROUP = " ,working-group "\n")
-                          ,@`("SYSLOG_IDENT = " ,syslog-ident "\n")
-                          ,@(if lock-memory
-                              `("LOCK_MEMORY = 1\n")
-                              `("LOCK_MEMORY = 0\n"))
-                          ,@`("NICE_LEVEL = " ,(number->string nice-level) "\n")
-                          ,@`("EXPORTS_FILENAME = " ,exports-filename "\n")
-                          ,@`("TOPOLOGY_FILENAME = " ,topology-filename "\n")
-                          ,@`("CUSTOM_GOALS_FILENAME = " ,custom-goals-filename "\n")
-                          ,@`("DATA_PATH = " ,data-path "\n")
-                          ,@(if prefer-local-chunkserver
-                              `("PREFER_LOCAL_CHUNKSERVER = 1\n")
-                              `("PREFER_LOCAL_CHUNKSERVER = 0\n"))
-                          ,@(if auto-recovery
-                              `("AUTO_RECOVERY = 1\n")
-                              `("AUTO_RECOVERY = 0\n"))
-                          ,@`("BACK_LOGS = " ,(number->string back-logs) "\n")
-                          ,@`("BACK_META_KEEP_PREVIOUS = " ,(number->string back-meta-keep-previous) "\n")
-                          ,@`("OPERATIONS_DELAY_INIT = " ,(number->string operations-delay-init) "\n")
-                          ,@`("OPERATIONS_DELAY_DISCONNECT = " ,(number->string operations-delay-disconnect) "\n")
-                          ,@`("MATOML_LISTEN_HOST = " ,matoml-listen-host "\n")
-                          ,@`("MATOML_LISTEN_PORT = " ,(number->string matoml-listen-port) "\n")
-                          ,@`("MATOML_LOG_PRESERVE_SECONDS = " ,(number->string matoml-log-preserve-seconds) "\n")
-                          ,@`("MATOCS_LISTEN_HOST = " ,matocs-listen-host "\n")
-                          ,@`("MATOCS_LISTEN_PORT = " ,(number->string matocs-listen-port) "\n")
-                          ,@`("MATOCL_LISTEN_HOST = " ,matocl-listen-host "\n")
-                          ,@`("MATOCL_LISTEN_PORT = " ,(number->string matocl-listen-port) "\n")
-                          ,@`("MATOTS_LISTEN_HOST = " ,matots-listen-host "\n")
-                          ,@`("MATOTS_LISTEN_PORT = " ,(number->string matots-listen-port) "\n")
-                          ,@`("CHUNKS_LOOP_MAX_CPS = " ,(number->string chunks-loop-max-cps) "\n")
-                          ,@`("CHUNKS_LOOP_MIN_TIME = " ,(number->string chunks-loop-min-time) "\n")
-                          ,@`("CHUNKS_LOOP_PERIOD = " ,(number->string chunks-loop-period) "\n")
-                          ,@`("CHUNKS_LOOP_MAX_CPU = " ,(number->string chunks-loop-max-cpu) "\n")
-                          ,@`("CHUNKS_SOFT_DEL_LIMIT = " ,(number->string chunks-soft-del-limit) "\n")
-                          ,@`("CHUNKS_HARD_DEL_LIMIT = " ,(number->string chunks-hard-del-limit) "\n")
-                          ,@`("CHUNKS_WRITE_REP_LIMIT = " ,(number->string chunks-write-rep-limit) "\n")
-                          ,@`("CHUNKS_READ_REP_LIMIT = " ,(number->string chunks-read-rep-limit) "\n")
-                          ,@`("ENDANGERED_CHUNKS_PRIORITY = " ,(number->string endangered-chunks-priority) "\n")
-                          ,@`("ENDANGERED_CHUNKS_MAX_CAPACITY = " ,endangered-chunks-max-capacity "\n")
-                          ,@`("ACCEPTABLE_DIFFERENCE = " ,(number->string acceptable-difference) "\n")
-                          ,@`("CHUNKS_REBALANCING_BETWEEN_LABELS = " ,(number->string chunks-rebalancing-between-labels) "\n")
-                          ,@`("FREE_INODES_PERIOD = " ,(number->string free-inodes-period) "\n")
-                          ,@(if no-atime
-                              `("NO_ATIME = 1\n")
-                              `("NO_ATIME = 0\n"))
-                          ,@`("SESSION_SUSTAIN_TIME = " ,(number->string session-sustain-time) "\n")
-                          ,@(if reject-old-client
-                              `("REJECT_OLD_CLIENT = 1\n")
-                              `("REJECT_OLD_CLIENT = 0\n"))
-                          ,@`("GLOBALIOLIMITS_FILENAME = " ,globaliolimits-filename "\n")
-                          ,@`("GLOBALIOLIMITS_RENEGOTIATION_PERIOD_SETTINGS = " ,(number->string globaliolimits-renegotiation-period-settings) "\n")
-                          ,@`("GLOBALIOLIMITS_ACCUMULATE_MS = " ,(number->string globaliolimits-accumulate-ms) "\n")
-                          ,@`("MFSMETARESTORE_PATH = " ,mfsmetarestore-path "\n")
-                          ,@`("MASTER_RECONNECTION_DELAY = " ,(number->string master-reconnection-delay) "\n")
-                          ,@`("MASTER_HOST = " ,master-host "\n")
-                          ,@`("MASTER_PORT = " ,(number->string master-port) "\n")
-                          ,@`("MASTER_TIMEOUT = " ,(number->string master-timeout) "\n")
-                          ,@`("METADATA_CHECKSUM_INTERVAL = " ,(number->string metadata-checksum-interval) "\n")
-                          ,@`("METADATA_CHECKSUM_RECALCULATION_SPEED = " ,(number->string metadata-checksum-recalculation-speed) "\n")
-                          ,@(if disable-metadata-checksum-verification
-                              `("DISABLE_METADATA_CHECKSUM_VERIFICATION = 1\n")
-                              `("DISABLE_METADATA_CHECKSUM_VERIFICATION = 0\n"))
-                          ,@`("METADATA_SAVE_REQUEST_MIN_PERIOD = " ,(number->string metadata-save-request-min-period) "\n")
-                          ,@(if use-bdb-for-name-storage
-                              `("USE_BDB_FOR_NAME_STORAGE = 1\n")
-                              `("USE_BDB_FOR_NAME_STORAGE = 0\n"))
-                          ,@`("BDB_NAME_STORAGE_CACHE = " ,(number->string bdb-name-storage-cache) "\n")
-                          ,@(if avoid-same-ip-chunkservers
-                              `("AVOID_SAME_IP_CHUNKSERVERS = 1\n")
-                              `("AVOID_SAME_IP_CHUNKSERVERS = 0\n"))
-                          ,@`("LOAD_FACTOR_PENALTY = " ,(number->string load-factor-penalty) "\n")
-                          ,@`("REDUNDANCY_LEVEL = " ,(number->string redundancy-level) "\n")
-                          ,@`("SNAPSHOT_INITIAL_BATCH_SIZE_LIMIT = " ,(number->string snapshot-initial-batch-size-limit) "\n")
-                          ,@`("FILE_TEST_LOOP_MIN_TIME = " ,(number->string file-test-loop-min-time) "\n"))))
-                    port)))
-            #:local-build? #t))))
-
-(define-record-type* <lizardfs-configuration>
-  lizardfs-configuration
-  make-lizardfs-configuration
-  lizardfs-configuration?
-  (package                  lizardfs-configuration-package
-                            (default lizardfs))
-  (mfsmetalogger-config     lizardfs-configuration-mfsmetalogger-config
-                            (default (lizardfs-mfsmetalogger-config-file)))
-  (mfschunkserver-config    lizardfs-configuration-mfschunkserver-config
-                            (default (lizardfs-mfschunkserver-config-file)))
-  (mfshdd-config            lizardfs-configuration-mfshdd-config
-                            (default (lizardfs-mfshdd-config-file)))
-  (mfsmaster-config         lizardfs-configuration-mfsmaster-config
-                            (default (lizardfs-mfsmaster-config-file)))
-  (run-mfsmetalogger-service? lizardfs-configuration-run-mfsmetalogger-service
-                            (default #f))
-  (mfsgoals-config          lizardfs-configuration-mfsgoals-config
-                            (default (plain-file "mfsgoals.cfg"
-                                                 (string-append
-                                                   "1 1_copy : _\n"
-                                                   "2 2_copies : _ _\n"
-                                                   "3 3_copies : _ _ _\n"))))
-  (mfsmount-config          lizardfs-configuration-mfsmount-config
-                            (default (plain-file "mfsmount.cfg"
-                                                 "")))
-  (mfsexports-config        lizardfs-configuration-mfsexports-config
-                            (default (plain-file "mfsexports.cfg"
-                                                 "")))
-  (mfstopology-config       lizardfs-configuration-mfstopology-config
-                            (default (plain-file "mfstopology.cfg"
-                                                 "")))
-  (globaliolimits-config    lizardfs-configuration-globaliolimits-config
-                            (default (plain-file "globaliolimits.cfg"
-                                                 "")))
-  (iolimits-config          lizardfs-configuration-iolimits-config
-                            (default (plain-file "iolimits.cfg"
-                                                 ""))))
-
-(define lizardfs-shepherd-service
-  (match-lambda
-    (($ <lizardfs-configuration> package)
-     (list
-       (shepherd-service
-         (documentation "Lizardfs mfsmaster server")
-         (provision '(lizardfs))
-         (requirement '(loopback))
-         (start #~(make-forkexec-constructor
-                    (list #$(file-append package "/sbin/mfsmaster")
-                          "-c" "/etc/lizardfs/mfsmaster.cfg"
-                          "-d" "start")
-                    #:log-file "/var/log/mfsmaster.log"))
-         (stop #~(make-system-destructor
-                   #$(file-append package "/sbin/mfsmaster")
-                   " -c /etc/lizardfs/mfsmaster.cfg"
-                   " stop"))
-         (respawn? #f)
-         (auto-start? #f)
-         )))))
-
-(define lizardfs-mfsmetalogger-shepherd-service
-  (match-lambda
-    (($ <lizardfs-configuration> package)
-     (list
-       (shepherd-service
-         (documentation "Lizardfs mfsmetalogger server")
-         (provision '(lizardfs-mfsmetalogger))
-         (requirement '(loopback lizardfs))
-         (start #~(make-forkexec-constructor
-                    (list #$(file-append package "/sbin/mfsmetalogger")
-                          "-c" "/etc/lizardfs/mfsmetalogger.cfg"
-                          "-d" "start")
-                    #:log-file "/var/log/mfsmetalogger.log"))
-         (stop #~(make-system-destructor
-                   #$(file-append package "/sbin/mfsmetalogger")
-                   " -c /etc/lizardfs/mfsmetalogger.cfg"
-                   " stop"))
-         (auto-start? #f)
-         )))))
-
-(define lizardfs-mfschunkserver-shepherd-service
-  (match-lambda
-    (($ <lizardfs-configuration> package)
-     (list
-       (shepherd-service
-         (documentation "Lizardfs mfschunkserver server")
-         (provision '(lizardfs-mfschunkserver))
-         (requirement '(loopback lizardfs))
-         (start #~(make-forkexec-constructor
-                    (list #$(file-append package "/sbin/mfschunkserver")
-                          "-c" "/etc/lizardfs/mfschunkserver.cfg"
-                          "-d" "start")
-                    #:log-file "/var/log/mfschunkserver.log"))
-         (stop #~(make-system-destructor
-                   #$(file-append package "/sbin/mfschunkserver")
-                   " -c /etc/lizardfs/mfschunkserver.cfg"
-                   " stop"))
-         (auto-start? #f)
-         )))))
-
-(define lizardfs-mfsmount-shepherd-service
-  (match-lambda
-    (($ <lizardfs-configuration> package)
-     (list
-       (shepherd-service
-         (documentation "Mount Lizardfs filesystems")
-         (provision '(lizardfs-mounts))
-         (requirement '(loopback))
-         (start #~(make-forkexec-constructor
-                    (list #$(file-append package "/bin/mfsmount")
-                          ;#$mountpoint
-                          "-o" "mfsdelayedinit")
-                    ))
-         ;(stop #~(make-system-destructor #$(file-append fuse "/bin/fusermount") " -u " #$mountpoint))
-         (stop #~(make-kill-destructor))
-         (auto-start? #f)
-         )))))
-
-(define (lizardfs-etc-service config)
-  `(("lizardfs/globaliolimits.cfg"
-     ,(lizardfs-configuration-globaliolimits-config config))
-    ("lizardfs/iolimits.cfg"
-     ,(lizardfs-configuration-iolimits-config config))
-    ("lizardfs/mfschunkserver.cfg"
-     ,(lizardfs-configuration-mfschunkserver-config config))
-    ("lizardfs/mfsexports.cfg"
-     ,(lizardfs-configuration-mfsexports-config config))
-    ("lizardfs/mfsgoals.cfg"
-     ,(lizardfs-configuration-mfsgoals-config config))
-    ("lizardfs/mfshdd.cfg"
-     ,(lizardfs-configuration-mfshdd-config config))
-    ("lizardfs/mfsmaster.cfg"
-     ,(lizardfs-configuration-mfsmaster-config config))
-    ("lizardfs/mfsmetalogger.cfg"
-     ,(lizardfs-configuration-mfsmetalogger-config config))
-    ("lizardfs/mfsmount.cfg"
-     ,(lizardfs-configuration-mfsmount-config config))
-    ("lizardfs/mfstopology.cfg"
-     ,(lizardfs-configuration-mfstopology-config config))))
-
-(define (lizardfs-activation config)
-  #~(begin
-      (unless (and (file-exists? "/var/lib/lizardfs/metadata.mfs")
-                   (lizardfs-configuration-run-mfsmetalogger-service config))
-        ;; First run "service".
-        (with-output-to-file "/var/lib/lizardfs/metadata.mfs"
-          (lambda ()
-            (format #t "MFSM NEW"))))
-      #$(plain-file? (lizardfs-configuration-globaliolimits-config config))
-      #$(plain-file? (lizardfs-configuration-iolimits-config config))
-      #$(plain-file? (lizardfs-configuration-mfschunkserver-config config))
-      #$(plain-file? (lizardfs-configuration-mfsexports-config config))
-      #$(plain-file? (lizardfs-configuration-mfsgoals-config config))
-      #$(plain-file? (lizardfs-configuration-mfshdd-config config))
-      #$(plain-file? (lizardfs-configuration-mfsmaster-config config))
-      #$(plain-file? (lizardfs-configuration-mfsmetalogger-config config))
-      #$(plain-file? (lizardfs-configuration-mfsmount-config config))
-      #$(plain-file? (lizardfs-configuration-mfstopology-config config))
-      #t))
-
-(define (lizardfs-services-to-run config)
-  (append (lizardfs-shepherd-service config)
-          (lizardfs-mfschunkserver-shepherd-service config)
-          (if (lizardfs-configuration-run-mfsmetalogger-service config)
-            (lizardfs-mfsmetalogger-shepherd-service config)
-            '())))
-
-(define lizardfs-service-type
-  (service-type
-    (name 'lizardfs)
-    (extensions
-      (list
-        (service-extension shepherd-root-service-type
-                           lizardfs-services-to-run)
-        (service-extension activation-service-type
-                           lizardfs-activation)
-        (service-extension etc-service-type
-                           lizardfs-etc-service)
-        (service-extension account-service-type
-                           (const %lizardfs-accounts))
-        (service-extension profile-service-type
-                           (compose list lizardfs-configuration-package))))
-    (default-value (lizardfs-configuration))
-    (description "")))
diff --git a/gn/services/genenetwork1.scm b/gn/services/genenetwork1.scm
deleted file mode 100644
index 4e29956..0000000
--- a/gn/services/genenetwork1.scm
+++ /dev/null
@@ -1,33 +0,0 @@
-(define-module (gn services genenetwork1))
-
-(use-modules (gnu)
-             (past packages python)
-             (past packages web)
-             (gn packages genenetwork)
-             (gn packages python24)
-             (gn services gn1-httpd-config))
-(use-service-modules web)
-
-(operating-system
-  (host-name "genenetwork")
-  (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 (cons* %base-packages))
-  (services (list (service special-files-service-type
-                           ;; The genotypes folder doesn't have it's shebangs patched.
-                           `(("/usr/bin/python" ,(file-append python-2.4 "/bin/python"))))
-                  (service httpd-service-type
-                           (httpd-configuration
-                             ;; Must be a httpd-2.2 variant.
-                             (package httpd22-with-mod-python)
-                             (config GN1-httpd-config))))))
-
-;; guix system container -L /path/to/guix-past/modules/ -L /path/to/guix-bioinformatics/ /path/to/guix-bioinformatics/gn/services/genenetwork1.scm --network --expose=/gnshare/gn/web/genotypes
-;; xdg-open http://localhost:8042
diff --git a/gn/services/genome-browser.scm b/gn/services/genome-browser.scm
deleted file mode 100644
index e350674..0000000
--- a/gn/services/genome-browser.scm
+++ /dev/null
@@ -1,207 +0,0 @@
-;; See dockerfile for some clarification about choices:
-;; https://github.com/icebert/docker_ucsc_genome_browser/blob/master/Dockerfile
-;; http://genome.ucsc.edu/goldenPath/help/mirrorManual.html
-(define-module (gn services genome-browser))
-
-(use-modules (gnu)
-             (guix build utils)
-             (guix packages)
-             (gn packages bioinformatics))
-(use-service-modules
-  databases
-  networking
-  web)
-(use-package-modules
-  bash
-  databases
-  ghostscript
-  wget)
-
-(define %hg.conf
-  (mixed-text-file "hg.conf"
-                   "browser.documentRoot=" ucsc-genome-browser "/html\n"
-                   ;"db.host=localhost\n"
-                   ;"db.user=readonly\n"
-                   ;"db.password=access\n"
-                   "db.host=tux02\n"
-                   "db.user=webqtlout\n"
-                   "db.password=webqtlout\n"
-                   "db.trackDb=trackDb\n"
-                   ;"db.port=13306\n"
-                   "gbdbLoc1=/gbdb/\n"
-                   "gbdbLoc2=http://hgdownload.soe.ucsc.edu/gbdb/\n"
-                   ;# To disable on-the-fly loading of mysql data, comment out these lines.
-                   "slow-db.host=genome-mysql.soe.ucsc.edu\n"
-                   "slow-db.user=genomep\n"
-                   "slow-db.password=password\n"
-                   "defaultGenome=Mouse\n"
-                   "central.db=hgcentral\n"
-                   ;"central.host=localhost\n"
-                   ;"central.socket=/run/mysqld/mysqld.sock\n"   ; default for mysql service
-                   ;"central.user=readwrite\n"
-                   ;"central.password=update\n"
-                   "central.host=tux02\n"
-                   "central.user=webqtlout\n"
-                   "central.password=webqtlout\n"
-                   "central.domain=\n"
-                   "backupcentral.db=hgcentral\n"
-                   "backupcentral.host=tux02\n"
-                   "backupcentral.user=webqtlout\n"
-                   "backupcentral.password=webqtlout\n"
-                   "backupcentral.domain=\n"
-                   "freeType=on\n"
-                   "freeTypeDir=" gs-fonts "/share/fonts/type1/ghostscript\n"
-                   ;"hgc.psxyPath=" gmt "/bin/psxy"
-                   ;"hgc.ps2rasterPath=" gmt "/bin/ps2raster"
-                   "hgc.ghostscriptPath=" ghostscript "/bin/gs\n"   ; needed?
-                   "udc.cacheDir=/var/cache/genome/udcCache\n"))    ; default is /tmp/udcCache
-
-(define %startup-script
-  (mixed-text-file "create_databases.sh"
-                   wget "/bin/wget http://hgdownload.soe.ucsc.edu/admin/hgcentral.sql\n"
-                   bash-minimal "/bin/sh " (package-source ucsc-genome-browser) "/src/product/ex.MySQLUserPerms.sh\n"
-                   mariadb "/bin/mysql -e \"create database hgcentral;\" mysql\n"
-                   mariadb "/bin/mysql hgcentral < hgcentral.sql\n"
-                   coreutils-minimal "/bin/mkdir -p /var/cache/genome\n"
-                   coreutils-minimal "/bin/chown -R httpd:httpd /var/www\n"))
-
-;; This might be useful as a one-off shepherd job.
-;(define %genome-activation-script
-;  #~(begin
-;      ;(unless (file-exists? "/var/lib/mysql/hgcentral")
-;      ;  (invoke #$(file-append wget "/bin/wget") "http://hgdownload.soe.ucsc.edu/admin/hgcentral.sql" "-O" "/var/lib/mysql/hgcentral.sql")
-;      ;  ;(invoke "sh" #$(file-append (package-source ucsc-genome-browser) "/src/product/ex.MySQLUserPerms.sh"))
-;      ;  (invoke #$(file-append mariadb "/bin/mysql") "-e" "\"create database hgcentral;\"" "mysql")
-;      ;  (invoke #$(file-append mariadb "/bin/mysql") "hgcentral" "<" "/var/lib/mysql/hgcentral.sql"))
-;      (unless (file-exists? "/var/www/html/trash")
-;        (mkdir-p "/var/www/html/trash"))
-;      (unless (file-exists? "/var/cache/genome")
-;        (mkdir-p "/var/cache/genome"))
-;      (for-each (lambda (file)
-;                  (chown file (passwd:uid "httpd") (passwd:gid "httpd")))
-;                (append (find-files "/var/cache/genome" #:directories? #t)
-;                        (find-files "/var/www/html/trash" #:directories? #t)))
-;      (for-each (lambda (file)
-;                  (chown file (passwd:uid "mysql") (passwd:gid "mysql")))
-;                (find-files "/var/lib/mysql" #:directories? #t))))
-
-;(define %one-month-files
-;  (let ((%one-month (* 60 60 24 30)))
-;    (find-files "/var/cache/genome" (lambda (file stat)
-;                                      (> (stat:atime stat) %one-month)))))
-
-;; TODO:
-;;  create 'daily clean' mcron scripts. Only needed in /var/cache/genome grows too large.
-;;  use rsync to make sure mouse genome data is kept up-to-date.
-
-(define ucsc-genome-browser-port 4323)
-
-(operating-system
-  (host-name "genome-browser")
-  (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 (cons* mariadb  ; for create-db script, interacting with database if necessary
-                   %base-packages))
-  (services
-    (list ;(service mysql-service-type
-          ;         (mysql-configuration
-          ;           (port 13306))) ; don't overlap with tux02's mariadb
-          (service special-files-service-type
-                   `(;("/root/create_hgcentral" ,%startup-script)
-                     ("/var/lib/genome/hg.conf" ,%hg.conf)))
-          (service inetd-service-type
-                   (inetd-configuration
-                     (entries
-                       (list
-                         (inetd-entry
-                           (node "127.0.0.1")
-                           (name "blat")    ; yes, it's named blat
-                           (socket-type 'stream)
-                           (protocol "tcp") ; probably?
-                           (wait? #f)
-                           (user "httpd:httpd") ; or dedicated user. Needs write access.
-                           (program (file-append ucsc-genome-browser "/bin/gfServer"))
-                           (arguments
-                             '("gfServer" "dynserver" "/gbdb")))))))
-          (service syslog-service-type)  ; needed by inetd
-          (service httpd-service-type
-                   (httpd-configuration
-                     (config
-                       (httpd-config-file
-                         (document-root (file-append ucsc-genome-browser "/html"))
-                         (server-name "Genome_Browser")
-                         (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
-# More logs for more debugging.
-LogFormat \"%h %l %u %t \\\"%r\\\" %>s %b\" common
-CustomLog /var/log/httpd/combined_log common
-#LogLevel debug
-# cgid.sock needs to be creatable, not in the store
-ScriptSock /var/run/cgid.sock
-#XBitHack needs to not be inside the VirtualHost block.
-XBitHack On
-# same as 'listen' above
-<VirtualHost *:" (number->string ucsc-genome-browser-port) ">
-  DocumentRoot " ucsc-genome-browser "/html
-  Alias /bin " ucsc-genome-browser "/bin
-  #Alias /cgi-bin " ucsc-genome-browser "/cgi-bin   # causes cgi scripts to fail to render
-  Alias /favicon.ico " ucsc-genome-browser "/html/faviconRR.ico
-  Alias /htdocs " ucsc-genome-browser "/htdocs
-  #Alias /htdocs " ucsc-genome-browser "/html
-  Alias /var/www/html/trash /var/cache/genome
-  Alias /var/cache/genome /var/cache/genome
-  <Directory " ucsc-genome-browser "/html>
-    Options +Includes
-    #Options +Includes +FollowSymLinks +Indexes
-    AllowOverride None
-    <IfModule mod_authz_host.c>
-      Require all granted
-      SSILegacyExprParser on
-    </IfModule>
-  </Directory>
-
-  ScriptAlias /cgi-bin " ucsc-genome-browser "/cgi-bin
-  <Directory " ucsc-genome-browser "/cgi-bin>
-    AllowOverride None
-    Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
-    #Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch +Includes +FollowSymlinks
-    Order allow,deny
-    #SetHandler cgi-script
-    Require all granted
-    Allow from all
-  </Directory>
-
-  <Directory /var/cache/genome>
-    Options MultiViews
-    AllowOverride None
-    Order allow,deny
-    Allow from all
-  </Directory>
-  # Upstream default location, possibly expected by software
-  <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 --share=/export/efraimf/UCSC_Genome/gbdb=/gbdb --share=/export/efraimf/UCSC_Genome/var-lib-mysql=/var/lib/mysql --share=/export/efraimf/UCSC_Genome/var-cache-genome=/var/cache/genome --share=/export/efraimf/UCSC_Genome/var-cache-genome=/var/www/html/trash
-;; xdg-open http://localhost:4322
diff --git a/gn/services/gitea-README b/gn/services/gitea-README
deleted file mode 100644
index 51be573..0000000
--- a/gn/services/gitea-README
+++ /dev/null
@@ -1,17 +0,0 @@
-SETUP:
-
-The setup process works like this:
-Decide where you want the base directory for gitea
-  for example: /srv/services/gitea
-# mkdir -p /srv/services
-Make the directory itself writable
-# chmod o+w /srv/services
-Decide the user/group you want to own the directory and service and change the container
-$ sed -i 's/1009/<insert-number>/g' gitea-container.scm
-
-for running the service:
-see included gitea.service
-
-for upgrades:
-# guix pull
-# systemctl restart gitea.service
diff --git a/gn/services/gitea-container.scm b/gn/services/gitea-container.scm
deleted file mode 100644
index 397e6fb..0000000
--- a/gn/services/gitea-container.scm
+++ /dev/null
@@ -1,94 +0,0 @@
-(define-module (gn services gitea-container))
-
-(use-modules (gnu)
-             (gn packages gitea)
-             (guix records)
-             (ice-9 match))
-(use-service-modules base networking shepherd)
-
-(define %GITEA_WORK_DIR "/var/lib/git/gitea")
-(define-record-type* <gitea-configuration>
-  gitea-configuration
-  make-gitea-configuration
-  gitea-configuration?
-  (package          gitea-configuration-package     ; package
-                    (default gitea))
-  (work-dir         gitea-configuration-work-dir    ; string
-                    (default %GITEA_WORK_DIR))
-  (port             gitea-configuration-port        ; number
-                    (default 3300)))
-
-(define gitea-activation
-  (match-lambda
-    (($ <gitea-configuration> package work-dir port)
-     #~(begin
-         (use-modules (guix build utils))
-         (let ((%user (getpwnam "gitea")))
-           ;; Prepare the environment for gitea:
-           ;; https://docs.gitea.io/en-us/install-from-binary/
-           (unless (directory-exists? #$work-dir)
-             (mkdir-p #$work-dir)
-             ;; These two are supposed to be recursive.
-             (chown #$work-dir (passwd:uid %user) (passwd:gid %user))
-             (chmod #$work-dir #o750)))))))
-
-(define gitea-shepherd-service
-  (match-lambda
-    (($ <gitea-configuration> package work-dir port)
-     (list (shepherd-service
-             (documentation "Run the Gitea server.")
-             (requirement '(networking))
-             (provision '(gitea))
-             (start #~(make-forkexec-constructor
-                        (list
-                          #$(file-append package "/bin/gitea")
-                          "--port" #$(number->string port))
-                        #:environment-variables
-                        (list (string-append "GITEA_WORK_DIR=" #$work-dir)
-                              (string-append "HOME=" #$work-dir))
-                        #:user "gitea"
-                        #:group "git"))
-             (stop #~(make-kill-destructor)))))))
-
-(define gitea-service-type
-  (service-type
-    (name 'gitea)
-    (extensions
-      (list (service-extension shepherd-root-service-type
-                               gitea-shepherd-service)
-            (service-extension activation-service-type
-                               gitea-activation)))
-    (description
-     "Run a Gitea server.")
-    (default-value (gitea-configuration))))
-
-
-(operating-system
-  (host-name "gitea")
-  (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 or containers.
-  (firmware '())
-
-  ;; The user and group names aren't important, but the user uid and group id
-  ;; NEED to match the directory outside of the container.
-  (users (cons (user-account
-                 (name "gitea")
-                 (group "gitea")
-                 ;(system? #t)
-                 (uid 1021))
-           %base-user-accounts))
-
-  (groups (cons (user-group
-                  (name "git")
-                  ;(system? #t)
-                  (id 998))
-                %base-groups))
-
-  (services (list (service dhcp-service-type)
-                  (service gitea-service-type))))
diff --git a/gn/services/gitea-dump.service b/gn/services/gitea-dump.service
deleted file mode 100644
index c177334..0000000
--- a/gn/services/gitea-dump.service
+++ /dev/null
@@ -1,11 +0,0 @@
-[Unit]
-Description=Backup Gitea git server
-Wants=gitea.service
-
-[Service]
-Type=oneshot
-Environment="GITEA_COMMAND=/usr/local/guix-profiles/gitea/bin/gitea"
-ExecStart=/bin/su -l gitea -c 'GITEA_WORK_DIR=/var/lib/git/gitea HOME=/var/lib/git/gitea ${GITEA_COMMAND} dump'
-
-[Install]
-WantedBy=multi-user.target
diff --git a/gn/services/gitea-dump.timer b/gn/services/gitea-dump.timer
deleted file mode 100644
index 0fa0f29..0000000
--- a/gn/services/gitea-dump.timer
+++ /dev/null
@@ -1,9 +0,0 @@
-[Unit]
-Description=Backup Gitea git server timer
-
-[Timer]
-OnBootSec=15m
-OnUnitInactiveSec=1day
-
-[Install]
-WantedBy=default.target
diff --git a/gn/services/gitea-nocontainer.service b/gn/services/gitea-nocontainer.service
deleted file mode 100644
index 6784e51..0000000
--- a/gn/services/gitea-nocontainer.service
+++ /dev/null
@@ -1,10 +0,0 @@
-[Unit]
-Description=Gitea git server and web ui
-Wants=guix-daemon.service
-
-[Service]
-Environment="GITEA_COMMAND=/usr/local/guix-profiles/gitea/bin/gitea"
-ExecStart=/bin/su -l gitea -c 'GITEA_WORK_DIR=/var/lib/git/gitea HOME=/var/lib/git/gitea ${GITEA_COMMAND} --port 3300'
-
-[Install]
-WantedBy=multi-user.target
diff --git a/gn/services/gitea.service b/gn/services/gitea.service
deleted file mode 100644
index ee596dc..0000000
--- a/gn/services/gitea.service
+++ /dev/null
@@ -1,10 +0,0 @@
-[Unit]
-Description=Gitea git server and web ui
-Wants=guix-daemon.service
-
-[Service]
-Environment="GITEA_COMMAND=$(/var/guix/profiles/per-user/efraimf/current-guix/bin/guix system container /home/efraimf/workspace/guix-bioinformatics/gn/services/gitea-container.scm --share=/var/lib/git=/var/lib/git --network)"
-ExecStart=/bin/bash -c '${GITEA_COMMAND}'
-
-[Install]
-WantedBy=multi-user.target
diff --git a/gn/services/gn1-httpd-config.scm b/gn/services/gn1-httpd-config.scm
deleted file mode 100644
index 6b2397d..0000000
--- a/gn/services/gn1-httpd-config.scm
+++ /dev/null
@@ -1,136 +0,0 @@
-(define-module (gn services gn1-httpd-config)
-               #:export (%default-httpd22-modules
-                         GN1-httpd-config))
-
-(use-modules (gnu)
-             (ice-9 match)
-             (gn packages genenetwork)
-             (past packages web))
-(use-service-modules web)
-
-(define %default-httpd22-modules
-  (map (match-lambda
-         ((name file)
-          (httpd-module
-           (name name)
-           (file file))))
-       '(("authn_file_module" "modules/mod_authn_file.so")
-         ("authn_dbm_module" "modules/mod_authn_dbm.so")
-         ("authn_anon_module" "modules/mod_authn_anon.so")
-         ("authn_dbd_module" "modules/mod_authn_dbd.so")
-         ("authn_default_module" "modules/mod_authn_default.so")
-         ("authz_host_module" "modules/mod_authz_host.so")
-         ("authz_groupfile_module" "modules/mod_authz_groupfile.so")
-         ("authz_user_module" "modules/mod_authz_user.so")
-         ("authz_dbm_module" "modules/mod_authz_dbm.so")
-         ("authz_owner_module" "modules/mod_authz_owner.so")
-         ("authz_default_module" "modules/mod_authz_default.so")
-         ("auth_basic_module" "modules/mod_auth_basic.so")
-         ("auth_digest_module" "modules/mod_auth_digest.so")
-         ("dbd_module" "modules/mod_dbd.so")
-         ("dumpio_module" "modules/mod_dumpio.so")
-         ("reqtimeout_module" "modules/mod_reqtimeout.so")
-         ("ext_filter_module" "modules/mod_ext_filter.so")
-         ("include_module" "modules/mod_include.so")
-         ("filter_module" "modules/mod_filter.so")
-         ("substitute_module" "modules/mod_substitute.so")
-         ("log_config_module" "modules/mod_log_config.so")
-         ("logio_module" "modules/mod_logio.so")
-         ("env_module" "modules/mod_env.so")
-         ("mime_magic_module" "modules/mod_mime_magic.so")
-         ("expires_module" "modules/mod_expires.so")
-         ("headers_module" "modules/mod_headers.so")
-         ("ident_module" "modules/mod_ident.so")
-         ("setenvif_module" "modules/mod_setenvif.so")
-         ("version_module" "modules/mod_version.so")
-         ("ssl_module" "modules/mod_ssl.so")
-         ("mime_module" "modules/mod_mime.so")
-         ("dav_module" "modules/mod_dav.so")
-         ("status_module" "modules/mod_status.so")
-         ("autoindex_module" "modules/mod_autoindex.so")
-         ("asis_module" "modules/mod_asis.so")
-         ("info_module" "modules/mod_info.so")
-         ("cgi_module" "modules/mod_cgi.so")
-         ("dav_fs_module" "modules/mod_dav_fs.so")
-         ("vhost_alias_module" "modules/mod_vhost_alias.so")
-         ("negotiation_module" "modules/mod_negotiation.so")
-         ("dir_module" "modules/mod_dir.so")
-         ("imagemap_module" "modules/mod_imagemap.so")
-         ("actions_module" "modules/mod_actions.so")
-         ("speling_module" "modules/mod_speling.so")
-         ("userdir_module" "modules/mod_userdir.so")
-         ("alias_module" "modules/mod_alias.so")
-         ("rewrite_module" "modules/mod_rewrite.so"))))
-
-; Alternative setup
-;  (let* ((gn1-user "wrk")
-;        (gn1-source "/home/wrk/gn1-pjotr/gnshare/gn")
-;        (gn1-server "gn1-pjotr.genenetwork.org")
-;        (gn1-port "8043"))
-
-
-(define GN1-httpd-config
-  (let* ((gn1-user "gn1")
-	 (gn1-source (string-append "/home/" gn1-user "/production/gnshare/gn"))
-	 (gn1-server "gn1.genenetwork.org")
-	 (gn1-port "8042"))
-  (httpd-config-file
-    (server-name gn1-server)
-    ;; Defaults to httpd, should be same as 'package' above to launch service.
-    (server-root httpd22-with-mod-python)
-    (user gn1-user)
-    (group "users")
-    (pid-file (string-append "/tmp/guix-gn1/httpd-gn1-source-" gn1-port ".pid"))
-    (error-log (string-append "/tmp/guix-gn1/httpd-gn1-source-error-" gn1-port ".log"))
-    (listen `(,gn1-port))
-    (modules (cons*
-               (httpd-module
-                 (name "python_module")
-                 (file "modules/mod_python.so"))
-               %default-httpd22-modules))
-    (extra-config (list "\
-TypesConfig " httpd22-with-mod-python "/etc/httpd/mime.types
-DefaultType application/octet-stream
-# DocumentRoot MUST NOT be in the PythonPath. Because gn1-source must be in PythonPath we leave the document-root keyword above unset.
-PythonPath \"sys.path+['/run/current-system/profile/lib/python2.4', '/run/current-system/profile/lib/python2.4/site-packages', '" gn1-source "/web/webqtl']\"
-# same as 'listen' above
-NameVirtualHost *:" gn1-port "
-<VirtualHost *:" gn1-port ">
-  DocumentRoot "gn1-source "/web/
-  Alias /images "gn1-source "/web/images/
-  Alias /javascript "gn1-source "/web/javascript/
-  Alias /css "gn1-source "/web/css/
-  <Directory "gn1-source "/web/images>
-    AllowOverride None
-    Order allow,deny
-    Allow from all
-  </Directory>
-  <Directory "gn1-source "/web/javascript>
-    AllowOverride None
-    Order allow,deny
-    Allow from all
-  </Directory>
-  <Directory "gn1-source "/web/css>
-    AllowOverride None
-    Order allow,deny
-    Allow from all
-  </Directory>
-</VirtualHost>
-<Directory " gn1-source "/web/webqtl>
-  #what is the difference between these two?
-  AddHandler mod_python .py
-  #SetHandler python-program
-  #publisher has more debug information
-  PythonHandler " gn1-source "/web/webqtl/main.py
-  #PythonHandler mod_python.publisher
-  #PythonHandler mod_python.cgihandler
-  PythonOption mod_python.session.session_type FileSession
-  # only while debugging:
-  PythonDebug On
-</Directory>
-# only while debugging:
-# <Location /mpinfo>
-#   SetHandler python-program
-#   PythonHandler mod_python.testhandler
-# </Location>"
-)))))
diff --git a/gn/services/rn6-assembly-container.scm b/gn/services/rn6-assembly-container.scm
deleted file mode 100644
index b0b5f1d..0000000
--- a/gn/services/rn6-assembly-container.scm
+++ /dev/null
@@ -1,24 +0,0 @@
-(define-module (gn services rn6-assembly-container))
-
-(use-modules (gnu)
-             (gn packages bioinformatics)
-             (gn services rshiny))
-
-(operating-system
-  (host-name "rn6-assembly")
-  (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 '())
-  ;; We only need a few packages inside the container.
-  (packages '())
-
-  (services (list (service rshiny-service-type
-                           (rshiny-configuration
-                             (package rn6-assembly-error-app)
-                             (binary "rn6-assembly-error-app"))))))
diff --git a/gn/services/rshiny.scm b/gn/services/rshiny.scm
deleted file mode 100644
index 90e4728..0000000
--- a/gn/services/rshiny.scm
+++ /dev/null
@@ -1,86 +0,0 @@
-(define-module (gn services rshiny)
-  #:export (<rshiny-configuration>
-            rshiny-configuration
-            rshiny-configuration?
-            rshiny-configuration-package
-            rshiny-configuration-binary
-            rshiny-shepherd-service
-            rshiny-service-type))
-
-(use-modules (gnu)
-             (guix records)
-             (ice-9 match))
-(use-service-modules shepherd)
-(use-package-modules cran)
-
-(define-record-type* <rshiny-configuration>
-  rshiny-configuration
-  make-rshiny-configuration
-  rshiny-configuration?
-  (package          rshiny-configuration-package    ; package
-                    (default r-shiny))
-  (binary           rshiny-configuration-binary     ; string
-                    (default "rshiny")))
-
-(define rshiny-shepherd-service
-  (match-lambda
-    (($ <rshiny-configuration> package binary)
-     (list
-       (shepherd-service
-         (documentation (string-append "R-Shiny service for " binary))
-         (provision (list (symbol-append 'rshiny- (string->symbol
-                                                    (string-take binary 9)))))
-         (requirement '(networking))
-         (start
-           #~(exec-command
-               (list
-                 #$(string-append "/run/current-system/profile/bin/" binary))
-               ;#:log-file #$(string-append "/var/log/" binary ".log") ; kills shepherd
-               #:environment-variables
-               (list "R_LIBS_USER=/run/current-system/profile/site-library/")))
-         ;; Now lets try it with fork+exec
-         ;; Outcome: shepherd says failed, runs in the background.
-         ;(start
-         ;  #~(fork+exec-command
-         ;      (list
-         ;        #$(string-append "/run/current-system/profile/bin/" binary))
-         ;      #:environment-variables
-         ;      (list "R_LIBS_USER=/run/current-system/profile/site-library/")))
-         ;; More fork+exec trials, this time with a log file:
-         ;; Outcome: shepherd says failed, runs in the background, log populated.
-         ;(start
-         ;  #~(fork+exec-command
-         ;      (list
-         ;        "/run/current-system/profile/bin/nohup"
-         ;        #$(string-append "/run/current-system/profile/bin/" binary) "&")
-         ;      #:log-file #$(string-append "/var/log/" binary ".log")
-         ;      #:environment-variables
-         ;      (list "R_LIBS_USER=/run/current-system/profile/site-library/")))
-         ;; Now lets try it with make-forkexec:
-         ;; Outcome: Kills shepherd, does not run in the background.
-         ;(start
-         ;  #~(make-forkexec-command
-         ;      (list
-         ;        "/run/current-system/profile/bin/nohup"
-         ;        #$(string-append "/run/current-system/profile/bin/" binary) "&")
-         ;        "/run/current-system/profile/bin/bash" "-c"
-         ;        #$(string-append "/run/current-system/profile/bin/" binary))
-         ;      #:environment-variables
-         ;      (list "R_LIBS_USER=/run/current-system/profile/site-library/")))
-         (stop #~(make-kill-destructor)))))))
-
-(define rshiny-service-type
-  (service-type
-    (name 'rshiny)
-    (extensions
-      (list
-        (service-extension shepherd-root-service-type
-                           rshiny-shepherd-service)
-        (service-extension profile-service-type
-                           ;; We want the package installed so that it
-                           ;; pulls in the propagated inputs as well.
-                           (lambda (config)
-                             (list
-                               (rshiny-configuration-package config))))))
-    (description
-     "Run an R-Shiny webapp as a Guix Service.")))
diff --git a/gn/services/science.scm b/gn/services/science.scm
deleted file mode 100644
index a28f7c5..0000000
--- a/gn/services/science.scm
+++ /dev/null
@@ -1,387 +0,0 @@
-(define-module (gn services science)
-  #:export (munge-configuration
-            munge-configuration?
-            munge-service-type
-
-            slurm-configuration
-            slurm-configuration?
-            slurm-service-type))
-
-(use-modules (gnu)
-             (guix records)
-             (ice-9 match))
-(use-service-modules shepherd)
-(use-package-modules admin parallel)
-
-;; TODO: Make id/uid configurable
-(define %munge-accounts
-  (list (user-group
-          (name "munge")
-          (id 900)
-          (system? #t))
-        (user-account
-          (name "munge")
-          (group "munge")
-          (uid 900)
-          (system? #t)
-          (comment "Munge User")
-          (home-directory "/var/lib/munge")
-          (shell (file-append shadow "/sbin/nologin")))))
-
-(define-record-type* <munge-configuration>
-  munge-configuration
-  make-munge-configuration
-  munge-configuration?
-  (package      munge-configuration-package
-                (default munge))
-  (socket       munge-configuration-socket
-                (default "/var/run/munge/munge.socket.2"))
-  (pid-file     munge-configuration-pid-file
-                (default "/var/run/munge/munged.pid"))
-  (log-file     munge-configuration-log-file
-                (default "/var/log/munge/munged.log"))
-  (key          munge-configuration-key
-                (default "/etc/munge/munge.key")))
-
-(define (munge-activation config)
-  "Return the activation GEXP for CONFIG for the munge service."
-  (with-imported-modules '((guix build utils))
-    #~(begin
-        (define %user (getpw "munge"))
-        (let* ((homedir (passwd:dir %user))
-               (key     #$(munge-configuration-key config))
-               (etc-dir (dirname key))
-               (run-dir (dirname #$(munge-configuration-pid-file config)))
-               (log-dir (dirname #$(munge-configuration-log-file config))))
-          (for-each (lambda (dir)
-                      (unless (file-exists? dir)
-                        (mkdir-p dir))
-                      (chown dir (passwd:uid %user) (passwd:gid %user))
-                      (chmod dir #o700))
-                    (list homedir etc-dir log-dir))
-          (unless (file-exists? key)
-            (invoke #$(file-append (munge-configuration-package config)
-                                 "/sbin/mungekey")
-                    "--create"
-                    (string-append "--bits=" (number->string (* 8 1024))) ; bits, not bytes
-                    (string-append "--keyfile=" key)))
-          (chown key (passwd:uid %user) (passwd:gid %user))
-          (chmod key #o400)
-          (unless (file-exists? run-dir)
-            (mkdir-p run-dir))
-          (chown run-dir (passwd:uid %user) (passwd:gid %user))))))
-
-(define munge-shepherd-service
-  (match-lambda
-    (($ <munge-configuration> package socket pid-file log-file key)
-     (list
-       (shepherd-service
-         (documentation "Munge server")
-         (provision '(munge))
-         (requirement '(loopback user-processes))
-         (start #~(make-forkexec-constructor
-                    (list #$(file-append package "/sbin/munged")
-                          "--foreground"    ; "--force"
-                          (string-append "--socket=" #$socket)
-                          (string-append "--key-file=" #$key)
-                          (string-append "--pid-file=" #$pid-file)
-                          (string-append "--log-file=" #$log-file))
-                    #:user "munge"
-                    #:group "munge"
-                    #:pid-file #$pid-file
-                    #:log-file #$log-file))
-         (stop #~(lambda _
-                   (not (and
-                          (list #$(file-append package "/sbin/munged")
-                                (string-append "--socket=" #$socket)
-                                "--stop")
-                          ;; This seems to not be removed by default.
-                          (delete-file (string-append #$socket ".lock"))))))
-         (auto-start? #t))))))
-
-(define munge-service-type
-  (service-type
-    (name 'munge)
-    (extensions
-      (list
-        (service-extension shepherd-root-service-type
-                           munge-shepherd-service)
-        (service-extension activation-service-type
-                           munge-activation)
-        (service-extension account-service-type
-                           (const %munge-accounts))
-        (service-extension profile-service-type
-                           (compose list munge-configuration-package))))
-    (default-value (munge-configuration))
-    (description
-     "Run @url{https://dun.github.io/munge/,Munge}, an authentication service.")))
-
-;; Initial documentation for upstreaming:
-;@subsubheading Munge
-;
-;The following example describes a Munge service with the default configuration.
-;
-;@lisp
-;(service munge-service-type)
-;@end lisp
-;
-;@deftp {Data Type} munge-configuration
-;Data type representing the configuration for the @code{munge-service-type}.
-;
-;@table @asis
-;@item @code{package}
-;Munge package to use for the service.
-;
-;@item @code{socket} (default "/var/run/munge/munge.socket.2")
-;The socket Munge should use.
-;
-;@item @code{pid-file} (default "/var/run/munge/munged.pid")
-;The PID file which Munge should use.
-;
-;@item @code{log-file} (default "/var/log/munge/munged.log")
-;The location of the log file Munge should write to.
-;
-;@item @code{key} (default "/etc/munge/munge.key")
-;The location of the shared key Munge should use.  Since this a shared secret key between the different nodes it should not be added to the store.
-;
-;@end table
-;@end deftp
-
-
-;; TODO: Make id/uid configurable
-(define %slurm-accounts
-  (list (user-group
-          (name "slurm")
-          (id 901)
-          (system? #t))
-        (user-account
-          (name "slurm")
-          (group "slurm")
-          (uid 901)
-          (system? #t)
-          (comment "Slurm User")
-          (home-directory "/var/lib/slurm"))))
-
-(define-record-type* <slurm-configuration>
-  slurm-configuration
-  make-slurm-configuration
-  slurm-configuration?
-  ;; As I understand it, all the services depend on also running slurmd on
-  ;; that machine.  Therefore it makes sense to have one config section with
-  ;; "common" and "extended" options.  With all the possible options and
-  ;; versions we only cover the ones which affect the services.
-  ;; We keep the capitalization used in the config files to make discovery easier.
-  (package              slurm-configuration-package
-                        (default slurm))
-  (slurm-conf-file      slurm-configuration-slurm-conf-file
-                        (default "/etc/slurm/slurm.conf"))
-  (SlurmdLogFile        slurm-configuration-slurmd-log-file
-                        (default #f))           ; #f for syslog
-  (SlurmdPidFile        slurm-configuration-slurmd-pidfile
-                        (default "/var/run/slurmd.pid"))
-
-  (SlurmdSpoolDir       slurm-configuration-slurmd-spooldir
-                        (default "/var/spool/slurmd"))
-
-  (run-slurmctld?       slurm-configuration-run-slurmctld
-                        (default #f))
-  (SlurmctldLogFile     slurm-configuration-slurmctld-log-file
-                        (default #f))           ; #f for syslog
-  (SlurmctldPidFile     slurm-configuration-slurmctld-pidfile
-                        (default "/var/run/slurmctld.pid"))
-
-  (run-slurmdbd?        slurm-configuration-run-slurmdbd
-                        (default #f))
-  (slurmdbd-conf-file   slurm-configuration-slurmdbd-conf-file
-                        (default "/etc/slurm/slurmdbd.conf"))
-  (slurmdbd-PidFile     slurm-configuration-slurmdbd-pidfile
-                        (default "/var/run/slurmdbd.pid"))
-
-  (ClusterName          slurm-configuration-clustername
-                        (default #f))           ; string
-  (SlurmUser            slurm-configuration-slurmuser
-                        (default #f))           ; string
-  (SlurmctldHost        slurm-configuration-slurmctldhost
-                        (default #f))           ; list of strings
-  (slurm-extra-content  slurm-configuration-slurm-extra-content
-                        (default ""))
-  (cgroup-extra-content slurm-configuration-cgroup-extra-content
-                        (default ""))
-  (DbdHost              slurm-configuration-dbdhost
-                        (default #f))           ; string
-  (StorageType          slurm-configuration-storagetype
-                        (default #f))           ; string
-  (slurmdbd-extra-content slurm-configuration-slurmdbd-extra-content
-                         (default "")))
-
-
-(define (%slurm.conf config)
-  "Return a slurm.conf configuration file corresponding to CONFIG."
-  (computed-file
-    "slurm_conf"
-    #~(begin
-        (use-modules (srfi srfi-26))
-        (call-with-output-file #$output
-          (lambda (port)
-            (display "# Generated by 'slurm-service'.\n" port)
-            (format port "ClusterName=~a\n"
-                    #$(slurm-configuration-clustername config))
-            (for-each
-              (cut format port "SlurmCtldHost=~a\n" <>)
-              '#$(slurm-configuration-slurmctldhost config))
-            (format port "SlurmdSpoolDir=~a\n"
-                    #$(slurm-configuration-slurmd-spooldir config))
-            (format port "SlurmdPidFile=~a\n"
-                    #$(slurm-configuration-slurmd-pidfile config))
-            (when #$(slurm-configuration-slurmd-log-file config)
-              (format port "SlurmdLogFile=~a\n"
-                      #$(slurm-configuration-slurmd-log-file config)))
-            (format port "SlurmctldPidFile=~a\n"
-                    #$(slurm-configuration-slurmctld-pidfile config))
-            (when #$(slurm-configuration-slurmctld-log-file config)
-              (format port "SlurmctldLogFile=~a\n"
-                      #$(slurm-configuration-slurmctld-log-file config)))
-            (format port "SlurmUser=~a\n"
-                    #$(slurm-configuration-slurmuser config))
-            (format port "\n# Extra content here:\n~a\n"
-                    #$(slurm-configuration-slurm-extra-content config))
-            #t)))))
-
-(define (%cgroup.conf config)
-  "Return a cgroup.conf configuration file corresponding to CONFIG."
-  (computed-file
-    "cgroup_conf"
-    #~(begin
-        (call-with-output-file #$output
-          (lambda (port)
-            (display "# Generated by 'slurm-service'.\n" port)
-            (format port "~a\n"
-                    #$(slurm-configuration-cgroup-extra-content config)))))))
-
-(define (%slurmdbd.conf config)
-  "Return a slurm.conf configuration file corresponding to CONFIG."
-  (computed-file
-    "slurmdbd_conf"
-    #~(begin
-        (call-with-output-file #$output
-          (lambda (port)
-            (display "# Generated by 'slurm-service'.\n" port)
-            (format port "DbdHost=~a\n"
-                    #$(slurm-configuration-dbdhost config))
-            (format port "StorageType=~a\n"
-                    #$(slurm-configuration-storagetype config))
-            (format port "SlurmUser=~a\n"
-                    #$(slurm-configuration-slurmuser config))
-            (format port "PidFile=~a\n"
-                    #$(slurm-configuration-slurmdbd-pidfile config))
-            (format port "\n# Extra content here:\n~a\n"
-                    #$(slurm-configuration-slurmdbd-extra-content config))
-            #t)))))
-
-(define (slurm-activation config)
-  "Return the activation GEXP for CONFIG for the slurm service."
-  (with-imported-modules '((guix build utils))
-    #~(begin
-        (use-modules (guix build utils))
-        (let* ((%user       (getpw "slurm"))
-               (spooldir    #$(slurm-configuration-slurmd-spooldir config))
-               (logdir      (dirname (or #$(slurm-configuration-slurmd-log-file config)
-                                         #$(slurm-configuration-slurmctld-log-file config)
-                                         "/var/log/slurmd.log")))
-               (piddir      (dirname #$(slurm-configuration-slurmd-pidfile config))))
-          (unless (file-exists? spooldir)
-            (mkdir-p spooldir))
-          (chown spooldir (passwd:uid %user) (passwd:gid %user))
-          (when logdir
-            (unless (file-exists? logdir)
-              (mkdir-p logdir))
-            (when (> (string-length logdir) (string-length "/var/log"))
-              (chown logdir (passwd:uid %user) (passwd:gid %user))))
-          (unless (file-exists? piddir)
-            (mkdir-p piddir)))
-        ;; /etc/slurm/slurm.conf needs to exist.
-        (file-exists? #$(slurm-configuration-slurm-conf-file config))
-        ;; slurmdbd activation
-        (when #$(slurm-configuration-run-slurmdbd config)
-          (file-exists?
-            #$(slurm-configuration-slurmdbd-conf-file config))))))
-
-(define slurmd-shepherd-service
-  (match-lambda
-    (($ <slurm-configuration> package slurm-conf-file _ slurmd-pidfile)
-     (list
-       (shepherd-service
-         (documentation "Slurmd server")
-         (provision '(slurmd))
-         (requirement '(loopback munge))
-         (start #~(make-forkexec-constructor
-                    (list #$(file-append package "/sbin/slurmd")
-                          "-f" #$slurm-conf-file)
-                    #:pid-file #$slurmd-pidfile))
-         (stop #~(make-kill-destructor)))))))
-
-(define slurmctld-shepherd-service
-  (match-lambda
-    (($ <slurm-configuration> package slurm-conf-file _ _ _ run-slurmctld? _ slurmctld-pidfile)
-     (list
-       (shepherd-service
-         (documentation "Slurmctld server")
-         (provision '(slurmctld))
-         (requirement '(loopback munge))
-         (start #~(make-forkexec-constructor
-                    (list #$(file-append package "/sbin/slurmctld")
-                          "-f" #$slurm-conf-file)
-                    #:pid-file #$slurmctld-pidfile))
-         (stop #~(make-kill-destructor))
-         (auto-start? run-slurmctld?))))))
-
-(define slurmdbd-shepherd-service
-  (match-lambda
-    (($ <slurm-configuration> package _ _ _ _ _ _ _ run-slurmdbd? _ slurmdbd-pidfile)
-     (list
-       (shepherd-service
-         (documentation "Slurmdbd server")
-         (provision '(slurmdbd))
-         (requirement '(loopback munge))
-         (start #~(make-forkexec-constructor
-                    (list #$(file-append package "/sbin/slurmdbd"))
-                    #:pid-file #$slurmdbd-pidfile))
-         (stop #~(make-kill-destructor))
-         (auto-start? run-slurmdbd?))))))
-
-(define (slurm-services-to-run config)
-  (append (slurmd-shepherd-service config)
-          (if (slurm-configuration-run-slurmctld config)
-            (slurmctld-shepherd-service config)
-            '())
-          (if (slurm-configuration-run-slurmdbd config)
-            (slurmdbd-shepherd-service config)
-            '())))
-
-(define (slurm-etc-service config)
-  (append
-    `(("slurm/slurm.conf" ,(%slurm.conf config))
-      ("slurm/cgroup.conf" ,(%cgroup.conf config)))
-    (if (slurm-configuration-run-slurmdbd config)
-      `(("slurm/slurmdbd.conf" ,(%slurmdbd.conf config)))
-      '())))
-
-(define slurm-service-type
-  (service-type
-    (name 'slurm)
-    (extensions
-      (list
-        (service-extension shepherd-root-service-type
-                           slurm-services-to-run)
-        (service-extension activation-service-type
-                           slurm-activation)
-        (service-extension etc-service-type
-                           slurm-etc-service)
-        (service-extension account-service-type
-                           (const %slurm-accounts))
-        (service-extension profile-service-type
-                           (compose list slurm-configuration-package))))
-    (default-value (slurm-configuration))
-    (description
-     "Run @url{https://slurm.schedmd.com/slurm.html,Slurm}, a workflow manager
-service.  Optionally also run @code{slurmctld} and @code{slurmdbd}.")))
diff --git a/gn/services/singlecell-container.scm b/gn/services/singlecell-container.scm
deleted file mode 100644
index 8190926..0000000
--- a/gn/services/singlecell-container.scm
+++ /dev/null
@@ -1,27 +0,0 @@
-;; Not ready for deployment yet
-;; Warning: Error in <Anonymous>: error in evaluating the argument 'object' in selecting a method for function 'summary':
-
-(define-module (gn services singlecell-container))
-
-(use-modules (gnu)
-             (gn packages bioinformatics)
-             (gn services rshiny))
-
-(operating-system
-  (host-name "singlecell")
-  (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 '())
-  ;; We only need a few packages inside the container.
-  (packages '())
-
-  (services (list (service rshiny-service-type
-                           (rshiny-configuration
-                             (package singlecellrshiny)
-                             (binary "singlecellrshiny"))))))