(define (normalize-filesystem-pair pair) (match pair ((input . output) (list output (if (string? input) (config-file input) input))) (output (list output (config-file (basename output)))))) (define %neovim-config (let ((code (call-with-input-file (path-join %conf-dir "nvim.fnl") (lambda (file) (get-string-all file))))) (computed-file "nvim.lua" #~(begin (use-modules (ice-9 popen) (ice-9 textual-ports)) (let ((pipe (open-input-output-pipe (string-append #$(file-append fennel "/bin/fennel") " --compile -")))) (display #$code pipe) (let ((output (get-string-all pipe))) (close-pipe pipe) output)))))) (define %config-files (map normalize-filesystem-pair `("aerc/aerc.conf" ("aerc-binds.conf" . "aerc/binds.conf") "fish/conf.d/hashrepo.fish" "fish/conf.d/vi-bindings.fish" "fish/conf.d/zoxide.fish" "fish/conf.d/colourscheme.fish" "fish/conf.d/prompt.fish" "foot/foot.ini" "guix/channels.scm" (,%neovim-config . "nvim/init.lua") "senpai/senpai.scfg" ("sway.conf" . "sway/config") ("waybar.json" . "waybar/config") ("waybar.css" . "waybar/style.css"))))