From e02584b456a3f9c00b303ef4815d892a47edc2e6 Mon Sep 17 00:00:00 2001 From: muradm Date: Sat, 13 May 2023 21:38:00 +0300 Subject: [PATCH] services: cups: Add cups PAM service. Fixes . Have the CUPS service extend pam-root-service-type providing minimal configuration to authenticate users. Since PAM authentication is provided, the regular cups package can be used as default instead of the minimal, PAM-lacking variant. * gnu/services/cups.scm (cups-configuration) [cups]: Replace cups-minimal with cups. [allow-empty-password?]: PAM service configuration permitting empty passwords. (opaque-cups-configuration): Likewise. (cups-pam-service): New procedure. (cups-service-type): Extend pam-root-service-type with cups-pam-service. Signed-off-by: Maxim Cournoyer --- gnu/services/cups.scm | 22 ++++++++++++++++++++-- 1 file changed, 20 insertions(+), 2 deletions(-) diff --git a/gnu/services/cups.scm b/gnu/services/cups.scm index c6099d77e7..d95c38b4d9 100644 --- a/gnu/services/cups.scm +++ b/gnu/services/cups.scm @@ -5,6 +5,7 @@ ;;; Copyright © 2019 Alex Griffin ;;; Copyright © 2019 Tobias Geerinckx-Rice ;;; Copyright © 2021 Maxime Devos +;;; Copyright © 2023 muradm ;;; ;;; This file is part of GNU Guix. ;;; @@ -25,6 +26,7 @@ (define-module (gnu services cups) #:use-module (gnu services) #:use-module (gnu services shepherd) #:use-module (gnu services configuration) + #:use-module (gnu system pam) #:use-module (gnu system shadow) #:use-module (gnu packages admin) #:use-module (gnu packages cups) @@ -500,8 +502,11 @@ (define (serialize-package-list field-name val) (define-configuration cups-configuration (cups - (file-like cups-minimal) + (file-like cups) "The CUPS package.") + (allow-empty-password? + (boolean #f) + "Specifies whether empty passwords will be allowed when authenticating via PAM.") (extensions (package-list (list brlaser cups-filters epson-inkjet-printer-escpr foomatic-filters hplip-minimal splix)) @@ -841,8 +846,11 @@ (define-configuration cups-configuration (define-configuration opaque-cups-configuration (cups - (package cups-minimal) + (package cups) "The CUPS package.") + (allow-empty-password? + (boolean #f) + "Specifies whether empty passwords will be allowed when authenticating via PAM.") (extensions (package-list '()) "Drivers and other extensions to the CUPS package.") @@ -1006,6 +1014,14 @@ (define (cups-shepherd-service config) "-f" "-c" #$cupsd.conf "-s" #$cups-files.conf))) (stop #~(make-kill-destructor)))))) +(define (cups-pam-service config) + (let ((allow-empty-password? + (if (opaque-cups-configuration? config) + (opaque-cups-configuration-allow-empty-password? config) + (cups-configuration-allow-empty-password? config)))) + (list (unix-pam-service "cups" + #:allow-empty-passwords? allow-empty-password?)))) + (define cups-service-type (service-type (name 'cups) (extensions @@ -1013,6 +1029,8 @@ (define cups-service-type cups-shepherd-service) (service-extension activation-service-type (const %cups-activation)) + (service-extension pam-root-service-type + cups-pam-service) (service-extension account-service-type (const %cups-accounts))))