Files
org-garden/README.org
Ignacio Ballesteros 01805dbf39 Add service infrastructure for long-running deployment
- Add configuration system (config/*.exs, OrgGarden.Config)
- Refactor supervision tree with DynamicSupervisor and Registry
- Add OrgGarden.Server for serve mode lifecycle management
- Add health check HTTP endpoints (Bandit/Plug on :9090)
- Add telemetry events for export and watcher operations
- Implement graceful shutdown with SIGTERM handling
- Add Mix Release support with overlay scripts
- Add NixOS module for systemd service deployment
- Update documentation with service usage
2026-02-21 20:38:47 +01:00

2.6 KiB

org-garden

An org-roam to static website publishing pipeline. Converts .org notes into a rendered site using Emacs/ox-hugo for export and Quartz 4 for site generation.

Usage

org-garden serve  <notes-dir>   # dev server with live reload
org-garden build  <notes-dir>   # production static build
org-garden export <notes-dir>   # org -> markdown only

Running with Nix (recommended)

nix run . -- serve <notes-dir>
nix run . -- build <notes-dir>

Running with Mix

mix deps.get
mix escript.build
./org_garden serve <notes-dir>

Requires QUARTZ_PATH to point to a Quartz install with node_modules for serve and build commands.

NixOS Service

A NixOS module is provided for running org-garden as a systemd service:

{
  inputs.org-garden.url = "github:ignacio.ballesteros/org-garden";

  outputs = { self, nixpkgs, org-garden }: {
    nixosConfigurations.myhost = nixpkgs.lib.nixosSystem {
      modules = [
        org-garden.nixosModules.default
        {
          services.org-garden = {
            enable = true;
            package = org-garden.packages.x86_64-linux.default;
            notesDir = /path/to/notes;
            port = 8080;
          };
        }
      ];
    };
  };
}

Health Checks

When running in serve mode, health endpoints are available on port 9090:

  • GET /health/live — liveness probe (always 200)
  • GET /health/ready — readiness probe (200 if all components ready)
  • GET /health — JSON status of all components

Environment Variables

Variable Default Description
QUARTZ_PATH (required for serve/build) Path to Quartz installation
NODE_PATH node Node.js executable
NOTES_DIR (cli arg) Source notes directory
OUTPUT_DIR . Output base directory
ZOTERO_URL http://localhost:23119 Zotero Better BibTeX URL
BIBTEX_FILE (none) Fallback BibTeX file
CITATION_MODE warn silent, warn, or strict
PORT 8080 HTTP server port
WS_PORT 3001 WebSocket hot reload port
HEALTH_PORT 9090 Health check endpoint port