~ruther/guix-local

c33bc8008090bafda228e475dedc71cd06f56e4f — Ludovic Courtès 1 year, 3 months ago 04e8006
services: guix: ‘guix-ownership’ changes store ownership last.

Fixes <https://issues.guix.gnu.org/78355>.

* gnu/services/base.scm (guix-ownership-change-program)[claim-data-ownership]:
Replace hard-coded “/gnu/store” with #$(store-prefix).  Change store
ownership last.

Reported-by: Rutherther <rutherther@ditigal.xyz>
Change-Id: I55189f8bb82bf0c9e030aa042aa928f6f552569e
1 files changed, 7 insertions(+), 4 deletions(-)

M gnu/services/base.scm
M gnu/services/base.scm => gnu/services/base.scm +7 -4
@@ 1997,10 1997,9 @@ of Guix to the given UID and GID."
                             lstat))

         (define (claim-data-ownership uid gid)
           (format #t "Changing file ownership for /gnu/store \
           (format #t "Changing file ownership for ~a \
and data directories to ~a:~a...~%"
                   uid gid)
           (change-ownership #$(%store-prefix) uid gid)
                   #$(%store-prefix) uid gid)
           (let ((excluded '("." ".." "profiles" "userpool")))
             (for-each (lambda (directory)
                         (change-ownership (in-vicinity "/var/guix" directory)


@@ 2012,7 2011,11 @@ and data directories to ~a:~a...~%"
           (chown "/var/guix" uid gid)
           (change-ownership "/etc/guix" uid gid)
           (mkdir-p "/var/log/guix")
           (change-ownership "/var/log/guix" uid gid))
           (change-ownership "/var/log/guix" uid gid)

           ;; Change the store last so that, if this service is interrupted,
           ;; ownership appears as having yet to be changed.
           (change-ownership #$(%store-prefix) uid gid))

         (match (command-line)
           ((_ (= string->number (? integer? uid))