aboutsummaryrefslogtreecommitdiff
;;; Run the following command to enter a development environment for
;;; nsmc:
;;;
;;;  $ guix shell

(use-modules (guix build-system cmake)
             (guix build-system guile)
             (guix build-system python)
             (guix download)
             (guix gexp)
             (guix git-download)
             ((guix licenses) #:prefix license:)
             (guix packages)
             (guix utils)
             (gnu packages bash)
             (gnu packages check)
             (gnu packages cmake)
             (gnu packages code)
             (gnu packages commencement)
             (gnu packages guile)
             (gnu packages guile-xyz)
             (gnu packages maths)
             (gnu packages pkg-config)
             (gnu packages python)
             (gnu packages python-science)
             (gnu packages python-xyz))

(define %source-dir (dirname (current-filename)))

;; TODO: Contribute upstream to Guix and delete.
(define sph-lib
  (package
    (name "sph-lib")
    (version "2021-01-05")
    (source
     (origin
       (method git-fetch)
       (uri (git-reference
             (url "https://github.com/sph-mn/sph-lib")
             (commit "2b0474218e51c1debb4de7b932a0e1c8bff4577c")))
       (file-name (git-file-name name version))
       (sha256
        (base32
         "0yz8igkv725ddjlss4jhzzwam3p4zkw38z45pydsdv4q912qjxml"))))
    (build-system guile-build-system)
    (arguments
     `(#:phases
       (modify-phases %standard-phases
         (add-after 'unpack 'fix-build-errors
           (lambda _
             (substitute* "modules/sph/documentation.scm"
               (("\\(define output-format-markdown" all)
                (string-append "(define default-format-arguments)\n" all)))
             (chdir "modules")
             (delete-file "sph/documentation/itpn.scm")
             (delete-file-recursively "test"))))))
    (inputs
     `(("guile" ,guile-3.0)
       ("guile-fibers" ,guile-fibers)
       ("guile-reader" ,guile-reader)))
    (home-page "https://github.com/sph-mn/sph-lib")
    (synopsis "Collection of guile scheme libraries")
    (description "Collection of guile scheme libraries")
    (license license:gpl3+)))

;; TODO: Contribute upstream to Guix and delete.
(define sph-sc
  (package
    (name "sph-sc")
    (version "2021-02-02")
    (source
     (origin
       (method git-fetch)
       (uri (git-reference
             (url "https://github.com/sph-mn/sph-sc")
             (commit "42c992737a5a1a176706c9a3c30c32ca3828476c")))
       (file-name (git-file-name name version))
       (sha256
        (base32
         "0f3nssnqpqbm5wfv53lg8wi3dcpc0l9qyysd9r1bvig343gs79lm"))))
    (build-system guile-build-system)
    (inputs
     `(("bash" ,bash)
       ("guile" ,guile-3.0)
       ("sph-lib" ,sph-lib)))
    (arguments
     `(#:phases
       (modify-phases %standard-phases
         (add-before 'build 'fix-build-errors
           (lambda* (#:key outputs #:allow-other-keys)
             (copy-recursively "other/sc-format/modules" "modules")
             (chdir "modules")
             (delete-file-recursively "test")))
         (add-after 'install 'install-executables
           (lambda* (#:key outputs #:allow-other-keys)
             (let* ((out (string-append (assoc-ref outputs "out")))
                    (bin (string-append out "/bin"))
                    (version ,(version-major+minor (package-version guile-3.0)))
                    (scm (string-append out "/share/guile/site/" version))
                    (go (string-append out "/share/guile/" version "/site-ccache")))
               (mkdir bin)
               (for-each (lambda (executable)
                           (let ((installed-executable (string-append bin "/" (basename executable))))
                             (copy-file executable installed-executable)
                             (wrap-program installed-executable
                               `("GUILE_LOAD_PATH" ":" prefix
                                 (,scm ,(getenv "GUILE_LOAD_PATH")))
                               `("GUILE_LOAD_COMPILED_PATH" ":" prefix
                                 (,go ,(getenv "GUILE_LOAD_COMPILED_PATH"))))))
                         (list "../exe/sc"
                               "../other/sc-format/exe/sc-format"))))))))
    (home-page "https://github.com/sph-mn/sph-sc")
    (synopsis "Compile scheme-like S-expressions to C")
    (description "Compile scheme-like S-expressions to C")
    (license license:gpl3+)))

(define python-sambal
  (package
    (name "python-sambal")
    (version "0.1.0")
    (home-page "https://git.systemreboot.net/sambal")
    (source
     (origin
       (method url-fetch)
       (uri (pypi-uri "sambal" version))
       (sha256
        (base32 "0isna596k2cdp54c48gi988z51w49kix1k12vp1f5629ysy9rmrz"))))
    (build-system python-build-system)
    (native-inputs
     `(("python-pytest" ,python-pytest)
       ("python-scipy" ,python-scipy))) ; scipy is only required for
                                        ; tests.
    (propagated-inputs
     `(("python-numpy" ,python-numpy)))
    (synopsis "Sample balls, spheres, spherical caps")
    (description "Sample balls, spheres, spherical caps")
    (license license:gpl3+)))

(packages->manifest
 (list cmake gcc-toolchain gsl guile-3.0 indent pkg-config sph-sc
       python python-matplotlib python-numpy python-sambal python-scipy))