unofficial mirror of help-guix@gnu.org 
 help / color / mirror / Atom feed
* Modular home configuration
@ 2024-11-09 17:35 Ian Eure
  2024-11-09 19:09 ` Tomas Volf
                   ` (2 more replies)
  0 siblings, 3 replies; 4+ messages in thread
From: Ian Eure @ 2024-11-09 17:35 UTC (permalink / raw)
  To: help-guix

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


^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2024-11-09 19:31 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2024-11-09 17:35 Modular home configuration Ian Eure
2024-11-09 19:09 ` Tomas Volf
2024-11-09 19:30 ` Edouard Klein
2024-11-09 19:30 ` Edouard Klein

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).