refactor(web): Let //web/ derivations build static pages only
Removes nginx configuration built by the web targets (with the exception of the includable block used to set up redirects for old blog URLs).
This commit is contained in:
parent
2e95822712
commit
b5c50f4699
3 changed files with 14 additions and 93 deletions
|
@ -7,7 +7,7 @@
|
|||
with pkgs.nix.yants;
|
||||
|
||||
let
|
||||
inherit (builtins) filter;
|
||||
inherit (builtins) filter hasAttr map;
|
||||
|
||||
# Type definition for a single blog post.
|
||||
post = struct "blog-post" {
|
||||
|
@ -48,4 +48,12 @@ in {
|
|||
|
||||
# Only include listed posts
|
||||
posts = filter includePost posts;
|
||||
|
||||
# Generate embeddable nginx configuration for redirects from old post URLs
|
||||
oldRedirects = lib.concatStringsSep "\n" (map (post: ''
|
||||
location ~* ^(/en)?/${post.oldKey} {
|
||||
# TODO(tazjin): 301 once this works
|
||||
return 302 https://tazj.in/blog/${post.key};
|
||||
}
|
||||
'') (filter (hasAttr "oldKey") posts));
|
||||
}
|
||||
|
|
|
@ -65,12 +65,8 @@ let
|
|||
));
|
||||
|
||||
homepage = index ((map postToEntry web.blog.posts) ++ (import ./entries.nix));
|
||||
website = runCommandNoCC "website" {} ''
|
||||
mkdir $out
|
||||
cp ${homepage} $out/index.html
|
||||
cp -r ${./static} $out/static
|
||||
'';
|
||||
in third_party.callPackage ./nginx.nix {
|
||||
inherit website;
|
||||
blog = web.blog;
|
||||
}
|
||||
in runCommandNoCC "website" {} ''
|
||||
mkdir $out
|
||||
cp ${homepage} $out/index.html
|
||||
cp -r ${./static} $out/static
|
||||
''
|
||||
|
|
|
@ -1,83 +0,0 @@
|
|||
# This file creates an nginx server that serves the blog on port 8080.
|
||||
#
|
||||
# It's not intended to be the user-facing nginx.
|
||||
{
|
||||
# third_party attributes supplied by callPackage
|
||||
writeText, writeShellScriptBin, nginx, lib,
|
||||
|
||||
# website content
|
||||
blog, website
|
||||
}:
|
||||
|
||||
let
|
||||
inherit (builtins) hasAttr filter map;
|
||||
inherit (pkgs.third_party) ;
|
||||
|
||||
oldRedirects = lib.concatStringsSep "\n" (map (post: ''
|
||||
location ~* ^(/en)?/${post.oldKey} {
|
||||
# TODO(tazjin): 301 once this works
|
||||
return 302 https://tazj.in/blog/${post.key};
|
||||
}
|
||||
'') (filter (hasAttr "oldKey") blog.posts));
|
||||
|
||||
config = writeText "homepage-nginx.conf" ''
|
||||
daemon off;
|
||||
worker_processes 1;
|
||||
error_log stderr;
|
||||
pid /tmp/nginx-homepage.pid;
|
||||
|
||||
events {
|
||||
worker_connections 1024;
|
||||
}
|
||||
|
||||
http {
|
||||
include ${nginx}/conf/mime.types;
|
||||
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
|
||||
access_log off;
|
||||
|
||||
server {
|
||||
listen 8080 default_server;
|
||||
server_name tazj.in;
|
||||
root ${website};
|
||||
|
||||
${oldRedirects}
|
||||
|
||||
location ~* \.(webp|woff2)$ {
|
||||
add_header Cache-Control "public, max-age=31536000";
|
||||
}
|
||||
|
||||
location /blog {
|
||||
alias ${blog.rendered};
|
||||
|
||||
if ($request_uri ~ ^/(.*)\.html$) {
|
||||
return 302 /$1;
|
||||
}
|
||||
|
||||
try_files $uri $uri.html $uri/ =404;
|
||||
}
|
||||
}
|
||||
|
||||
server {
|
||||
listen 8080;
|
||||
server_name www.tazj.in;
|
||||
return 301 https://tazj.in$request_uri;
|
||||
}
|
||||
}
|
||||
'';
|
||||
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-homepage
|
||||
exec ${nginx}/bin/nginx -c ${config}
|
||||
''
|
Loading…
Reference in a new issue