31 Using Artanis in combination with Guix

GNU Artanis is packaged and available via the Guix package manager. Read more about Guix here: https://guix.gnu.org/

GNU Guix is a package manager for GNU/Linux systems. It is designed to give users more control over their general-purpose and specialized computing environments, and make these easier to reproduce over time and deploy to one or many devices.

This combines elegantly with Artanis, and ensures a stable and reproducible build process for your projects and deployments.

A simple manifest.scm file can look like this, and allows you to customize and isolate (per project) what versions of Artanis (and other software) you use.

(use-modules (guix packages)
             (gnu)
             ;; ............
             (gnu packages guile)
             (gnu packages guile-xyz)
             ;; ........
             )


(packages->manifest (list artanis
                          (specification->package "gettext")
                          guile-next
                          ;; guile-ares-rs is a nice developer REPL
                          sqlite
                          guile-dbi
                          guile-dbd-sqlite3))

This allows you to customize what version of Artanis you may want to run or do other optimizations or changes.

See more about Guix packages here: https://guix.gnu.org/manual/en/html_node/Defining-Packages.html

The upstream package definition for Artanis can be found here: https://codeberg.org/guix/guix/src/branch/master/gnu/packages/guile-xyz.scm

With this you can then reproducibly run your project with art and more as well:

# Running `art` from inside the reproducible guix shell
guix shell -m manifest.scm -- art work -c conf/production.conf

guix shell -m manifest.scm -- sqlite3 my.db 'PRAGMA journal_mode=WAL;'