Taiju HIGASHI writes: > Hi, > > Ludovic Courtès writes: > >> Hi, >> >> Taiju HIGASHI skribis: >> >>> Andrew Tropin writes: >> >> [...] >> >>>>> Andrew Tropin skribis: >>>>> >>>>>> If serialization would support G-exps, we could write >>>>>> >>>>>> (list #~"RAW_XML_HERE") >>>>> >>>>> There’s a one-to-one lossless mapping between XML and SXML, so I don’t >>>>> think it makes sense to support XML-in-strings when we have SXML. >>>>> >>>>> The only thing it would give us, as I see it, is the ability to generate >>>>> syntactically-invalid XML. Maybe we can live without it? :-) >>>> >>>> Of course we can :), but we won't be able: >>>> >>>> 1. To take already existing xml config and use it without rewriting. >>> >>> I find it surprisingly important to be able to simply copy and paste >>> settings without having to rewrite existing settings or those listed on >>> a web page somewhere. I know we can easily convert from XML to SXML, >>> but those unfamiliar with SXML may find it a bothering task. >> >> OK, that makes sense. >> >> But then, let’s not allow users to intersperse XML-in-strings in the >> middle of XML. It should be either a user-provided file/string or the >> generated config, but not a mixture of both; that’d be a recipe for >> confusion. >> >> How about this: the service takes either a >> record or a file-like object? >> >> (We can even have a “gexp compiler” for to >> make that transparent.) > > Thank you for your consideration. > > That idea sounds good. I don't know if I can successfully implement > this, but I will consider it and give it a try. > > Thanks, I'm trying to implement the following, is it consistent with the intent of what you suggested? --8<---------------cut here---------------start------------->8--- (define (add-fontconfig-config-file user-config) `(("fontconfig/fonts.conf" ,(if (home-fontconfig-configuration? user-config) (mixed-text-file "fonts.conf" " " (serialize-configuration user-config home-fontconfig-configuration-fields) "\n") user-config)))) --8<---------------cut here---------------end--------------->8--- It is assumed that configurations can be specified in one of the following ways. * fontconfig-configuration: --8<---------------cut here---------------start------------->8--- (home-environment (packages (list font-google-noto)) (services (append (list (service home-bash-service-type)) (modify-services %home-base-services (home-fontconfig-service-type config => (home-fontconfig-configuration (font-directories (cons* "~/fonts" %home-fontconfig-base-font-directories)) (default-font-serif-family "Noto Serif CJK JP") (default-font-sans-serif-family "Noto Sans Serif CJK JP") (default-font-monospace-family "PlemolJP Console") (extra-config '(foo "bar")))))))) --8<---------------cut here---------------end--------------->8--- Note: %home-fontconfig-base-font-directories is the new variable I plan to export as the default value, based on Andrew's and Liliana's point. * file-like objects: --8<---------------cut here---------------start------------->8--- (home-environment (packages (list font-google-noto)) (services (append (list (service home-bash-service-type)) (modify-services %home-base-services (home-fontconfig-service-type config => (local-file "/path/to/your/fonts.conf")))))) --8<---------------cut here---------------end--------------->8--- Thanks, -- Taiju