Structure your Guile scripts Automate all the things https://docs.cbaines.net/guile-automate/
  • Scheme 79.6%
  • Tree-sitter Query 17.5%
  • CSS 1.3%
  • Makefile 0.6%
  • JavaScript 0.6%
  • Other 0.4%
Find a file
Repository files (latest commit first)
Filename Latest commit message Latest commit date
Christopher Baines 2a8f1fa0cb
All checks were successful
automate/trunk The tests pass, the code is formatted and the manual builds
Fix an issue where the front page displays inconsistent diagrams
If the definition has changed since the last run.
2026-09-27 11:03:43 +01:00
.automate Initial commit 2026-09-27 10:40:24 +01:00
automate Fix an issue where the front page displays inconsistent diagrams 2026-09-27 11:03:43 +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 Initial commit 2026-09-27 10:40:24 +01:00
examples Initial commit 2026-09-27 10:40:24 +01:00
tests Fix an issue where the front page displays inconsistent diagrams 2026-09-27 11:03:43 +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 Initial commit 2026-09-27 10:40:24 +01:00
automate.scm Initial commit 2026-09-27 10:40:24 +01:00
bootstrap.sh Initial commit 2026-09-27 10:40:24 +01:00
CLAUDE.md Initial commit 2026-09-27 10:40:24 +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 Initial commit 2026-09-27 10:40:24 +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 Initial commit 2026-09-27 10:40:24 +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 Initial commit 2026-09-27 10:40:24 +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.