guix-patches
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[bug#68007] [PATCH] services: Add doas service.


From: lgcoelho
Subject: [bug#68007] [PATCH] services: Add doas service.
Date: Sun, 24 Dec 2023 17:01:33 +0000

This service enables declarative description of doas.conf. A simple example would be

--8<---------------cut here-------------------------------------------------end--------------->8---
        (simple-service 'miscellaneous-permissions doas-service-type
                        (list (permit (identity ":wheel")
                                            (setenv `(("GUILE_LOAD_PATH" . #t))))
                               (permit (identity ":wheel")
                                            (nopass? #t)
                                            (command "guix")
                                            (args `("pull")))))

        (simple-service 'text-editors-permissions doas-service-type
                                 (map (lambda (cmd)
                                             (permit (identity ":wheel")
                                                         (keepenv? #t)
                                                         (command cmd)))
                                            `("kak" "emacsclient")))

        (simple-service 'power-management-permissions doas-service-type
                                 (map (lambda (cmd)
                                             (permit (identity ":wheel")
                                                          (nopass? #t)
                                                          (command cmd)
                                                          (args '())))
                                          `("zzz" "halt" "reboot")))

        (simple-service 'shepherd-status-permissions doas-service-type
                        (map (lambda (action)
                                   (permit (identity ":wheel")
                                                (nopass? #t)
                                                (command "herd")
                                                (args (list action))))
                             `("status" "detailed-status")))

        (simple-service 'service-management-permissions doas-service-type
                        (flat-map (lambda (service action)
                                          (permit (identity ":wheel")
                                                       (nopass? #t)
                                                       (command "herd")
                                                       (args (map symbol->string
                                                                         (list action service)))))
                                  '(tor networking wpa-supplicant)
                                  '(doc stop start enable status restart disable)))

--8<---------------cut here-------------------------------------------------end--------------->8---

This generates the following configuration file:

--8<---------------cut here-------------------------------------------------end--------------->8---

permit setenv { GUILE_LOAD_PATH }
permit nopass :wheel cmd guix args pull
permit keepenv :wheel cmd kak
permit keepenv :wheel cmd emacsclient
permit nopass :wheel cmd zzz args
permit nopass :wheel cmd halt args
permit nopass :wheel cmd reboot args
permit nopass :wheel cmd herd args status
permit nopass :wheel cmd herd args detailed-status
permit nopass :wheel cmd herd args doc tor
permit nopass :wheel cmd herd args stop tor
permit nopass :wheel cmd herd args start tor
permit nopass :wheel cmd herd args enable tor
permit nopass :wheel cmd herd args status tor
permit nopass :wheel cmd herd args restart tor
permit nopass :wheel cmd herd args disable tor
permit nopass :wheel cmd herd args doc networking
permit nopass :wheel cmd herd args stop networking
permit nopass :wheel cmd herd args start networking
permit nopass :wheel cmd herd args enable networking
permit nopass :wheel cmd herd args status networking
permit nopass :wheel cmd herd args restart networking
permit nopass :wheel cmd herd args disable networking
permit nopass :wheel cmd herd args doc wpa-supplicant
permit nopass :wheel cmd herd args stop wpa-supplicant
permit nopass :wheel cmd herd args start wpa-supplicant
permit nopass :wheel cmd herd args enable wpa-supplicant
permit nopass :wheel cmd herd args status wpa-supplicant
permit nopass :wheel cmd herd args restart wpa-supplicant
permit nopass :wheel cmd herd args disable wpa-supplicant

--8<---------------cut here-------------------------------------------------end--------------->8---







Attachment: 0001-services-Add-doas-service.patch
Description: Text Data


reply via email to

[Prev in Thread] Current Thread [Next in Thread]