diff options
| author | Ludovic Courtès <ludo@gnu.org> | 2022-04-17 22:18:50 +0200 |
|---|---|---|
| committer | Ludovic Courtès <ludo@gnu.org> | 2022-05-01 21:30:36 +0200 |
| commit | dac4efc466fd459912d6dd85a0be7c96cd3e35e1 (patch) | |
| tree | 7f5267706f605d04dcc3a0870a6fcac5c02cddde | |
| parent | 53dbc6fd9a2f476f38e17496457a6b3b06e71687 (diff) | |
services: quassel: Use 'least-authority-wrapper'.
* gnu/services/messaging.scm (quassel-shepherd-service): Use
'least-authority-wrapper' instead of
'make-forkexec-constructor/container'.
| -rw-r--r-- | gnu/services/messaging.scm | 42 |
1 files changed, 22 insertions, 20 deletions
diff --git a/gnu/services/messaging.scm b/gnu/services/messaging.scm index 7fdd8cf285d..05bf6e784b5 100644 --- a/gnu/services/messaging.scm +++ b/gnu/services/messaging.scm | |||
| @@ -939,29 +939,31 @@ a gateway between IRC and chat networks."))) | |||
| 939 | (define quassel-shepherd-service | 939 | (define quassel-shepherd-service |
| 940 | (match-lambda | 940 | (match-lambda |
| 941 | (($ <quassel-configuration> quassel interface port loglevel) | 941 | (($ <quassel-configuration> quassel interface port loglevel) |
| 942 | (with-imported-modules (source-module-closure | 942 | (let ((quassel (least-authority-wrapper |
| 943 | '((gnu build shepherd) | 943 | (file-append quassel "/bin/quasselcore") |
| 944 | (gnu system file-systems))) | 944 | #:name "quasselcore" |
| 945 | #:mappings (list (file-system-mapping | ||
| 946 | (source "/var/lib/quassel") | ||
| 947 | (target source) | ||
| 948 | (writable? #t)) | ||
| 949 | (file-system-mapping | ||
| 950 | (source "/var/log/quassel") | ||
| 951 | (target source) | ||
| 952 | (writable? #t))) | ||
| 953 | ;; XXX: The daemon needs to live in the main user | ||
| 954 | ;; namespace, as root, so it can access /var/lib/quassel | ||
| 955 | ;; owned by "quasselcore". | ||
| 956 | #:namespaces (fold delq %namespaces '(net user))))) | ||
| 945 | (list (shepherd-service | 957 | (list (shepherd-service |
| 946 | (provision '(quassel)) | 958 | (provision '(quassel)) |
| 947 | (requirement '(user-processes networking)) | 959 | (requirement '(user-processes networking)) |
| 948 | (modules '((gnu build shepherd) | 960 | (start #~(make-forkexec-constructor |
| 949 | (gnu system file-systems))) | 961 | (list #$quassel |
| 950 | (start #~(make-forkexec-constructor/container | 962 | "--configdir=/var/lib/quassel" |
| 951 | (list #$(file-append quassel "/bin/quasselcore") | 963 | "--logfile=/var/log/quassel/core.log" |
| 952 | "--configdir=/var/lib/quassel" | 964 | (string-append "--loglevel=" #$loglevel) |
| 953 | "--logfile=/var/log/quassel/core.log" | 965 | (string-append "--port=" (number->string #$port)) |
| 954 | (string-append "--loglevel=" #$loglevel) | 966 | (string-append "--listen=" #$interface)))) |
| 955 | (string-append "--port=" (number->string #$port)) | ||
| 956 | (string-append "--listen=" #$interface)) | ||
| 957 | #:mappings (list (file-system-mapping | ||
| 958 | (source "/var/lib/quassel") | ||
| 959 | (target source) | ||
| 960 | (writable? #t)) | ||
| 961 | (file-system-mapping | ||
| 962 | (source "/var/log/quassel") | ||
| 963 | (target source) | ||
| 964 | (writable? #t))))) | ||
| 965 | (stop #~(make-kill-destructor)))))))) | 967 | (stop #~(make-kill-destructor)))))))) |
| 966 | 968 | ||
| 967 | (define %quassel-account | 969 | (define %quassel-account |
