about summary refs log tree commit diff
diff options
context:
space:
mode:
authorVincent Ambo <tazjin@google.com>2020-02-08T14·06+0000
committerVincent Ambo <tazjin@google.com>2020-02-08T14·06+0000
commit7935957938fb4bd73b557e42fa828b1470979777 (patch)
treee7289865c0b38851172a292897e8dd897a2ae672
parent8e9fb739582b5ed871522826ea145f4a9dac2777 (diff)
refactor(web): Move nginx setup to //web/homepage r/487
The homepage is going to be the landing page for all content, whether
it be blog posts or other stuff.
-rw-r--r--web/blog/default.nix9
-rw-r--r--web/homepage/default.nix15
-rw-r--r--web/homepage/nginx.nix (renamed from web/blog/nginx.nix)36
3 files changed, 41 insertions, 19 deletions
diff --git a/web/blog/default.nix b/web/blog/default.nix
index 1bc026bf2a..4fa97f2248 100644
--- a/web/blog/default.nix
+++ b/web/blog/default.nix
@@ -31,7 +31,7 @@ let
   posts = list post (import ./posts.nix);
   fragments = import ./fragments.nix args;
 
-  renderedBlog = pkgs.third_party.runCommandNoCC "tazjins-blog" {} ''
+  rendered = pkgs.third_party.runCommandNoCC "tazjins-blog" {} ''
     mkdir -p $out
 
     cp ${fragments.blogIndex posts} $out/index.html
@@ -40,6 +40,7 @@ let
       "cp ${fragments.renderPost post} $out/${post.key}.html"
     ) posts)}
   '';
-in import ./nginx.nix (args // {
-  inherit posts renderedBlog;
-})
+in {
+  inherit post posts rendered;
+  static = ./static;
+}
diff --git a/web/homepage/default.nix b/web/homepage/default.nix
new file mode 100644
index 0000000000..94dfaf3dc6
--- /dev/null
+++ b/web/homepage/default.nix
@@ -0,0 +1,15 @@
+# Assembles the website index and configures an nginx instance to
+# serve it.
+#
+# The website is made up of a simple header&footer and content
+# elements for things such as blog posts and projects.
+#
+# Content for the blog is in //web/blog instead of here.
+{ pkgs, lib, ... }:
+
+with pkgs;
+with nix.yants;
+
+third_party.callPackage ./nginx.nix {
+  blog = web.blog;
+}
diff --git a/web/blog/nginx.nix b/web/homepage/nginx.nix
index 7c600c38c0..90a13a1e98 100644
--- a/web/blog/nginx.nix
+++ b/web/homepage/nginx.nix
@@ -1,24 +1,30 @@
 # This file creates an nginx server that serves the blog on port 8080.
 #
 # It's not intended to be the user-facing nginx.
-{ pkgs, lib, posts, renderedBlog, ... }:
+{
+  # third_party attributes supplied by callPackage
+  writeText, writeShellScriptBin, nginx, lib,
+
+  # website content
+  blog
+}:
 
 let
   inherit (builtins) hasAttr filter map;
-  inherit (pkgs.third_party) writeText writeShellScriptBin nginx;
+  inherit (pkgs.third_party) ;
 
   oldRedirects = lib.concatStringsSep "\n" (map (post: ''
     location ~* ^(en)?/${post.oldKey} {
       # TODO(tazjin): 301 once this works
       return 302 /${post.key};
     }
-  '') (filter (hasAttr "oldKey") posts));
+  '') (filter (hasAttr "oldKey") blog.posts));
 
-  config = writeText "blog-nginx.conf" ''
+  config = writeText "homepage-nginx.conf" ''
     daemon off;
     worker_processes 1;
     error_log stderr;
-    pid /tmp/nginx-tazblog.pid;
+    pid /tmp/nginx-homepage.pid;
 
     events {
       worker_connections  1024;
@@ -26,11 +32,11 @@ let
 
     http {
       include ${nginx}/conf/mime.types;
-      fastcgi_temp_path /tmp/nginx-tazblog;
-      uwsgi_temp_path /tmp/nginx-tazblog;
-      scgi_temp_path /tmp/nginx-tazblog;
-      client_body_temp_path /tmp/nginx-tazblog;
-      proxy_temp_path /tmp/nginx-tazblog;
+      fastcgi_temp_path /tmp/nginx-homepage;
+      uwsgi_temp_path /tmp/nginx-homepage;
+      scgi_temp_path /tmp/nginx-homepage;
+      client_body_temp_path /tmp/nginx-homepage;
+      proxy_temp_path /tmp/nginx-homepage;
       sendfile on;
 
       # Logging is handled by the primary nginx server
@@ -38,10 +44,10 @@ let
 
       server {
         listen 8080 default_server;
-        root ${renderedBlog};
+        root ${blog.rendered};
 
         location /static {
-          alias ${./static}/;
+          alias ${blog.static}/;
         }
 
         ${oldRedirects}
@@ -56,13 +62,13 @@ let
       }
     }
   '';
-in writeShellScriptBin "tazblog" ''
+in writeShellScriptBin "homepage" ''
   if [[ -v CONTAINER_SETUP ]]; then
     cd /run
     echo 'nogroup:x:30000:nobody' >> /etc/group
     echo 'nobody:x:30000:30000:nobody:/tmp:/bin/bash' >> /etc/passwd
   fi
 
-  mkdir -p /tmp/nginx-tazblog
-  exec ${pkgs.third_party.nginx}/bin/nginx -c ${config}
+  mkdir -p /tmp/nginx-homepage
+  exec ${nginx}/bin/nginx -c ${config}
 ''