From 1fa1dad73dec9774a6c833425d0730eeca7ee2b3 Mon Sep 17 00:00:00 2001 From: lew Date: Tue, 7 Apr 2026 16:44:29 +0100 Subject: [PATCH] feat: documents sites module, and adds penfield --- hosts/lab/sites.nix | 33 ++++++++++++++++++++++++++------- modules/site.nix | 4 ++-- 2 files changed, 28 insertions(+), 9 deletions(-) diff --git a/hosts/lab/sites.nix b/hosts/lab/sites.nix index 380a4ac..1e3aae3 100644 --- a/hosts/lab/sites.nix +++ b/hosts/lab/sites.nix @@ -1,6 +1,21 @@ +# services.site. options: +# +# domain — primary domain (required) +# repo — git repository URL (required) +# port — Node.js server port (required) +# redirectDomains — domains that 301 to the primary domain (default: []) +# branch — git branch to track (default: "main") +# packageManager — "npm" or "pnpm" (default: "pnpm") +# entryPoint — Node.js entry point relative to repo root (default: "dist/server/entry.mjs") +# environment — env vars for the running server (default: {}) +# buildEnvironment — env vars for building (default: {}) +# dataDir — base directory for repo and data (default: /srv/) +# readWritePaths — paths the server can write to at runtime (default: []) +# afterServices — systemd units to wait for before building (default: ["forgejo.service"]) + { ... }: let - websiteServiceDir = "/srv/website"; + websiteData = "/srv/website/data"; in { services.site.website = { @@ -9,15 +24,19 @@ in repo = "https://git.ily.rs/lew/website"; branch = "master"; port = 4322; - packageManager = "pnpm"; - dataDir = websiteServiceDir; environment = { - ASTRO_DB_REMOTE_URL = "file:${websiteServiceDir}/data/guestbook.db"; + ASTRO_DB_REMOTE_URL = "file:${websiteData}/guestbook.db"; }; buildEnvironment = { - ASTRO_DB_REMOTE_URL = "file:${websiteServiceDir}/data/guestbook.db"; + ASTRO_DB_REMOTE_URL = "file:${websiteData}/guestbook.db"; }; - readWritePaths = [ "${websiteServiceDir}/data" ]; - afterServices = [ "forgejo.service" ]; + readWritePaths = [ websiteData ]; + }; + + services.site.penfield = { + domain = "penfield2.ily.rs"; + redirectDomains = [ "penfield.wynne.rs" ]; + repo = "https://git.ily.rs/lew/penfield"; + port = 4324; }; } diff --git a/modules/site.nix b/modules/site.nix index 5ffb72f..5bf62a9 100644 --- a/modules/site.nix +++ b/modules/site.nix @@ -62,12 +62,12 @@ let readWritePaths = mkOption { type = types.listOf types.str; default = []; - description = "Extra paths the server can write to at runtime."; + description = "Paths the server can write to at runtime."; }; afterServices = mkOption { type = types.listOf types.str; - default = []; + default = [ "forgejo.service" ]; description = "Systemd units to wait for before building."; }; };