#+TITLE: Babel Library #+PROPERTY: header-args:scheme :session *guile* :prologue "(use-modules (ice-9 pretty-print))" This library contains code blocks to be used by other files in this repository. * Converting Lists Converting org lists into guix ~use-~ calls. #+NAME: list-to-use #+begin_src scheme :var use-call="use-modules" :var entries='() :var all-parens=0 :results output (pretty-print `(,(string->symbol use-call) ,@(map (lambda (x) (let ((splits (string-split x #\ ))) (if (and (= (length splits) 1) (= 0 all-parens)) (string->symbol (car splits)) (map (lambda (y) (string->symbol y)) splits)))) entries))) #+end_src Converting Org lists into Scheme symbol lists. #+NAME: list-sample - Entry 1 - Entry 2 #+NAME: org-to-scheme-sym-list #+begin_src scheme :var input=list-sample :results output (pretty-print `(list ,@(map string->symbol input))) #+end_src #+RESULTS: org-to-scheme-sym-list : (list #{Entry 1}# #{Entry 2}#) * Converting Tables #+NAME: service-converter #+begin_src scheme :var input='() :colnames yes :results output (pretty-print `(list ,@(map (lambda (row) (let ((service-name (car row)) (configuration (cadr row))) `(service ,(string->symbol (string-append service-name "-service-type")) (,(string->symbol (string-append service-name "-configuration")) ,@(call-with-input-string configuration read))))) input))) #+end_src