Hi Guix, For the past few… months (!?) I've been working on migrating from git+stow to a proper Guix Home setup.
It's been painful, but I've learned a lot along the way. There's still a lot to be done —and a lot to learn!—, but I wanted to know what were the requirements for a home service to be accepted in master? I've written home services for the following programs: afew, bat, beets, dunst, gnupg, imv, khal, khard, mpd, msmtp, nowty, profanity, swappy, tig, tor, transmission, user-dirs, vdirsyncer, wofi, zathura. Others are on the way. For the time being, they are available on my channel: <https://git.easter-eggs.org/bioneland/guix/-/tree/main/bioneland/home/services>. Most of them are about writing configuration files. But I've limited myself to the configuration options I was actually using. So they are far from being complete. But it's kind of cool to be able to write: ```scheme (define move-left "t") (define move-up "s") (define move-down "r") (define move-right "n") ;; […] (service home-imv-service-type (home-imv-configuration (prev move-left) (next move-right) (zoom-in move-up) (zoom-out move-down))) (service home-khal-service-type (home-khal-configuration (up move-up) (down move-down) (left move-left) (right move-right))) ``` My main concern now is to figure out how to implement complexe configurations to be able to write things like: ```scheme (service home-khal-service-type (home-khal-configuration (calendars (list (khal-calendar (name "my_calendar") (path "~/.calendars/xxxx/") (color "light gray")))))) (service home-khard-service-type (home-khard-configuration (addressbooks (list (khard-addresbook (name "my_contact") (path "~/.contacts/xxxx/")))))) (service home-msmtp-service-type (home-msmtp-configuration (default-account "t@bl") (accounts (list (msmtp-account (name "t@bl") (host "mail.domain.tld") (port 587) (user "[email protected]") (from "[email protected]")))))) ``` I'm not sure how to make `define-configuration` accept complexe structures. When I look at `gnu/home/services/ssh.scm`, it seems to be doing the other way around and define the configuration with `define-record-type` and "put" the "configuration" inside. Any guidance would be highly appreciated! Best regards, -- Tanguy
