No description
  • Scheme 93%
  • Tree-sitter Query 6.6%
  • Shell 0.4%
Find a file
Giacomo Leidi b4372c1909
transmute: Collapse remote fact pipeline into a single guile-parted probe.
Replace the chatty lsblk -> fdisk -> blkid -> mount pipeline, which fired
four SSH round trips per disk, with one remote-eval invocation that uses
guile-parted on the target to enumerate devices and partitions, then
parses /proc/mounts and blkid -o export to enrich them.  The probe
returns a structured alist which (guix-transmute facts) materialises into
the existing <system-facts>, <device-fact> and <partition-fact> records.

* src/guix-transmute/facts/probe.scm: New file.
* src/guix-transmute/parted.scm: New file.
* src/guix-transmute/facts/blkid.scm,
src/guix-transmute/facts/fdisk.scm,
src/guix-transmute/facts/lsblk.scm,
src/guix-transmute/facts/mount.scm: Delete.
* src/guix-transmute/facts.scm (system-facts-machine->system): Fix i686
spelling.  Add docstring.
(alist->partition-fact, alist->device-fact): New procedures.
(file-systems-facts): Delete.
(target-facts): Drive a single remote-eval of `probe-gexp' under sudo and
materialise its result into a <system-facts> record.  Raise an external
error when the target lacks Guix instead of attempting a per-tool
fallback.  Add docstring.
* src/guix-transmute/transmute/bootloader.scm (boot-device)
(facts->efi-bootloader-configuration): Actually raise the constructed
exception.
(facts->bootloader-configuration): Add docstring.
* src/guix-transmute/write.scm (write-bootloader-configuration): Actually
raise the constructed exception.
2026-06-10 00:22:44 +02:00
.guix channel: Drop bluebox dependency. 2026-06-10 00:22:44 +02:00
scripts scripts: Add refresh_channels. 2026-02-26 20:03:20 +01:00
src transmute: Collapse remote fact pipeline into a single guile-parted probe. 2026-06-10 00:22:44 +02:00
.envrc channel: Add channels lockfile. 2026-02-22 18:35:24 +01:00
.gitignore Init 2026-01-15 11:42:16 +01:00
.guix-authorizations Add Guix channel definition. 2026-01-15 12:00:16 +01:00
.guix-channel channel: Drop bluebox dependency. 2026-06-10 00:22:44 +02:00
guix.scm Init 2026-01-15 11:42:16 +01:00
manifest.scm Init 2026-01-15 11:42:16 +01:00
README.md channels: Update channel name. 2026-02-25 11:59:58 +01:00

Convert any Linux system to a Guix system

guix transmute is a Guix extension to convert any Linux system to a Guix system with an SSH connection.

Guix channel

To configure Guix for using this repository as a channel, you need to create a .config/guix/channels.scm file with the following content:

(cons* (channel
        (name 'transmute)
        (url "https://codeberg.org/fishinthecalculator/guix-transmute.git")
        (branch "main")
        ;; Enable signature verification:
        (introduction
         (make-channel-introduction
          "e94e90053a6d59acbb4ef31e531c546a06831777"
          (openpgp-fingerprint
           "50E1 7BE0 D210 C883 D675  3150 4A3D 07EF D05C 4045"))))
       %default-channels)

Otherwise, if you already have a .config/guix/channels.scm you can simply prepend this channel to the preexisting ones:

(cons* (channel
        (name 'transmute)
        (url "https://codeberg.org/fishinthecalculator/guix-transmute.git")
        (branch "main")
        ;; Enable signature verification:
        (introduction
         (make-channel-introduction
          "e94e90053a6d59acbb4ef31e531c546a06831777"
          (openpgp-fingerprint
           "50E1 7BE0 D210 C883 D675  3150 4A3D 07EF D05C 4045"))))
       (channel
        (name 'nonguix)
        (url "https://gitlab.com/nonguix/nonguix")
        ;; Enable signature verification:
        (introduction
         (make-channel-introduction
          "897c1a470da759236cc11798f4e0a5f7d4d59fbc"
          (openpgp-fingerprint
           "2A39 3FFF 68F4 EF7A 3D29  12AF 6F51 20A0 22FB B2D5"))))
       %default-channels)

What is a Guix channel?

A channel is roughly the Guix equivalent of the AUR or container registries. It's a software repository providing Guix package and service definitions.

Contributing

All contributions are welcome. If you have commit access please remember to setup the authentication hook with

git fetch origin keyring:keyring
guix git authenticate --cache-key=channels/guix-transmute --stats e94e90053a6d59acbb4ef31e531c546a06831777 "50E1 7BE0 D210 C883 D675  3150 4A3D 07EF D05C 4045"

Licence

Unless otherwise stated all the files in this repository are to be considered under the GPL 3.0 terms. You are more than welcome to open issues or send patches.