summaryrefslogtreecommitdiff
path: root/gnu/services/base.scm
diff options
context:
space:
mode:
authorBruno Victal <mirai@makinata.eu>2023-03-04 21:17:39 +0000
committerLudovic Courtès <ludo@gnu.org>2023-03-30 23:18:16 +0200
commit6d0ad930206dccf382ec65c6504df51b5c798a34 (patch)
tree6f70760189ac43f95d5ad218ecff0737b71942e6 /gnu/services/base.scm
parented5053188565063b353711772fc2dc3ca50e8568 (diff)
services: pam-limits-service-type: Deprecate file-like object support in favour for lists as service value.
* doc/guix.texi (Base Services): Document it. * gnu/local.mk: Register test. * gnu/services/base.scm (pam-limits-service-type): Accept both lists and file-like objects. Deprecate file-like object support. * gnu/tests/pam.scm: New file. Signed-off-by: Ludovic Courtès <ludo@gnu.org>
Diffstat (limited to 'gnu/services/base.scm')
-rw-r--r--gnu/services/base.scm36
1 files changed, 26 insertions, 10 deletions
diff --git a/gnu/services/base.scm b/gnu/services/base.scm
index acbfb879fc..e063828d3b 100644
--- a/gnu/services/base.scm
+++ b/gnu/services/base.scm
@@ -40,7 +40,7 @@
(define-module (gnu services base)
#:use-module (guix store)
#:use-module (guix deprecation)
- #:autoload (guix diagnostics) (warning &fix-hint)
+ #:autoload (guix diagnostics) (warning formatted-message &fix-hint)
#:autoload (guix i18n) (G_)
#:use-module (guix combinators)
#:use-module (gnu services)
@@ -1588,17 +1588,13 @@ information on the configuration file syntax."
(define pam-limits-service-type
- (let ((security-limits
- ;; Create /etc/security containing the provided "limits.conf" file.
- (lambda (limits-file)
- `(("security/limits.conf"
- ,limits-file))))
- (pam-extension
+ (let ((pam-extension
(lambda (pam)
(let ((pam-limits (pam-entry
(control "required")
(module "pam_limits.so")
- (arguments '("conf=/etc/security/limits.conf")))))
+ (arguments
+ '("conf=/etc/security/limits.conf")))))
(if (member (pam-service-name pam)
'("login" "greetd" "su" "slim" "gdm-password" "sddm"
"sudo" "sshd"))
@@ -1606,7 +1602,27 @@ information on the configuration file syntax."
(inherit pam)
(session (cons pam-limits
(pam-service-session pam))))
- pam)))))
+ pam))))
+
+ ;; XXX: Using file-like objects is deprecated, use lists instead.
+ ;; This is to be reduced into the list? case when the deprecated
+ ;; code gets removed.
+ ;; Create /etc/security containing the provided "limits.conf" file.
+ (security-limits
+ (match-lambda
+ ((? file-like? obj)
+ (warning (G_ "Using file-like value for \
+'pam-limits-service-type' is deprecated~%"))
+ `(("security/limits.conf" ,obj)))
+ ((? list? lst)
+ `(("security/limits.conf"
+ ,(plain-file "limits.conf"
+ (string-join (map pam-limits-entry->string lst)
+ "\n" 'suffix)))))
+ (_ (raise
+ (formatted-message
+ (G_ "invalid input for 'pam-limits-service-type'~%")))))))
+
(service-type
(name 'limits)
(extensions
@@ -1617,7 +1633,7 @@ information on the configuration file syntax."
"Install the specified resource usage limits by populating
@file{/etc/security/limits.conf} and using the @code{pam_limits}
authentication module.")
- (default-value (plain-file "limits.conf" "")))))
+ (default-value '()))))
(define-deprecated (pam-limits-service #:optional (limits '()))
pam-limits-service-type