mirror of
https://git.savannah.gnu.org/git/guix.git
synced 2025-02-03 08:36:32 +01:00
services: wesnothd: Grant write access to /var/run/wesnothd.
* gnu/services/games.scm (wesnothd-shepherd-service): Augment 'modules' field. Pass #:mappings argument to 'make-forkexec-constructor/container'. (wesnothd-activation): New variable. (wesnothd-service-type): Extend ACTIVATION-SERVICE-TYPE.
This commit is contained in:
parent
f5ef68ba98
commit
19df5f2423
1 changed files with 22 additions and 2 deletions
|
@ -1,5 +1,6 @@
|
||||||
;;; GNU Guix --- Functional package management for GNU
|
;;; GNU Guix --- Functional package management for GNU
|
||||||
;;; Copyright © 2018 Arun Isaac <arunisaac@systemreboot.net>
|
;;; Copyright © 2018 Arun Isaac <arunisaac@systemreboot.net>
|
||||||
|
;;; Copyright © 2022 Ludovic Courtès <ludo@gnu.org>
|
||||||
;;;
|
;;;
|
||||||
;;; This file is part of GNU Guix.
|
;;; This file is part of GNU Guix.
|
||||||
;;;
|
;;;
|
||||||
|
@ -57,18 +58,35 @@ (define wesnothd-shepherd-service
|
||||||
(match-lambda
|
(match-lambda
|
||||||
(($ <wesnothd-configuration> package port)
|
(($ <wesnothd-configuration> package port)
|
||||||
(with-imported-modules (source-module-closure
|
(with-imported-modules (source-module-closure
|
||||||
'((gnu build shepherd)))
|
'((gnu build shepherd)
|
||||||
|
(gnu system file-systems)))
|
||||||
(shepherd-service
|
(shepherd-service
|
||||||
(documentation "The Battle for Wesnoth server")
|
(documentation "The Battle for Wesnoth server")
|
||||||
(provision '(wesnoth-daemon))
|
(provision '(wesnoth-daemon))
|
||||||
(requirement '(networking))
|
(requirement '(networking))
|
||||||
(modules '((gnu build shepherd)))
|
(modules '((gnu build shepherd)
|
||||||
|
(gnu system file-systems)))
|
||||||
(start #~(make-forkexec-constructor/container
|
(start #~(make-forkexec-constructor/container
|
||||||
(list #$(file-append package "/bin/wesnothd")
|
(list #$(file-append package "/bin/wesnothd")
|
||||||
"-p" #$(number->string port))
|
"-p" #$(number->string port))
|
||||||
|
#:mappings (list (file-system-mapping
|
||||||
|
(source "/var/run/wesnothd")
|
||||||
|
(target source)
|
||||||
|
(writable? #t)))
|
||||||
#:user "wesnothd" #:group "wesnothd"))
|
#:user "wesnothd" #:group "wesnothd"))
|
||||||
(stop #~(make-kill-destructor)))))))
|
(stop #~(make-kill-destructor)))))))
|
||||||
|
|
||||||
|
(define wesnothd-activation
|
||||||
|
(with-imported-modules '((guix build utils))
|
||||||
|
#~(begin
|
||||||
|
(use-modules (guix build utils))
|
||||||
|
|
||||||
|
(let* ((user (getpw "wesnothd"))
|
||||||
|
(directory "/var/run/wesnothd"))
|
||||||
|
;; wesnothd creates a Unix-domain socket in DIRECTORY.
|
||||||
|
(mkdir-p directory)
|
||||||
|
(chown directory (passwd:uid user) (passwd:gid user))))))
|
||||||
|
|
||||||
(define wesnothd-service-type
|
(define wesnothd-service-type
|
||||||
(service-type
|
(service-type
|
||||||
(name 'wesnothd)
|
(name 'wesnothd)
|
||||||
|
@ -77,6 +95,8 @@ (define wesnothd-service-type
|
||||||
(extensions
|
(extensions
|
||||||
(list (service-extension account-service-type
|
(list (service-extension account-service-type
|
||||||
(const %wesnothd-accounts))
|
(const %wesnothd-accounts))
|
||||||
|
(service-extension activation-service-type
|
||||||
|
(const wesnothd-activation))
|
||||||
(service-extension shepherd-root-service-type
|
(service-extension shepherd-root-service-type
|
||||||
(compose list wesnothd-shepherd-service))))
|
(compose list wesnothd-shepherd-service))))
|
||||||
(default-value (wesnothd-configuration))))
|
(default-value (wesnothd-configuration))))
|
||||||
|
|
Loading…
Reference in a new issue