all messages for Guix-related lists mirrored at yhetil.org
 help / color / mirror / code / 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

Code repositories for project(s) associated with this external index

	https://git.savannah.gnu.org/cgit/guix.git

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.