AFAIK, Guix has its own init system, called GNU Sheperd.
This is true, and I think with the new work to introduce shepherd@1 the potential ability to be able to configure an alternative PID1 is much diminished, sadly. #guix
@khleedril Was it ever a realistic option? I haven't seen any appetite for alternate init systems in Guix. I don't think the recent Shepherd releases have changed that.
@carlozancanaro @khleedril I think it's important to distinguish #Guix and #GuixSystem. Guix doesn't care what PID 1 is; Guix System will run Shepherd as the init process, though in my experience the dependency isn't really fundamental. My computers run Guix System with an (operating-system ...) without Shepherd services, see https://rentry.co/mnuo4fp6 -- it points to an initrd running a tiny busybox shell script to decrypt and mount the root filesystem and exec minit, https://codeberg.org/gtw/minit
@gtw @carlozancanaro This is interesting. You say you run without shepherd services, but how do you actually turn the shepherd daemon off? There is no clause in (operating-system ...) that says to use or not to use shepherd?
@khleedril There's nothing special about the Shepherd service. shepherd-root-service-type is defined in the same way as all the other service types, and it just extends boot-service-type to start the Shepherd as PID1 (see gnu/services/shepherd.scm for its definition). It's part of the default value of operating-system's essential-services field, but you can change that by providing an explicit value to your operating-system definition.
If you look at @gtw's paste from earlier (https://rentry.co/mnuo4fp6), you can see that this operating-system definition specifies essential-services, and does not include the shepherd-root-service-type. That means a system built from this definition will not have PID1 be the Shepherd. While this is unusual it doesn't fundamentally break Guix, it just removes the pieces that a bunch of other services rely on so you can't use those services.
@khleedril Yes, exactly what @carlozancanaro wrote! I see the documentation https://guix.gnu.org/manual/en/html_node/operating_002dsystem-Reference.html warns "As a user you should NEVER need to touch this field", which makes sense, since deleting the Shepherd service without providing substitutes for the vital things it does would leave the system booting into an unusable state. But it can be made to work.
@carlozancanaro @khleedril For a user wanting both Guix and systemd, I can imagine two main approaches: 1) start with a foreign distro already running systemd (NixOS would be an interesting choice), install Guix on top, and never actually introduce Guix System.
Or...
@carlozancanaro @khleedril 2) Install Guix System, then modify (operating-system ...) to remove Shepherd from (essential-services ...) and add a custom systemd replacement. I think this should be feasible, although a lot of work. I imagine the hardest parts would be writing systemd replacements for all the normal Shepherd (operating-system (services ...)) entries, and having to make nuanced choices about where systemd starts and (services ...) ends.