(use-modules (gnu packages linux) (guix download) (guix packages)) (package (inherit singularity) (version (package-version singularity)) (source (origin (inherit (package-source singularity)) (snippet '(begin ;; We put the singularity setuid binaries under ;; /usr/local. The Guix package puts it under ;; /run/privileged/bin. But, we cannot do that since ;; /run is mounted noexec on octopus. (substitute* (find-files "libexec/cli" "\\.exec$") (("\\$SINGULARITY_libexecdir/singularity/bin/([a-z]+)-suid" _ program) (string-append "/usr/local/libexec/singularity/bin/singularity-" program "-helper"))) ;; The remaining snippet code below is copied from the ;; Guix package. ;; Do not create directories in /var. (substitute* "Makefile.in" (("\\$\\(MAKE\\) .*install-data-hook") "")) ;; The original source overrides PATH so that it ;; points to /bin, /usr/local/bin, etc., which ;; obviously doesn't work on Guix System. Leave PATH ;; unchanged so we refer to the installed Coreutils, ;; grep, etc. (substitute* "bin/singularity.in" (("^PATH=.*" all) (string-append "#" all "\n"))) ;; These squashfs mount options are apparently no ;; longer supported since Linux-libre 5.4.5. (substitute* "src/lib/image/squashfs/mount.c" (("\"errors=remount-ro\"") "NULL")))))))