Structure your Guile scripts Automate all the things https://docs.cbaines.net/guile-automate/
  • Scheme 79.3%
  • Tree-sitter Query 17.7%
  • CSS 1.2%
  • JavaScript 0.8%
  • Makefile 0.6%
  • Other 0.4%
Find a file
Repository files (latest commit first)
Filename Latest commit message Latest commit date
Christopher Baines 3bfc5ed6ce
Some checks failed
automate/trunk make format would change files
Change the default address and port to listen on
And listen by default, as this makes more sense.
2026-10-09 12:30:18 +01:00
.automate Rework how daemon sockets, registration and sturdyrefs work 2026-10-03 00:09:52 +01:00
automate Change the default address and port to listen on 2026-10-09 12:30:18 +01:00
bin Initial commit 2026-09-27 10:40:24 +01:00
build-aux Initial commit 2026-09-27 10:40:24 +01:00
doc Change the default address and port to listen on 2026-10-09 12:30:18 +01:00
examples Change the default address and port to listen on 2026-10-09 12:30:18 +01:00
tests Change the default address and port to listen on 2026-10-09 12:30:18 +01:00
.dir-locals.el Initial commit 2026-09-27 10:40:24 +01:00
.envrc Initial commit 2026-09-27 10:40:24 +01:00
.gitignore Rework how daemon sockets, registration and sturdyrefs work 2026-10-03 00:09:52 +01:00
automate.scm Add a seconds-for helper procedure 2026-09-29 14:11:39 +01:00
bootstrap.sh Initial commit 2026-09-27 10:40:24 +01:00
CLAUDE.md Support multiple daemon processes 2026-09-29 16:21:17 +01:00
configure.ac Initial commit 2026-09-27 10:40:24 +01:00
COPYING Initial commit 2026-09-27 10:40:24 +01:00
DESIGN.md Gracefully shutdown the pumphouse when terminated 2026-10-03 08:30:18 +01:00
guile.am Initial commit 2026-09-27 10:40:24 +01:00
guix.scm Initial commit 2026-09-27 10:40:24 +01:00
Makefile.am Add working directories for pipeline daemons 2026-10-03 00:51:47 +01:00
manifest.scm Initial commit 2026-09-27 10:40:24 +01:00
NEWS Initial commit 2026-09-27 10:40:24 +01:00
pre-inst-env.in Initial commit 2026-09-27 10:40:24 +01:00
README.md Initial commit 2026-09-27 10:40:24 +01:00
STYLE.md Expand error handling in STYLE.md 2026-09-29 10:35:25 +01:00

Guile Automate

Build and run pipelines written in GNU Guile using GNU Guix and Spritely Goblins.

At the moment, Guile Automate is a prototype. Everything is currently unstable and open to breaking changes.

The manual, for whoever writes or runs pipelines, is at https://docs.cbaines.net/guile-automate/; it is built from doc/ by make -C doc index.html. The design, for whoever changes Automate, is DESIGN.md, and code follows STYLE.md. Automate's own pipelines are under .automate/.

Trying it

Automate runs on Linux, and needs GNU Guix on every machine that builds or runs a pipeline, since each step is a program in the store. Steps are confined in Linux namespaces, so the kernel has to let an unprivileged process create them; where it does not, --unconfined runs steps as ordinary processes. A step that builds with Guix while it runs also needs a guix-daemon.

Start with examples/hello.scm: a two-step pipeline with a workspace, a secret, a limiter and a parameter, whose header says how to build and run it. The manual's Getting Started section walks through the same kind of file.

Reporting bugs

Report bugs and suggest changes in the issue tracker at https://forge.cbaines.net/cbaines/guile-automate/issues. Since Automate is a prototype, open an issue to discuss a larger change before writing it.

Developing

guix shell -D -f guix.scm -- guile -L . tests/run.scm
guix shell -D -f guix.scm -- guile tests/integration/lowering.scm

Or with Autotools, which compiles the modules and can install them:

guix shell -D -f guix.scm
./bootstrap.sh && ./configure && make
make check              # the suites, one per file
make check-integration  # tests/integration/, needs a guix-daemon
make install            # puts the automate command on the path

The dependencies are declared in guix.scm, so that is the file to hand guix shell: it caches the profile against the mtime of the file it is given and reads nothing that file loads, so a profile cached against manifest.scm, which loads guix.scm, goes on being used after a dependency changes. manifest.scm adds Emacs and bash to the same inputs, for make format and for Automate's own pipelines, which build it afresh on every run:

guix shell -m manifest.scm -- make format

Copying

Guile Automate 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. See COPYING.