diff --git a/gnu/system.scm b/gnu/system.scm
index 68f94386933d7de951044929ec2c50cc148ffb27..2894df82357b25fd248080f02031a27c88e28d34 100644
--- a/gnu/system.scm
+++ b/gnu/system.scm
@@ -23,6 +23,7 @@ (define-module (gnu system)
   #:use-module (guix records)
   #:use-module (guix packages)
   #:use-module (guix derivations)
+  #:use-module (guix profiles)
   #:use-module (gnu packages base)
   #:use-module (gnu packages bash)
   #:use-module (gnu packages which)
@@ -125,29 +126,6 @@ (define-record-type* <operating-system> operating-system
 ;;; Derivation.
 ;;;
 
-(define* (union inputs
-                #:key (guile (%guile-for-build))
-                (name "union"))
-  "Return a derivation that builds the union of INPUTS.  INPUTS is a list of
-input tuples."
-  (define builder
-    #~(begin
-        (use-modules (guix build union))
-
-        (define inputs '#$inputs)
-
-        (setvbuf (current-output-port) _IOLBF)
-        (setvbuf (current-error-port) _IOLBF)
-
-        (format #t "building union `~a' with ~a packages...~%"
-                #$output (length inputs))
-        (union-build #$output inputs)))
-
-  (gexp->derivation name builder
-                    #:modules '((guix build union))
-                    #:guile-for-build guile
-                    #:local-build? #t))
-
 (define* (file-union name files)
   "Return a derivation that builds a directory containing all of FILES.  Each
 item in FILES must be a list where the first element is the file name to use
@@ -294,10 +272,9 @@ (define* (etc-directory #:key
                   ("sudoers" ,#~#$sudoers)))))
 
 (define (operating-system-profile os)
-  "Return a derivation that builds the default profile of OS."
-  ;; TODO: Replace with a real profile with a manifest.
-  (union (operating-system-packages os)
-         #:name "default-profile"))
+  "Return a derivation that builds the system profile of OS."
+  (profile-derivation (manifest (map package->manifest-entry
+                                     (operating-system-packages os)))))
 
 (define %root-account
   ;; Default root account.