diff options
Diffstat (limited to 'guix/gexp.scm')
-rw-r--r-- | guix/gexp.scm | 30 |
1 files changed, 29 insertions, 1 deletions
diff --git a/guix/gexp.scm b/guix/gexp.scm index 03b4cbf19e..10056e5a1f 100644 --- a/guix/gexp.scm +++ b/guix/gexp.scm @@ -31,12 +31,18 @@ gexp-input gexp-input? + local-file local-file? local-file-file local-file-name local-file-recursive? + plain-file + plain-file? + plain-file-name + plain-file-content + gexp->derivation gexp->file gexp->script @@ -140,7 +146,7 @@ cross-compiling.)" ;;; -;;; Local files. +;;; File declarations. ;;; (define-record-type <local-file> @@ -169,6 +175,28 @@ This is the declarative counterpart of the 'interned-file' monadic procedure." (($ <local-file> file name recursive?) (interned-file file name #:recursive? recursive?)))) +(define-record-type <plain-file> + (%plain-file name content references) + plain-file? + (name plain-file-name) ;string + (content plain-file-content) ;string + (references plain-file-references)) ;list (currently unused) + +(define (plain-file name content) + "Return an object representing a text file called NAME with the given +CONTENT (a string) to be added to the store. + +This is the declarative counterpart of 'text-file'." + ;; XXX: For now just ignore 'references' because it's not clear how to use + ;; them in a declarative context. + (%plain-file name content '())) + +(define-gexp-compiler (plain-file-compiler (file plain-file?) system target) + ;; "Compile" FILE by adding it to the store. + (match file + (($ <plain-file> name content references) + (text-file name content references)))) + ;;; ;;; Inputs & outputs. |