aboutsummaryrefslogtreecommitdiff
path: root/contrib/services/shepherd/ng0_wip/00001-gnu-services-Add-gnunet-service.patch
diff options
context:
space:
mode:
Diffstat (limited to 'contrib/services/shepherd/ng0_wip/00001-gnu-services-Add-gnunet-service.patch')
-rw-r--r--contrib/services/shepherd/ng0_wip/00001-gnu-services-Add-gnunet-service.patch186
1 files changed, 186 insertions, 0 deletions
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 @@
1From 60a4c0f7c60ef705db17561fd3e930bbe11730c9 Mon Sep 17 00:00:00 2001
2From: ng0 <ng0@we.make.ritual.n0.is>
3Date: Mon, 12 Sep 2016 12:26:52 +0000
4Subject: [PATCH] gnu: services: Add gnunet-service.
5
6* gnu/services/networking.scm (gnunet): New service.
7
8Signed-off-by: Nils Gillmann <ng0@n0.is>
9---
10 doc/guix.texi | 36 ++++++++++++++
11 gnu/services/networking.scm | 93 ++++++++++++++++++++++++++++++++++++-
12 2 files changed, 128 insertions(+), 1 deletion(-)
13
14diff --git a/doc/guix.texi b/doc/guix.texi
15index d925b4eda..eb7b409d7 100644
16--- a/doc/guix.texi
17+++ b/doc/guix.texi
18@@ -11016,6 +11016,42 @@ Package object of the Open vSwitch.
19 @end table
20 @end deftp
21
22+@cindex GNUnet
23+@cindex gnunet
24+@subsubheading GNUnet Service
25+
26+@deffn {Scheme Variable} gnunet-service-type
27+This is the type of the @uref{https://gnunet.org, GNUnet}
28+service, whose value should be an @code{gnunet-configuration} object
29+as in this example:
30+
31+@example
32+(service gnunet-service-type
33+ (gnunet-configuration
34+ (config-file (local-file "./gnunet.conf"))))
35+@end example
36+@end deffn
37+
38+@deftp {Data Type} gnunet-configuration
39+Data type representing the configuration of GNUnet.
40+
41+@table @asis
42+@item @code{package} (default: @var{gnunet})
43+Package object of the GNUnet service.
44+
45+@item @code{config-file} (default: @var{%default-gnunet-file})
46+File-like object of the GNUnet configuration file to use. For NAT is
47+assumes by default that you are behind a NAT (@var{BEHIND_NAT = YES})
48+and enables UPNP (@var{ENABLE_UPNP = YES}).
49+The hostlist is configured with the options @var{-b} (bootstrap using
50+configured hostlist servers) and @var{-e} (enable learning advertised hostlists).
51+Read the configuration files in @var{"~/.guix-profile/share/gnunet/config.d/"}
52+for more information. These files also set the defaults when you don't set
53+any explicit values to override them.
54+
55+@end table
56+@end deftp
57+
58 @node X Window
59 @subsubsection X Window
60
61diff --git a/gnu/services/networking.scm b/gnu/services/networking.scm
62index b0c23aafc..0ff20e707 100644
63--- a/gnu/services/networking.scm
64+++ b/gnu/services/networking.scm
65@@ -5,6 +5,7 @@
66 ;;; Copyright © 2016 John Darrington <jmd@gnu.org>
67 ;;; Copyright © 2017 Clément Lassieur <clement@lassieur.org>
68 ;;; Copyright © 2017 Thomas Danckaert <post@thomasdanckaert.be>
69+;;; Copyright © 2017 ng0 <contact.ng0@cryptolab.net>
70 ;;;
71 ;;; This file is part of GNU Guix.
72 ;;;
73@@ -29,6 +30,7 @@
74 #:use-module (gnu system pam)
75 #:use-module (gnu packages admin)
76 #:use-module (gnu packages connman)
77+ #:use-module (gnu packages gnunet)
78 #:use-module (gnu packages linux)
79 #:use-module (gnu packages tor)
80 #:use-module (gnu packages messaging)
81@@ -92,7 +94,12 @@
82 wpa-supplicant-service-type
83
84 openvswitch-service-type
85- openvswitch-configuration))
86+ openvswitch-configuration
87+
88+ gnunet-configuration
89+ gnunet-configuration?
90+ gnunet-service
91+ gnunet-service-type))
92
93 ;;; Commentary:
94 ;;;
95@@ -1125,4 +1132,88 @@ a network connection manager."))))
96 switch designed to enable massive network automation through programmatic
97 extension.")))
98
99+;;;
100+;;; GNUnet
101+;;;
102+
103+(define-record-type* <gnunet-configuration>
104+ gnunet-configuration make-gnunet-configuration
105+ gnunet-configuration?
106+ (package gnunet-configuration-package
107+ (default gnunet))
108+ (config-file gnunet-configuration-config-file
109+ (default %default-gnunet-config-file)))
110+
111+(define %default-gnunet-config-file
112+ (plain-file "gnunet.conf" "
113+[PATHS]
114+SERVICEHOME = /var/lib/gnunet
115+GNUNET_CONFIG_HOME = /var/lib/gnunet
116+
117+[arm]
118+SYSTEM_ONLY = YES
119+USER_ONLY = NO
120+
121+[nat]
122+BEHIND_NAT = YES
123+ENABLE_UPNP = YES
124+
125+[hostlist]
126+OPTIONS = -b -e
127+"))
128+
129+(define gnunet-shepherd-service
130+ (match-lambda
131+ (($ <gnunet-configuration> package config-file)
132+ (list (shepherd-service
133+ (provision '(gnunet))
134+ (requirement '(loopback))
135+ (documentation "Run the GNUnet service.")
136+ (start
137+ (let ((gnunet
138+ (file-append package "/lib/gnunet/libexec/gnunet-service-arm")))
139+ #~(make-forkexec-constructor
140+ (list #$gnunet "-c" #$config-file)
141+ #:log-file "/var/log/gnunet.log"
142+ #:pid-file "/var/run/gnunet.pid")))
143+ (stop
144+ #~(make-kill-destructor)))))))
145+
146+(define %gnunet-accounts
147+ (list (user-group
148+ (name "gnunetdns")
149+ (system? #t))
150+ (user-group
151+ (name "gnunet")
152+ (system? #t))
153+ (user-account
154+ (name "gnunet")
155+ (group "gnunet")
156+ (system? #t)
157+ (comment "GNUnet system user")
158+ (home-directory "/var/lib/gnunet")
159+ (shell #~(string-append #$shadow "/sbin/nologin")))))
160+
161+(define gnunet-activation
162+ (match-lambda
163+ (($ <gnunet-configuration> package config-file)
164+ (let ((gnunet
165+ (file-append package "/lib/gnunet/libexec/gnunet-service-arm")))
166+ #~(begin
167+ ;; Create the .config + .cache for gnunet user
168+ (mkdir-p "/var/lib/gnunet/.config/gnunet")
169+ (mkdir-p "/var/lib/gnunet/.cache/gnunet"))))))
170+
171+(define gnunet-service-type
172+ (service-type
173+ (name 'gnunet)
174+ (extensions (list (service-extension account-service-type
175+ (const %gnunet-accounts))
176+ (service-extension activation-service-type
177+ gnunet-activation)
178+ (service-extension profile-service-type
179+ (compose list gnunet-configuration-package))
180+ (service-extension shepherd-root-service-type
181+ gnunet-shepherd-service)))))
182+
183 ;;; networking.scm ends here
184--
1852.17.0
186