M gnu/services/avahi.scm => gnu/services/avahi.scm +1 -0
@@ 100,6 100,7 @@ sockets."
(user-accounts (list (user-account
(name "avahi")
(group "avahi")
+ (system? #t)
(comment "Avahi daemon user")
(home-directory "/var/empty")
(shell
M gnu/services/base.scm => gnu/services/base.scm +1 -0
@@ 327,6 327,7 @@ starting at FIRST-UID, and under GID."
(lambda (n)
(user-account
(name (format #f "guixbuilder~2,'0d" n))
+ (system? #t)
(uid (+ first-uid n -1))
(group group)
M gnu/services/dbus.scm => gnu/services/dbus.scm +1 -0
@@ 90,6 90,7 @@ and policy files. For example, to allow avahi-daemon to use the system bus,
(user-accounts (list (user-account
(name "messagebus")
(group "messagebus")
+ (system? #t)
(comment "D-Bus system bus user")
(home-directory "/var/run/dbus")
(shell
M gnu/system.scm => gnu/system.scm +2 -1
@@ 369,7 369,8 @@ alias ll='ls -l'
#$(user-account-comment account)
#$(user-account-home-directory account)
,#$(user-account-shell account) ; this one is a gexp
- #$(user-account-password account)))
+ #$(user-account-password account)
+ #$(user-account-system? account)))
(define (operating-system-activation-script os)
"Return the activation script for OS---i.e., the code that \"activates\" the
M gnu/system/shadow.scm => gnu/system/shadow.scm +4 -1
@@ 34,6 34,7 @@
user-account-comment
user-account-home-directory
user-account-shell
+ user-account-system?
user-group
user-group?
@@ 63,7 64,9 @@
(comment user-account-comment (default ""))
(home-directory user-account-home-directory)
(shell user-account-shell ; gexp
- (default #~(string-append #$bash "/bin/bash"))))
+ (default #~(string-append #$bash "/bin/bash")))
+ (system? user-account-system? ; Boolean
+ (default #f)))
(define-record-type* <user-group>
user-group make-user-group
M guix/build/activation.scm => guix/build/activation.scm +9 -6
@@ 47,7 47,7 @@
(zero? (apply system* "groupadd" args))))
(define* (add-user name group
- #:key uid comment home shell password
+ #:key uid comment home shell password system?
(supplementary-groups '())
(log-port (current-error-port)))
"Create an account for user NAME part of GROUP, with the specified
@@ 82,6 82,7 @@ properties. Return #t on success."
'())
,@(if shell `("-s" ,shell) '())
,@(if password `("-p" ,password) '())
+ ,@(if system? '("--system") '())
,name)))
(zero? (apply system* "useradd" args)))))
@@ 97,22 98,24 @@ numeric gid or #f."
(define activate-user
(match-lambda
- ((name uid group supplementary-groups comment home shell password)
+ ((name uid group supplementary-groups comment home shell password system?)
(unless (false-if-exception (getpwnam name))
(let ((profile-dir (string-append "/var/guix/profiles/per-user/"
name)))
(add-user name group
#:uid uid
+ #:system? system?
#:supplementary-groups supplementary-groups
#:comment comment
#:home home
#:shell shell
#:password password)
- ;; Create the profile directory for the new account.
- (let ((pw (getpwnam name)))
- (mkdir-p profile-dir)
- (chown profile-dir (passwd:uid pw) (passwd:gid pw))))))))
+ (unless system?
+ ;; Create the profile directory for the new account.
+ (let ((pw (getpwnam name)))
+ (mkdir-p profile-dir)
+ (chown profile-dir (passwd:uid pw) (passwd:gid pw)))))))))
;; 'groupadd' aborts if the file doesn't already exist.
(touch "/etc/group")