nixstix is a small static site generator written in Nix.
It is intentionally narrow:
$outThe 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.
The stable shape is:
lib/dsl.nix — page and node constructorslib/render.nix — pure HTML renderinglib/site.nix — static file output builderlib/markdown.nix — markdown adapterlib/data.nix — JSON/TOML helperssrc/pages/ — page definitionssrc/content/ — markdown or other content inputsassets/ — copied static assetsThe core model stays explicit:
$outThis pass treats the following DSL functions as the baseline author-facing API:
textrawelattrsfragmentpagestylesheetscriptmarkdownExample:
{ 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))
])
];
}
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
Now that Nix is part of the working environment, changes should be validated with real Nix commands instead of static inspection alone.
At minimum:
nix build .#defaultnix build .#readmenix build .#htmlexpnix flake checkThe checks are deliberately lightweight. They verify that:
index.htmlnixstix is explicitly not doing the following in this product boundary:
src/legacy/.