GNU bug report logs - #27474
[PATCH] services: Add 'sysctl-service-type'.

Previous Next

Package: guix-patches;

Reported by: 宋文武 <iyzsong <at> member.fsf.org>

Date: Sat, 24 Jun 2017 14:30:02 UTC

Severity: normal

Tags: patch

Done: iyzsong <at> member.fsf.org (宋文武)

Bug is archived. No further changes may be made.

To add a comment to this bug, you must first unarchive it, by sending
a message to control AT debbugs.gnu.org, with unarchive 27474 in the body.
You can then email your comments to 27474 AT debbugs.gnu.org in the normal way.

Toggle the display of automated, internal messages from the tracker.

View this report as an mbox folder, status mbox, maintainer mbox


Report forwarded to guix-patches <at> gnu.org:
bug#27474; Package guix-patches. (Sat, 24 Jun 2017 14:30:02 GMT) Full text and rfc822 format available.

Acknowledgement sent to 宋文武 <iyzsong <at> member.fsf.org>:
New bug report received and forwarded. Copy sent to guix-patches <at> gnu.org. (Sat, 24 Jun 2017 14:30:02 GMT) Full text and rfc822 format available.

Message #5 received at submit <at> debbugs.gnu.org (full text, mbox):

From: 宋文武 <iyzsong <at> member.fsf.org>
To: guix-patches <at> gnu.org
Cc: 宋文武 <iyzsong <at> member.fsf.org>
Subject: [PATCH] services: Add 'sysctl-service-type'.
Date: Sat, 24 Jun 2017 22:17:17 +0800
* gnu/services/sysctl.scm: New file.
* doc/guix.texi (Miscellaneous Services): Document it.
* gnu/local.mk (GNU_SYSTEM_MODULES): Add it.
---
 doc/guix.texi           | 29 +++++++++++++++++++
 gnu/local.mk            |  1 +
 gnu/services/sysctl.scm | 77 +++++++++++++++++++++++++++++++++++++++++++++++++
 3 files changed, 107 insertions(+)
 create mode 100644 gnu/services/sysctl.scm

diff --git a/doc/guix.texi b/doc/guix.texi
index 729ec081b..c2652a61c 100644
--- a/doc/guix.texi
+++ b/doc/guix.texi
@@ -15277,6 +15277,35 @@ Package object of thermald.
 @node Miscellaneous Services
 @subsubsection Miscellaneous Services
 
