about summary refs log tree commit diff
path: root/gn
diff options
context:
space:
mode:
Diffstat (limited to 'gn')
-rw-r--r--gn/packages/bioinformatics.scm69
-rw-r--r--gn/packages/crates-io.scm324
-rw-r--r--gn/packages/gemma.scm155
-rw-r--r--gn/packages/genenetwork-rust.scm605
-rw-r--r--gn/packages/genenetwork.scm80
-rw-r--r--gn/packages/javascript.scm4
-rw-r--r--gn/packages/machine-learning.scm3
-rw-r--r--gn/packages/mail.scm20
-rw-r--r--gn/packages/pangenome-rust.scm4856
-rw-r--r--gn/packages/pangenome.scm2160
-rw-r--r--gn/packages/patches/arrayfire-lapack-detection.patch277
-rw-r--r--gn/packages/patches/arrayfire-newer-boost-compute.patch33
-rw-r--r--gn/packages/patches/blist-stopiteration.patch36
-rw-r--r--gn/packages/patches/delly-use-system-libraries.patch65
-rw-r--r--gn/packages/patches/gnulib-gets.patch60
-rw-r--r--gn/packages/patches/octave-nested-class.patch39
-rw-r--r--gn/packages/patches/plink-ng-Makefile-zlib.patch126
-rw-r--r--gn/packages/patches/python-twint-mentions.patch16
-rw-r--r--gn/packages/patches/python-twint-token.patch11
-rw-r--r--gn/packages/patches/python-twint-userlist.patch19
-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/patches/python2-htmlgen-Applied-Deb-patch.patch263
-rw-r--r--gn/packages/patches/python2-htmlgen-Fix-test-for-random.patch25
-rw-r--r--gn/packages/patches/quast.patch88
-rw-r--r--gn/packages/patches/vcflib-use-system-fastahack-smithwaterman.patch107
-rw-r--r--gn/packages/python.scm182
27 files changed, 7775 insertions, 1905 deletions
diff --git a/gn/packages/bioinformatics.scm b/gn/packages/bioinformatics.scm
index a50a44d..6c2f2d6 100644
--- a/gn/packages/bioinformatics.scm
+++ b/gn/packages/bioinformatics.scm
@@ -9,7 +9,6 @@
   #: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)
@@ -21,7 +20,6 @@
   #: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 maths)
   #:use-module (gn packages python)
@@ -40,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)
@@ -91,8 +88,18 @@
   #:use-module (gnu packages tls)
   #:use-module (gnu packages vim)
   #:use-module (gnu packages web)
-  #:use-module (gnu packages zig)
-  #:use-module (past packages python27))
+  #: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
@@ -102,12 +109,11 @@
               (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
@@ -117,18 +123,24 @@
        #: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.
@@ -139,10 +151,10 @@
                (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
@@ -334,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
@@ -417,6 +430,7 @@ simulated genotype data.")
                    (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
@@ -457,6 +471,7 @@ hifiasm can produce the telomere-to-telomere assembly in one day.")
     (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
@@ -623,6 +638,7 @@ annotated in the reference.")
                                               "/bin/")))
                       (install-file "plink2" bin)
                       #t))))))
+    (properties '((tunable? . #t)))
     (home-page "https://www.cog-genomics.org/plink2")
     (synopsis "Whole genome association analysis toolset")
     (description
@@ -635,31 +651,6 @@ integration with gPLINK and Haploview, there is some support for the
 subsequent visualization, annotation and storage of results.")
     (license license:gpl3+))))
 
