new file mode 100644
@@ -0,0 +1,78 @@
+;;; GNU Guix --- Functional package management for GNU
+;;; Copyright © 2024 Daniel Ziltener <dziltener@lyrion.ch>
+;;;
+;;; 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/>.
+
+(define-public pharo-vm
+ (package
+ (name "pharo-vm")
+ (version "10.1.1")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (string-append "http://files.pharo.org/vm/pharo-spur64-headless/Linux-x86_64/source/PharoVM-" version "-32b2be5-Linux-x86_64-c-src.tar.gz"))
+ (sha256
+ (base32
+ "1hbkvfrw57sz5nw48z64789yjcry9l1am4hmkndy9dd6i06n2c2n"))))
+ (build-system cmake-build-system)
+ (arguments
+ (list
+ #:configure-flags
+ #~(list
+ (string-append "-DPHARO_BIN_LOCATION="
+ (assoc-ref %outputs "out") "/bin")
+ (string-append "-DPHARO_LIBRARY_PATH="
+ (assoc-ref %outputs "out") "/lib")
+ "-DGENERATED_SOURCE_DIR=."
+ "-DALWAYS_INTERACTIVE=on"
+ "-DBUILD_IS_RELEASE=on"
+ "-DGENERATE_SOURCES=off"
+ "-DBUILD_BUNDLE=off")
+ #:phases
+ #~(modify-phases %standard-phases
+ (delete 'check)
+ (add-after 'install 'really-install
+ (lambda _
+ (let ((bin (string-append #$output "/bin"))
+ (lib (string-append #$output "/lib")))
+ (wrap-program "./build/vm/pharo"
+ `("LD_LIBRARY_PATH" prefix (,lib)))
+ (mkdir-p bin)
+ (mkdir-p lib)
+ (copy-recursively "./build/vm/pharo"
+ (string-append bin "/pharo"))
+ (for-each (lambda (file)
+ (let ((inode (string-append "./build/vm/" file)))
+ (copy-recursively
+ inode
+ (string-append lib "/" file))))
+ (with-directory-excursion
+ "./build/vm"
+ (find-files "."
+ (lambda (file stat)
+ (string-contains file ".so")))))))))))
+ (inputs
+ (list libffi
+ libgit2
+ cairo
+ freetype
+ pixman
+ libpng
+ util-linux))
+ (synopsis "This is the VM used by Pharo")
+ (home-page "https://www.pharo.org")
+ (description "This is the VM used by Pharo.")
+ (license license:expat)))