diff --git a/gnu/system.scm b/gnu/system.scm
index c2be74b6d5e63af2fc9a373c2ae6b483ca416be8..41ea59b69bce21e6bfeb879ecd155689002e1908 100644
--- a/gnu/system.scm
+++ b/gnu/system.scm
@@ -92,9 +92,7 @@ (define-record-type* <operating-system> operating-system
   (users operating-system-users                   ; list of user accounts
          (default '()))
   (groups operating-system-groups                 ; list of user groups
-          (default (list (user-group
-                          (name "root")
-                          (id 0)))))
+          (default %base-groups))
 
   (skeletons operating-system-skeletons           ; list of name/monadic value
              (default (default-skeletons)))
diff --git a/gnu/system/shadow.scm b/gnu/system/shadow.scm
index 471390da615037977db8dbdfd8fc700a4da74e77..fc19068ab6489397c8df7e7c355e3cb87f53d73b 100644
--- a/gnu/system/shadow.scm
+++ b/gnu/system/shadow.scm
@@ -42,7 +42,8 @@ (define-module (gnu system shadow)
             user-group-id
 
             default-skeletons
-            skeleton-directory))
+            skeleton-directory
+            %base-groups))
 
 ;;; Commentary:
 ;;;
@@ -71,6 +72,26 @@ (define-record-type* <user-group>
   (password       user-group-password (default #f))
   (id             user-group-id (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.
+
+        ;; The following groups are conventionally used by things like udev to
+        ;; control access to hardware devices.
+        (user-group (name "tty"))
+        (user-group (name "dialout"))
+        (user-group (name "kmem"))
+        (user-group (name "video"))
+        (user-group (name "audio"))
+        (user-group (name "lp"))
+        (user-group (name "disk"))
+        (user-group (name "floppy"))
+        (user-group (name "cdrom"))
+        (user-group (name "tape"))))
+
 (define (default-skeletons)
   "Return the default skeleton files for /etc/skel.  These files are copied by
 'useradd' in the home directory of newly created user accounts."