+@cindex sysctl
+@subsubheading System Control Service
+
+The @code{(gnu services sysctl)} provides a service to configure kernel
+parameters at boot.
+
+@defvr {Scheme Variable} sysctl-service-type
+The service type for @command{sysctl}, which modifies kernel parameters
+under @file{/proc/sys/}.  To enable IPv4 forwarding, it can be
+instantiated as:
+
+@example
+(service sysctl-service-type
+         (sysctl-configuration
+           (settings '(("net.ipv4.ip_forward" . "1")))))
+@end example
+@end defvr
+
+@deftp {Data Type} sysctl-configuration
+The data type representing the configuration of @command{sysctl}.
+
+@table @asis
+@item @code{sysctl} (default: @code{(file-append procps "/sbin/sysctl"})
+The @command{sysctl} executable to use.
+
+@item @code{settings} (default: @code{'()})
+An association list specifies kernel parameters and their values.
+@end table
+@end deftp
 
 @cindex lirc
 @subsubheading Lirc Service
diff --git a/gnu/local.mk b/gnu/local.mk
index a4b29d5fd..ee63f0f20 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -442,6 +442,7 @@ GNU_SYSTEM_MODULES =				\
   %D%/services/sddm.scm				\
   %D%/services/spice.scm				\
   %D%/services/ssh.scm				\
+  %D%/services/sysctl.scm			\
   %D%/services/version-control.scm              \
   %D%/services/vpn.scm				\
   %D%/services/web.scm				\
diff --git a/gnu/services/sysctl.scm b/gnu/services/sysctl.scm
new file mode 100644
index 000000000..be5be59a0
--- /dev/null
+++ b/gnu/services/sysctl.scm
@@ -0,0 +1,77 @@
+;;; GNU Guix --- Functional package management for GNU
+;;; Copyright © 2017 Sou Bunnbu <iyzsong <at> member.fsf.org>
+;;;
+;;; This file is part of GNU Guix.
+;;;
+;;; GNU Guix is free software; you can redistribute it and/or modify it
+;;; under the terms of the GNU General Public License as published by
+;;; the Free Software Foundation; either version 3 of the License, or (at
+;;; your option) any later version.
+;;;
+;;; GNU Guix is distributed in the hope that it will be useful, but
+;;; WITHOUT ANY WARRANTY; without even the implied warranty of
+;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+;;; GNU General Public License for more details.
+;;;
+;;; You should have received a copy of the GNU General Public License
+;;; along with GNU Guix.  If not, see <http://www.gnu.org/licenses/>.
+
+(define-module (gnu services sysctl)
+  #:use-module (gnu services)
+  #:use-module (gnu services shepherd)
+  #:use-module (gnu packages linux)
+  #:use-module (guix gexp)
+  #:use-module (guix records)
+  #:use-module (srfi srfi-1)
+  #:use-module (ice-9 match)
+  #:export (sysctl-configuration
+            sysctl-service-type))
+
+
+;;;
+;;; System Control Service.
+;;;
+
+(define-record-type* <sysctl-configuration>
+  sysctl-configuration make-sysctl-configuration?
+  sysctl-configuration?
+  (sysctl   sysctl-configuration-sysctl    ; path of the 'sysctl' command
+            (default (file-append procps "/sbin/sysctl")))
+  (settings sysctl-configuration-settings  ; alist of string pairs
+            (default '())))
+
+(define (sysctl-configuration-settings->sysctl.conf settings)
+  "Return a file for @command{sysctl} to set kernel parameters as specified by
+@var{settings}."
+  (apply mixed-text-file "sysctl.conf"
+         (append-map (match-lambda
+                       ((key . value)
+                        (list key "=" value "\n")))
+                     settings)))
+
+(define sysctl-shepherd-service
+  (match-lambda
+    (($ <sysctl-configuration> sysctl settings)
+     (let ((sysctl.conf
+            (sysctl-configuration-settings->sysctl.conf settings)))
+       (shepherd-service
+        (documentation "Configure kernel parameters at boot.")
+        (provision '(sysctl))
+        (start #~(lambda _
+                   (zero? (system* #$sysctl "--load" #$sysctl.conf))))
+        (stop #~(const #t))
+        (respawn? #f))))))
+
+(define sysctl-service-type
+  (service-type
+   (name 'sysctl)
+   (extensions
+    (list (service-extension shepherd-root-service-type
+                             (compose list sysctl-shepherd-service))))
+   (compose concatenate)
+   (extend (lambda (config settings)
+             (sysctl-configuration
+              (inherit config)
+              (settings (append (sysctl-configuration-settings config)
+                                settings)))))
+   (default-value (sysctl-configuration))))
-- 
2.12.2





Reply sent to iyzsong <at> member.fsf.org (宋文武):
You have taken responsibility. (Tue, 04 Jul 2017 13:17:02 GMT) Full text and rfc822 format available.

Notification sent to 宋文武 <iyzsong <at> member.fsf.org>:
bug acknowledged by developer. (Tue, 04 Jul 2017 13:17:02 GMT) Full text and rfc822 format available.

Message #10 received at 27474-done <at> debbugs.gnu.org (full text, mbox):

From: iyzsong <at> member.fsf.org (宋文武)
To: 27474-done <at> debbugs.gnu.org
Subject: pushed
Date: Tue, 04 Jul 2017 20:45:39 +0800
Pushed as 296bf4d5ab1cf7822956205b6d266c2c67ce056c.




bug archived. Request was from Debbugs Internal Request <help-debbugs <at> gnu.org> to internal_control <at> debbugs.gnu.org. (Wed, 02 Aug 2017 11:24:04 GMT) Full text and rfc822 format available.

This bug report was last modified 7 years and 321 days ago.

Previous Next


GNU bug tracking system
Copyright (C) 1999 Darren O. Benham, 1997,2003 nCipher Corporation Ltd, 1994-97 Ian Jackson.