pam-limits-service and pam-mount-service-type are working when used only one of them. When both are present in list of (services, conflict hapens when guix system reconfigure is invoked. Digging the problem led to use of etc-service-type.

pam-limits-service defines /etc/security/limits.conf in gnu/services/base.scm:

(define pam-limits-service-type
 (let ((security-limits
;; Create /etc/security containing the provided "limits.conf" file.
        (lambda (limits-file)
          `(("security"
             ,(computed-file
               "security"
               #~(begin
                   (mkdir #$output)
                   (stat #$limits-file)
                   (symlink #$limits-file
                            (string-append #$output "/limits.conf"))))))))
       (pam-extension
        (lambda (pam)

Basically, it says to etc-service-type i need "security" under "/etc" and uses mkdir to create it.

pam-mount-service-type asks "security/pam_mount.conf.xml" from etc-service-type.

(define (pam-mount-etc-service config)
 `(("security/pam_mount.conf.xml"
    ,(make-pam-mount-configuration-file config))))

When both pam-mount-service-type and pam-limits-service are defined in (services ...), if pam-mount-service-type is before pam-limits, guix system reconfigure fails with "Permission denied", if pam-limits is before then it is "File exists".

I would suggest to fix gnu/services/base.scm so that pam-limits-services-type ask for "security/limits.conf" just like pam-mount-services-type does in order to avoid conflict.

Currently, both pam-limits-service and pam-mount-service-type are not usable at the same time.



Reply via email to