-
Notifications
You must be signed in to change notification settings - Fork 25
/
Copy pathsite.nix
80 lines (66 loc) · 1.67 KB
/
site.nix
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
{
inputs,
cell,
site,
}: let
inherit (inputs) nixpkgs;
inherit (cell) docslib styxlib;
l = nixpkgs.lib // builtins;
highlightSrc = inputs.self + /docs/highlight;
themes = l.reverseList site.loaded.themes;
pages =
if site ? pages
then styxlib.generation.pagesToList {inherit (site) pages;}
else [];
doc = nixpkgs.writeText "site.adoc" ''
////
File automatically generated, do not edit
////
= ${site.name or "Styx Site"} Documentation
:description: Site documentation
:toc: left
:toclevels: 3
:icons: font
:sectanchors:
:nofooter:
:experimental:
:source-highlighter: highlightjs
:highlightjsdir: highlight
:sectnums:
${
if pages != []
then docslib.pagesDoc pages
else ""
}
${
if themes != []
then docslib.themesDoc site.loaded.env themes
else ""
}
'';
in
nixpkgs.stdenv.mkDerivation rec {
name = "styx-docs";
unpackPhase = ":";
preferLocalBuild = true;
allowSubstitutes = false;
buildInputs = [nixpkgs.asciidoctor];
buildPhase = ''
mkdir build
asciidoctor ${doc} -o build/index.html
'';
installPhase = ''
mkdir $out
${styxlib.template.mapTemplate (
t:
l.optionalString (t.meta ? screenshot) ''
mkdir -p $(dirname "$out/${docslib.mkScreenshotPath t}")
cp ${t.meta.screenshot} "$out/${docslib.mkScreenshotPath t}"
''
)
themes}
cp build/index.html $out/
cp -r ${highlightSrc} $out/
cp ${nixpkgs.writeText "themes.adoc" (docslib.themesDoc site.loaded.env themes)} $out/themes-generated.adoc
'';
}