[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Contributing Guix Home services
From: |
Tanguy LE CARROUR |
Subject: |
Contributing Guix Home services |
Date: |
Sat, 25 Mar 2023 17:53:23 +0100 |
User-agent: |
alot/0.10 |
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 "tanguy@bioneland.net")
(from "tanguy@bioneland.net"))))))
```
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
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- Contributing Guix Home services,
Tanguy LE CARROUR <=