summaryrefslogtreecommitdiff
path: root/gnu
diff options
context:
space:
mode:
authorDavid Craven <david@craven.ch>2016-07-03 20:25:09 +0200
committerLudovic Courtès <ludo@gnu.org>2016-07-05 11:10:01 +0200
commitb58cbf9ac507f58ef3031305ce8c13ea889de2d2 (patch)
tree2ed944935d405958497202e8828b2ca61af838b1 /gnu
parentcf91cfc0c47bbe3c026e098729522feec6631311 (diff)
services: Add rngd-service.
* gnu/services/base.scm (<rngd-configuration>): New record type. (rngd-service-type): New variable. (rngd-service): New procedure. * doc/guix.texi (Base Services): Document it. Signed-off-by: Ludovic Courtès <ludo@gnu.org>
Diffstat (limited to 'gnu')
-rw-r--r--gnu/services/base.scm47
1 files changed, 45 insertions, 2 deletions
diff --git a/gnu/services/base.scm b/gnu/services/base.scm
index f304bf89a37..5eabfec423c 100644
--- a/gnu/services/base.scm
+++ b/gnu/services/base.scm
@@ -4,6 +4,7 @@
4;;; Copyright © 2015 Mark H Weaver <mhw@netris.org> 4;;; Copyright © 2015 Mark H Weaver <mhw@netris.org>
5;;; Copyright © 2015 Sou Bunnbu <iyzsong@gmail.com> 5;;; Copyright © 2015 Sou Bunnbu <iyzsong@gmail.com>
6;;; Copyright © 2016 Leo Famulari <leo@famulari.name> 6;;; Copyright © 2016 Leo Famulari <leo@famulari.name>
7;;; Copyright © 2016 David Craven <david@craven.ch>
7;;; 8;;;
8;;; This file is part of GNU Guix. 9;;; This file is part of GNU Guix.
9;;; 10;;;
@@ -31,7 +32,7 @@
31 #:use-module (gnu system mapped-devices) 32 #:use-module (gnu system mapped-devices)
32 #:use-module (gnu packages admin) 33 #:use-module (gnu packages admin)
33 #:use-module ((gnu packages linux) 34 #:use-module ((gnu packages linux)
34 #:select (eudev kbd e2fsprogs lvm2 fuse alsa-utils crda gpm)) 35 #:select (alsa-utils crda eudev e2fsprogs fuse gpm kbd lvm2 rng-tools))
35 #:use-module ((gnu packages base) 36 #:use-module ((gnu packages base)
36 #:select (canonical-package glibc)) 37 #:select (canonical-package glibc))
37 #:use-module (gnu packages package-management) 38 #:use-module (gnu packages package-management)
@@ -97,6 +98,8 @@
97 98
98 urandom-seed-service-type 99 urandom-seed-service-type
99 urandom-seed-service 100 urandom-seed-service
101 rngd-service-type
102 rngd-service
100 103
101 %base-services)) 104 %base-services))
102 105
@@ -486,7 +489,47 @@ stopped before 'kill' is called."
486(define (urandom-seed-service) 489(define (urandom-seed-service)
487 (service urandom-seed-service-type #f)) 490 (service urandom-seed-service-type #f))
488 491
489 492
493;;;
494;;; Add hardware random number generator to entropy pool.
495;;;
496
497(define-record-type* <rngd-configuration>
498 rngd-configuration make-rngd-configuration
499 rngd-configuration?
500 (rng-tools rngd-configuration-rng-tools) ;package
501 (device rngd-configuration-device)) ;string
502
503(define rngd-service-type
504 (shepherd-service-type
505 'rngd
506 (lambda (config)
507 (define rng-tools (rngd-configuration-rng-tools config))
508 (define device (rngd-configuration-device config))
509
510 (define rngd-command
511 (list #~(string-append #$rng-tools "/sbin/rngd")
512 "-f" "-r" device))
513
514 (shepherd-service
515 (documentation "Add TRNG to entropy pool.")
516 (requirement '(udev))
517 (provision '(trng))
518 (start #~(make-forkexec-constructor #$@rngd-command))
519 (stop #~(make-kill-destructor))))))
520
521(define* (rngd-service #:key
522 (rng-tools rng-tools)
523 (device "/dev/hwrng"))
524 "Return a service that runs the @command{rngd} program from @var{rng-tools}
525to add @var{device} to the kernel's entropy pool. The service will fail if
526@var{device} does not exist."
527 (service rngd-service-type
528 (rngd-configuration
529 (rng-tools rng-tools)
530 (device device))))
531
532
490;;; 533;;;
491;;; System-wide environment variables. 534;;; System-wide environment variables.
492;;; 535;;;