|
|
|
|
|
by ryukafalz
556 days ago
|
|
Shepherd is one of those things that put me off a little bit when I first started using Guix (just because I wasn't used to it yet), but I've really grown to appreciate it. The other init systems I'm most familiar with are systemd and sysvinit. Systemd is nice and easy from a user's perspective, but it's not all that flexible if you want to do something systemd doesn't already support. Sysvinit on the other hand is minimal and flexible, but I have no desire to write a classic init script at all. Shepherd is somewhere in between. It's extremely flexible (for example Guix added a containerization feature to use in Shepherd services, and due to Shepherd's design that's just a module within Guix; it doesn't have to go in upstream Shepherd) and yet writing services is pretty simple. |
|
The services-in-containers extension you mention is a good example of that: it is implemented on the distro side (in Guix) without any modification to the Shepherd itself. The good thing is that the distro is in a good position to determine how to set up that container since it knows about the package being run, its configuration, and so on.