aboutsummaryrefslogtreecommitdiff
path: root/tw/gexp.scm
blob: 2f1705b7129bf25041d8d32d3867aad9f26394fe (about) (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
(define-module (tw gexp)
  #:use-module (guix gexp)
  #:use-module (guix modules))

;; See also: `file-join' in (gnu home services ssh).
(define-public (combined-text-file name . files)
  "A file which is the concatenation of the contents of other files."
  ;; We need to use #$output for `computed-file' to work.
  ;; Of course this isn't documented anywhere!
  (computed-file name
    (with-imported-modules (source-module-closure
                            '((guix build utils)))  ; for `dump-port'
      #~(begin
          (use-modules (guix build utils))
          (call-with-output-file #$output
            (lambda (oport)
              (for-each (lambda (in-file)
                          (call-with-input-file in-file
                            (lambda (iport)
                              (dump-port iport oport))))
                        '#$files)))))))