Xinglu Chen <pub...@yoctocell.xyz> writes: > On Thu, Sep 23 2021, Ludovic Courtès wrote: > >> Hi, >> >> Xinglu Chen <pub...@yoctocell.xyz> skribis: >> >>> Some services might be useful to have in both Guix System and Guix Home; >>> for instance, Guix System currently has a service for configuring >>> Syncthing, and I think it makes sense to also have one for Guix Home, >>> this would mean that people not using Guix System (me :-)) could also >>> have Guix manage Syncthing. With the current approach, we would have to >>> copy and paste quite a bit of code, and if the Syncthing service for >>> Guix System changes, then the one for Guix Home might have to change as >>> well. >> >> Silly question, but why do we need to have two different configuration >> record types in the first place? > > The problem is that the configuration records for system and home > service don’t necessarily have the same fields. The Syncthing service > for Guix System has a ‘user’ and a ‘group’ field, which is not really of > any use in Guix Home, as the only user would be the user invoking ‘guix > home’.
Apologies if I'm speaking for something I know very little about...Wouldn't it be nice if guix home services would accept a user and a group field? For the syncthing service, perhaps the user wants to limit Syncthing's runtime permissions. So instead of running as the user, the user would run synthing as a different user with less permissions? Please note it may be much better to just container-ize the synthing service. Does guix home have that ability? https://guix.gnu.org/en/blog/2017/running-system-services-in-containers/ > >> Sharing configuration between Home and System sounds important to me: it >> means users can easily move services from one to the other, which is >> pretty big deal. It also means we’d have much less code to maintain. > > Agreed, that’s what I would like to see as well. > >> Would that be feasible? (Apologies if this has already been >> discussed!) > > Since it might not make sense to have the same records fields for a > system service and home service, I proposed (in the mail you replied to) > a ‘define-configuration’ form that would generate a configuration record > for a system service and optionally one for a home service, without > having to maintain two records separately. > > (define-configuration syncthing-configuration > (package > (package syncthing) > "Syncthing package to use.") > (arguments > (list-of-strings ’()) > "Command line arguments to pass to the Syncthing package.") > (log-flags > (integer 0) > "Sum of logging flags.") > (user > (maybe-string 'disabled) > "The user as which the Syncthing service is to be run." > (home-service? #f)) ; not for Guix Home > (group > (string "users") > "The group as which the Syncthing service is to be run." > (home-service? #f)) ; likewise ^^ > (home > (maybe-string 'disabled) > "Common configuration and data directory.") > (home-service? #t)) > > It would generate <syncthing-configuration> and > <home-syncthing-configuration>. The only difference being that > <home-syncthing-configuration> doesn’t have a ‘user’ and a ‘group’ > field. > > It’s probably going to be quite complicated, so it would be good to get > some feedback/thoughts on it. Cc Maxim since he has done some work with > (gnu services configuration). > > Also, it’s probably time to properly document (gnu services > configuration) in the manual. ;-) > >> Also, I proposed earlier a possible way to generate a Home service type >> from the corresponding System service type—or, IOW, to generate a Home >> service type graph from the System graph. Does that sound feasible? > > I am not sure exactly what you mean here, could you elaborate? > -- Joshua Branson (jab in #guix) Sent from Emacs and Gnus https://gnucode.me https://video.hardlimit.com/accounts/joshua_branson/video-channels https://propernaming.org "You can have whatever you want, as long as you help enough other people get what they want." - Zig Ziglar