guix-scheme
Read/write Guix Scheme files from Rust: parse and edit channels.scm without losing comments or formatting, and generate operating-system configurations. Built on a lossless S-expression concrete syntax tree, so untouched parts of a file survive edits byte-for-byte.
Editing channels.scm
use ;
let src = read_to_string?;
let mut cf = parse?;
cf.add_channel?;
cf.remove_channel?;
write?;
Comments, indentation, and everything you didn't touch come back byte-identical.
Generating an operating-system
use ;
let config = new
.bootloader_efi
.file_system
.user
.services_field
.build;
Feature flags
guile-check(guix-scheme): validate generated/edited source by feeding it through a realguilereader. Off by default; requiresguileonPATHat runtime.
MSRV
Rust 2021 edition; tested on current stable.
Fixture sources
The test corpus (35 files under scheme-edit/tests/fixtures/) is copied verbatim
from GNU Guix, libguix, guix-install, and community configuration repos found via
awesome-guix. Each file keeps its
original copyright and license. Full credits:
scheme-edit/tests/fixtures/SOURCES.md.