-(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
-     `(#:install-source? #f))
-    (inputs (cargo-inputs 'gfaffix
-                          #:module '(gn packages rust-crates)))
-    (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 graphaligner
   (package
     (name "graphaligner")
@@ -717,6 +708,7 @@ collapses them into a non-redundant graph structure.")
            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
@@ -741,6 +733,7 @@ here}.")
     (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.")
diff --git a/gn/packages/crates-io.scm b/gn/packages/crates-io.scm
deleted file mode 100644
index dd76d28..0000000
--- a/gn/packages/crates-io.scm
+++ /dev/null
@@ -1,324 +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-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-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-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-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-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
-     `(#:tests? #f ; doctest fails with newer Rust (dangerous_implicit_autorefs)
-       #: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-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/gemma.scm b/gn/packages/gemma.scm
index 58ff673..93bcbdd 100644
--- a/gn/packages/gemma.scm
+++ b/gn/packages/gemma.scm
@@ -1,6 +1,7 @@
 (define-module (gn packages gemma)
   #: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)
@@ -18,7 +19,11 @@
   #:use-module (gnu packages maths)
   #:use-module (gnu packages parallel)
   #:use-module (gnu packages perl)
+  #:use-module (gnu packages textutils)
+  #:use-module (gnu packages time)
   #:use-module (gnu packages web)
+  #:use-module (gnu packages ruby-check)
+  #:use-module (gnu packages ruby-xyz)
   #:use-module (gn packages shell)
   #:use-module (srfi srfi-1))
 
@@ -106,38 +111,118 @@ genome-wide association studies (GWAS).")
 
 
 (define-public gemma-wrapper
-  (package
-    (name "gemma-wrapper")
-    (version "0.99.6")
-    (source
-     (origin
-       (method url-fetch)
-       (uri (rubygems-uri "bio-gemma-wrapper" version))
-       (sha256
-        (base32
-         "0v006ym8j9p4khnxasf0xp7a7q8345625z0s1m3215p5mjp1g3p3"))))
-    (build-system ruby-build-system)
-    (inputs `(
-      ("gemma-gn2" ,gemma-gn2)
-      ("parallel" ,parallel) ;; gnu parallel
-      ))
-    (propagated-inputs `(
-      ("coreutils" ,coreutils))) ;; gemma-wrapper uses 'cat'
-    (arguments
-     `(#:tests? #f  ;; from release 0.99.7 tests should run
-       #:phases
-       (modify-phases %standard-phases
-         (add-before
-          'build 'set-gemma-path
-          (lambda* (#:key outputs #:allow-other-keys)
-            (let ((out (assoc-ref outputs "out")))
-                     (substitute* "bin/gemma-wrapper"
-                      ; (("gemma_command = ENV['GEMMA_COMMAND']")
-                      (("gemma_command = ENV.*")
-                       (string-append "gemma_command = '" (which "gemma") "'")))
-                     ))))))
-    (synopsis
-     "Gemma wrapper for LOCO and caching")
-    (description "Gemma wrapper")
-    (home-page "https://rubygems.org/gems/bio-gemma-wrapper")
-    (license license:gpl3)))
+  ;; Source: upstream master (commit 3a9286c, version 1.00-pre1).  The
+  ;; published rubygem ships only bin/gemma-wrapper + lib/lock.rb, no
+  ;; Rakefile and no test data; the git tag includes everything we
+  ;; need for the LOCO regression test.
+  (let ((commit "3a9286c92ebe8d177fb0ca3b776aba1ddfce9904")
+        (revision "1"))
+    (package
+      (name "gemma-wrapper")
+      (version (git-version "1.00-pre1" revision commit))
+      (source
+       (origin
+         (method git-fetch)
+         (uri (git-reference
+               (url "https://github.com/genetics-statistics/gemma-wrapper")
+               (commit commit)))
+         (file-name (git-file-name name version))
+         (sha256
+          (base32 "1hfj4cr3l21k6sk308d2gvwlky2szyl1ziv364iv3q93rhjks59d"))))
+      (build-system ruby-build-system)
+      (native-inputs (list ruby-rake))
+      (propagated-inputs
+       ;; bin/gemma-wrapper shells out to all of these; propagate
+       ;; them so `guix shell gemma-wrapper` is a complete runtime.
+       (list parallel       ;; orchestrates per-chromosome and permutation jobs
+             coreutils       ;; uses cat, env, rm
+             gemma-gn2
+             tar             ;; archives GEMMA's per-run outputs as .tar.xz
+             xz              ;; tar -J needs xz on PATH
+             time            ;; bin/gemma-wrapper invokes `time -v gemma ...`
+             pfff            ;; fast file fingerprint for inputs >100KB
+             ruby-rdf        ;; gemspec runtime dep (RDF helpers in bin/)
+             ruby-rdf-vocab));; gemspec runtime dep (RDF helpers in bin/)
+      (arguments
+       (list
+        #:phases
+        #~(modify-phases %standard-phases
+            (add-before 'build 'set-gemma-path
+              (lambda _
+                (substitute* "bin/gemma-wrapper"
+                  (("gemma_command = ENV.*")
+                   (string-append "gemma_command = '"
+                                  #$(file-append gemma-gn2 "/bin/gemma")
+                                  "'"))
+                  ;; v0.99.7/1.00-pre1 bug: `"..."+options[:trait]+"..."`
+                  ;; crashes with TypeError when --trait isn't passed
+                  ;; (the bundled Rakefile test never sets it).  Switch
+                  ;; to string interpolation which renders nil as "".
+                  (("\"https://genenetwork.org/show_trait\\?trait_id=\"\\+options\\[:trait\\]\\+\"&dataset=\"\\+options\\[:name\\]")
+                   "\"https://genenetwork.org/show_trait?trait_id=#{options[:trait]}&dataset=#{options[:name]}\""))
+                ;; ruby-lmdb is not yet packaged in Guix; strip it
+                ;; from the gemspec so gem activation can succeed.
+                ;; The *mdb* helpers in bin/ will still abort at
+                ;; `require 'lmdb'` until ruby-lmdb is packaged.
+                (substitute* "gemma-wrapper.gemspec"
+                  (("s\\.add_runtime_dependency 'lmdb'[^\n]*\n") ""))
+                ;; The Rakefile asserts pre-1.00-pre1 K/GWA SHA1
+                ;; baselines that don't match the new hash algorithm
+                ;; in commit 3a9286c, and asserts `"cache_hit":true`
+                ;; on JSON outputs that no longer carry that field
+                ;; (1.00-pre1 restructured the record into meta/archive
+                ;; entries).  Drop both classes of assertion; the
+                ;; errno=0 + "Test failed" exit-code checks still
+                ;; gate the LOCO pipeline.  Remove once the Rakefile
+                ;; baselines are refreshed upstream.
+                (substitute* "Rakefile"
+                  (("fail \"Wrong Hash in #\\{[^}]+\\}\"[^\n]*\n") "")
+                  (("fail \"Expected cache hit in #\\{[^}]+\\}\"[^\n]*\n") ""))))
+            ;; v0.99.7 ships a working `rake test`: it runs the LOCO
+            ;; pipeline (non-LOCO -gk, LOCO -gk chr1-4, GWA with
+            ;; cache hits) and asserts the expected SHA1 hashes in
+            ;; the JSON output -- exactly the regression we want.
+            (replace 'check
+              (lambda* (#:key tests? #:allow-other-keys)
+                (when tests?
+                  ;; rake test calls bin/gemma-wrapper, which has had
+                  ;; its gemma_command hardcoded by set-gemma-path
+                  ;; above.  parallel must also be on PATH for the
+                  ;; LOCO step's fork-out.
+                  ;; gemma-wrapper shells out to `time -v gemma ...`
+                  ;; (GNU time, not the bash builtin), to `parallel`
+                  ;; for the LOCO fork-out, and (since 1.00-pre1) to
+                  ;; `pfff` for input fingerprinting.  All need to be
+                  ;; on PATH during the test invocation.
+                  (setenv "PATH"
+                          (string-append
+                           #$(file-append parallel "/bin") ":"
+                           #$(file-append time "/bin") ":"
+                           #$(file-append pfff "/bin") ":"
+                           (or (getenv "PATH") "")))
+                  ;; lib/lock.rb writes "$HOME/.<hash>.lck" lock files;
+                  ;; the Guix sandbox sets HOME=/homeless-shelter which
+                  ;; doesn't exist.  Redirect to the build dir.
+                  (setenv "HOME" (getcwd))
+                  ;; The Rakefile shells out to `ruby bin/...`; the
+                  ;; in-tree bin/ requires lib/gnrdf.rb etc., which it
+                  ;; already finds via its own $LOAD_PATH munging
+                  ;; (`$: << File.join(basepath,'lib')`).
+                  (invoke "rake" "test")))))))
+      (synopsis "GEMMA wrapper for LOCO, caching, and parallel runs")
+      (description "Gemma-wrapper drives GEMMA with leave-one-chromosome-out
+(LOCO) genome scans, caches expensive kinship and GWA computations against the
+input checksums, and parallelises the per-chromosome work.  This package
+hard-wires the gemma binary at build time and exposes the wrapper plus the
+auxiliary @file{bin/} scripts (RDF, LMDB, and BIMBAM helpers).  The check
+phase runs the upstream Rakefile, which executes the LOCO pipeline on the
+bundled BXD test fixtures and verifies the resulting kinship and association
+output against committed SHA1 baselines -- a real regression gate for any
+gemma version bump.
+
+Note: four @file{bin/} scripts (anno-mdb-to-rdf, anno2mdb, gemma-mdb-to-rdf,
+geno2mdb) require the Ruby @code{lmdb} gem, which is not yet packaged in
+Guix; they are shipped but will fail at @code{require 'lmdb'} until that
+dependency lands.")
+      (home-page "https://github.com/genetics-statistics/gemma-wrapper")
+      (license license:gpl3))))
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 b1f83c7..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
@@ -658,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/javascript.scm b/gn/packages/javascript.scm
index 4f0ae9b..6ba75ca 100644
--- a/gn/packages/javascript.scm
+++ b/gn/packages/javascript.scm
@@ -1672,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
@@ -1689,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")
diff --git a/gn/packages/machine-learning.scm b/gn/packages/machine-learning.scm
index 3799e9b..49039c2 100644
--- a/gn/packages/machine-learning.scm
+++ b/gn/packages/machine-learning.scm
@@ -12,8 +12,7 @@
   #: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))
+  #:use-module (gnu packages python-web))
 
 (define-public python-keras-applications
   (package
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/pangenome-rust.scm b/gn/packages/pangenome-rust.scm
new file mode 100644
index 0000000..768ff2c
--- /dev/null
+++ b/gn/packages/pangenome-rust.scm
@@ -0,0 +1,4856 @@
+;;; 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-ragc-0.1.1.40e5cad
+  ;; ekg's fork of ragc, used by impop's hprc-ibs.  Same workspace
+  ;; layout; copied to a path dir by the impop build phase.
+  (origin
+    (method git-fetch)
+    (uri (git-reference (url "https://github.com/ekg/ragc")
+                        (commit "40e5cad11cab7d4df07a72d6b16d68c2d60b0742")))
+    (file-name (git-file-name "rust-ragc" "0.1.1.40e5cad"))
+    (sha256 (base32 "1p71jj02ppcvkrvnbs4y0yf00cslzqhlx4idscx8fk4lhmip4kla"))))
+
+(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 rust-assert-cmd-2.1.2
+  (crate-source "assert_cmd" "2.1.2"
+                "0505wrwzjfy2wdqhvmk0an4s69vbxfp5a45i5k8mvi4sfjlcynww"))
+
+(define rust-bstr-1.12.1
+  (crate-source "bstr" "1.12.1"
+                "1arc1v7h5l86vd6z76z3xykjzldqd5icldn7j9d3p7z6x0d4w133"))
+
+(define rust-clap-4.5.54
+  (crate-source "clap" "4.5.54"
+                "15737jmai272j6jh4ha4dq4ap14ysx2sa5wsjv6zbkvrrnfzzrn6"))
+
+(define rust-clap-builder-4.5.54
+  (crate-source "clap_builder" "4.5.54"
+                "001cnl5ccva6z3x5nw3m72zs3bzb650anz1scs7vqhbs5d6wyhps"))
+
+(define rust-clap-derive-4.5.49
+  (crate-source "clap_derive" "4.5.49"
+                "0wbngw649138v3jwx8pm5x9sq0qsml3sh0sfzyrdxcpamy3m82ra"))
+
+(define rust-clap-lex-0.7.7
+  (crate-source "clap_lex" "0.7.7"
+                "0cibsbziyzw2ywar2yh6zllsamhwkblfly565zgi56s3q064prn3"))
+
+(define rust-difflib-0.4.0
+  (crate-source "difflib" "0.4.0"
+                "1s7byq4d7jgf2hcp2lcqxi2piqwl8xqlharfbi8kf90n8csy7131"))
+
+(define rust-float-cmp-0.10.0
+  (crate-source "float-cmp" "0.10.0"
+                "1n760i3nxd2x0zc7fkxkg3vhvdyfbvzngna006cl9s9jacaz775h"))
+
+(define rust-js-sys-0.3.92
+  ;; TODO REVIEW: Check bundled sources.
+  (crate-source "js-sys" "0.3.92"
+                "15gr27bg97yzcxx13kab95xcjajlxbypfpv4x35ymrm2bbs90k6c"))
+
+(define rust-libc-0.2.180
+  (crate-source "libc" "0.2.180"
+                "1z2n7hl10fnk1xnv19ahhqxwnb4qi9aclnl6gigim2aaahw5mhxw"))
+
+(define rust-normalize-line-endings-0.3.0
+  (crate-source "normalize-line-endings" "0.3.0"
+                "1gp52dfn2glz26a352zra8h04351icf0fkqzw1shkwrgh1vpz031"))
+
+(define rust-predicates-3.1.3
+  (crate-source "predicates" "3.1.3"
+                "0wrm57acvagx0xmh5xffx5xspsr2kbggm698x0vks132fpjrxld5"))
+
+(define rust-predicates-core-1.0.9
+  (crate-source "predicates-core" "1.0.9"
+                "1yjz144yn3imq2r4mh7k9h0r8wv4yyjjj57bs0zwkscz24mlczkj"))
+
+(define rust-predicates-tree-1.0.12
+  (crate-source "predicates-tree" "1.0.12"
+                "0p223d9y02ywwxs3yl68kziswz4da4vabz67jfhp7yqx71njvpbj"))
+
+(define rust-syn-2.0.114
+  (crate-source "syn" "2.0.114"
+                "0akw62dizhyrkf3ym1jsys0gy1nphzgv0y8qkgpi6c1s4vghglfl"))
+
+(define rust-tempfile-3.24.0
+  (crate-source "tempfile" "3.24.0"
+                "171fz3h6rj676miq15fyv1hnv69p426mlp8489bwa1b3xg3sjpb5"))
+
+(define rust-termtree-0.5.1
+  (crate-source "termtree" "0.5.1"
+                "10s610ax6nb70yi7xfmwcb6d3wi9sj5isd0m63gy2pizr2zgwl4g"))
+
+(define rust-toml-0.5.11
+  (crate-source "toml" "0.5.11"
+                "0d2266nx8b3n22c7k24x4428z6di8n83a9n466jm7a2hipfz1xzl"))
+
+(define rust-unicode-ident-1.0.22
+  (crate-source "unicode-ident" "1.0.22"
+                "1x8xrz17vqi6qmkkcqr8cyf0an76ig7390j9cnqnk47zyv2gf4lk"))
+
+(define rust-wait-timeout-0.2.1
+  (crate-source "wait-timeout" "0.2.1"
+                "04azqv9mnfxgvnc8j2wp362xraybakh2dy1nj22gj51rdl93pb09"))
+
+(define rust-wasm-bindgen-0.2.115
+  (crate-source "wasm-bindgen" "0.2.115"
+                "0nj9a27y6am4qpjx7j6bmxdfsqc12fmyzic9d8wkwqxp2y8dc8v5"))
+
+(define rust-wasm-bindgen-macro-0.2.115
+  (crate-source "wasm-bindgen-macro" "0.2.115"
+                "0rrfqcnijmkimjxz79vf68a6dzjvgxrzabq57pnh3xxjirsnqfjf"))
+
+(define rust-wasm-bindgen-macro-support-0.2.115
+  (crate-source "wasm-bindgen-macro-support" "0.2.115"
+                "1pzyanqchcq5xdhx4h4wdyd9c19dal0p68xvpi96p204g5ry47cj"))
+
+(define rust-wasm-bindgen-shared-0.2.115
+  (crate-source "wasm-bindgen-shared" "0.2.115"
+                "14sa6v10fb0wnjxh0saw3nx37bnrp8vp6lh4qqs8kda2z5m98gm9"))
+
+(define rust-web-sys-0.3.92
+  ;; TODO REVIEW: Check bundled sources.
+  (crate-source "web-sys" "0.3.92"
+                "157d0p462dnnry1bmqfvbskgwks91j4vb32v32qzqz2dgx8fikc4"))
+(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))
+  (impop =>
+    (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-anstream-1.0.0
+          rust-anstyle-1.0.13
+          rust-anstyle-parse-0.2.7
+          rust-anstyle-parse-1.0.0
+          rust-anstyle-query-1.1.5
+          rust-anstyle-wincon-3.0.11
+          rust-anyhow-1.0.100
+          rust-arbitrary-chunks-0.4.1
+          rust-assert-cmd-2.1.2
+          rust-autocfg-1.5.0
+          rust-bgzip-0.3.1
+          rust-bincode-1.3.3
+          rust-bitflags-2.10.0
+          rust-block-buffer-0.10.4
+          rust-block-pseudorand-0.1.2
+          rust-bstr-1.12.1
+          rust-bumpalo-3.20.2
+          rust-byteorder-1.5.0
+          rust-bytes-1.11.1
+          rust-cast-0.3.0
+          rust-cc-1.2.58
+          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.54
+          rust-clap-builder-4.5.54
+          rust-clap-derive-4.5.49
+          rust-clap-lex-0.7.7
+          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-difflib-0.4.0
+          rust-digest-0.10.7
+          rust-either-1.15.0
+          rust-env-filter-1.0.1
+          rust-env-logger-0.11.10
+          rust-errno-0.3.14
+          rust-fastrand-2.3.0
+          rust-find-msvc-tools-0.1.9
+          rust-flate2-1.1.9
+          rust-float-cmp-0.10.0
+          rust-generic-array-0.14.7
+          rust-getrandom-0.3.4
+          rust-half-2.7.1
+          rust-hashbrown-0.14.5
+          rust-heck-0.5.0
+          rust-hermit-abi-0.5.2
+          rust-is-terminal-0.4.17
+          rust-is-terminal-polyfill-1.70.2
+          rust-itertools-0.10.5
+          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.92
+          rust-lib-wfa2-0.1.0.8859b6a
+          rust-libc-0.2.180
+          rust-linux-raw-sys-0.11.0
+          rust-lock-api-0.4.14
+          rust-log-0.4.29
+          rust-memchr-2.7.6
+          rust-miniz-oxide-0.8.9
+          rust-nanorand-0.6.1
+          rust-noodles-0.100.0
+          rust-noodles-bgzf-0.42.0
+          rust-normalize-line-endings-0.3.0
+          rust-num-cpus-1.17.0
+          rust-num-traits-0.2.19
+          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-portable-atomic-1.13.1
+          rust-portable-atomic-util-0.2.6
+          rust-predicates-3.1.3
+          rust-predicates-core-1.0.9
+          rust-predicates-tree-1.0.12
+          rust-proc-macro2-1.0.106
+          rust-quote-1.0.44
+          rust-r-efi-5.3.0
+          ;; ragc is a Cargo workspace (ragc-core + ragc-common);
+          ;; the per-crate origins confuse cargo's git-checkout
+          ;; vendor mapping.  Use the workspace origin and copy it
+          ;; to a path dir at build time (see impop's
+          ;; copy-ragc-workspace phase in pangenome.scm).
+          rust-ragc-0.1.1.40e5cad
+          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.13
+          rust-regex-syntax-0.8.10
+          rust-rustix-1.1.3
+          rust-rustversion-1.0.22
+          rust-same-file-1.0.6
+          rust-scopeguard-1.2.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-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.114
+          rust-tempfile-3.24.0
+          rust-termtree-0.5.1
+          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-toml-0.5.11
+          rust-tpa-0.1.0.49f1801
+          rust-tracepoints-0.1.0.66a5511
+          rust-typenum-1.19.0
+          rust-unicode-ident-1.0.22
+          rust-utf8parse-0.2.2
+          rust-version-check-0.9.5
+          rust-voracious-radix-sort-1.2.0
+          rust-wait-timeout-0.2.1
+          rust-walkdir-2.5.0
+          rust-wasip2-1.0.2+wasi-0.2.9
+          rust-wasm-bindgen-0.2.115
+          rust-wasm-bindgen-macro-0.2.115
+          rust-wasm-bindgen-macro-support-0.2.115
+          rust-wasm-bindgen-shared-0.2.115
+          rust-web-sys-0.3.92
+          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-zerocopy-0.8.48
+          rust-zerocopy-derive-0.8.48
+          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 'install 'fix-lib-symlink
+              ;; On hosts where the build sandbox is restricted
+              ;; (Ubuntu's AppArmor profile for unprivileged userns),
+              ;; meson's GNUInstallDirs introspection picks lib64
+              ;; for the libdir while normal sandboxes pick lib.
+              ;; Add a symlink only when only lib64 is present so
+              ;; downstream consumers find $out/lib either way.
+              (lambda _
+                (let ((lib   (string-append #$output "/lib"))
+                      (lib64 (string-append #$output "/lib64")))
+                  (when (and (file-exists? lib64)
+                             (not (file-exists? lib)))
+                    (symlink lib64 lib)))))
+            (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..4728fdc 100644
--- a/gn/packages/pangenome.scm
+++ b/gn/packages/pangenome.scm
@@ -1,40 +1,2154 @@
-;; 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 gcc)
+  #: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
+     ;; Skip the in-tree check: it invokes ./miniprot from the build
+     ;; dir before RUNPATH is set, and on recent guix master that
+     ;; execve fails with EACCES (same family of issue that prompted
+     ;; the spoa /lib64 fix in fd32c0a).  The installed binary works.
+     (list #:tests? #f
+           #: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
+     ;; Skip the in-tree check: same EACCES-on-execve issue that
+     ;; miniprot hits.  See the miniprot comment above and fd32c0a.
+     (list #:tests? #f
+           #: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
+           ;; Pinned to the wfmash-0.14 post-release snapshot used by
+           ;; the workshop (commit 7bf8988); also avoids the ABI skew
+           ;; with the surrounding wfmash-0.14 release.
+           wfmash-0.14-snapshot))
+    (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")))))
+
+(define-public wfmash-0.14-snapshot
+  ;; wfmash-0.14 pinned at a post-0.14.0 commit for the workshop.
+  ;; Inherits everything from wfmash-0.14; overrides only the source
+  ;; (now a git snapshot) and the build-check-prerequisites phase that
+  ;; hardcodes the upstream tarball directory name.
+  (let* ((commit "7bf89888a09d517635c77822e9ea922e7dfc7fb6")
+         (revision "0")
+         (snapshot-version (git-version "0.14.0" revision commit))
+         ;; Out-of-source cmake build: cwd is .../build/, source is at
+         ;; ../source/ (gnu-build-system unpacks git-fetch checkouts
+         ;; into a directory literally named "source", regardless of
+         ;; the package's file-name).
+         (source-dir "source"))
+    (package
+      (inherit wfmash-0.14)
+      (version snapshot-version)
+      (source
+       (origin
+         (method git-fetch)
+         (uri (git-reference
+               (url "https://github.com/waveygang/wfmash")
+               (commit commit)))
+         (file-name source-dir)
+         (sha256
+          (base32 "0gffr253c571pzr7a8rmj8ir6i0nspbrsmqa727wmsgzc277ms0n"))
+         (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-0.14)
+         ((#:phases phases #~%standard-phases)
+          #~(modify-phases #$phases
+              (replace 'build-check-prerequisites
+                (lambda _
+                  (let ((wfa2-lib #$(string-append
+                                     "../" source-dir
+                                     "/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)))))))))))))
+
+;; 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 vg-1.71
+  ;; Older release pinned for the pangenome workshop material; the
+  ;; build customisation is identical to vg above so we inherit it
+  ;; and only override version + source (origin must repeat the
+  ;; snippet because overriding source replaces it whole).
+  (package
+    (inherit vg)
+    (version "1.71.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 "06ag9gb57wjvmxy4pzvskpkph6i6jvs0vy8rjm1xdk3g76l8vhjb"))
+        (snippet
+         #~(begin
+             (use-modules (guix build utils))
+             (substitute* (find-files "." "(CMakeLists\\.txt|Makefile)")
+               (("-march=native") "")
+               (("-mtune=native") "")
+               (("-msse4.2") "")
+               (("-mcx16") ""))))))))
+
+(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 impop
+  ;; Population-genomics tools for implicit pangenomes (impop_k suite).
+  ;; The Rust workspace ships under source/ inside MarsicoFL/memimpopk
+  ;; until MarsicoFL/IMPOPk is released; see memimpopk/bin/README.md
+  ;; for the provenance note.  Builds four binaries: ibs, ibd,
+  ;; ancestry, jacquard (plus the ibd-validate auxiliary).
+  (let ((commit "d0c6ca847468153c81da64078c6a112b6569eb1c")
+        (revision "0"))
+    (package
+      (name "impop")
+      (version (git-version "0.2.0" revision commit))
+      (source (origin
+                (method git-fetch)
+                (uri (git-reference
+                      (url "https://github.com/MarsicoFL/memimpopk")
+                      (commit commit)))
+                (file-name (git-file-name name version))
+                (sha256
+                 (base32
+                  "00ln6bfnqcq0skwfdmsd29bclifc116mrw81zkki02b6lmf7r652"))))
+      (build-system cargo-build-system)
+      (arguments
+       (list #:install-source? #f
+             #:tests? #f  ; integration tests need data + the workshop scripts
+             #:phases
+             #~(modify-phases %standard-phases
+                 (add-after 'unpack 'chdir-to-workspace
+                   (lambda _
+                     ;; The Cargo workspace ships in source/; everything
+                     ;; outside is workshop material.
+                     (chdir "source")))
+                 ;; configure unpacks vendored crates to guix-vendor/;
+                 ;; wit-bindgen 0.51 ships a pre-built static archive
+                 ;; that the vendor audit flags as non-reproducible.
+                 ;; Strip it; the binaries we build do not exercise the
+                 ;; wasm component-model runtime.
+                 (add-before 'build 'remove-prebuilt-wit-bindgen-archive
+                   (lambda _
+                     (let ((stale "guix-vendor/rust-wit-bindgen-0.51.0.tar.gz/src/rt/libwit_bindgen_cabi.a"))
+                       (when (file-exists? stale)
+                         (delete-file stale)))))
+                 ;; ragc (https://github.com/ekg/ragc) is a Cargo
+                 ;; workspace; copy the whole tree into ragc-workspace/
+                 ;; and point ibs-cli's ragc-core dep at it.  Same
+                 ;; pattern as impg's ragc-workspace handling.
+                 (add-before 'build 'copy-ragc-workspace
+                   (lambda* (#:key inputs #:allow-other-keys)
+                     (let ((src (assoc-ref inputs
+                                  "rust-ragc-0.1.1.40e5cad-checkout")))
+                       (copy-recursively src "ragc-workspace"))))
+                 ;; ibs-cli depends on lib_wfa2 (git rev) and
+                 ;; ragc-core (git rev, workspace).  Point both at
+                 ;; local paths so cargo can resolve offline, and
+                 ;; tell impop's outer workspace to ignore the
+                 ;; nested ragc one (otherwise cargo treats ragc-core
+                 ;; as a member of impop's workspace and
+                 ;; workspace.package inheritance picks the wrong
+                 ;; root manifest).
+                 (add-before 'build 'fix-dependency-sources
+                   (lambda _
+                     (substitute* "Cargo.toml"
+                       (("members = \\[")
+                        "exclude = [\"ragc-workspace\"]\nmembers = ["))
+                     (substitute* "src/ibs-cli/Cargo.toml"
+                       (("tpa = \\{ git = \"[^\"]*\"[^}]*\\}")
+                        "tpa = { path = \"../../guix-vendor/rust-tpa-0.1.0.49f1801-checkout\", version = \"0.1.0\" }")
+                       (("lib_wfa2 = \\{ git = \"[^\"]*\", rev = \"[^\"]*\" \\}")
+                        "lib_wfa2 = { path = \"../../guix-vendor/rust-lib-wfa2-0.1.0.8859b6a-checkout\", version = \"0.1.0\" }")
+                       (("tracepoints = \\{ git = \"[^\"]*\", rev = \"[^\"]*\" \\}")
+                        "tracepoints = { path = \"../../guix-vendor/rust-tracepoints-0.1.0.66a5511-checkout\", version = \"0.1.0\" }")
+                       (("ragc-core = \\{ git = \"[^\"]*\", rev = \"[^\"]*\" \\}")
+                        "ragc-core = { path = \"../../ragc-workspace/ragc-core\" }"))
+                     ;; tpa and tracepoints have nested git deps on
+                     ;; lib_wfa2 (same rev) and on each other.  Rewire
+                     ;; them to the same vendored checkouts.
+                     (substitute* "guix-vendor/rust-tpa-0.1.0.49f1801-checkout/Cargo.toml"
+                       (("lib_wfa2 = \\{ git = \"[^\"]*\"[^}]*\\}")
+                        "lib_wfa2 = { path = \"../rust-lib-wfa2-0.1.0.8859b6a-checkout\", version = \"0.1.0\" }")
+                       (("tracepoints = \\{ git = \"[^\"]*\"[^}]*\\}")
+                        "tracepoints = { path = \"../rust-tracepoints-0.1.0.66a5511-checkout\", version = \"0.1.0\" }")
+                       ;; Strip dev-deps; cargo --offline still wants
+                       ;; them in the vendor even though we don't run
+                       ;; tpa's tests.
+                       (("^rand = .*") "")
+                       (("\\[dev-dependencies\\]") "[fake-removed]"))
+                     (substitute* "guix-vendor/rust-tracepoints-0.1.0.66a5511-checkout/Cargo.toml"
+                       (("lib_wfa2 = \\{ git = \"[^\"]*\"[^}]*\\}")
+                        "lib_wfa2 = { path = \"../rust-lib-wfa2-0.1.0.8859b6a-checkout\", version = \"0.1.0\" }"))))
+                 ;; cargo-build-system's default install runs
+                 ;; `cargo install --path .`, which fails for a virtual
+                 ;; workspace root with no [package].  Copy the four
+                 ;; workshop binaries out of target/release/ manually.
+                 (replace 'install
+                   (lambda* (#:key outputs #:allow-other-keys)
+                     (let ((bin (string-append (assoc-ref outputs "out")
+                                               "/bin")))
+                       (mkdir-p bin)
+                       (for-each
+                        (lambda (name)
+                          (install-file (string-append "target/release/" name)
+                                        bin))
+                        '("ibs" "ibd" "ancestry" "jacquard")))))
+                 ;; lib_wfa2's build.rs builds WFA2-lib from a git
+                 ;; submodule we don't have.  Replace it with a stub
+                 ;; that links against the system wfa2-lib-static;
+                 ;; same pattern impg uses for its lib_wfa2 checkout.
+                 (add-before 'build 'patch-lib-wfa2-use-system
+                   (lambda _
+                     (let ((br "guix-vendor/rust-lib-wfa2-0.1.0.8859b6a-checkout/build.rs"))
+                       (chmod br #o644)
+                       (call-with-output-file br
+                         (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))))
+                     ;; bindings_wfa.rs uses u32::cast_signed /
+                     ;; i32::cast_unsigned, both unstable before Rust
+                     ;; 1.87.  Replace with explicit `as` casts.
+                     (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))
+      (inputs (cons* wfa2-lib-static
+                     zlib
+                     (list zstd "lib")
+                     (cargo-inputs 'impop
+                                   #:module '(gn packages pangenome-rust))))
+      (home-page "https://github.com/MarsicoFL/memimpopk")
+      (synopsis "Population genomics for implicit pangenomes")
+      (description "impop_k provides IBS, IBD, local-ancestry, and
+Jacquard relatedness inference directly on per-window pairwise
+identity matrices produced by @code{impg similarity}, without ever
+calling variants or building a VCF.  Each binary wraps a hidden
+Markov model whose emissions are conditional probabilities over
+per-window identity, with transitions calibrated by recombination
+rate.")
+      (license license:expat))))
+
+(define mempang-workshop-pangenomes
+  ;; pangenomes propagates the current vg (1.72.0) and wfmash-0.14
+  ;; release; the workshop is pinned to vg 1.71.0 and a wfmash-0.14
+  ;; post-release commit.  Drop both here so the workshop can list
+  ;; the pinned versions directly without a profile collision.
+  (package
+    (inherit pangenomes)
+    (propagated-inputs
+     (modify-inputs (package-propagated-inputs pangenomes)
+       (delete "vg")
+       (delete "wfmash")))))
+
+(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 mempang-workshop-pangenomes
+           vg-1.71
+           wfmash-0.14-snapshot
+           ;; impop_k (Part 6): the source-built {ibs,ibd,ancestry,
+           ;; jacquard} from MarsicoFL/memimpopk's bundled source/.
+           ;; The workshop's memimpopk clone still ships its own
+           ;; prebuilt bin/, but with impop on PATH attendees who
+           ;; can't run the prebuilts (older glibc, ARM, ...) get
+           ;; working binaries automatically.
+           impop
+           ;; libgcc_s.so.1 for the memimpopk-prebuilt impop_k
+           ;; binaries; impop above is Guix-built and self-contained
+           ;; but the upstream prebuilts still need this.
+           (list gcc "lib")
+           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/arrayfire-lapack-detection.patch b/gn/packages/patches/arrayfire-lapack-detection.patch
deleted file mode 100644
index 1925122..0000000
--- a/gn/packages/patches/arrayfire-lapack-detection.patch
+++ /dev/null
@@ -1,277 +0,0 @@
-https://sources.debian.org/data/main/a/arrayfire/3.3.2+dfsg1-4/debian/patches/Fix-LAPACKE-detection.patch
-
-From: Ghislain Antony Vaillant <ghisvail@gmail.com>
-Date: Wed, 2 Mar 2016 10:46:50 +0000
-Subject: Fix LAPACKE detection.
-
----
- CMakeModules/FindLAPACKE.cmake    | 54 +++++++++++++++------------------------
- src/backend/cpu/CMakeLists.txt    | 18 ++++++-------
- src/backend/cuda/CMakeLists.txt   | 11 ++++----
- src/backend/opencl/CMakeLists.txt | 19 +++++++-------
- 4 files changed, 45 insertions(+), 57 deletions(-)
-
-diff --git a/CMakeModules/FindLAPACKE.cmake b/CMakeModules/FindLAPACKE.cmake
-index 9251ee9..1a73632 100644
---- a/CMakeModules/FindLAPACKE.cmake
-+++ b/CMakeModules/FindLAPACKE.cmake
-@@ -4,13 +4,13 @@
- #   FIND_PACKAGE(LAPACKE [REQUIRED] [QUIET] )
- #
- # It sets the following variables:
--#   LAPACK_FOUND               ... true if LAPACKE is found on the system
--#   LAPACK_LIBRARIES           ... full path to LAPACKE library
--#   LAPACK_INCLUDES            ... LAPACKE include directory
--#
-+#   LAPACKE_FOUND               ... true if LAPACKE is found on the system
-+#   LAPACKE_INCLUDE_DIRS        ... LAPACKE include directories
-+#   LAPACKE_LIBRARIES           ... path to LAPACKE libraries
-+#   LAPACKE_LIBRARY_DIRS        ... LAPACKE library directories
- 
- SET(LAPACKE_ROOT_DIR CACHE STRING
--  "Root directory for custom LAPACK implementation")
-+  "Root directory for custom LAPACKE implementation")
- 
- IF (NOT INTEL_MKL_ROOT_DIR)
-   SET(INTEL_MKL_ROOT_DIR $ENV{INTEL_MKL_ROOT})
-@@ -40,29 +40,20 @@ IF(PKG_CONFIG_FOUND AND NOT LAPACKE_ROOT_DIR)
- ENDIF()
- 
- IF(PC_LAPACKE_FOUND)
-+
-+    # Verify sanity of LAPACKE pkg-config file.
-     FOREACH(PC_LIB ${PC_LAPACKE_LIBRARIES})
-       FIND_LIBRARY(${PC_LIB}_LIBRARY NAMES ${PC_LIB} HINTS ${PC_LAPACKE_LIBRARY_DIRS} )
-       IF (NOT ${PC_LIB}_LIBRARY)
-         MESSAGE(FATAL_ERROR "Something is wrong in your pkg-config file - lib ${PC_LIB} not found in ${PC_LAPACKE_LIBRARY_DIRS}")
-       ENDIF (NOT ${PC_LIB}_LIBRARY)
--      LIST(APPEND LAPACKE_LIB ${${PC_LIB}_LIBRARY})
-     ENDFOREACH(PC_LIB)
- 
--    FIND_PATH(
--        LAPACKE_INCLUDES
--        NAMES "lapacke.h"
--        PATHS
--        ${PC_LAPACKE_INCLUDE_DIRS}
--        ${INCLUDE_INSTALL_DIR}
--        /usr/include
--        /usr/local/include
--        /sw/include
--        /opt/local/include
--        DOC "LAPACKE Include Directory"
--        )
-+    set(LAPACKE_LIBRARIES ${PC_LAPACKE_LIBRARIES})
-+    set(LAPACKE_LIBRARY_DIRS ${PC_LAPACKE_LIBRARY_DIRS})
- 
--    FIND_PACKAGE_HANDLE_STANDARD_ARGS(LAPACKE DEFAULT_MSG LAPACKE_LIB)
--    MARK_AS_ADVANCED(LAPACKE_INCLUDES LAPACKE_LIB)
-+    FIND_PATH(LAPACKE_INCLUDE_DIRS NAMES "lapacke.h"
-+              PATHS ${PC_LAPACKE_INCLUDE_DIRS})
- 
- ELSE(PC_LAPACKE_FOUND)
- 
-@@ -97,7 +88,6 @@ ELSE(PC_LAPACKE_FOUND)
-             LAPACKE_LIB
-             NAMES "lapacke" "liblapacke" "openblas" "mkl_rt"
-             PATHS
--            ${PC_LAPACKE_LIBRARY_DIRS}
-             ${LIB_INSTALL_DIR}
-             /opt/intel/mkl/lib/ia32
-             /opt/intel/mkl/lib/intel64
-@@ -113,7 +103,6 @@ ELSE(PC_LAPACKE_FOUND)
-            LAPACK_LIB
-             NAMES "lapack" "liblapack" "openblas" "mkl_rt"
-             PATHS
--            ${PC_LAPACKE_LIBRARY_DIRS}
-             ${LIB_INSTALL_DIR}
-             /opt/intel/mkl/lib/ia32
-             /opt/intel/mkl/lib/intel64
-@@ -129,7 +118,6 @@ ELSE(PC_LAPACKE_FOUND)
-             LAPACKE_INCLUDES
-             NAMES "lapacke.h" "mkl_lapacke.h"
-             PATHS
--            ${PC_LAPACKE_INCLUDE_DIRS}
-             ${INCLUDE_INSTALL_DIR}
-             /opt/intel/mkl/include
-             /usr/include
-@@ -141,17 +129,15 @@ ELSE(PC_LAPACKE_FOUND)
-             lapacke
-             )
-     ENDIF(LAPACKE_ROOT_DIR)
-+    SET(LAPACKE_INCLUDE_DIRS ${LAPACKE_INCLUDES})
-+    SET(LAPACKE_LIBRARIES ${LAPACKE_LIB} ${LAPACK_LIB})
-+    MARK_AS_ADVANCED(LAPACKE_INCLUDES LAPACKE_LIB LAPACK_LIB)
- ENDIF(PC_LAPACKE_FOUND)
- 
--IF(LAPACKE_LIB AND LAPACK_LIB)
--    SET(LAPACK_LIBRARIES ${LAPACKE_LIB} ${LAPACK_LIB})
--ENDIF()
--IF(LAPACKE_INCLUDES)
--    SET(LAPACK_INCLUDE_DIR ${LAPACKE_INCLUDES})
--ENDIF()
--
- INCLUDE(FindPackageHandleStandardArgs)
--FIND_PACKAGE_HANDLE_STANDARD_ARGS(LAPACK DEFAULT_MSG
--  LAPACK_INCLUDE_DIR LAPACK_LIBRARIES)
--
--MARK_AS_ADVANCED(LAPACK_INCLUDES LAPACK_LIBRARIES)
-+FIND_PACKAGE_HANDLE_STANDARD_ARGS(LAPACKE DEFAULT_MSG
-+                                  LAPACKE_LIBRARIES
-+                                  LAPACKE_INCLUDE_DIRS)
-+MARK_AS_ADVANCED(LAPACKE_LIBRARIES
-+                 LAPACKE_INCLUDE_DIRS
-+                 LAPACKE_LIBRARY_DIRS)
-diff --git a/src/backend/cpu/CMakeLists.txt b/src/backend/cpu/CMakeLists.txt
-index ea57269..efe50a0 100644
---- a/src/backend/cpu/CMakeLists.txt
-+++ b/src/backend/cpu/CMakeLists.txt
-@@ -55,7 +55,7 @@ MESSAGE(STATUS "FFTW Library: ${FFTW_LIBRARIES}")
- 
- IF(APPLE)
-     FIND_PACKAGE(LAPACKE QUIET) # For finding MKL
--    IF(NOT LAPACK_FOUND)
-+    IF(NOT LAPACKE_FOUND)
-         # UNSET THE VARIABLES FROM LAPACKE
-         UNSET(LAPACKE_LIB CACHE)
-         UNSET(LAPACK_LIB CACHE)
-@@ -67,11 +67,10 @@ ELSE(APPLE) # Linux and Windows
-     FIND_PACKAGE(LAPACKE)
- ENDIF(APPLE)
- 
--IF(NOT LAPACK_FOUND)
--    MESSAGE(WARNING "LAPACK not found. Functionality will be disabled")
--ELSE(NOT LAPACK_FOUND)
-+IF(NOT LAPACKE_FOUND)
-+    MESSAGE(WARNING "LAPACKE not found. Functionality will be disabled")
-+ELSE(NOT LAPACKE_FOUND)
-     ADD_DEFINITIONS(-DWITH_CPU_LINEAR_ALGEBRA)
--    MESSAGE(STATUS "LAPACK libraries found: ${LAPACK_LIBRARIES}")
- ENDIF()
- 
- IF(NOT UNIX)
-@@ -99,8 +98,9 @@ INCLUDE_DIRECTORIES(
-     ${CBLAS_INCLUDE_DIR}
-     )
- 
--IF(LAPACK_FOUND)
--    INCLUDE_DIRECTORIES(${LAPACK_INCLUDE_DIR})
-+IF(LAPACKE_FOUND)
-+    INCLUDE_DIRECTORIES(${LAPACKE_INCLUDE_DIRS})
-+    LINK_DIRECTORIES(${LAPACKE_LIBRARY_DIRS})
- ENDIF()
- 
- FILE(GLOB cpu_headers
-@@ -213,8 +213,8 @@ IF(FORGE_FOUND AND NOT USE_SYSTEM_FORGE)
-   ADD_DEPENDENCIES(afcpu forge)
- ENDIF()
- 
--IF(LAPACK_FOUND)
--   TARGET_LINK_LIBRARIES(afcpu  PRIVATE ${LAPACK_LIBRARIES})
-+IF(LAPACKE_FOUND)
-+   TARGET_LINK_LIBRARIES(afcpu  PRIVATE ${LAPACKE_LIBRARIES})
- ENDIF()
- 
- IF(FORGE_FOUND)
-diff --git a/src/backend/cuda/CMakeLists.txt b/src/backend/cuda/CMakeLists.txt
-index 4efb427..24c6544 100644
---- a/src/backend/cuda/CMakeLists.txt
-+++ b/src/backend/cuda/CMakeLists.txt
-@@ -105,7 +105,7 @@ ELSE(CUDA_cusolver_LIBRARY)
-         ## Try to use CPU side lapack
-         IF(APPLE)
-             FIND_PACKAGE(LAPACKE QUIET) # For finding MKL
--            IF(NOT LAPACK_FOUND)
-+            IF(NOT LAPACKE_FOUND)
-                 # UNSET THE VARIABLES FROM LAPACKE
-                 UNSET(LAPACKE_LIB CACHE)
-                 UNSET(LAPACK_LIB CACHE)
-@@ -117,9 +117,9 @@ ELSE(CUDA_cusolver_LIBRARY)
-             FIND_PACKAGE(LAPACKE)
-         ENDIF(APPLE)
- 
--        IF(NOT LAPACK_FOUND)
-+        IF(NOT LAPACKE_FOUND)
-             MESSAGE(STATUS "CUDA Version ${CUDA_VERSION_STRING} does not contain cusolver library. Linear Algebra will not be available.")
--        ELSE(NOT LAPACK_FOUND)
-+        ELSE(NOT LAPACKE_FOUND)
-             MESSAGE(STATUS "CUDA Version ${CUDA_VERSION_STRING} does not contain cusolver library. But CPU LAPACK libraries are available. Will fallback to using host side code.")
-             ADD_DEFINITIONS(-DWITH_CPU_LINEAR_ALGEBRA)
-             IF(USE_CUDA_MKL) # Manual MKL Setup
-@@ -148,7 +148,8 @@ INCLUDE_DIRECTORIES(
-     )
- 
- IF(CUDA_LAPACK_CPU_FALLBACK)
--  INCLUDE_DIRECTORIES(${LAPACK_INCLUDE_DIR})
-+  INCLUDE_DIRECTORIES(${LAPACKE_INCLUDE_DIRS})
-+  LINK_DIRECTORIES(${LAPACKE_LIBRARY_DIRS})
- ENDIF()
- 
- FILE(GLOB cuda_headers
-@@ -379,7 +380,7 @@ ENDIF()
- IF(CUDA_cusolver_LIBRARY)
-     TARGET_LINK_LIBRARIES(afcuda PRIVATE ${CUDA_cusolver_LIBRARY})
- ELSEIF(CUDA_LAPACK_CPU_FALLBACK)
--    TARGET_LINK_LIBRARIES(afcuda PRIVATE ${LAPACK_LIBRARIES})
-+    TARGET_LINK_LIBRARIES(afcuda PRIVATE ${LAPACKE_LIBRARIES})
- ENDIF()
- 
- SET_TARGET_PROPERTIES(afcuda PROPERTIES
-diff --git a/src/backend/opencl/CMakeLists.txt b/src/backend/opencl/CMakeLists.txt
-index 71247ce..ded53bf 100644
---- a/src/backend/opencl/CMakeLists.txt
-+++ b/src/backend/opencl/CMakeLists.txt
-@@ -12,7 +12,7 @@ ENDIF()
- 
- IF(APPLE)
-     FIND_PACKAGE(LAPACKE QUIET) # For finding MKL
--    IF(NOT LAPACK_FOUND)
-+    IF(NOT LAPACKE_FOUND)
-         # UNSET THE VARIABLES FROM LAPACKE
-         UNSET(LAPACKE_LIB CACHE)
-         UNSET(LAPACK_LIB CACHE)
-@@ -24,9 +24,9 @@ ELSE(APPLE) # Linux and Windows
-     FIND_PACKAGE(LAPACKE)
- ENDIF(APPLE)
- 
--IF(NOT LAPACK_FOUND)
--    MESSAGE(WARNING "LAPACK not found. Functionality will be disabled")
--ELSE(NOT LAPACK_FOUND)
-+IF(NOT LAPACKE_FOUND)
-+    MESSAGE(WARNING "LAPACKE not found. Functionality will be disabled")
-+ELSE(NOT LAPACKE_FOUND)
-   ADD_DEFINITIONS(-DWITH_OPENCL_LINEAR_ALGEBRA)
- 
-   IF(NOT USE_OPENCL_MKL)
-@@ -105,8 +105,9 @@ INCLUDE_DIRECTORIES(
-     ${BoostCompute_INCLUDE_DIRS}
-     ${CBLAS_INCLUDE_DIR}
-     )
--IF(LAPACK_FOUND)
--    INCLUDE_DIRECTORIES(${LAPACK_INCLUDE_DIR})
-+IF(LAPACKE_FOUND)
-+    INCLUDE_DIRECTORIES(${LAPACKE_INCLUDE_DIRS})
-+    LINK_DIRECTORIES(${LAPACKE_LIBRARY_DIRS})
- ENDIF()
- 
- FILE(GLOB opencl_headers
-@@ -163,7 +164,7 @@ source_group(backend\\opencl\\kernel\\convolve\\Sources FILES ${conv_ker_sources
- source_group(backend\\opencl\\cpu\\Headers FILES ${cpu_headers})
- source_group(backend\\opencl\\cpu\\Sources FILES ${cpu_sources})
- 
--IF(LAPACK_FOUND)
-+IF(LAPACKE_FOUND)
-     FILE(GLOB magma_sources
-         "magma/*.cpp")
- 
-@@ -313,9 +314,9 @@ IF(FORGE_FOUND AND NOT USE_SYSTEM_FORGE)
-     ADD_DEPENDENCIES(afopencl forge)
- ENDIF()
- 
--IF(LAPACK_FOUND)
-+IF(LAPACKE_FOUND)
-   TARGET_LINK_LIBRARIES(afopencl
--    PRIVATE ${LAPACK_LIBRARIES}
-+    PRIVATE ${LAPACKE_LIBRARIES}
-     PRIVATE ${CBLAS_LIBRARIES})
- ENDIF()
- 
diff --git a/gn/packages/patches/arrayfire-newer-boost-compute.patch b/gn/packages/patches/arrayfire-newer-boost-compute.patch
deleted file mode 100644
index b08c121..0000000
--- a/gn/packages/patches/arrayfire-newer-boost-compute.patch
+++ /dev/null
@@ -1,33 +0,0 @@
-https://sources.debian.org/data/main/a/arrayfire/3.3.2+dfsg1-4/debian/patches/Use-compute-library-from-Boost-1.61.patch
-
-From: Ghislain Antony Vaillant <ghisvail@gmail.com>
-Date: Fri, 12 Aug 2016 08:35:19 +0100
-Subject: Use compute library from Boost 1.61.
-
----
- src/backend/opencl/CMakeLists.txt | 12 +++++++-----
- 1 file changed, 7 insertions(+), 5 deletions(-)
-
-diff --git a/src/backend/opencl/CMakeLists.txt b/src/backend/opencl/CMakeLists.txt
-index ded53bf..d7e3628 100644
---- a/src/backend/opencl/CMakeLists.txt
-+++ b/src/backend/opencl/CMakeLists.txt
-@@ -84,11 +84,13 @@ ADD_DEFINITIONS( -DBOOST_ALL_NO_LIB )
- SET(Boost_USE_STATIC_LIBS OFF)
- FIND_PACKAGE(Boost 1.48 REQUIRED)
- 
--OPTION(USE_SYSTEM_BOOST_COMPUTE "Use system BoostCompute" OFF)
--IF(USE_SYSTEM_BOOST_COMPUTE)
--    FIND_PACKAGE(BoostCompute REQUIRED)
--ELSE()
--    INCLUDE("${CMAKE_MODULE_PATH}/build_boost_compute.cmake")
-+IF(Boost_VERSION VERSION_LESS "1.61")
-+    OPTION(USE_SYSTEM_BOOST_COMPUTE "Use system BoostCompute" OFF)
-+    IF(USE_SYSTEM_BOOST_COMPUTE)
-+        FIND_PACKAGE(BoostCompute REQUIRED)
-+    ELSE()
-+        INCLUDE("${CMAKE_MODULE_PATH}/build_boost_compute.cmake")
-+    ENDIF()
- ENDIF()
- 
- SET( cl_kernel_headers
diff --git a/gn/packages/patches/blist-stopiteration.patch b/gn/packages/patches/blist-stopiteration.patch
deleted file mode 100644
index 198bef4..0000000
--- a/gn/packages/patches/blist-stopiteration.patch
+++ /dev/null
@@ -1,36 +0,0 @@
-From: Andrej Shadura <andrew.shadura@collabora.co.uk>
-Date: Sun, 8 Jul 2018 09:00:16 +0200
-Subject: Catch StopIteration in a generator and return instead, per PEP 479
-
-Signed-off-by: Andrej Shadura <andrew.shadura@collabora.co.uk>
-
-Forwarded: https://github.com/DanielStutzbach/blist/pull/92
-Bug-Debian: https://bugs.debian.org/902757
----
- blist/_sortedlist.py | 13 ++++++++-----
- 1 file changed, 8 insertions(+), 5 deletions(-)
-
-diff --git a/blist/_sortedlist.py b/blist/_sortedlist.py
-index b34f69e..1f77170 100644
---- a/blist/_sortedlist.py
-+++ b/blist/_sortedlist.py
-@@ -420,11 +420,14 @@ class _setmixin(object):
-     def __iter__(self):
-         it = super(_setmixin, self).__iter__()
-         while True:
--            item = next(it)
--            n = len(self)
--            yield item
--            if n != len(self):
--                raise RuntimeError('Set changed size during iteration')
-+            try:
-+                item = next(it)
-+                n = len(self)
-+                yield item
-+                if n != len(self):
-+                    raise RuntimeError('Set changed size during iteration')
-+            except StopIteration:
-+                return
- 
- def safe_cmp(f):
-     def g(self, other):
diff --git a/gn/packages/patches/delly-use-system-libraries.patch b/gn/packages/patches/delly-use-system-libraries.patch
deleted file mode 100644
index 3ce817f..0000000
--- a/gn/packages/patches/delly-use-system-libraries.patch
+++ /dev/null
@@ -1,65 +0,0 @@
-This patch let's Delly use the system versions of htslib and boost.
-
-Patch by Roel Janssen <roel@gnu.org>
---- a/Makefile	2016-03-16 13:08:49.936706607 +0100
-+++ b/Makefile	2016-03-16 13:09:12.351706212 +0100
-@@ -9,8 +9,8 @@
- 
- # Flags
- CXX=g++
--CXXFLAGS += -isystem ${SEQTK_ROOT} -isystem ${BOOST_ROOT} -pedantic -W -Wall -Wno-unknown-pragmas
--LDFLAGS += -L${SEQTK_ROOT} -L${BOOST_ROOT}/stage/lib -lboost_iostreams -lboost_filesystem -lboost_system -lboost_program_options -lboost_date_time 
-+CXXFLAGS += -pedantic -W -Wall -Wno-unknown-pragmas
-+LDFLAGS += -lboost_iostreams -lboost_filesystem -lboost_system -lboost_program_options -lboost_date_time 
- 
- # Additional flags for release/debug
- ifeq (${PARALLEL}, 1)
-@@ -23,7 +23,7 @@
- ifeq (${STATIC}, 1)
- 	LDFLAGS += -static -static-libgcc -pthread -lhts -lz
- else
--	LDFLAGS += -lhts -lz -Wl,-rpath,${SEQTK_ROOT},-rpath,${BOOST_ROOT}/stage/lib
-+	LDFLAGS += -lhts -lz
- endif
- ifeq (${DEBUG}, 1)
- 	CXXFLAGS += -g -O0 -fno-inline -DDEBUG
-@@ -41,32 +41,24 @@
- DELLYSOURCES = $(wildcard src/*.h) $(wildcard src/*.cpp)
- 
- # Targets
--TARGETS = .htslib .boost src/delly src/extract src/cov src/iover src/stats
-+TARGETS = src/delly src/extract src/cov src/iover src/stats
- 
- all:   	$(TARGETS)
- 
--.htslib: $(HTSLIBSOURCES)
--	cd src/htslib && make && make lib-static && cd ../../ && touch .htslib
--
--.boost: $(BOOSTSOURCES)
--	cd src/modular-boost && ./bootstrap.sh --prefix=${PWD}/src/modular-boost --without-icu --with-libraries=iostreams,filesystem,system,program_options,date_time && ./b2 && ./b2 headers && cd ../../ && touch .boost
--
--src/delly: .htslib .boost $(DELLYSOURCES)
-+src/delly: $(DELLYSOURCES)
- 	$(CXX) $(CXXFLAGS) $@.cpp -o $@ $(LDFLAGS)
- 
--src/extract: .htslib .boost $(DELLYSOURCES)
-+src/extract: $(DELLYSOURCES)
- 	$(CXX) $(CXXFLAGS) $@.cpp -o $@ $(LDFLAGS)
- 
--src/cov: .htslib .boost $(DELLYSOURCES)
-+src/cov: $(DELLYSOURCES)
- 	$(CXX) $(CXXFLAGS) $@.cpp -o $@ $(LDFLAGS)
- 
--src/iover: .htslib .boost $(DELLYSOURCES)
-+src/iover: $(DELLYSOURCES)
- 	$(CXX) $(CXXFLAGS) $@.cpp -o $@ $(LDFLAGS)
- 
--src/stats: .htslib .boost $(DELLYSOURCES)
-+src/stats: $(DELLYSOURCES)
- 	$(CXX) $(CXXFLAGS) $@.cpp -o $@ $(LDFLAGS)
- 
- clean:
--	cd src/htslib && make clean
--	cd src/modular-boost && ./b2 --clean-all
--	rm -f $(TARGETS) $(TARGETS:=.o) .htslib .boost
-+	rm -f $(TARGETS) $(TARGETS:=.o)
diff --git a/gn/packages/patches/gnulib-gets.patch b/gn/packages/patches/gnulib-gets.patch
deleted file mode 100644
index cccb55a..0000000
--- a/gn/packages/patches/gnulib-gets.patch
+++ /dev/null
@@ -1,60 +0,0 @@
-Minimally modified from upstream
-only first change set from lib/stdio.in.h taken
-s@lib/stdio@libgnu/stdio@g run on the 'diff' line.
-
-From: Eric Blake <eblake@redhat.com>
-Date: Thu, 29 Mar 2012 19:30:41 +0000 (-0600)
-Subject: stdio: don't assume gets any more
-X-Git-Tag: v0.1~799
-X-Git-Url: https://git.savannah.gnu.org/gitweb/?p=gnulib.git;a=commitdiff_plain;h=66712c23388e93e5c518ebc8515140fa0c807348
-
-stdio: don't assume gets any more
-
-Gnulib intentionally does not have a gets module, and now that C11
-and glibc have dropped it, we should be more proactive about warning
-any user on a platform that still has a declaration of this dangerous
-interface.
-
-* m4/stdio_h.m4 (gl_STDIO_H, gl_STDIO_H_DEFAULTS): Drop gets
-support.
-* modules/stdio (Makefile.am): Likewise.
-* gnu/stdio-read.c (gets): Likewise.
-* tests/test-stdio-c++.cc: Likewise.
-* m4/warn-on-use.m4 (gl_WARN_ON_USE_PREPARE): Fix comment.
-* gnu/stdio.in.h (gets): Make warning occur in more places.
-* doc/posix-functions/gets.texi (gets): Update documentation.
-Reported by Christer Solskogen.
-
-Signed-off-by: Eric Blake <eblake@redhat.com>
----
-diff --git a/libgnu/stdio.in.h b/libgnu/stdio.in.h
-index aa7b599..c377b6e 100644
---- a/libgnu/stdio.in.h
-+++ b/libgnu/stdio.in.h
-@@ -698,22 +698,11 @@ _GL_WARN_ON_USE (getline, "getline is unportable - "
- # endif
- #endif
- 
--#if @GNULIB_GETS@
--# if @REPLACE_STDIO_READ_FUNCS@ && @GNULIB_STDIO_H_NONBLOCKING@
--#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
--#   undef gets
--#   define gets rpl_gets
--#  endif
--_GL_FUNCDECL_RPL (gets, char *, (char *s) _GL_ARG_NONNULL ((1)));
--_GL_CXXALIAS_RPL (gets, char *, (char *s));
--# else
--_GL_CXXALIAS_SYS (gets, char *, (char *s));
--#  undef gets
--# endif
--_GL_CXXALIASWARN (gets);
- /* It is very rare that the developer ever has full control of stdin,
--   so any use of gets warrants an unconditional warning.  Assume it is
--   always declared, since it is required by C89.  */
-+   so any use of gets warrants an unconditional warning; besides, C11
-+   removed it.  */
-+#undef gets
-+#if HAVE_RAW_DECL_GETS
- _GL_WARN_ON_USE (gets, "gets is a security hole - use fgets instead");
- #endif
- 
diff --git a/gn/packages/patches/octave-nested-class.patch b/gn/packages/patches/octave-nested-class.patch
deleted file mode 100644
index 6d835cb..0000000
--- a/gn/packages/patches/octave-nested-class.patch
+++ /dev/null
@@ -1,39 +0,0 @@
-https://hg.savannah.gnu.org/hgweb/octave/raw-rev/7ffd2a0791ef
-
-# HG changeset patch
-# User John W. Eaton <jwe@octave.org>
-# Date 1325958274 18000
-# Node ID 7ffd2a0791ef389474bb52228e9b046a3721ab3f
-# Parent  906eecd4bf43b0146c50019ee41acac2dc83c935
-fix name lookup problem with static nested class
-
-* oct-inttypes.h (octave_int_arith_base<T,false>::mul):
-Tag truncate_int with octave_int_base<T>::.
-(octave_int_arith_base<T,true>::mul): Likewise.
-
-diff --git a/liboctave/oct-inttypes.h b/liboctave/oct-inttypes.h
---- a/liboctave/oct-inttypes.h
-+++ b/liboctave/oct-inttypes.h
-@@ -366,8 +366,8 @@
-     {
-       // Promotion type for multiplication (if exists).
-       typedef typename query_integer_type<2*sizeof (T), false>::type mptype;
--      return truncate_int (static_cast<mptype> (x)
--                           * static_cast<mptype> (y));
-+      return octave_int_base<T>::truncate_int (static_cast<mptype> (x)
-+                                               * static_cast<mptype> (y));
-     }
- 
-   // Division with rounding to nearest. Note that / and % are probably
-@@ -621,8 +621,8 @@
-     {
-       // Promotion type for multiplication (if exists).
-       typedef typename query_integer_type<2*sizeof (T), true>::type mptype;
--      return truncate_int (static_cast<mptype> (x)
--                           * static_cast<mptype> (y));
-+      return octave_int_base<T>::truncate_int (static_cast<mptype> (x)
-+                                               * static_cast<mptype> (y));
-     }
- 
-   // Division.
-
diff --git a/gn/packages/patches/plink-ng-Makefile-zlib.patch b/gn/packages/patches/plink-ng-Makefile-zlib.patch
deleted file mode 100644
index f3bb269..0000000
--- a/gn/packages/patches/plink-ng-Makefile-zlib.patch
+++ /dev/null
@@ -1,126 +0,0 @@
-diff --git a/Makefile.std b/Makefile.std
-index 95b0940..30206be 100644
---- a/Makefile.std
-+++ b/Makefile.std
-@@ -1,62 +1,22 @@
- # General-purpose Makefile for PLINK 1.90
- #
--# Compilation options:
--#   Do not link to LAPACK                    NO_LAPACK
- 
--# Leave blank after "=" to disable; put "= 1" to enable
--# (when enabled, "#define NOLAPACK" must be uncommented in plink_common.h)
--NO_LAPACK =
--
--
--# should autodetect system
--SYS = UNIX
--ifdef SystemRoot
--  SYS = WIN
--else
--  UNAME := $(shell uname)
--  ifeq ($(UNAME), Darwin)
--    SYS = MAC
--  endif
--endif
--
--CFLAGS=-Wall -O2
--BLASFLAGS=-L/usr/lib64/atlas -llapack -lcblas -latlas
--LINKFLAGS=-lm -lpthread
--ZLIB=zlib-1.2.8/libz.so.1.2.8
--
--ifeq ($(SYS), MAC)
--  GCC_GTEQ_43 := $(shell expr `g++ -dumpversion | sed -e 's/\.\([0-9][0-9]\)/\1/g' -e 's/\.\([0-9]\)/0\1/g' -e 's/^[0-9]\{3,4\}$$/&00/'` \>= 40300)
--  ifeq "$(GCC_GTEQ_43)" "1"
--    CFLAGS=-Wall -O2 -flax-vector-conversions
--  endif
--  BLASFLAGS=-framework Accelerate
--  LINKFLAGS=
--  ZLIB=zlib-1.2.8/libz.1.2.8.dylib
--endif
--
--ifeq ($(SYS), WIN)
--# Note that, unlike the Linux and Mac build processes, this STATICALLY links
--# LAPACK, since we have not gotten around to trying dynamically-linked LAPACK
--# on Windows.
--# If you don't already have LAPACK built, you'll probably want to turn on
--# NO_LAPACK.
--  BLASFLAGS=-L. lapack/liblapack.a -L. lapack/librefblas.a
--  LINKFLAGS=-lm -static-libgcc
--  ZLIB=zlib-1.2.8/libz.a
--endif
--
--ifdef NO_LAPACK
--  BLASFLAGS=
--endif
-+# CFLAGS=-Wall -O2
-+# BLASFLAGS=-lblas -llapack -latlas
-+LINKFLAGS=-lm -lpthread -lopenblas -llapack -latlas -lstdc++
-+ZLIB=-lz 
- 
- SRC = plink.c plink_assoc.c plink_calc.c plink_cluster.c plink_cnv.c plink_common.c plink_data.c plink_dosage.c plink_family.c plink_filter.c plink_glm.c plink_help.c plink_homozyg.c plink_lasso.c plink_ld.c plink_matrix.c plink_misc.c plink_set.c plink_stats.c SFMT.c dcdflib.c pigz.c yarn.c
- 
-+OBJ = plink.o plink_assoc.o plink_calc.o plink_cluster.o plink_cnv.o plink_common.o plink_data.o plink_dosage.o plink_family.o plink_filter.o plink_glm.o plink_help.o plink_homozyg.o plink_lasso.o plink_ld.o plink_matrix.o plink_misc.o plink_set.o plink_stats.o SFMT.o dcdflib.o pigz.o yarn.o
-+
- # In the likely event that you are concurrently using PLINK 1.07, we suggest
- # either renaming that binary to "plink1" or this one to "plink2".
- 
--plink: $(SRC)
--	g++ $(CFLAGS) $(SRC) -o plink $(BLASFLAGS) $(LINKFLAGS) -L. $(ZLIB)
-+# plink: $(SRC)
-+# 	g++ $(CFLAGS) $(SRC) -o plink $(BLASFLAGS) $(LINKFLAGS) -L. $(ZLIB)
- 
--plinkw: $(SRC)
-+plink: $(SRC)
- 	g++ $(CFLAGS) $(SRC) -c
--	gfortran -O2 $(OBJ) -o plink -Wl,-Bstatic $(BLASFLAGS) $(LINKFLAGS) -L. $(ZLIB)
-+	gfortran $(OBJ) -o plink2 $(BLASFLAGS) $(LINKFLAGS) -L. $(ZLIB)
-+	# gfortran $^ -o plink2 -Wl,-Bstatic $(BLASFLAGS) $(LINKFLAGS) -L. $(ZLIB)
-diff --git a/dose2plink.c b/dose2plink.c
-index dc1f33a..ca2d31c 100644
---- a/dose2plink.c
-+++ b/dose2plink.c
-@@ -96,7 +96,7 @@
-   #endif
- #endif
- 
--#include "zlib-1.2.8/zlib.h"
-+#include "zlib.h"
- 
- #ifdef __APPLE__
-   #include <sys/sysctl.h>
-diff --git a/pigz.c b/pigz.c
-index 6605925..3f4ca54 100644
---- a/pigz.c
-+++ b/pigz.c
-@@ -303,7 +303,7 @@
- #include <stdio.h>
- #include <stdlib.h>
- #include <windows.h>
--#include "zlib-1.2.8/zlib.h"
-+#include "zlib.h"
- 
- void pigz_init(uint32_t setprocs) {
-   return;
-@@ -383,7 +383,7 @@ void parallel_compress(char* out_fname, uint32_t do_append, uint32_t(* emitn)(ui
- #  include <sys/pstat.h>
- #endif
- 
--#include "zlib-1.2.8/zlib.h" /* deflateInit2(), deflateReset(), deflate(), */
-+#include "zlib.h" /* deflateInit2(), deflateReset(), deflate(), */
-                         /* deflateEnd(), deflateSetDictionary(), crc32(),
-                            inflateBackInit(), inflateBack(), inflateBackEnd(),
-                            Z_DEFAULT_COMPRESSION, Z_DEFAULT_STRATEGY,
-diff --git a/plink_common.h b/plink_common.h
-index 5dd77e8..4da9371 100644
---- a/plink_common.h
-+++ b/plink_common.h
-@@ -139,7 +139,7 @@
- 
- #endif // __LP64__
- 
--#include "zlib-1.2.8/zlib.h"
-+#include "zlib.h"
- #include "SFMT.h"
- 
- // 64MB of non-workspace memory guaranteed for now
diff --git a/gn/packages/patches/python-twint-mentions.patch b/gn/packages/patches/python-twint-mentions.patch
deleted file mode 100644
index f792786..0000000
--- a/gn/packages/patches/python-twint-mentions.patch
+++ /dev/null
@@ -1,16 +0,0 @@
-diff --git a/twint/format.py b/twint/format.py
-index 334b43a..3eeb8c2 100644
---- a/twint/format.py
-+++ b/twint/format.py
-@@ -29,7 +29,10 @@ def Tweet(config, t):
-         output = output.replace("{quote_url}", t.quote_url)
-         output = output.replace("{near}", t.near)
-         output = output.replace("{geo}", t.geo)
--        output = output.replace("{mentions}", ",".join(t.mentions))
-+        output = output.replace("{mentions}",
-+                                ",".join(map(lambda x: x.get("screen_name",
-+                                                             None),
-+                                            t.mentions)))
-         output = output.replace("{translate}", t.translate)
-         output = output.replace("{trans_src}", t.trans_src)
-         output = output.replace("{trans_dest}", t.trans_dest)
diff --git a/gn/packages/patches/python-twint-token.patch b/gn/packages/patches/python-twint-token.patch
deleted file mode 100644
index 570ca8b..0000000
--- a/gn/packages/patches/python-twint-token.patch
+++ /dev/null
@@ -1,11 +0,0 @@
-diff --git a/twint/token.py b/twint/token.py
-index 0eeb0dc..63b637a 100644
---- a/twint/token.py
-+++ b/twint/token.py
-@@ -20,0 +21,6 @@ class Token:
-+        self._session.headers.update(
-+            {'User-Agent':
-+             ('Mozilla/5.0 '
-+              '(Windows NT 10.0;'
-+              ' Win64; x64; rv:78.0)'
-+              ' Gecko/20100101 Firefox/78.0')})
diff --git a/gn/packages/patches/python-twint-userlist.patch b/gn/packages/patches/python-twint-userlist.patch
deleted file mode 100644
index 1d5b860..0000000
--- a/gn/packages/patches/python-twint-userlist.patch
+++ /dev/null
@@ -1,19 +0,0 @@
-diff --git a/twint/cli.py b/twint/cli.py
-index f463d68..68244c9 100644
---- a/twint/cli.py
-+++ b/twint/cli.py
-@@ -69,10 +69,10 @@ def loadUserList(ul, _type):
-     else:
-         userlist = ul.split(",")
-     if _type == "search":
--        un = ""
--        for user in userlist:
--            un += "%20OR%20from%3A" + user
--        return un[15:]
-+        un = userlist[0]
-+        for user in userlist[1:]:
-+            un += " OR from:" + user
-+        return un
-     return userlist
- 
- 
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/patches/python2-htmlgen-Applied-Deb-patch.patch b/gn/packages/patches/python2-htmlgen-Applied-Deb-patch.patch
deleted file mode 100644
index d6a957c..0000000
--- a/gn/packages/patches/python2-htmlgen-Applied-Deb-patch.patch
+++ /dev/null
@@ -1,263 +0,0 @@
-From c0b16bbad9b8e396bdb64c638a3540547acfa3a5 Mon Sep 17 00:00:00 2001
-From: Pjotr Prins <pjotr.public01@thebird.nl>
-Date: Sat, 13 Feb 2016 13:39:03 +0100
-Subject: [PATCH 1/2] Applied Deb patch
-
----
- Formtools.py     |  1 -
- HTMLcalendar.py  |  9 ++++-----
- HTMLgen.py       |  6 +++---
- HTMLtest.py      | 12 ++++++------
- HTMLutil.py      | 19 +++++++++----------
- ImagePaletteH.py |  2 +-
- Makefile         | 10 ++++++++++
- NavLinks.py      |  1 -
- barchart.py      |  1 -
- colorcube.py     |  1 -
- 10 files changed, 33 insertions(+), 29 deletions(-)
-
-diff --git a/Formtools.py b/Formtools.py
-index bb598f4..1dabccd 100644
---- a/Formtools.py
-+++ b/Formtools.py
-@@ -1,4 +1,3 @@
--#! /usr/bin/env python
- "Provide some supporting classes to simplify Input Forms with HTMLgen"
- #'$Id: Formtools.py,v 1.1 1999/04/19 23:45:36 friedric Exp friedric $'
- # COPYRIGHT (C) 1999  ROBIN FRIEDRICH  email: Robin.Friedrich@pdq.net
-diff --git a/HTMLcalendar.py b/HTMLcalendar.py
-index 3a03915..35edf27 100644
---- a/HTMLcalendar.py
-+++ b/HTMLcalendar.py
-@@ -1,4 +1,3 @@
--#!/usr/bin/env python
- # COPYRIGHT (C) 1997  ROBIN FRIEDRICH
- # Permission to  use, copy, modify, and distribute this software and its
- # documentation  for  any  purpose  and  without fee  is hereby granted,
-@@ -212,12 +211,12 @@ def makeint(value):
-             return value
-         else:
-             raise TypeError, ('cannot convert to int', value)
--import regex
--datepat = regex.compile('^ *\([0-9*][0-9]?\)[/-]' #first 2 char date field
-+import re
-+datepat = re.compile('^ *\([0-9*][0-9]?\)[/-]' #first 2 char date field
-                         '\([0-9][0-9]?\)[/-]?'    #second 2 char date field
-                         '\([12][0-9][0-9][0-9]\)?[ \t]*:') #optional year field
--daypat  = regex.compile('^ *\('+string.join(day_name,'\|')+'\)')
--timepat = regex.compile('\([0-9][0-9]?\):\([0-9][0-9]\)')
-+daypat  = re.compile('^ *\('+string.join(day_name,'\|')+'\)')
-+timepat = re.compile('\([0-9][0-9]?\):\([0-9][0-9]\)')
- 
- def read_appt_file(filename):
-     """Parsing function.
-diff --git a/HTMLgen.py b/HTMLgen.py
-index 10ecd28..dbdbd81 100644
---- a/HTMLgen.py
-+++ b/HTMLgen.py
-@@ -284,7 +284,7 @@ class SimpleDocument(BasicDocument):
-         if self.meta: s.append(str(self.meta))
-         if self.base: s.append(str(self.base))
-         if self.stylesheet:
--            s.append('\n <LINK rel=stylesheet href="%s" type=text/css title="%s">\n' \
-+            s.append('\n <LINK rel=stylesheet href="%s" type="text/css" title="%s">\n' \
-                      % (self.stylesheet, self.stylesheet))
-         if self.style:
-             s.append('\n<STYLE>\n<!--\n%s\n-->\n</style>\n' % self.style)
-@@ -1083,7 +1083,7 @@ class List(UserList.UserList):
- 
-         Overloaded by child classes to represent other list styles.
-         """
--        return '%s<LI>%s\n' % (self.pad*self.lvl, item)
-+        return '%s<LI>%s</LI>\n' % (self.pad*self.lvl, item)
- 
-     def start_element(self):
-         """Generic creator for the HTML element opening tag.
-@@ -2463,7 +2463,7 @@ class URL:
-         import urlparse
-         self.unparse = urlparse.urlunparse
-         self.proto, self.node, self.path, self.params, self.query, self.fragment = \
--                    urlparse(url)
-+                    urlparse.urlparse(url)
-         self.dir, self.file = self.split(self.path)
- 
-     def split(self, p):
-diff --git a/HTMLtest.py b/HTMLtest.py
-index 5850a04..283233f 100755
---- a/HTMLtest.py
-+++ b/HTMLtest.py
-@@ -1,8 +1,8 @@
--#!/bin/env python
-+#!/usr/bin/env python
- 
- """Test script which generates the online documentation for HTMLgen.
- """
--import string, regex, regsub, os, time, glob
-+import string, re, os, time, glob
- from HTMLcolors import *
- from HTMLgen import *
- import HTMLgen  #only so I can pick off the __version__
-@@ -232,11 +232,11 @@ def sample1(filename, aft=None, fore=None, top=None, home=None):
-     doc.email = 'jefferson@montecello.virginia.gov'
-     doc.logo = ('../image/eagle21.gif', 64, 54)
-     # parse Declaration of Independence
--    re_hline = regex.compile('^--+$')
--    re_title = regex.compile('^Title:\(.*$\)')
-+    re_hline = re.compile('^--+$')
-+    re_title = re.compile('^Title:\(.*$\)')
-     font2 = Font(size='+2')
-     s = open(os.path.join(datadir, 'DoI.txt')).read()
--    paragraphs = regsub.split(s, '\n\([\t ]*\n\)+')
-+    paragraphs = re.split(s, '\n\([\t ]*\n\)+')
-     for para in paragraphs:
-         if not para: continue
-         if re_title.search(para) > -1:
-@@ -263,7 +263,7 @@ def sample2(filename, aft=None, fore=None, top=None, home=None):
-     #Ok parse that file
-     f = open(mpath(os.path.join(datadir, 'parrot.txt')))
-     line = f.readline()
--    re_dialog = regex.compile('\(^[OC].*:\)\(.*\)')
-+    re_dialog = re.compile('\(^[OC].*:\)\(.*\)')
-     while line:
-         if re_dialog.search(line) > -1:
-             role, prose = re_dialog.group(1,2)
-diff --git a/HTMLutil.py b/HTMLutil.py
-index 2baf168..9a877e5 100755
---- a/HTMLutil.py
-+++ b/HTMLutil.py
-@@ -1,4 +1,3 @@
--#!/usr/bin/env python
- """This module provides utility functions/classes associated with HTMLgen.
- 
- This is functionality use by HTMLgen script writers rather than by HTMLgen
-@@ -19,7 +18,7 @@ itself. (i.e. HTMLgen.py is not dependant on this module.)
- # OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
- # PERFORMANCE OF THIS SOFTWARE.
- __version__ = '$Id: HTMLutil.py,v 1.3 1998/05/28 20:14:52 friedric Exp $'
--import string, regex, os
-+import string, re, os
- import HTMLgen, HTMLcolors
- from types import *
- 
-@@ -79,7 +78,7 @@ def been_marked(text):
-     """Determine if the text have been marked by a previous gsub.
-     (ugly hack but it works)
-     """
--    if regex.search('\(</?FONT\)\|\(</?STRONG\)', text) > -1:
-+    if re.search('\(</?FONT\)\|\(</?STRONG\)', text) > -1:
-         return 1
-     else: 
-         return 0
-@@ -125,13 +124,13 @@ def global_substitute(search_func, repl_func, s):
- not_backslash = "[^\\\\]"
- triple_single = "'''"
- triple_double = '"""'
--_doc_start_re = regex.compile(
-+_doc_start_re = re.compile(
-     "\(^\|" + not_backslash + "\)" # bol or not backslash
-     + "\(" + triple_single + "\|" + triple_double + "\)" )
- single_re = not_backslash + triple_single
- double_re = not_backslash + triple_double
--_triple_re = { triple_single : regex.compile(single_re),
--               triple_double : regex.compile(double_re) }
-+_triple_re = { triple_single : re.compile(single_re),
-+               triple_double : re.compile(double_re) }
- 
- del not_backslash, triple_single, triple_double, \
-     single_re, double_re
-@@ -150,13 +149,13 @@ def find_docstring( s, begin=0):
-         return (None, None)
-     return startquote, quotefinder.regs[0][1]
- 
--string_re = regex.compile('\(\(\'[^\'\n]*\'\)\|\("[^"\n]"\)\)')
-+string_re = re.compile('\(\(\'[^\'\n]*\'\)\|\("[^"\n]"\)\)')
- def find_string_literal( s, begin=0 ):
-     if string_re.search(s, begin) > -1:
-         return string_re.regs[1]
-     return (None, None)
- 
--comment_re = regex.compile('#.*$')
-+comment_re = re.compile('#.*$')
- def find_comment( s, begin=0 ):
-     while comment_re.search(s, begin) > -1:
-         if been_marked(comment_re.group(0)):
-@@ -166,13 +165,13 @@ def find_comment( s, begin=0 ):
-     return (None, None)
- 
- Name = '[a-zA-Z_][a-zA-Z0-9_]*'
--func_re = regex.compile('\(^[ \t]*def[ \t]+' +Name+ '\)[ \t]*(') 
-+func_re = re.compile('\(^[ \t]*def[ \t]+' +Name+ '\)[ \t]*(') 
- def find_function( s, begin=0 ):
-     if func_re.search(s, begin) > -1:
-         return func_re.regs[1]
-     return (None, None)
- 
--class_re = regex.compile('\(^[ \t]*class[ \t]+' +Name+ '\)[ \t]*[(:]')
-+class_re = re.compile('\(^[ \t]*class[ \t]+' +Name+ '\)[ \t]*[(:]')
- def find_class( s, begin=0 ):
-     if class_re.search(s, begin) > -1:
-         return class_re.regs[1]
-diff --git a/ImagePaletteH.py b/ImagePaletteH.py
-index 83bb867..e723847 100644
---- a/ImagePaletteH.py
-+++ b/ImagePaletteH.py
-@@ -70,7 +70,7 @@ def negative(mode = "RGB"):
-     return ImagePalette(mode, palette * len(mode))
- 
- def random(mode = "RGB"):
--    from whrandom import randint
-+#    from whrandom import randint
-     palette = map(lambda a: randint(0, 255), [0]*256*len(mode))
-     return ImagePalette(mode, palette)
- 
-diff --git a/Makefile b/Makefile
-index 1788fa6..e1ec846 100644
---- a/Makefile
-+++ b/Makefile
-@@ -62,6 +62,16 @@ install: compileall
- 	python installp.py -f $(MODULES) $(MODULESC) $(PIL) $(PILC)
- 	@echo Installation of $(PACKAGE) done.
- 
-+debinstall:
-+	if [ -z "$(PYLIBDIR)" ]; then \
-+	  echo "Unset PYLIBDIR."; \
-+	  exit 1; \
-+	fi; \
-+	for f in $(MODULES) $(PIL); do \
-+	  install -m 644 $$f $(PYLIBDIR)/; \
-+	done
-+	@echo Installation of $(PACKAGE) done.
-+
- checkin:
- 	ci -u $(MODULES) $(PIL) $(EXTRAS) $(TEST) Makefile
- 
-diff --git a/NavLinks.py b/NavLinks.py
-index fcecbb3..51ef774 100644
---- a/NavLinks.py
-+++ b/NavLinks.py
-@@ -1,4 +1,3 @@
--#!/usr/bin/env python
- #'$Id: NavLinks.py,v 1.1 1999/02/04 04:54:29 friedric Exp friedric $'
- # COPYRIGHT (C) 1999  ROBIN FRIEDRICH  email:Robin.Friedrich@pdq.net
- # Permission to use, copy, modify, and distribute this software and
-diff --git a/barchart.py b/barchart.py
-index 882cde5..a901fe4 100755
---- a/barchart.py
-+++ b/barchart.py
-@@ -1,4 +1,3 @@
--#!/usr/bin/env python
- 
- """Provides BarChart class which creates HTML 1D bar charts,
- and StackedBarChart class to deal with multiple data plotting
-diff --git a/colorcube.py b/colorcube.py
-index be91154..94fa7dd 100644
---- a/colorcube.py
-+++ b/colorcube.py
-@@ -1,4 +1,3 @@
--#!/usr/bin/env python
- 
- """Utility to generate a table of browser safe colors.
- """
--- 
-2.1.4
-
diff --git a/gn/packages/patches/python2-htmlgen-Fix-test-for-random.patch b/gn/packages/patches/python2-htmlgen-Fix-test-for-random.patch
deleted file mode 100644
index 279a82f..0000000
--- a/gn/packages/patches/python2-htmlgen-Fix-test-for-random.patch
+++ /dev/null
@@ -1,25 +0,0 @@
-From c9ca65d39ca1185cebf5be86a10ba0ceea171249 Mon Sep 17 00:00:00 2001
-From: Pjotr Prins <pjotr.public01@thebird.nl>
-Date: Sat, 13 Feb 2016 13:40:46 +0100
-Subject: [PATCH 2/2] Fix test for random
-
----
- HTMLgen.py | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/HTMLgen.py b/HTMLgen.py
-index dbdbd81..034f672 100644
---- a/HTMLgen.py
-+++ b/HTMLgen.py
-@@ -924,7 +924,7 @@ class MailTo:
-     def antispam(self, address):
-         """Process a string with HTML encodings to defeat address spiders.
-         """
--        from whrandom import choice
-+        from random import choice
-         buffer = map(None, address)
-         for i in range(0, len(address), choice((2,3,4))):
-             buffer[i] = '&#%d;' % ord(buffer[i])
--- 
-2.1.4
-
diff --git a/gn/packages/patches/quast.patch b/gn/packages/patches/quast.patch
deleted file mode 100644
index 31e5460..0000000
--- a/gn/packages/patches/quast.patch
+++ /dev/null
@@ -1,88 +0,0 @@
-This patch is mostly adapted from the Debian patches
-https://salsa.debian.org/med-team/quast/-/tree/master/debian/patches
-
-diff --git a/setup.py b/setup.py
-index a982a430..24ab2f5f 100755
---- a/setup.py
-+++ b/setup.py
-@@ -35,10 +35,10 @@ except:
-                  exit_with_code=1)
- 
- from quast_libs.glimmer import compile_glimmer
--from quast_libs.run_busco import download_augustus, download_all_db
--from quast_libs.search_references_meta import download_blast_binaries, download_blastdb
-+from quast_libs.run_busco import download_all_db
-+from quast_libs.search_references_meta import download_blastdb
- from quast_libs.ca_utils.misc import compile_aligner
--from quast_libs.ra_utils.misc import compile_reads_analyzer_tools, compile_bwa, compile_bedtools, download_gridss
-+from quast_libs.ra_utils.misc import compile_reads_analyzer_tools, download_gridss
- 
- name = 'quast'
- quast_package = qconfig.PACKAGE_NAME
-@@ -60,8 +60,6 @@ if cmd_in(['clean', 'sdist']):
-     logger.info('Cleaning up binary files...')
-     compile_aligner(logger, only_clean=True)
-     compile_glimmer(logger, only_clean=True)
--    compile_bwa(logger, only_clean=True)
--    compile_bedtools(logger, only_clean=True)
-     for fpath in [fn for fn in glob(join(quast_package, '*.pyc'))]: os.remove(fpath)
-     for fpath in [fn for fn in glob(join(quast_package, 'html_saver', '*.pyc'))]: os.remove(fpath)
-     for fpath in [fn for fn in glob(join(quast_package, 'site_packages', '*', '*.pyc'))]: os.remove(fpath)
-@@ -74,10 +72,7 @@ if cmd_in(['clean', 'sdist']):
-         if isdir(name + '.egg-info'):
-             shutil.rmtree(name + '.egg-info')
-         download_gridss(logger, only_clean=True)
--        download_blast_binaries(logger, only_clean=True)
--        download_blastdb(logger, only_clean=True)
-         if qconfig.platform_name != 'macosx':
--            download_augustus(logger, only_clean=True)
-             download_all_db(logger, only_clean=True)
-         logger.info('Done.')
-         sys.exit()
-@@ -168,9 +163,6 @@ if cmd_in(['install', 'develop', 'build', 'build_ext']):
-         logger.info('* Downloading GRIDSS *')
-         if not download_gridss(logger):
-             modules_failed_to_install.append('GRIDSS (affects -1/--reads1 and -2/--reads2 options)')
--        logger.info('* Downloading BLAST *')
--        if not download_blast_binaries(logger):
--            modules_failed_to_install.append('BLAST (affects metaquast.py in without references mode and --find-conserved-genes option)')
-         logger.info('* Downloading SILVA 16S rRNA gene database *')
-         if not download_blastdb(logger):
-             modules_failed_to_install.append('SILVA 16S rRNA gene database (affects metaquast.py in without references mode)')
-@@ -186,20 +178,8 @@ if cmd_in(['install', 'develop', 'build', 'build_ext']):
-     logger.info('')
- 
- 
--if qconfig.platform_name == 'macosx':
--    sambamba_files = [join('sambamba', 'sambamba_osx')]
--else:
--    sambamba_files = [join('sambamba', 'sambamba_linux')]
--
--minimap_files = find_package_files('minimap2')
--bwa_files = [
--    join('bwa', fp) for fp in os.listdir(join(quast_package, 'bwa'))
--    if isfile(join(quast_package, 'bwa', fp)) and fp.startswith('bwa')]
--bedtools_files = [join('bedtools', 'bin', '*')]
- full_install_tools = (
--    find_package_files('gridss') +
--    find_package_files('blast') +
--    [join(quast_package, 'busco', 'hmmsearch')]
-+    find_package_files('gridss')
- )
- 
- setup(
-@@ -229,14 +209,10 @@ The tool accepts multiple assemblies, thus is suitable for comparison.''',
-             'manual.html',
-             ] +
-             find_package_files('html_saver') +
--            minimap_files +
-             find_package_files('genemark/' + qconfig.platform_name) +
-             find_package_files('genemark-es/' + qconfig.platform_name) +
-             find_package_files('genemark-es/lib') +
-             find_package_files('glimmer') +
--            bwa_files +
--            bedtools_files +
--            sambamba_files +
-            (full_install_tools if install_full else [])
-     },
-     include_package_data=True,
diff --git a/gn/packages/patches/vcflib-use-system-fastahack-smithwaterman.patch b/gn/packages/patches/vcflib-use-system-fastahack-smithwaterman.patch
deleted file mode 100644
index 91f372c..0000000
--- a/gn/packages/patches/vcflib-use-system-fastahack-smithwaterman.patch
+++ /dev/null
@@ -1,107 +0,0 @@
-diff --git a/CMakeLists.txt b/CMakeLists.txt
-index af3fe67..f237563 100644
---- a/CMakeLists.txt
-+++ b/CMakeLists.txt
-@@ -63,8 +63,10 @@ set_package_properties(ZLIB PROPERTIES TYPE REQUIRED)
- find_package(Threads)
- set_package_properties(Threads PROPERTIES TYPE REQUIRED)
- 
--pkg_check_modules(htslib IMPORTED_TARGET htslib)   # Optionally builds from contrib/
--pkg_check_modules(tabixpp IMPORTED_TARGET tabixpp) # Optionally builds from contrib/
-+pkg_check_modules(htslib IMPORTED_TARGET htslib)           # Optionally builds from contrib/
-+pkg_check_modules(tabixpp IMPORTED_TARGET tabixpp)         # Optionally builds from contrib/
-+pkg_check_modules(fastahack IMPORTED_TARGET fastahack)     # Optionally builds from contrib/
-+pkg_check_modules(smithwaterman IMPORTED_TARGET smithwaterman) # Optionally builds from contrib/
- 
- # ---- Build switches
- set(CMAKE_INTERPROCEDURAL_OPTIMIZATION ${ipo_supported})
-@@ -113,12 +115,20 @@ endif(ZIG)
- # ---- Include files
- 
- include_directories(include)
--include_directories(contrib/fastahack)
- include_directories(contrib/intervaltree)
--include_directories(contrib/smithwaterman)
- include_directories(contrib/filevercmp)
- include_directories(contrib/c-progress-bar)
- 
-+if(NOT fastahack_FOUND)
-+  message(STATUS "Using included fastahack")
-+  include_directories(contrib/fastahack)
-+endif()
-+
-+if(NOT smithwaterman_FOUND)
-+  message(STATUS "Using included smithwaterman")
-+  include_directories(contrib/smithwaterman)
-+endif()
-+
- if(NOT htslib_FOUND)
-   message(STATUS "Using included htslib")
-   include(FindCURL) # for htslib
-@@ -142,11 +152,19 @@ endif()
- file(GLOB INCLUDES
-   src/*.h*
-   contrib/intervaltree/*.h*
--  contrib/smithwaterman/*.h*
--  contrib/fastahack/*.h*
-   contrib/filevercmp/*.h*
-   )
- 
-+if(NOT fastahack_FOUND)
-+  file(GLOB FASTAHACK_INCLUDES contrib/fastahack/*.h*)
-+  list(APPEND INCLUDES ${FASTAHACK_INCLUDES})
-+endif()
-+
-+if(NOT smithwaterman_FOUND)
-+  file(GLOB SW_INCLUDES contrib/smithwaterman/*.h*)
-+  list(APPEND INCLUDES ${SW_INCLUDES})
-+endif()
-+
- set(vcfwfa_SOURCE
-     src/legacy.cpp # introduces a WFA dependency
-     src/vcf-wfa.cpp
-@@ -170,16 +188,24 @@ set(vcflib_SOURCE
-     src/LeftAlign.cpp
-     src/cigar.cpp
-     src/allele.cpp
--    contrib/fastahack/Fasta.cpp
-+    contrib/fsom/fsom.c
-+    contrib/filevercmp/filevercmp.c
-+    contrib/c-progress-bar/progress.c
-+)
-+
-+if(NOT fastahack_FOUND)
-+  list(APPEND vcflib_SOURCE contrib/fastahack/Fasta.cpp)
-+endif()
-+
-+if(NOT smithwaterman_FOUND)
-+  list(APPEND vcflib_SOURCE
-     contrib/smithwaterman/SmithWatermanGotoh.cpp
-     contrib/smithwaterman/Repeats.cpp
-     contrib/smithwaterman/IndelAllele.cpp
-     contrib/smithwaterman/disorder.cpp
-     contrib/smithwaterman/LeftAlign.cpp
--    contrib/fsom/fsom.c
--    contrib/filevercmp/filevercmp.c
--    contrib/c-progress-bar/progress.c
--)
-+  )
-+endif()
- 
- if (tabixpp_LOCAL) # add the tabixpp source file
-     list(APPEND vcflib_SOURCE ${tabixpp_SOURCE})
-@@ -440,6 +466,14 @@ if (NOT tabixpp_LOCAL)
-   target_link_libraries(vcflib PkgConfig::tabixpp)
- endif()
- 
-+if(fastahack_FOUND)
-+  target_link_libraries(vcflib PkgConfig::fastahack)
-+endif()
-+
-+if(smithwaterman_FOUND)
-+  target_link_libraries(vcflib PkgConfig::smithwaterman)
-+endif()
-+
- if(OPENMP)
-   target_link_libraries(vcflib OpenMP::OpenMP_CXX)
- endif()
diff --git a/gn/packages/python.scm b/gn/packages/python.scm
index 32b2e8a..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)
@@ -65,51 +64,6 @@
     (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
@@ -155,140 +109,6 @@ stand-alone manner.")
     (home-page "https://github.com/srittau/python-asserts")
     (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")
@@ -491,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