summaryrefslogtreecommitdiff
path: root/host/software/server/website.nix
diff options
context:
space:
mode:
authorAdrian Kummerlaender2018-09-28 13:34:43 +0200
committerAdrian Kummerlaender2018-09-28 13:34:43 +0200
commit7931784b3a77e46542d7692a914b89fd294247b2 (patch)
treefbbdd2ef1c91bc843db111fc591c4a8486963186 /host/software/server/website.nix
parent654548a491c8558f7643b853752654db4b6e9cc3 (diff)
downloadnixos_system-7931784b3a77e46542d7692a914b89fd294247b2.tar
nixos_system-7931784b3a77e46542d7692a914b89fd294247b2.tar.gz
nixos_system-7931784b3a77e46542d7692a914b89fd294247b2.tar.bz2
nixos_system-7931784b3a77e46542d7692a914b89fd294247b2.tar.lz
nixos_system-7931784b3a77e46542d7692a914b89fd294247b2.tar.xz
nixos_system-7931784b3a77e46542d7692a914b89fd294247b2.tar.zst
nixos_system-7931784b3a77e46542d7692a914b89fd294247b2.zip
Decouple static site generation from system config
Updating various hashes and regenerating the whole system config for each content update doesn't feel quite right. Instead nginx now serves Nix store links placed in the home directory of a separte `public` user.This user maintains local clones of page source repositories and generates them using their respective Nix expressions. This allows for greater flexibility while maintaining most of the benefits of declarative configuration. Re-building static site derivations may also be automated using e.g. post-receive hooks.
Diffstat (limited to 'host/software/server/website.nix')
-rw-r--r--host/software/server/website.nix29
1 files changed, 29 insertions, 0 deletions
diff --git a/host/software/server/website.nix b/host/software/server/website.nix
new file mode 100644
index 0000000..d518d3a
--- /dev/null
+++ b/host/software/server/website.nix
@@ -0,0 +1,29 @@
+{ pkgs, ... }:
+
+{
+ users.extraUsers.public = {
+ isNormalUser = true;
+ uid = 2000;
+ shell = pkgs.fish;
+ home = "/home/public";
+ };
+
+ # `public` generates websites using their custom derivations via `nix-build`
+ services.nginx.virtualHosts = let
+ default = locations: {
+ inherit locations;
+ addSSL = true;
+ enableACME = true;
+ };
+ website = sub: default {
+ "/".root = "/home/public/${sub}/result";
+ };
+ in {
+ "blog.kummerlaender.eu" = website "blog";
+ "tree.kummerlaender.eu" = website "tree";
+ "pkgs.kummerlaender.eu" = default {
+ "/".root = "/home/public/pkgs/result";
+ "/nixexprs.tar.gz".proxyPass = "http://localhost:3000/adrian/pkgs/archive/master.tar.gz";
+ };
+ };
+}