about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--README.md26
-rw-r--r--gn/packages/bioinformatics.scm39
2 files changed, 61 insertions, 4 deletions
diff --git a/README.md b/README.md
index 7b700b2..5cb1dd7 100644
--- a/README.md
+++ b/README.md
@@ -31,13 +31,31 @@ Install the common workflow language tool cwltool with
 
 ## Install R/qtl
 
-    git clone https://github.com/genenetwork/guix-bioinformatics.git
-    export GUIX_PACKAGE_PATH=$PWD/guix-bioinformatics/
+R-qtl is part of main stream GNU Guix:
+
     guix package -i r-qtl r
     R
       library(qtl)
 
+# Development tips
+
+## Override individual packages
+
+The cheerful way of overriding a version of a package:
+
+    (use-modules (guix) (gnu packages emacs))
+
+    (package
+      (inherit emacs)
+      (name "emacs-snapshot")
+      (source "/path/to/some-file-or-directory.tar.gz"))
+
+and then run:
+
+    guix package --install-from-file=that-file.scm
+
+
 ## LICENSE
 
-These package descriptions are distributed by the same license as GNU
-Guix, i.e. GPL3+
+These package descriptions (so-called Guix expressions) are
+distributed by the same license as GNU Guix, i.e. GPL3+
diff --git a/gn/packages/bioinformatics.scm b/gn/packages/bioinformatics.scm
index 6238dfb..f319532 100644
--- a/gn/packages/bioinformatics.scm
+++ b/gn/packages/bioinformatics.scm
@@ -38,5 +38,44 @@
   #:use-module (gnu packages web)
   #:use-module (gnu packages xml)
   #:use-module (gnu packages zip)
+  #:use-module (gnu packages bootstrap)
   #:use-module (srfi srfi-1))
 
+(define-public my-deploy
+  (package
+    (name "my-deploy")
+    (version "0.0.1")
+    (source #f)
+    (build-system trivial-build-system)
+    (arguments
+     `(#:guile ,%bootstrap-guile
+       #:modules ((guix build utils))
+       #:builder
+       (let* ((out  (assoc-ref %outputs "out"))
+              (bash (assoc-ref %build-inputs "bash"))
+              (foo  (string-append out "/foo")))
+         (begin
+           (use-modules (guix build utils))
+           (mkdir out)
+           (call-with-output-file foo
+             (lambda (p)
+               (format p
+                       "#!~a~%echo \"${GUIX_FOO} ${GUIX_BAR}\"~%"
+                       bash)))
+           (chmod foo #o777)
+           ;; wrap-program uses `which' to find bash for the wrapper
+           ;; shebang, but it can't know about the bootstrap bash in
+           ;; the store, since it's not named "bash".  Help it out a
+           ;; bit by providing a symlink it this package's output.
+           (symlink bash (string-append out "/bash"))
+           (setenv "PATH" out)
+           (wrap-program foo `("GUIX_FOO" prefix ("hello")))
+           (wrap-program foo `("GUIX_BAR" prefix ("world")))
+           #t))))
+    (inputs `(("bash" ,(search-bootstrap-binary "bash"
+                                                (%current-system)))))
+
+    (home-page #f)
+    (synopsis #f)
+    (description #f)
+    (license #f)))