(begin (define-record-type* %home-sway-configuration make-home-sway-configuration home-sway-configuration? this-home-sway-configuration (%location -location (default (and=> (current-source-location) source-properties->location)) (innate)) (package home-sway-configuration-package (thunked) (default sway)) (config home-sway-configuration-config (thunked) (default `((include ,(file-append (home-sway-configuration-package this-home-sway-configuration) "/etc/sway/config")))))) (define home-sway-configuration-fields (list (configuration-field (name 'package) (type 'package) (getter home-sway-configuration-package) (predicate package?) (serializer serialize-package) (default-value-thunk (lambda () sway)) (documentation "Sway package to use.")) (configuration-field (name 'config) (type 'sway-config) (getter home-sway-configuration-config) (predicate sway-config?) (serializer serialize-sway-config) (default-value-thunk (lambda () `((include ,(file-append (home-sway-configuration-package this-home-sway-configuration) "/etc/sway/config"))))) (documentation "Documenation here")))) (define-syntax-rule (home-sway-configuration arg ...) (let ((conf (%home-sway-configuration arg ...))) (validate-configuration conf home-sway-configuration-fields) conf)))