(begin
(define-record-type*
<home-sway-configuration>
%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)))