diff --git a/pkgs/plt-services/meta/pkg-index/official/static/index.html b/pkgs/plt-services/meta/pkg-index/official/static/index.html
index 75adccc961..b6458b1a4a 100644
--- a/pkgs/plt-services/meta/pkg-index/official/static/index.html
+++ b/pkgs/plt-services/meta/pkg-index/official/static/index.html
@@ -10,6 +10,8 @@
+
Packages
diff --git a/pkgs/plt-services/meta/pkg-index/official/static/logo.png b/pkgs/plt-services/meta/pkg-index/official/static/logo.png
new file mode 100644
index 0000000000..4e53f00444
Binary files /dev/null and b/pkgs/plt-services/meta/pkg-index/official/static/logo.png differ
diff --git a/pkgs/plt-services/meta/pkg-index/official/static/style.css b/pkgs/plt-services/meta/pkg-index/official/static/style.css
index 2d5202d853..0fc1c600d5 100644
--- a/pkgs/plt-services/meta/pkg-index/official/static/style.css
+++ b/pkgs/plt-services/meta/pkg-index/official/static/style.css
@@ -154,3 +154,52 @@ a.possible {
tr#pi_delete_row td {
text-align: center;
}
+
+/* racket nav */
+.racketnav {
+ background-color: #000000;
+ color: #ffffff;
+ margin-bottom: 1em;
+ padding: 0.5em 0em;
+ white-space: nowrap;
+}
+.racketnav a {
+ color: #ffffff;
+ text-decoration: none;
+}
+.racketnav .navcontent {
+ margin-left: auto;
+ margin-right: auto;
+ width: 45em;
+ font-family: Optima, Arial, Verdana, Helvetica, sans-serif;
+}
+.racketnav .navtitle {
+ font-size: xx-large;
+ font-weight: bold;
+}
+.racketnav .navitem {
+ text-decoration: none;
+ font-size: 88%;
+}
+.racketnav .navlink a {
+ padding: 0em 1em;
+}
+.racketnav .navcurlink a {
+ padding: 0em 1em;
+ background-color: #555555;
+}
+.racketnav .navlink a:hover,
+.racketnav .navcurlink a:hover {
+ background-color: #888888;
+}
+.racketnav .navlinkcell {
+ text-align: center;
+}
+.racketnav .helpiconcell {
+ text-align: right;
+ vertical-align: top;
+}
+.racketnav .helpicon {
+ font-weight: bold;
+ font-size: 88%;
+}
diff --git a/pkgs/plt-services/meta/web/all.rkt b/pkgs/plt-services/meta/web/all.rkt
index 8b50d015d8..f57fe7b58a 100644
--- a/pkgs/plt-services/meta/web/all.rkt
+++ b/pkgs/plt-services/meta/web/all.rkt
@@ -1,5 +1,5 @@
#lang meta/web
(require "www/all.rkt" "download/all.rkt" "minis/all.rkt" "stubs/all.rkt")
-(set-navbar! (list main download documentation planet community learning)
+(set-navbar! (list main download documentation packages community learning)
main help)
diff --git a/pkgs/plt-services/meta/web/config.rkt b/pkgs/plt-services/meta/web/config.rkt
index 5ce7108694..6150542b61 100644
--- a/pkgs/plt-services/meta/web/config.rkt
+++ b/pkgs/plt-services/meta/web/config.rkt
@@ -10,6 +10,7 @@
;; stubs usually use absolute paths for resources, since they're
;; templates that often get used in sub-dir pages too
("stubs/planet" "http://planet.racket-lang.org/" abs)
+ ("stubs/packages""http://pkgs.racket-lang.org/" abs)
("stubs/pre" "http://pre.racket-lang.org/" abs)
("stubs/git" "http://git.racket-lang.org/" abs)
("stubs/blog" "http://blog.racket-lang.org/" abs)
diff --git a/pkgs/plt-services/meta/web/stubs/all.rkt b/pkgs/plt-services/meta/web/stubs/all.rkt
index ee25c0ca8c..3d4320d2ad 100644
--- a/pkgs/plt-services/meta/web/stubs/all.rkt
+++ b/pkgs/plt-services/meta/web/stubs/all.rkt
@@ -1,9 +1,10 @@
#lang racket/base
-(provide documentation planet)
+(provide documentation planet packages)
(require "docs.rkt" ; for the doc tweaking script
- "planet.rkt" "blog.rkt" ; these need to be copied to the service
+ ;; these need to be copied to the service
+ "packages.rkt" "planet.rkt" "blog.rkt"
"pre.rkt" "git.rkt" ; / these are used on the
"mailman.rkt" "dirlist.rkt" ; \ server directly
"wiki.rkt")
diff --git a/pkgs/plt-services/meta/web/stubs/packages.rkt b/pkgs/plt-services/meta/web/stubs/packages.rkt
new file mode 100644
index 0000000000..e95f816734
--- /dev/null
+++ b/pkgs/plt-services/meta/web/stubs/packages.rkt
@@ -0,0 +1,17 @@
+#lang meta/web
+
+(define-context "stubs/packages")
+
+(provide packages)
+(define packages
+ @page[#:file "" #:link-title "Packages" #:window-title "{{{TITLE}}}"
+ #:extra-headers "{{{HEAD}}}"]{
+ @; This is a stub page to get the header for planet
+ {{{BODY}}}})
+
+(define readme
+ @plain[#:file "README"]{
+ This directory contains files that are placed here automatically by
+ the web build process. The HTML file contains holes to be filled in
+ for the title, header, and body, and the other files are resources
+ that are used by the template.})