diff --git a/doc/guix.texi b/doc/guix.texi
index 7806b21a0f..8d4989a60c 100644
--- a/doc/guix.texi
+++ b/doc/guix.texi
@@ -14422,9 +14422,9 @@ Parse the @code{source} URL to determine if a tarball from GitHub is
 autogenerated or if it is a release tarball.  Unfortunately GitHub's
 autogenerated tarballs are sometimes regenerated.
 
-@item derivation
+@item derivation/SYSTEM
 Check that the derivation of the given packages can be successfully
-computed for all the supported systems (@pxref{Derivations}).
+computed for the specified system (@pxref{Derivations}).
 
 @item profile-collisions
 Check whether installing the given packages in a profile would lead to
diff --git a/guix/lint.scm b/guix/lint.scm
index 8e3976171f..f692856f42 100644
--- a/guix/lint.scm
+++ b/guix/lint.scm
@@ -52,6 +52,7 @@ (define-module (guix lint)
   #:use-module (guix memoization)
   #:use-module (guix profiles)
   #:use-module (guix monads)
+  #:use-module (guix platform)
   #:use-module (guix scripts)
   #:use-module ((guix ui) #:select (texi->plain-text fill-paragraph))
   #:use-module (guix gnu-maintenance)
@@ -98,7 +99,6 @@ (define-module (guix lint)
             check-patch-file-names
             check-patch-headers
             check-synopsis-style
-            check-derivation
             check-home-page
             check-name
             check-source
@@ -116,6 +116,8 @@ (define-module (guix lint)
             check-haskell-stackage
             check-tests-true
 
+            make-check-derivation-for-system
+
             lint-warning
             lint-warning?
             lint-warning-package
@@ -1369,56 +1371,6 @@ (define (check-phases-deltas deltas)
     (append-map check-phases-delta deltas))
   (find-phase-deltas package check-phases-deltas))
 
-(define* (check-derivation package #:key store)
-  "Emit a warning if we fail to compile PACKAGE to a derivation."
-  (define (try store system)
-    (guard (c ((store-protocol-error? c)
-               (make-warning package
-                             (G_ "failed to create ~a derivation: ~a")
-                             (list system
-                                   (store-protocol-error-message c))))
-              ((exception-with-kind-and-args? c)
-               (make-warning package
-                             (G_ "failed to create ~a derivation: ~s")
-                             (list system
-                                   (cons (exception-kind c)
-                                         (exception-args c)))))
-              ((message-condition? c)
-               (make-warning package
-                             (G_ "failed to create ~a derivation: ~a")
-                             (list system
-                                   (condition-message c))))
-              ((formatted-message? c)
-               (let ((str (apply format #f
-                                 (formatted-message-string c)
-                                 (formatted-message-arguments c))))
-                 (make-warning package
-                               (G_ "failed to create ~a derivation: ~a")
-                               (list system str))))
-              (else
-               (make-warning package
-                             (G_ "failed to create ~a derivation: ~a")
-                             (list system c))))
-      (parameterize ((%graft? #f))
-        (package-derivation store package system #:graft? #f)
-
-        ;; If there's a replacement, make sure we can compute its
-        ;; derivation.
-        (match (package-replacement package)
-          (#f #t)
-          (replacement
-           (package-derivation store replacement system
-                               #:graft? #f))))))
-
-  (define (check-with-store store)
-    (filter lint-warning?
-            (map (cut try store <>) (package-supported-systems package))))
-
-  ;; For backwards compatability, don't rely on store being set
-  (or (and=> store check-with-store)
-      (with-store store
-        (check-with-store store))))
-
 (define* (check-profile-collisions package #:key store)
   "Check for collisions that would occur when installing PACKAGE as a result
 of the propagated inputs it pulls in."
@@ -1843,13 +1795,88 @@ (define (check-formatting package)
                                        (G_ "source file not found"))))))))
         '())))
 
+(define (make-check-derivation-for-system system)
+  (define (try package proc)
+    (guard (c ((store-protocol-error? c)
+               (make-warning package
+                             (G_ "failed to create ~a derivation: ~a")
+                             (list system
+                                   (store-protocol-error-message c))))
+              ((exception-with-kind-and-args? c)
+               (make-warning package
+                             (G_ "failed to create ~a derivation: ~s")
+                             (list system
+                                   (cons (exception-kind c)
+                                         (exception-args c)))))
+              ((message-condition? c)
+               (make-warning package
+                             (G_ "failed to create ~a derivation: ~a")
+                             (list system
+                                   (condition-message c))))
+              ((formatted-message? c)
+               (let ((str (apply format #f
+                                 (formatted-message-string c)
+                                 (formatted-message-arguments c))))
+                 (make-warning package
+                               (G_ "failed to create ~a derivation: ~a")
+                               (list system str))))
+              (else
+               (make-warning package
+                             (G_ "failed to create ~a derivation: ~a")
+                             (list system c))))
+      (proc)))
+
+
+
+  (lambda* (package #:key store)
+    "Emit a warning if we fail to compile PACKAGE to a derivation."
+
+    (define (check-with-store store)
+      (if (member system (package-supported-systems package))
+          (filter
+           lint-warning?
+           (map (cut try package <>)
+                (list
+                 (lambda ()
+                   (parameterize ((%graft? #f))
+                     (package-derivation store package system #:graft? #f)))
+                 (lambda ()
+                   ;; If there's a replacement, make sure we can compute its
+                   ;; derivation.
+                   (match (package-replacement package)
+                     (#f #t)
+                     (replacement
+                      (parameterize ((%graft? #f))
+                        (package-derivation store replacement system
+                                            #:graft? #f))))))))
+          '()))
+
+    ;; For backwards compatability, don't rely on store being set
+    (or (and=> store check-with-store)
+        (with-store store
+          (check-with-store store)))))
+
 
 ;;;
 ;;; List of checkers.
 ;;;
 
+(define %derivation-checkers
+  (map (lambda (system)
+         (lint-checker
+          (name (string->symbol
+                 (simple-format #f "derivation/~A" system)))
+          (description
+           (simple-format
+            #f
+            "Report failure to compile a package to a derivation for ~A"
+            system))
+          (check (make-check-derivation-for-system system))
+          (requires-store? #t)))
+       (systems)))
+
 (define %local-checkers
-  (list
+  (cons*
    (lint-checker
      (name        'name)
      (description "Validate package names")
@@ -1901,11 +1928,6 @@ (define %local-checkers
      (name        'source-unstable-tarball)
      (description "Check for autogenerated tarballs")
      (check       check-source-unstable-tarball))
-   (lint-checker
-     (name            'derivation)
-     (description     "Report failure to compile a package to a derivation")
-     (check           check-derivation)
-     (requires-store? #t))
    (lint-checker
      (name            'profile-collisions)
      (description     "Report collisions that would occur due to propagated inputs")
@@ -1922,7 +1944,8 @@ (define %local-checkers
    (lint-checker
      (name        'formatting)
      (description "Look for formatting issues in the source")
-     (check       check-formatting))))
+     (check       check-formatting))
+   %derivation-checkers))
 
 (define %network-dependent-checkers
   (list
