diff --git a/machines/terebithia/default.nix b/machines/terebithia/default.nix index 8264763..abebc29 100644 --- a/machines/terebithia/default.nix +++ b/machines/terebithia/default.nix @@ -503,6 +503,12 @@ }; }; + atelier.services.traverse = { + enable = true; + domain = "traverse.dunkirk.sh"; + deploy.repository = "https://github.com/taciturnaxolotl/traverse"; + }; + atelier.services.herald = { enable = true; domain = "herald.dunkirk.sh"; diff --git a/modules/nixos/services/traverse.nix b/modules/nixos/services/traverse.nix new file mode 100644 index 0000000..d734669 --- /dev/null +++ b/modules/nixos/services/traverse.nix @@ -0,0 +1,31 @@ +# Traverse - Interactive code walkthrough diagram server +# +# Uses the mkService base to provide standardized: +# - Systemd service with git deployment +# - Caddy reverse proxy +# - Automatic SQLite backup with WAL checkpoint + +let + mkService = import ../../lib/mkService.nix; +in + +mkService { + name = "traverse"; + description = "Traverse code walkthrough diagram server"; + defaultPort = 4173; + runtime = "bun"; + entryPoint = "src/index.ts"; + + extraConfig = cfg: { + systemd.services.traverse.serviceConfig.Environment = [ + "TRAVERSE_MODE=server" + "TRAVERSE_PORT=${toString cfg.port}" + "TRAVERSE_DATA_DIR=${cfg.dataDir}/data" + "TRAVERSE_SHARE_URL=https://${cfg.domain}" + ]; + + atelier.services.traverse.data = { + sqlite = "${cfg.dataDir}/data/traverse.db"; + }; + }; +}