diff --git a/guix/packages.scm b/guix/packages.scm
index 384db6d362f66cac6726fbf901759c5c6527a79b..e65877df5898567acb52bf446a4162c068535253 100644
--- a/guix/packages.scm
+++ b/guix/packages.scm
@@ -1,5 +1,5 @@
 ;;; GNU Guix --- Functional package management for GNU
-;;; Copyright © 2012 Ludovic Courtès <ludo@gnu.org>
+;;; Copyright © 2012, 2013 Ludovic Courtès <ludo@gnu.org>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -93,9 +93,12 @@ (define-syntax base32
     (syntax-case s ()
       ((_ str)
        (string? (syntax->datum #'str))
+       ;; A literal string: do the conversion at expansion time.
        (with-syntax ((bv (nix-base32-string->bytevector
                           (syntax->datum #'str))))
-         #''bv)))))
+         #''bv))
+      ((_ str)
+       #'(nix-base32-string->bytevector str)))))
 
 ;; A package.