This is what I have at the top of my ~/.emacs.d/init.el:
(require 'package)
(add-to-list 'package-archives
'("marmalade" . "http://marmalade-repo.org/packages/") t)
(package-initialize)
(when (not package-archive-contents)
(package-refresh-contents))
(defvar my-packages '(clojure-mode ...)) ; list of packages
(dolist (p my-packages)
(when (not (package-installed-p p))
(package-install p)))