I'm on mobile, so I'll give you a better answer soon, but I built a system around this exact idea:
<https://guix-hosting.com/docs/tuto/getting-started.html> And I have ported it to home configurations <https://gitlab.com/edouardklein/guix/-/blob/beaverlabs/beaver/home.scm?ref_type=heads> You can poke around these links to get an idea, but i will write something better soon, sorry about the quick answer now. Le 9 novembre 2024 18:35:10 GMT+01:00, Ian Eure <i...@retrospec.tv> a écrit : >Hi folks, > >I’m trying to make my home configuration more modular, so I can better support >system variances. For example, I have a laptop I use interactively, and a >headless machine that runs Cuirass. It’s advantageous to share certain >aspects of the home configuration between the two machines (shell >prompt/environment, GPG agent, etc), but not others (anything X11/graphical >stuff shouldn’t be on the build machine). One approach to this is to define >packages and services and reference them in the home configuration. What I >dislike about this is that many things require both packages and services, and >I’d prefer to have a way to completely encapsulate that -- for example, the >mpd-mpc package to control my music server, plus a >home-environment-variables-service-type to set MPD_HOST. > >I attempted to solve this by writing a procedure: > > (define (+mpd-client home-config) > (home-environment > (inherit home-config) > (packages (cons mpd-mpc (home-environment-packages home-config))) > (services > (cons > (simple-service > 'mpd-environment-service > home-environment-variables-service-type > '(("MPD_HOST" . "audio.box"))) > (home-environment-services home-config))))) > >Which I can then wrap around a home-environment to add the mpd-mpc package and >environment variable it needs to work: > > (+mpc-client (home-environment ...)) > >Surprisingly, this doesn’t work -- it complains that there’s more than one >"home" service type. I’m not sure why that is, and I haven’t been able to see >anything obviously wrong in the REPL -- though I haven’t been able to get my >actual home configuration up in the Emacs-Guix REPL, due to #67290. > >Does anyone have a suggestion for a workaround for this issue, explanation of >how two home services are ending up in the config, or a better approach for >building modular home configs? > >Thanks, > > — Ian >