aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Makefile.am4
-rw-r--r--configure.ac7
-rw-r--r--doc/guix.texi38
-rw-r--r--etc/completion/bash/guix139
-rw-r--r--gnu/build/activation.scm13
-rw-r--r--gnu/packages/bioinformatics.scm160
-rw-r--r--gnu/packages/emacs.scm6
-rw-r--r--gnu/packages/gstreamer.scm39
-rw-r--r--gnu/packages/man.scm6
-rw-r--r--gnu/services/base.scm2
-rw-r--r--gnu/system.scm18
11 files changed, 421 insertions, 11 deletions
diff --git a/Makefile.am b/Makefile.am
index d54e281163..05ce9aa7b4 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -51,6 +51,7 @@ MODULES = \
guix/build-system/cmake.scm \
guix/build-system/glib-or-gtk.scm \
guix/build-system/gnu.scm \
+ guix/build-system/haskell.scm \
guix/build-system/perl.scm \
guix/build-system/python.scm \
guix/build-system/waf.scm \
@@ -240,6 +241,9 @@ tests/guix-gc.log: \
# Public key used to sign substitutes from hydra.gnu.org.
dist_pkgdata_DATA = hydra.gnu.org.pub
+# Bash completion file.
+dist_bashcompletion_DATA = etc/completion/bash/guix
+
EXTRA_DIST = \
HACKING \
ROADMAP \
diff --git a/configure.ac b/configure.ac
index 6f261cdb63..2227c71c1b 100644
--- a/configure.ac
+++ b/configure.ac
@@ -34,6 +34,13 @@ AC_ARG_WITH(store-dir,
[storedir="/gnu/store"])
AC_SUBST(storedir)
+AC_ARG_WITH([bash-completion-dir],
+ AC_HELP_STRING([--with-bash-completion-dir=DIR],
+ [name of the Bash completion directory]),
+ [bashcompletiondir="$withval"],
+ [bashcompletiondir='${sysconfdir}/bash_completion.d'])
+AC_SUBST([bashcompletiondir])
+
dnl Better be verbose.
AC_MSG_CHECKING([for the store directory])
AC_MSG_RESULT([$storedir])
diff --git a/doc/guix.texi b/doc/guix.texi
index 35b8cc1b45..97fa3b6548 100644
--- a/doc/guix.texi
+++ b/doc/guix.texi
@@ -4531,7 +4531,8 @@ the ``message of the day''.
Return a service that runs libc's name service cache daemon (nscd) with
the given @var{config}---an @code{<nscd-configuration>} object.
Optionally, @code{#:name-services} is a list of packages that provide
-name service switch (NSS) modules needed by nscd.
+name service switch (NSS) modules needed by nscd. @xref{Name Service
+Switch}, for an example.
@end deffn
@defvr {Scheme Variable} %nscd-default-configuration
@@ -4929,9 +4930,12 @@ next method in the list. The NSS configuration is given in the
@code{name-service-switch} field of @code{operating-system} declarations
(@pxref{operating-system Reference, @code{name-service-switch}}).
-@c See <http://0pointer.de/lennart/projects/nss-mdns/>.
+@cindex nss-mdns
+@cindex .local, host name lookup
As an example, the declaration below configures the NSS to use the
-@code{nss-mdns} back-end for host name lookups:
+@uref{http://0pointer.de/lennart/projects/nss-mdns/, @code{nss-mdns}
+back-end}, which supports host name lookups over multicast DNS (mDNS)
+for host names ending in @code{.local}:
@example
(name-service-switch
@@ -4957,6 +4961,34 @@ As an example, the declaration below configures the NSS to use the
(name "mdns")))))
@end example
+Note that, in this case, in addition to setting the
+@code{name-service-switch} of the @code{operating-system} declaration,
+@code{nscd-service} must be told where to find the @code{nss-mdns}
+shared library (@pxref{Base Services, @code{nscd-service}}). Since the
+@code{nscd} service is part of @var{%base-services}, you may want to
+customize it by adding this snippet in the operating system
+configuration file:
+
+@example
+(use-modules (guix) (gnu))
+
+(define %my-base-services
+ ;; Replace the default nscd service with one that knows
+ ;; about nss-mdns.
+ (map (lambda (mservice)
+ ;; "Bind" the MSERVICE monadic value to inspect it.
+ (mlet %store-monad ((service mservice))
+ (if (member 'nscd (service-provision service))
+ (nscd-service (nscd-configuration)
+ #:name-services (list nss-mdns))
+ mservice)))
+ %base-services))
+@end example
+
+@noindent
+@dots{} and then refer to @var{%my-base-services} instead of
+@var{%base-services} in the @code{operating-system} declaration.
+
The reference for name service switch configuration is given below. It
is a direct mapping of the C library's configuration file format, so
please refer to the C library manual for more information (@pxref{NSS
diff --git a/etc/completion/bash/guix b/etc/completion/bash/guix
new file mode 100644
index 0000000000..2a3fa1201e
--- /dev/null
+++ b/etc/completion/bash/guix
@@ -0,0 +1,139 @@
+# GNU Guix --- Functional package management for GNU
+# Copyright © 2015 Ludovic Courtès <ludo@gnu.org>
+#
+# This file is part of GNU Guix.
+#
+# GNU Guix is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 3 of the License, or (at
+# your option) any later version.
+#
+# GNU Guix is distributed in the hope that it will be useful, but
+# WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
+
+# Bash completion for Guix commands.
+
+_guix_complete_available_package ()
+{
+ local prefix="$1"
+ local packages="$(${COMP_WORDS[0]} package -A "^$prefix" | cut -f1)"
+ COMPREPLY=($(compgen -W "$packages" -- "$prefix"))
+}
+
+_guix_complete_installed_package ()
+{
+ local prefix="$1"
+ local packages="$(${COMP_WORDS[0]} package -I "^$prefix" | cut -f1)"
+ COMPREPLY=($(compgen -W "$packages" -- "$prefix"))
+}
+
+_guix_complete_option ()
+{
+ local options="$(${COMP_WORDS[0]} ${COMP_WORDS[1]} --help \
+ | grep '^ -' \
+ | sed -e's/^.*--\([a-zA-Z0-9_-]\+\)\(=\?\).*/--\1\2/g' )"
+ compopt -o nospace
+ COMPREPLY=($(compgen -W "$options" -- "${COMP_WORDS[$word_count - 1]}"))
+}
+
+_guix_is_command ()
+{
+ local word
+ local result="false"
+ for word in ${COMP_WORDS[*]}
+ do
+ if [ "$word" = "$1" ]
+ then
+ result=true
+ break
+ fi
+ done
+ $result
+}
+
+_guix_is_removing ()
+{
+ local word
+ local result="false"
+ for word in ${COMP_WORDS[*]}
+ do
+ case "$word" in
+ --remove|--remove=*|-r)
+ result=true
+ break
+ ;;
+ esac
+ done
+ $result
+}
+
+_guix_is_dash_L ()
+{
+ [ "${COMP_WORDS[$COMP_CWORD - 1]}" = "-L" ] \
+ || { case "${COMP_WORDS[$COMP_CWORD]}" in
+ --load-path=*) true;;
+ *) false;;
+ esac }
+}
+
+_guix_complete_file ()
+{
+ # Let Readline complete file names.
+ compopt -o default
+ COMPREPLY=()
+}
+
+_guix_complete ()
+{
+ local word_count=${#COMP_WORDS[*]}
+ local word_at_point="${COMP_WORDS[$COMP_CWORD]}"
+
+ if [ "$COMP_CWORD" -gt 1 ]
+ then
+ case "$word_at_point" in
+ -*)
+ _guix_complete_option "$word_at_point"
+ return
+ ;;
+ esac
+ fi
+
+ case $COMP_CWORD in
+ 1)
+ local subcommands="$(guix --help | grep '^ ' | cut -c 2-)"
+ COMPREPLY=($(compgen -W "$subcommands" -- "$word_at_point"))
+ ;;
+ *)
+ if _guix_is_command "package"
+ then
+ if _guix_is_dash_L
+ then
+ _guix_complete_file
+ elif _guix_is_removing
+ then
+ _guix_complete_installed_package "$word_at_point"
+ else
+ _guix_complete_available_package "$word_at_point"
+ fi
+ elif _guix_is_command "system"
+ then
+ _guix_complete_file # TODO: complete sub-commands
+ elif _guix_is_command "hash"
+ then
+ _guix_complete_file
+ elif _guix_is_command "import" # TODO: complete sub-commands
+ then
+ _guix_complete_file
+ else
+ _guix_complete_available_package "$word_at_point"
+ fi
+ ;;
+ esac
+}
+
+complete -F _guix_complete guix
diff --git a/gnu/build/activation.scm b/gnu/build/activation.scm
index 64c3410baf..0c60355a1c 100644
--- a/gnu/build/activation.scm
+++ b/gnu/build/activation.scm
@@ -30,6 +30,7 @@
activate-/bin/sh
activate-modprobe
activate-firmware
+ activate-ptrace-attach
activate-current-system))
;;; Commentary:
@@ -335,6 +336,18 @@ by itself, without having to resort to a \"user helper\"."
(lambda (port)
(display directory port))))
+(define (activate-ptrace-attach)
+ "Allow users to PTRACE_ATTACH their own processes.
+
+This works around a regression introduced in the default \"security\" policy
+found in Linux 3.4 onward that prevents users from attaching to their own
+processes--see Yama.txt in the Linux source tree for the rationale. This
+sounds like an unacceptable restriction for little or no security
+improvement."
+ (call-with-output-file "/proc/sys/kernel/yama/ptrace_scope"
+ (lambda (port)
+ (display 0 port))))
+
(define %current-system
;; The system that is current (a symlink.) This is not necessarily the same
diff --git a/gnu/packages/bioinformatics.scm b/gnu/packages/bioinformatics.scm
index 9813d07e9c..e143fb2c55 100644
--- a/gnu/packages/bioinformatics.scm
+++ b/gnu/packages/bioinformatics.scm
@@ -30,13 +30,17 @@
#:use-module (gnu packages base)
#:use-module (gnu packages compression)
#:use-module (gnu packages java)
+ #:use-module (gnu packages maths)
#:use-module (gnu packages ncurses)
#:use-module (gnu packages perl)
#:use-module (gnu packages pkg-config)
#:use-module (gnu packages popt)
#:use-module (gnu packages python)
+ #:use-module (gnu packages statistics)
+ #:use-module (gnu packages swig)
#:use-module (gnu packages tbb)
#:use-module (gnu packages vim)
+ #:use-module (gnu packages xml)
#:use-module (gnu packages zip))
(define-public bedops
@@ -507,6 +511,57 @@ supports next-generation sequencing data in fasta/q and csfasta/q format from
Illumina, Roche 454, and the SOLiD platform.")
(license license:gpl3)))
+(define-public grit
+ (package
+ (name "grit")
+ (version "2.0.2")
+ (source (origin
+ (method url-fetch)
+ (uri (string-append
+ "https://github.com/nboley/grit/archive/"
+ version ".tar.gz"))
+ (file-name (string-append name "-" version ".tar.gz"))
+ (sha256
+ (base32
+ "157in84dj70wimbind3x7sy1whs3h57qfgcnj2s6lrd38fbrb7mj"))))
+ (build-system python-build-system)
+ (arguments
+ `(#:python ,python-2
+ #:phases
+ (alist-cons-after
+ 'unpack 'generate-from-cython-sources
+ (lambda* (#:key inputs outputs #:allow-other-keys)
+ ;; Delete these C files to force fresh generation from pyx sources.
+ (delete-file "grit/sparsify_support_fns.c")
+ (delete-file "grit/call_peaks_support_fns.c")
+ (substitute* "setup.py"
+ (("Cython.Setup") "Cython.Build")
+ ;; Add numpy include path to fix compilation
+ (("pyx\", \\]")
+ (string-append "pyx\", ], include_dirs = ['"
+ (assoc-ref inputs "python-numpy")
+ "/lib/python2.7/site-packages/numpy/core/include/"
+ "']"))) #t)
+ %standard-phases)))
+ (inputs
+ `(("python-scipy" ,python2-scipy)
+ ("python-numpy" ,python2-numpy)
+ ("python-pysam" ,python2-pysam)
+ ("python-networkx" ,python2-networkx)))
+ (native-inputs
+ `(("python-cython" ,python2-cython)
+ ("python-setuptools" ,python2-setuptools)))
+ (home-page "http://grit-bio.org")
+ (synopsis "Tool for integrative analysis of RNA-seq type assays")
+ (description
+ "GRIT is designed to use RNA-seq, TES, and TSS data to build and quantify
+full length transcript models. When none of these data sources are available,
+GRIT can be run by providing a candidate set of TES or TSS sites. In
+addition, GRIT can merge in reference junctions and gene boundaries. GRIT can
+also be run in quantification mode, where it uses a provided GTF file and just
+estimates transcript expression.")
+ (license license:gpl3+)))
+
(define-public hisat
(package
(name "hisat")
@@ -1001,6 +1056,111 @@ sequences.")
;; STAR is licensed under GPLv3 or later; htslib is MIT-licensed.
(license license:gpl3+)))
+(define-public shogun
+ (package
+ (name "shogun")
+ (version "4.0.0")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (string-append
+ "ftp://shogun-toolbox.org/shogun/releases/"
+ (version-major+minor version)
+ "/sources/shogun-" version ".tar.bz2"))
+ (sha256
+ (base32
+ "159nlijnb7mnrv9za80wnm1shwvy45hgrqzn51hxy7gw4z6d6fdb"))))
+ (build-system cmake-build-system)
+ (arguments
+ '(#:tests? #f ;no check target
+ #:phases
+ (alist-cons-after
+ 'unpack 'delete-broken-symlinks
+ (lambda _
+ (for-each delete-file '("applications/arts/data"
+ "applications/asp/data"
+ "applications/easysvm/data"
+ "applications/msplicer/data"
+ "applications/ocr/data"
+ "examples/documented/data"
+ "examples/documented/matlab_static"
+ "examples/documented/octave_static"
+ "examples/undocumented/data"
+ "examples/undocumented/matlab_static"
+ "examples/undocumented/octave_static"
+ "tests/integration/data"
+ "tests/integration/matlab_static"
+ "tests/integration/octave_static"
+ "tests/integration/python_modular/tests"))
+ #t)
+ (alist-cons-after
+ 'unpack 'change-R-target-path
+ (lambda* (#:key outputs #:allow-other-keys)
+ (substitute* '("src/interfaces/r_modular/CMakeLists.txt"
+ "src/interfaces/r_static/CMakeLists.txt"
+ "examples/undocumented/r_modular/CMakeLists.txt")
+ (("\\$\\{R_COMPONENT_LIB_PATH\\}")
+ (string-append (assoc-ref outputs "out")
+ "/lib/R/library/")))
+ #t)
+ (alist-cons-after
+ 'unpack 'fix-octave-modules
+ (lambda* (#:key outputs #:allow-other-keys)
+ (substitute* '("src/interfaces/octave_modular/CMakeLists.txt"
+ "src/interfaces/octave_static/CMakeLists.txt")
+ (("^include_directories\\(\\$\\{OCTAVE_INCLUDE_DIRS\\}")
+ "include_directories(${OCTAVE_INCLUDE_DIRS} ${OCTAVE_INCLUDE_DIRS}/octave"))
+
+ ;; change target directory
+ (substitute* "src/interfaces/octave_modular/CMakeLists.txt"
+ (("\\$\\{OCTAVE_OCT_LOCAL_API_FILE_DIR\\}")
+ (string-append (assoc-ref outputs "out")
+ "/share/octave/packages")))
+ #t)
+ (alist-cons-before
+ 'build 'set-HOME
+ ;; $HOME needs to be set at some point during the build phase
+ (lambda _ (setenv "HOME" "/tmp") #t)
+ %standard-phases))))
+ #:configure-flags
+ (list "-DUSE_SVMLIGHT=OFF" ;disable proprietary SVMLIGHT
+ ;;"-DJavaModular=ON" ;requires unpackaged jblas
+ ;;"-DRubyModular=ON" ;requires unpackaged ruby-narray
+ ;;"-DPerlModular=ON" ;"FindPerlLibs" does not exist
+ ;;"-DLuaModular=ON" ;fails because lua doesn't build pkgconfig file
+ "-DOctaveModular=ON"
+ "-DOctaveStatic=ON"
+ "-DPythonModular=ON"
+ "-DPythonStatic=ON"
+ "-DRModular=ON"
+ "-DRStatic=ON"
+ "-DCmdLineStatic=ON")))
+ (inputs
+ `(("python" ,python)
+ ("numpy" ,python-numpy)
+ ("r" ,r)
+ ("octave" ,octave)
+ ("swig" ,swig)
+ ("hdf5" ,hdf5)
+ ("atlas" ,atlas)
+ ("arpack" ,arpack-ng)
+ ("lapack" ,lapack)
+ ("glpk" ,glpk)
+ ("libxml2" ,libxml2)
+ ("lzo" ,lzo)
+ ("zlib" ,zlib)))
+ (native-inputs
+ `(("pkg-config" ,pkg-config)))
+ (home-page "http://shogun-toolbox.org/")
+ (synopsis "Machine learning toolbox")
+ (description
+ "The Shogun Machine learning toolbox provides a wide range of unified and
+efficient Machine Learning (ML) methods. The toolbox seamlessly allows to
+combine multiple data representations, algorithm classes, and general purpose
+tools. This enables both rapid prototyping of data pipelines and extensibility
+in terms of new algorithms.")
+ (license license:gpl3+)))
+
(define-public vcftools
(package
(name "vcftools")
diff --git a/gnu/packages/emacs.scm b/gnu/packages/emacs.scm
index 73246ab3b9..5eb9c4b44a 100644
--- a/gnu/packages/emacs.scm
+++ b/gnu/packages/emacs.scm
@@ -1,7 +1,7 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2014 Taylan Ulrich Bayirli/Kammer <taylanbayirli@gmail.com>
;;; Copyright © 2013, 2014, 2015 Ludovic Courtès <ludo@gnu.org>
-;;; Copyright © 2014 Mark H Weaver <mhw@netris.org>
+;;; Copyright © 2014, 2015 Mark H Weaver <mhw@netris.org>
;;; Copyright © 2014 Alex Kost <alezost@gmail.com>
;;;
;;; This file is part of GNU Guix.
@@ -57,14 +57,14 @@
(define-public emacs
(package
(name "emacs")
- (version "24.4")
+ (version "24.5")
(source (origin
(method url-fetch)
(uri (string-append "mirror://gnu/emacs/emacs-"
version ".tar.xz"))
(sha256
(base32
- "1zflm6ac34s6v166p58ilxrxbxjm0q2wfc25f8y0mjml1lbr3qs7"))))
+ "0kn3rzm91qiswi0cql89kbv6mqn27rwsyjfb8xmwy9m5s8fxfiyx"))))
(build-system glib-or-gtk-build-system)
(arguments
'(#:phases (alist-cons-before
diff --git a/gnu/packages/gstreamer.scm b/gnu/packages/gstreamer.scm
index ad0cfccca9..9758806cc5 100644
--- a/gnu/packages/gstreamer.scm
+++ b/gnu/packages/gstreamer.scm
@@ -20,7 +20,7 @@
;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
(define-module (gnu packages gstreamer)
- #:use-module ((guix licenses) #:select (lgpl2.0+ bsd-2 bsd-3))
+ #:use-module ((guix licenses) #:select (lgpl2.0+ bsd-2 bsd-3 gpl2+))
#:use-module (guix packages)
#:use-module (guix download)
#:use-module (guix build-system gnu)
@@ -39,6 +39,7 @@
#:use-module (gnu packages xiph)
#:use-module (gnu packages pkg-config)
#:use-module (gnu packages python)
+ #:use-module (gnu packages yasm)
#:use-module (gnu packages xml))
(define-public orc
@@ -247,6 +248,42 @@ GStreamer multimedia library. This set contains those plug-ins which the
developers consider to have good quality code and correct functionality.")
(license lgpl2.0+)))
+(define-public gst-libav
+ (package
+ (name "gst-libav")
+ (version "1.4.5")
+ (source (origin
+ (method url-fetch)
+ (uri (string-append
+ "http://gstreamer.freedesktop.org/src/" name "/"
+ name "-" version ".tar.xz"))
+ (sha256
+ (base32
+ "1g7vg9amh3cc3nmc415h6g2rqxqi4wgwqi08hxfbpwq48ri64p30"))))
+ (build-system gnu-build-system)
+ (arguments
+ '(#:phases
+ (modify-phases %standard-phases
+ (add-before configure patch-/bin/sh
+ (lambda _
+ (substitute* "gst-libs/ext/libav/configure"
+ (("#! /bin/sh")
+ (string-append "#! "(which "sh")))))))))
+ (native-inputs
+ `(("pkg-config" ,pkg-config)
+ ("python" ,python)
+ ("yasm" ,yasm)))
+ (inputs
+ `(("gst-plugins-base" ,gst-plugins-base)
+ ("orc" ,orc)
+ ("zlib" ,zlib)))
+ (home-page "http://gstreamer.freedesktop.org/")
+ (synopsis "Plugins for the GStreamer multimedia library")
+ (description
+ "This GStreamer plugin supports a large number of audio and video
+compression formats through the use of the libav library.")
+ (license gpl2+)))
+
(define-public gst-plugins-base-0.10
(package (inherit gst-plugins-base)
(version "0.10.36")
diff --git a/gnu/packages/man.scm b/gnu/packages/man.scm
index f5bd339100..a92c6dd132 100644
--- a/gnu/packages/man.scm
+++ b/gnu/packages/man.scm
@@ -1,5 +1,5 @@
;;; GNU Guix --- Functional package management for GNU
-;;; Copyright © 2012, 2014 Ludovic Courtès <ludo@gnu.org>
+;;; Copyright © 2012, 2014, 2015 Ludovic Courtès <ludo@gnu.org>
;;; Copyright © 2014 David Thompson <dthompson2@worcester.edu>
;;; Copyright © 2015 Ricardo Wurmus <rekado@elephly.net>
;;;
@@ -119,7 +119,7 @@ the traditional flat-text whatis databases.")
(define-public man-pages
(package
(name "man-pages")
- (version "3.69")
+ (version "3.82")
(source (origin
(method url-fetch)
(uri (string-append
@@ -127,7 +127,7 @@ the traditional flat-text whatis databases.")
version ".tar.xz"))
(sha256
(base32
- "18zzmdzjihdnyg4vamk0jp6v6826vrsgal3kqqxvfq9bzyrh8xm2"))))
+ "1c8q618shf469nfp55qrwjv9630fgq5abfk946xya9hw1bfp6wjl"))))
(build-system gnu-build-system)
(arguments
'(#:phases (alist-delete 'configure %standard-phases)
diff --git a/gnu/services/base.scm b/gnu/services/base.scm
index cd1ba0b7b9..956fa7efa0 100644
--- a/gnu/services/base.scm
+++ b/gnu/services/base.scm
@@ -499,7 +499,7 @@ the ``message of the day''."
"Return a service that runs libc's name service cache daemon (nscd) with the
given @var{config}---an @code{<nscd-configuration>} object. Optionally,
@code{#:name-services} is a list of packages that provide name service switch
- (NSS) modules needed by nscd."
+ (NSS) modules needed by nscd. @xref{Name Service Switch}, for an example."
(mlet %store-monad ((nscd.conf (nscd.conf-file config)))
(return (service
(documentation "Run libc's name service cache daemon (nscd).")
diff --git a/gnu/system.scm b/gnu/system.scm
index ece61adb2b..6cf12df604 100644
--- a/gnu/system.scm
+++ b/gnu/system.scm
@@ -1,5 +1,6 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2013, 2014, 2015 Ludovic Courtès <ludo@gnu.org>
+;;; Copyright © 2015 Mark H Weaver <mhw@netris.org>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -680,6 +681,9 @@ etc."
(activate-firmware
(string-append #$firmware "/lib/firmware"))
+ ;; Let users debug their own processes!
+ (activate-ptrace-attach)
+
;; Run the services' activation snippets.
;; TODO: Use 'load-compiled'.
(for-each primitive-load '#$actions)
@@ -695,6 +699,20 @@ we're running in the final root."
(dmd-conf (dmd-configuration-file services)))
(gexp->file "boot"
#~(begin
+ (use-modules (guix build utils))
+
+ ;; Clean out /tmp and /var/run.
+ ;;
+ ;; XXX This needs to happen before service activations, so
+ ;; it has to be here, but this also implicitly assumes
+ ;; that /tmp and /var/run are on the root partition.
+ (false-if-exception (delete-file-recursively "/tmp"))
+ (false-if-exception (delete-file-recursively "/var/run"))
+ (false-if-exception (mkdir "/tmp"))
+ (false-if-exception (chmod "/tmp" #o1777))
+ (false-if-exception (mkdir "/var/run"))
+ (false-if-exception (chmod "/var/run" #o755))
+
;; Activate the system.
;; TODO: Use 'load-compiled'.
(primitive-load #$activate)