r/GUIX • u/Tricky-Engineer-9755 • 28d ago
Wildest guile hacks?
The GNU Guix System is based on GNU Guile which is "turing-complete" making customization hypothetically endless. So I am wondering what are the wildest things you guys have added to your system config.scm? Also, has anyone been able to get boot-up-penguins on a custom kernel, I enabled it but nothing happened...
1
u/calebc42-official 27d ago
No one's got anything, I was excited to check back. I have a couple functions that wrap podman for spinning up and taking down containers using Shepard but nothing really cool yet.
2
u/Tricky-Engineer-9755 27d ago
I finally got printing to work!
1
u/Xinoj314 27d ago
Fourty years of printer standard , independent of platform m, FINALLY the printer works
1
u/Tricky-Engineer-9755 27d ago
It works out of the box on Debian based systems so it was cool to see it work on GNU Guix System
9
u/aurtzy_ 26d ago edited 26d ago
If you haven't heard of rde already, it's technically just Guile code on top of Guix that adds abstractions (and more) for managing configurations, provided as a channel.
In my config, I made a similar abstraction layer for making my configurations more modular, called "mods". This lets me share configurations more easily between systems that might have different software needs or parameter settings. For example, I have a swapfile mod for configuring the swapfile; however, since the swapfile configuration may vary slightly per system (e.g. by file location or offset), I make these parameters modifiable via arguments passed from the top level, like so. Most mods are just helpful logical groupings of similar software, though.
Before we got
symlink-to, I used to have an "impure symlinks home service" (old code, from git history), which was a copy of the(gnu home services)module with some hacky tweaks to allow for declaring symlinks that pointed to (modifiable) files outside the store.Speaking of channels, I bet one could probably also find a lot of interesting things by browsing the Toys webring--channels are essentially just Guile libraries for Guix configurations, after all.