On 2024-05-16 17:57:55 +0200, Giovanni Biscuolo wrote: > Hello, > > sorry for the very guile-absolute-beginner question, but I'd like to use > a declared variable in a plain-file object, so I can write something > like in this pseudo-code snippet: > > --8<---------------cut here---------------start------------->8--- > > (define variable1 "var1-value") > (define variable2 "var2-value") > > [...] > > (define %my-file-object > ,(plain-file "something.conf" " > # This is an example configuration file > > attribute1 =" variable1 " > > attribute2 =" variable2 " > > ")) > > --8<---------------cut here---------------end--------------->8--- > > and obtain a "something.conf" file like this: > > --8<---------------cut here---------------start------------->8--- > # This is an example configuration file > > attribute1 = var1-value > > attribute2 = var2-value > > --8<---------------cut here---------------end--------------->8--- > > how can I do, please?
I believe you can use mixed-text-file for this purpose: /tmp/xx.scm: (use-modules (guix gexp)) (define var1 "var1-value") (define var2 "var2-value") (define %my-file-object (mixed-text-file "something.conf" "\ # This is an example configuration file attribute1 = " var1 " attribute2 = " var2 " ")) %my-file-object When I build it and inspect the result: $ cat $(guix build -e '(load "/tmp/xx.scm")') # This is an example configuration file attribute1 = var1-value attribute2 = var2-value The mixed-text-file accepts string *and* file-like objects as arguments. That makes it very suitable for constructing configuration files, since you can expand paths, for example like this: /tmp/yy.scm: (use-modules (gnu packages base) (guix gexp)) (define %my-file-object (mixed-text-file "something.conf" "\ SED_PATH = " sed "/bin/sed ")) %my-file-object And here is the result: $ cat $(guix build -e '(load "/tmp/yy.scm")') SED_PATH = /gnu/store/6kkygybkxkzqy3lf6k5kzimk5mjasrvw-sed-4.8/bin/sed Hope this is useful and have a nice day, Tomas Volf -- There are only two hard things in Computer Science: cache invalidation, naming things and off-by-one errors.
signature.asc
Description: PGP signature