aboutsummaryrefslogtreecommitdiff
path: root/gnu
diff options
context:
space:
mode:
authorLudovic Courtès <ludo@gnu.org>2014-07-25 00:12:35 +0200
committerLudovic Courtès <ludo@gnu.org>2014-07-25 00:12:35 +0200
commitc8fa34265d6612c99fe80adfaa66edaddd4d5b0c (patch)
tree282167e6f1e0f9e2e3305448dc5ef7d9c6e4da1d /gnu
parent931c132a58d86287d7a73964f9731a3b578538cc (diff)
downloadpatches-c8fa34265d6612c99fe80adfaa66edaddd4d5b0c.tar
patches-c8fa34265d6612c99fe80adfaa66edaddd4d5b0c.tar.gz
system: Add the 'system?' field for user groups.
Suggested by Mark H. Weaver. * gnu/system/shadow.scm (<user-group>)[system?]: New field. (%base-groups): Introduce 'system-group' macro, and use it. * gnu/system.scm (user-group->gexp): Pass the 'system?' field. * guix/build/activation.scm (add-group): Add #:system? and honor it. (activate-users+groups): Handle the 'system?' field. * gnu/system/file-systems.scm (%tty-gid): Choose an ID below 1000. * doc/guix.texi (User Accounts): Document the 'system?' field.
Diffstat (limited to 'gnu')
-rw-r--r--gnu/system.scm3
-rw-r--r--gnu/system/file-systems.scm2
-rw-r--r--gnu/system/shadow.scm42
3 files changed, 27 insertions, 20 deletions
diff --git a/gnu/system.scm b/gnu/system.scm
index 4648d810a3..68f9438693 100644
--- a/gnu/system.scm
+++ b/gnu/system.scm
@@ -363,7 +363,8 @@ alias ll='ls -l'
'active-groups'."
#~(list #$(user-group-name group)
#$(user-group-password group)
- #$(user-group-id group)))
+ #$(user-group-id group)
+ #$(user-group-system? group)))
(define (user-account->gexp account)
"Turn ACCOUNT, a <user-account> object, into a list-valued gexp suitable for
diff --git a/gnu/system/file-systems.scm b/gnu/system/file-systems.scm
index 3b13d820cf..48c4fc7e77 100644
--- a/gnu/system/file-systems.scm
+++ b/gnu/system/file-systems.scm
@@ -95,7 +95,7 @@
(define %tty-gid
;; ID of the 'tty' group. Allocate it statically to make it easy to refer
;; to it from here and from the 'tty' group definitions.
- 1004)
+ 996)
(define %pseudo-terminal-file-system
;; The pseudo-terminal file system. It needs to be mounted so that
diff --git a/gnu/system/shadow.scm b/gnu/system/shadow.scm
index e29dbb8c3e..5d638398d1 100644
--- a/gnu/system/shadow.scm
+++ b/gnu/system/shadow.scm
@@ -43,6 +43,7 @@
user-group-name
user-group-password
user-group-id
+ user-group-system?
default-skeletons
skeleton-directory
@@ -75,28 +76,33 @@
user-group?
(name user-group-name)
(password user-group-password (default #f))
- (id user-group-id (default #f)))
+ (id user-group-id (default #f))
+ (system? user-group-system? ; Boolean
+ (default #f)))
(define %base-groups
;; Default set of groups.
- (list (user-group (name "root") (id 0))
- (user-group (name "wheel")) ; root-like users
- (user-group (name "users")) ; normal users
- (user-group (name "nogroup")) ; for daemons etc.
+ (let-syntax ((system-group (syntax-rules ()
+ ((_ args ...)
+ (user-group (system? #t) args ...)))))
+ (list (system-group (name "root") (id 0))
+ (system-group (name "wheel")) ; root-like users
+ (system-group (name "users")) ; normal users
+ (system-group (name "nogroup")) ; for daemons etc.
- ;; The following groups are conventionally used by things like udev to
- ;; control access to hardware devices.
- (user-group (name "tty") (id %tty-gid))
- (user-group (name "dialout"))
- (user-group (name "kmem"))
- (user-group (name "video"))
- (user-group (name "audio"))
- (user-group (name "netdev")) ; used in avahi-dbus.conf
- (user-group (name "lp"))
- (user-group (name "disk"))
- (user-group (name "floppy"))
- (user-group (name "cdrom"))
- (user-group (name "tape"))))
+ ;; The following groups are conventionally used by things like udev to
+ ;; control access to hardware devices.
+ (system-group (name "tty") (id %tty-gid))
+ (system-group (name "dialout"))
+ (system-group (name "kmem"))
+ (system-group (name "video"))
+ (system-group (name "audio"))
+ (system-group (name "netdev")) ; used in avahi-dbus.conf
+ (system-group (name "lp"))
+ (system-group (name "disk"))
+ (system-group (name "floppy"))
+ (system-group (name "cdrom"))
+ (system-group (name "tape")))))
(define (default-skeletons)
"Return the default skeleton files for /etc/skel. These files are copied by