From e4f299913041eb462be424c57268d097e8d48a78 Mon Sep 17 00:00:00 2001 From: Nils Gillmann Date: Thu, 28 Jun 2018 10:39:18 +0000 Subject: add the patches from exported patch attic Signed-off-by: Nils Gillmann --- contrib/services/shepherd/ng0_wip/.gitignore | 1 + .../00001-gnu-services-Add-gnunet-service.patch | 186 +++++++++++++++++ .../0001-gnu-services-Add-gnunet-service.patch | 225 +++++++++++++++++++++ .../001-gnu-services-Add-gnunet-service.patch | 204 +++++++++++++++++++ 4 files changed, 616 insertions(+) create mode 100644 contrib/services/shepherd/ng0_wip/.gitignore create mode 100644 contrib/services/shepherd/ng0_wip/00001-gnu-services-Add-gnunet-service.patch create mode 100644 contrib/services/shepherd/ng0_wip/0001-gnu-services-Add-gnunet-service.patch create mode 100644 contrib/services/shepherd/ng0_wip/001-gnu-services-Add-gnunet-service.patch diff --git a/contrib/services/shepherd/ng0_wip/.gitignore b/contrib/services/shepherd/ng0_wip/.gitignore new file mode 100644 index 000000000..9b974979a --- /dev/null +++ b/contrib/services/shepherd/ng0_wip/.gitignore @@ -0,0 +1 @@ +!*.patch \ No newline at end of file diff --git a/contrib/services/shepherd/ng0_wip/00001-gnu-services-Add-gnunet-service.patch b/contrib/services/shepherd/ng0_wip/00001-gnu-services-Add-gnunet-service.patch new file mode 100644 index 000000000..609a0a5ef --- /dev/null +++ b/contrib/services/shepherd/ng0_wip/00001-gnu-services-Add-gnunet-service.patch @@ -0,0 +1,186 @@ +From 60a4c0f7c60ef705db17561fd3e930bbe11730c9 Mon Sep 17 00:00:00 2001 +From: ng0 +Date: Mon, 12 Sep 2016 12:26:52 +0000 +Subject: [PATCH] gnu: services: Add gnunet-service. + +* gnu/services/networking.scm (gnunet): New service. + +Signed-off-by: Nils Gillmann +--- + doc/guix.texi | 36 ++++++++++++++ + gnu/services/networking.scm | 93 ++++++++++++++++++++++++++++++++++++- + 2 files changed, 128 insertions(+), 1 deletion(-) + +diff --git a/doc/guix.texi b/doc/guix.texi +index d925b4eda..eb7b409d7 100644 +--- a/doc/guix.texi ++++ b/doc/guix.texi +@@ -11016,6 +11016,42 @@ Package object of the Open vSwitch. + @end table + @end deftp + ++@cindex GNUnet ++@cindex gnunet ++@subsubheading GNUnet Service ++ ++@deffn {Scheme Variable} gnunet-service-type ++This is the type of the @uref{https://gnunet.org, GNUnet} ++service, whose value should be an @code{gnunet-configuration} object ++as in this example: ++ ++@example ++(service gnunet-service-type ++ (gnunet-configuration ++ (config-file (local-file "./gnunet.conf")))) ++@end example ++@end deffn ++ ++@deftp {Data Type} gnunet-configuration ++Data type representing the configuration of GNUnet. ++ ++@table @asis ++@item @code{package} (default: @var{gnunet}) ++Package object of the GNUnet service. ++ ++@item @code{config-file} (default: @var{%default-gnunet-file}) ++File-like object of the GNUnet configuration file to use. For NAT is ++assumes by default that you are behind a NAT (@var{BEHIND_NAT = YES}) ++and enables UPNP (@var{ENABLE_UPNP = YES}). ++The hostlist is configured with the options @var{-b} (bootstrap using ++configured hostlist servers) and @var{-e} (enable learning advertised hostlists). ++Read the configuration files in @var{"~/.guix-profile/share/gnunet/config.d/"} ++for more information. These files also set the defaults when you don't set ++any explicit values to override them. ++ ++@end table ++@end deftp ++ + @node X Window + @subsubsection X Window + +diff --git a/gnu/services/networking.scm b/gnu/services/networking.scm +index b0c23aafc..0ff20e707 100644 +--- a/gnu/services/networking.scm ++++ b/gnu/services/networking.scm +@@ -5,6 +5,7 @@ + ;;; Copyright © 2016 John Darrington + ;;; Copyright © 2017 Clément Lassieur + ;;; Copyright © 2017 Thomas Danckaert ++;;; Copyright © 2017 ng0 + ;;; + ;;; This file is part of GNU Guix. + ;;; +@@ -29,6 +30,7 @@ + #:use-module (gnu system pam) + #:use-module (gnu packages admin) + #:use-module (gnu packages connman) ++ #:use-module (gnu packages gnunet) + #:use-module (gnu packages linux) + #:use-module (gnu packages tor) + #:use-module (gnu packages messaging) +@@ -92,7 +94,12 @@ + wpa-supplicant-service-type + + openvswitch-service-type +- openvswitch-configuration)) ++ openvswitch-configuration ++ ++ gnunet-configuration ++ gnunet-configuration? ++ gnunet-service ++ gnunet-service-type)) + + ;;; Commentary: + ;;; +@@ -1125,4 +1132,88 @@ a network connection manager.")))) + switch designed to enable massive network automation through programmatic + extension."))) + ++;;; ++;;; GNUnet ++;;; ++ ++(define-record-type* ++ gnunet-configuration make-gnunet-configuration ++ gnunet-configuration? ++ (package gnunet-configuration-package ++ (default gnunet)) ++ (config-file gnunet-configuration-config-file ++ (default %default-gnunet-config-file))) ++ ++(define %default-gnunet-config-file ++ (plain-file "gnunet.conf" " ++[PATHS] ++SERVICEHOME = /var/lib/gnunet ++GNUNET_CONFIG_HOME = /var/lib/gnunet ++ ++[arm] ++SYSTEM_ONLY = YES ++USER_ONLY = NO ++ ++[nat] ++BEHIND_NAT = YES ++ENABLE_UPNP = YES ++ ++[hostlist] ++OPTIONS = -b -e ++")) ++ ++(define gnunet-shepherd-service ++ (match-lambda ++ (($ package config-file) ++ (list (shepherd-service ++ (provision '(gnunet)) ++ (requirement '(loopback)) ++ (documentation "Run the GNUnet service.") ++ (start ++ (let ((gnunet ++ (file-append package "/lib/gnunet/libexec/gnunet-service-arm"))) ++ #~(make-forkexec-constructor ++ (list #$gnunet "-c" #$config-file) ++ #:log-file "/var/log/gnunet.log" ++ #:pid-file "/var/run/gnunet.pid"))) ++ (stop ++ #~(make-kill-destructor))))))) ++ ++(define %gnunet-accounts ++ (list (user-group ++ (name "gnunetdns") ++ (system? #t)) ++ (user-group ++ (name "gnunet") ++ (system? #t)) ++ (user-account ++ (name "gnunet") ++ (group "gnunet") ++ (system? #t) ++ (comment "GNUnet system user") ++ (home-directory "/var/lib/gnunet") ++ (shell #~(string-append #$shadow "/sbin/nologin"))))) ++ ++(define gnunet-activation ++ (match-lambda ++ (($ package config-file) ++ (let ((gnunet ++ (file-append package "/lib/gnunet/libexec/gnunet-service-arm"))) ++ #~(begin ++ ;; Create the .config + .cache for gnunet user ++ (mkdir-p "/var/lib/gnunet/.config/gnunet") ++ (mkdir-p "/var/lib/gnunet/.cache/gnunet")))))) ++ ++(define gnunet-service-type ++ (service-type ++ (name 'gnunet) ++ (extensions (list (service-extension account-service-type ++ (const %gnunet-accounts)) ++ (service-extension activation-service-type ++ gnunet-activation) ++ (service-extension profile-service-type ++ (compose list gnunet-configuration-package)) ++ (service-extension shepherd-root-service-type ++ gnunet-shepherd-service))))) ++ + ;;; networking.scm ends here +-- +2.17.0 + diff --git a/contrib/services/shepherd/ng0_wip/0001-gnu-services-Add-gnunet-service.patch b/contrib/services/shepherd/ng0_wip/0001-gnu-services-Add-gnunet-service.patch new file mode 100644 index 000000000..a494434e0 --- /dev/null +++ b/contrib/services/shepherd/ng0_wip/0001-gnu-services-Add-gnunet-service.patch @@ -0,0 +1,225 @@ +From 434b05bc1a11b4865c0bd634281acd91dfce972c Mon Sep 17 00:00:00 2001 +From: ng0 +Date: Mon, 12 Sep 2016 12:26:52 +0000 +Subject: [PATCH] gnu: services: Add gnunet-service. + +Signed-off-by: Nils Gillmann +--- + doc/guix.texi | 36 ++++++++++ + gnu/services/networking.scm | 134 +++++++++++++++++++++++++++++++++++- + 2 files changed, 169 insertions(+), 1 deletion(-) + +diff --git a/doc/guix.texi b/doc/guix.texi +index 00bf24d3f..73589c88b 100644 +--- a/doc/guix.texi ++++ b/doc/guix.texi +@@ -10138,6 +10138,42 @@ Package object of the Open vSwitch. + @end table + @end deftp + ++@cindex GNUnet ++@cindex gnunet ++@subsubheading GNUnet Service ++ ++@deffn {Scheme Variable} gnunet-service-type ++This is the type of the @uref{https://gnunet.org, GNUnet} ++service, whose value should be an @code{gnunet-configuration} object ++as in this example: ++ ++@example ++(service gnunet-service-type ++ (gnunet-configuration ++ (config-file (local-file "./gnunet.conf")))) ++@end example ++@end deffn ++ ++@deftp {Data Type} gnunet-configuration ++Data type representing the configuration of GNUnet. ++ ++@table @asis ++@item @code{package} (default: @var{gnunet}) ++Package object of the GNUnet service. ++ ++@item @code{config-file} (default: @var{%default-gnunet-file}) ++File-like object of the GNUnet configuration file to use. For NAT is ++assumes by default that you are behind a NAT (@var{BEHIND_NAT = YES}) ++and enables UPNP (@var{ENABLE_UPNP = YES}). ++The hostlist is configured with the options @var{-b} (bootstrap using ++configured hostlist servers) and @var{-e} (enable learning advertised hostlists). ++Read the configuration files in @var{"~/.guix-profile/share/gnunet/config.d/"} ++for more information. These files also set the defaults when you don't set ++any explicit values to override them. ++ ++@end table ++@end deftp ++ + @node X Window + @subsubsection X Window + +diff --git a/gnu/services/networking.scm b/gnu/services/networking.scm +index 99a3d493c..fe682b267 100644 +--- a/gnu/services/networking.scm ++++ b/gnu/services/networking.scm +@@ -5,6 +5,7 @@ + ;;; Copyright © 2016 John Darrington + ;;; Copyright © 2017 Clément Lassieur + ;;; Copyright © 2017 Thomas Danckaert ++;;; Copyright © 2017 ng0 + ;;; + ;;; This file is part of GNU Guix. + ;;; +@@ -29,6 +30,7 @@ + #:use-module (gnu system pam) + #:use-module (gnu packages admin) + #:use-module (gnu packages connman) ++ #:use-module (gnu packages gnunet) + #:use-module (gnu packages linux) + #:use-module (gnu packages tor) + #:use-module (gnu packages messaging) +@@ -92,7 +94,12 @@ + wpa-supplicant-service-type + + openvswitch-service-type +- openvswitch-configuration)) ++ openvswitch-configuration ++ ++ gnunet-configuration ++ gnunet-configuration? ++ gnunet-service-type ++ %default-gnunet-config-file)) + + ;;; Commentary: + ;;; +@@ -1069,4 +1076,129 @@ dns=" dns " + (service-extension shepherd-root-service-type + openvswitch-shepherd-service))))) + ++;;; ++;;; GNUnet ++;;; ++ ++;; steps: ++;; 0. The service works!!! ++;; 1. We want a completely adjustable config. ++;; 2. We want to extend this service with functions like ++;; vpn, comparable to tor-service ++;; Because of (1) we can't have a default. We can have ++;; default values which can be adjusted. A config is ++;; generated from these. ++ ++(define-record-type* ++ gnunet-configuration make-gnunet-configuration ++ gnunet-configuration? ++ (gnunet gnunet-configuration-package ++ (default gnunet)) ++ (config-file gnunet-configuration-config-file ++ (default (plain-file "empty" "")))) ++ ++(define %default-gnunet-config-file ++ (plain-file "gnunet.conf" " ++[PATHS] ++SERVICEHOME = /var/lib/gnunet ++GNUNET_CONFIG_HOME = /var/lib/gnunet ++ ++[arm] ++SYSTEM_ONLY = NO ++USER_ONLY = NO ++ ++[nat] ++BEHIND_NAT = YES ++ENABLE_UPNP = YES ++ ++[hostlist] ++OPTIONS = -b -e ++")) ++ ++(define gnunet-shepherd-service ++ (match-lambda ++ (($ package config-file) ++ (list (shepherd-service ++ (provision '(gnunet)) ++ (requirement '(user-processes loopback networking)) ++ (documentation "Run the GNUnet service.") ++ (start ++ (let ((gnunet ++ (file-append package "/lib/gnunet/libexec/gnunet-service-arm"))) ++ #~(make-forkexec-constructor ++ (list #$gnunet "-c" #$config-file "-d") ++ #:pid-file "/var/run/gnunet/arm-service.pid" ++ #:user "gnunet" ++ #:group "gnunet" ++ ;;#:log-file "/var/lib/gnunet/gnunet.log"))) ++ #:log-file "/var/log/gnunet.log"))) ++ (stop #~(make-kill-destructor))))))) ++ ++(define %gnunet-accounts ++ (list (user-group (name "gnunetdns") (system? #t)) ++ (user-group (name "gnunet") (system? #t)) ++ (user-account ++ (name "gnunet") ++ (group "gnunet") ++ (system? #t) ++ (comment "GNUnet system user") ++ (home-directory "/var/empty") ++ (shell (file-append shadow "/sbin/nologin"))))) ++ ++;; ${GNUNET_HOME}/.local/share/gnunet/gnunet.conf -> chmod 600 ++;; mkdir -p ${GNUNET_HOME}/.cache/gnunet ++ ++(define gnunet-activation ++ (match-lambda ++ (($ package config-file) ++ (let ((gnunet ++ (file-append package "/lib/gnunet/libexec/gnunet-service-arm"))) ++ #~(begin ++ (use-modules (guix build utils)) ++ (define %user (getpw "gnunet")) ++ (mkdir-p "/var/lib/gnunet/") ++ (chown "/var/lib/gnunet" (passwd:uid %user) (passwd:gid %user)) ++ ;;(chmod "/var/lib/gnunet/" #o755) ++ (mkdir-p "/var/lib/gnunet/.local/share/gnunet") ++ (mkdir-p "/var/lib/gnunet/.cache/gnunet") ++ (mkdir-p "/var/lib/gnunet/hostlist") ++ (mkdir-p "/var/lib/gnunet/.config/gnunet") ++ (chown "/var/lib/gnunet/.local/share/gnunet" (passwd:uid %user) (passwd:gid %user)) ++ (chown "/var/lib/gnunet/.cache/gnunet" (passwd:uid %user) (passwd:gid %user)) ++ (chown "/var/lib/gnunet/hostlist" (passwd:uid %user) (passwd:gid %user)) ++ ;;(chown "/var/lib/gnunet/gnunet.conf" (passwd:uid %user) (passwd:gid %user)) ++ (chown "/var/lib/gnunet/.config/gnunet" (passwd:uid %user) (passwd:gid %user))))))) ++ ;;(chmod "/var/lib/gnunet/.config/gnunet" #o755) ++ ;;(chmod "/var/lib/gnunet/.cache/gnunet" #o755) ++ ;;(chmod "/var/lib/gnunet/.local/share/gnunet" #o755)))))) ++ ++;; SUID_ROOT_HELPERS="exit nat-server nat-client transport-bluetooth transport-wlan vpn" ++;; set chmod u+s for those above. ++;; chmodown_execbin ${libexec}/gnunet-helper-dns 4750 root:gnunetdns ++;; chmodown_execbin ${libexec}/gnunet-service-dns 2750 gnunet:gnunetdns ++(define gnunet-setuid-programs ++ (match-lambda ++ (($ package) ++ (list (file-append package "/lib/gnunet/libexec/gnunet-helper-exit") ++ (file-append package "/lib/gnunet/libexec/gnunet-helper-nat-server") ++ (file-append package "/lib/gnunet/libexec/gnunet-helper-nat-client") ++ (file-append package "/lib/gnunet/libexec/gnunet-helper-transport-bluetooth") ++ (file-append package "/lib/gnunet/libexec/gnunet-helper-transport-wlan") ++ (file-append package "/lib/gnunet/libexec/gnunet-helper-vpn"))))) ++ ++(define gnunet-service-type ++ (service-type ++ (name 'gnunet) ++ (extensions (list (service-extension account-service-type ++ (const %gnunet-accounts)) ++ (service-extension activation-service-type ++ gnunet-activation) ++ (service-extension profile-service-type ++ (compose list gnunet-configuration-package)) ++ (service-extension setuid-program-service-type ++ gnunet-setuid-programs) ++ (service-extension shepherd-root-service-type ++ gnunet-shepherd-service))))) ++;;; --- here starts the rewrite. ++ + ;;; networking.scm ends here +-- +2.17.0 + diff --git a/contrib/services/shepherd/ng0_wip/001-gnu-services-Add-gnunet-service.patch b/contrib/services/shepherd/ng0_wip/001-gnu-services-Add-gnunet-service.patch new file mode 100644 index 000000000..0017ec8cf --- /dev/null +++ b/contrib/services/shepherd/ng0_wip/001-gnu-services-Add-gnunet-service.patch @@ -0,0 +1,204 @@ +From 91241bacb6533745535ff28d20f087ecd571e7be Mon Sep 17 00:00:00 2001 +From: ng0 +Date: Mon, 12 Sep 2016 12:26:52 +0000 +Subject: [PATCH] gnu: services: Add gnunet-service. + +--- + doc/guix.texi | 36 ++++++++++++++ + gnu/services/networking.scm | 114 +++++++++++++++++++++++++++++++++++++++++++- + 2 files changed, 149 insertions(+), 1 deletion(-) + +diff --git a/doc/guix.texi b/doc/guix.texi +index 99bde4aca..6c683393e 100644 +--- a/doc/guix.texi ++++ b/doc/guix.texi +@@ -8903,6 +8903,42 @@ Boolean values @var{ipv4?} and @var{ipv6?} determine whether to use IPv4/IPv6 + sockets. + @end deffn + ++@cindex GNUnet ++@cindex gnunet ++@subsubheading GNUnet Service ++ ++@deffn {Scheme Variable} gnunet-service-type ++This is the type of the @uref{https://gnunet.org, GNUnet} ++service, whose value should be an @code{gnunet-configuration} object ++as in this example: ++ ++@example ++(service gnunet-service-type ++ (gnunet-configuration ++ (config-file (local-file "./gnunet.conf")))) ++@end example ++@end deffn ++ ++@deftp {Data Type} gnunet-configuration ++Data type representing the configuration of GNUnet. ++ ++@table @asis ++@item @code{package} (default: @var{gnunet}) ++Package object of the GNUnet service. ++ ++@item @code{config-file} (default: @var{%default-gnunet-file}) ++File-like object of the GNUnet configuration file to use. For NAT is ++assumes by default that you are behind a NAT (@var{BEHIND_NAT = YES}) ++and enables UPNP (@var{ENABLE_UPNP = YES}). ++The hostlist is configured with the options @var{-b} (bootstrap using ++configured hostlist servers) and @var{-e} (enable learning advertised hostlists). ++Read the configuration files in @var{"~/.guix-profile/share/gnunet/config.d/"} ++for more information. These files also set the defaults when you don't set ++any explicit values to override them. ++ ++@end table ++@end deftp ++ + + @node X Window + @subsubsection X Window +diff --git a/gnu/services/networking.scm b/gnu/services/networking.scm +index d672ecf68..ff3615ea2 100644 +--- a/gnu/services/networking.scm ++++ b/gnu/services/networking.scm +@@ -3,6 +3,7 @@ + ;;; Copyright © 2015 Mark H Weaver + ;;; Copyright © 2016 Efraim Flashner + ;;; Copyright © 2016 John Darrington ++;;; Copyright © 2016 ng0 + ;;; + ;;; This file is part of GNU Guix. + ;;; +@@ -27,6 +28,7 @@ + #:use-module (gnu system pam) + #:use-module (gnu packages admin) + #:use-module (gnu packages connman) ++ #:use-module (gnu packages gnunet) + #:use-module (gnu packages linux) + #:use-module (gnu packages tor) + #:use-module (gnu packages messaging) +@@ -66,7 +68,12 @@ + wicd-service + network-manager-service + connman-service +- wpa-supplicant-service-type)) ++ wpa-supplicant-service-type ++ ++ gnunet-configuration ++ gnunet-configuration? ++ gnunet-service-type ++ %default-gnunet-config-file)) + + ;;; Commentary: + ;;; +@@ -781,4 +788,109 @@ configure networking." + (service-extension dbus-root-service-type list) + (service-extension profile-service-type list))))) + ++ ++;;; GNUnet ++;;; ++;;; ++ ++(define-record-type* ++ gnunet-configuration make-gnunet-configuration ++ gnunet-configuration? ++ (package gnunet-configuration-package ++ (default gnunet)) ++ (config-file gnunet-configuration-config-file ++ (default %default-gnunet-config-file))) ++ ++(define %default-gnunet-config-file ++ (plain-file "gnunet.conf" " ++[PATHS] ++SERVICEHOME = /var/lib/gnunet ++GNUNET_CONFIG_HOME = /var/lib/gnunet ++ ++[arm] ++SYSTEM_ONLY = YES ++USER_ONLY = NO ++ ++[nat] ++BEHIND_NAT = YES ++ENABLE_UPNP = YES ++ ++[hostlist] ++OPTIONS = -b -e ++")) ++ ++(define gnunet-shepherd-service ++ (match-lambda ++ (($ package config-file) ++ (list (shepherd-service ++ (provision '(gnunet)) ++ (requirement '(user-processes loopback)) ++ (documentation "Run the GNUnet service.") ++ (start ++ (let ((gnunet ++ (file-append package "/lib/gnunet/libexec/gnunet-service-arm"))) ++ #~(make-forkexec-constructor ++ (list #$gnunet "-c" #$config-file) ++ #:pid-file "/var/run/gnunet.pid"))) ++ (stop ++ #~(make-kill-destructor ++ (list #$gnunet "-e")))))))) ++ ++(define %gnunet-accounts ++ (list (user-group ++ (name "gnunetdns") ++ (system? #t)) ++ (user-group ++ (name "gnunet") ++ (system? #t)) ++ (user-account ++ (name "gnunet") ++ (group "gnunet") ++ (system? #t) ++ (comment "GNUnet system user") ++ (home-directory "/var/empty") ++ (shell #~(string-append #$shadow "/sbin/nologin"))))) ++ ++(define gnunet-activation ++ (match-lambda ++ (($ package config-file) ++ (let ((gnunet ++ (file-append package "/lib/gnunet/libexec/gnunet-service-arm"))) ++ #~(begin ++ (use-modules (guix build utils)) ++ (define %user (getpw "gnunet")) ++ (mkdir-p "/var/lib/gnunet/") ++ (chown "/var/lib/gnunet" (passwd:uid %user) (passwd:gid %user)) ++ (chmod "/var/lib/gnunet/" #o600) ++ (mkdir-p "/var/lib/gnunet/.local/share/gnunet") ++ (mkdir-p "/var/lib/gnunet/.cache/gnunet") ++ (mkdir-p "/var/lib/gnunet/.config/gnunet") ++ (chmod "/var/lib/gnunet/.config/gnunet" #o600) ++ (chmod "/var/lib/gnunet/.cache/gnunet" #o600) ++ (chmod "/var/lib/gnunet/.local/share/gnunet" #o600)))))) ++ ++(define gnunet-setuid-programs ++ (match-lambda ++ (($ package) ++ (list (file-append package "/lib/gnunet/libexec/gnunet-helper-exit") ++ (file-append package "/lib/gnunet/libexec/gnunet-helper-nat-server") ++ (file-append package "/lib/gnunet/libexec/gnunet-helper-nat-client") ++ (file-append package "/lib/gnunet/libexec/gnunet-helper-transport-bluetooth") ++ (file-append package "/lib/gnunet/libexec/gnunet-helper-transport-wlan") ++ (file-append package "/lib/gnunet/libexec/gnunet-helper-vpn"))))) ++ ++(define gnunet-service-type ++ (service-type ++ (name 'gnunet) ++ (extensions (list (service-extension account-service-type ++ (const %gnunet-accounts)) ++ (service-extension activation-service-type ++ gnunet-activation) ++ (service-extension profile-service-type ++ (compose list gnunet-configuration-package)) ++ (service-extension setuid-program-service-type ++ gnunet-setuid-programs) ++ (service-extension shepherd-root-service-type ++ gnunet-shepherd-service))))) ++ + ;;; networking.scm ends here +-- +2.11.0 + -- cgit v1.2.3