diff --git a/flake.nix b/flake.nix index a4375372..840653fd 100644 --- a/flake.nix +++ b/flake.nix @@ -116,7 +116,7 @@ ... }: let - docsAttrs = import ./nix/docs.nix { + docsAttrs = import ./nix/docs { inherit pkgs self; inherit (nixpkgs) lib; inherit (nixpkgs.lib) nixosSystem; @@ -349,7 +349,7 @@ # frontend deps. CI fails fast if a module change breaks # option declarations or the doc rendering. Reuses the # `packages..docs` derivation so the per-system eval - # of `nix/docs.nix` happens once. + # of `nix/docs/default.nix` happens once. inherit (self.packages.${system}) docs; } ); diff --git a/nix/docs.nix b/nix/docs/default.nix similarity index 78% rename from nix/docs.nix rename to nix/docs/default.nix index b5baefc5..55b33c7a 100644 --- a/nix/docs.nix +++ b/nix/docs/default.nix @@ -137,95 +137,19 @@ let echo "# ${title}" echo echo "" echo cat ${doc.optionsCommonMark} } > $out ''; - # Single self-contained stylesheet. Inlined into every page so the - # bundle doesn't depend on a second HTTP fetch — keeps the + # Inline-stylesheet, loaded as plain text from `./style.css` so it's + # editable with normal CSS tooling (#625). Inlined into every page + # so the bundle doesn't depend on a second HTTP fetch — keeps the # `/options/` mount trivial for nginx (no MIME guessing for separate # .css files, no cache-busting needed when this updates). - styleCSS = '' - :root { - color-scheme: light dark; - --fg: #1a1a1a; - --bg: #fafafa; - --muted: #6b6b6b; - --accent: #5e548e; - --code-bg: rgba(94, 84, 142, 0.08); - --rule: rgba(94, 84, 142, 0.2); - } - @media (prefers-color-scheme: dark) { - :root { - --fg: #e6e6e6; - --bg: #0d0d0d; - --muted: #9b9b9b; - --accent: #c4a7e7; - --code-bg: rgba(196, 167, 231, 0.08); - --rule: rgba(196, 167, 231, 0.2); - } - } - * { box-sizing: border-box; } - body { - font-family: system-ui, -apple-system, "Segoe UI", Roboto, sans-serif; - max-width: 56rem; - margin: 0 auto; - padding: 2rem 1.25rem 4rem; - color: var(--fg); - background: var(--bg); - line-height: 1.55; - } - nav { - margin-bottom: 2rem; - padding-bottom: 1rem; - border-bottom: 1px solid var(--rule); - font-size: 0.9rem; - color: var(--muted); - } - nav a { color: var(--accent); text-decoration: none; } - nav a:hover { text-decoration: underline; } - nav a + a { margin-left: 0.5rem; } - nav a + a::before { content: "· "; color: var(--muted); margin-right: 0.25rem; } - h1, h2, h3 { color: var(--accent); line-height: 1.25; } - h1 { font-size: 1.75rem; margin-top: 0; } - h2 { - font-size: 1.15rem; - margin-top: 2.5rem; - padding-top: 0.5rem; - border-top: 1px solid var(--rule); - font-family: ui-monospace, "SFMono-Regular", Menlo, monospace; - } - h3 { font-size: 1rem; } - p { margin: 0.75rem 0; } - code { - background: var(--code-bg); - padding: 0.1em 0.35em; - border-radius: 0.25em; - font-family: ui-monospace, "SFMono-Regular", Menlo, monospace; - font-size: 0.9em; - } - pre { - background: var(--code-bg); - padding: 0.85rem 1rem; - border-left: 2px solid var(--accent); - border-radius: 0 0.25rem 0.25rem 0; - overflow-x: auto; - line-height: 1.4; - } - pre code { background: transparent; padding: 0; } - a { color: var(--accent); } - em { color: var(--muted); font-style: normal; font-size: 0.9em; } - footer { - margin-top: 4rem; - padding-top: 1rem; - border-top: 1px solid var(--rule); - font-size: 0.85rem; - color: var(--muted); - } - ''; + styleCSS = builtins.readFile ./style.css; # HTML page: CommonMark → cmark-gfm → minimal template with inline # CSS + relative-only links. cmark-gfm rather than plain cmark so @@ -252,7 +176,7 @@ let echo '' echo '
' echo '

${title}

' - echo '

Auto-generated from the hyperhive flake. Source: nix/docs.nix.

' + echo '

Auto-generated from the hyperhive flake. Source: nix/docs/default.nix.

' cmark-gfm ${doc.optionsCommonMark} echo '
' echo '