nixstix

nixstix is a small static site generator written in Nix.

It is intentionally narrow:

The project is not trying to become a blog engine, CMS, plugin platform, or JavaScript framework. It is a thin Nix-first tool for producing plain static HTML.

Architecture

The stable shape is:

The core model stays explicit:

  1. Nix AST
  2. Renderer
  3. Static files in $out

Stable Authoring Surface

This pass treats the following DSL functions as the baseline author-facing API:

Example:

{ dsl, markdown }:

dsl.page {
  title = "Docs";
  route = "docs/index.html";
  head = [ (dsl.stylesheet "/assets/site.css") ];
  body = [
    (dsl.el "main" { class = "page-shell"; } [
      (dsl.el "h1" {} [ (dsl.text "Docs") ])
      (dsl.markdown (markdown.fromFile ../README.md))
    ])
  ];
}

What Ships Today

Commands

Build the default site:

nix build .#default

Build the README-focused site:

nix build .#readme

Build the HTML experiment:

nix build .#htmlexp

Run validation:

nix flake check

Open a development shell:

nix develop

Validation Expectations

Now that Nix is part of the working environment, changes should be validated with real Nix commands instead of static inspection alone.

At minimum:

The checks are deliberately lightweight. They verify that:

Non-goals

nixstix is explicitly not doing the following in this product boundary:

Notes