blob: 8688b693713075a7d8c1f9458d17bb0914ecd0fa (
plain) (
blame)
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
81
82
83
84
|
{ depot, pkgs, ... }:
let
inherit (depot.users.sterni.nix.html)
__findFile
esc
withDoctype
;
exampleDocument = withDoctype (<html> { lang = "en"; } [
(<head> {} [
(<meta> { charset = "utf-8"; } null)
(<title> {} "html.nix example document")
(<link> {
rel = "license";
href = "https://code.tvl.fyi/about/LICENSE";
type = "text/html";
} null)
(<style> {} (esc ''
hgroup h2 {
font-weight: normal;
}
dd {
margin: 0;
}
''))
])
(<body> {} [
(<main> {} [
(<hgroup> {} [
(<h1> {} (esc "html.nix"))
(<h2> {} [
(<em> {} "the")
(esc " most cursed HTML DSL ever!")
])
])
(<dl> {} [
(<dt> {} [
(esc "Q: Wait, it's all ")
(<a> {
href = "https://cl.tvl.fyi/q/hashtag:cursed";
} (esc "cursed"))
(esc " nix hacks?")
])
(<dd> {} (esc "A: Always has been. 🔫"))
(<dt> {} (esc "Q: Why does this work?"))
(<dd> {} [
(esc "Because nix ")
(<a> {
href = "https://github.com/NixOS/nix/blob/293220bed5a75efc963e33c183787e87e55e28d9/src/libexpr/parser.y#L410-L416";
} (esc "translates "))
(<a> {
href = "https://github.com/NixOS/nix/blob/293220bed5a75efc963e33c183787e87e55e28d9/src/libexpr/lexer.l#L100";
} (esc "SPATH tokens"))
(esc " like ")
(<code> {} (esc "<nixpkgs>"))
(esc " into calls to ")
(<code> {} (esc "__findFile"))
(esc " in the ")
(<em> {} (esc "current"))
(esc " scope.")
])
])
])
])
]);
in
pkgs.runCommandNoCC "html.nix.html" {
passAsFile = [ "exampleDocument" ];
inherit exampleDocument;
nativeBuildInputs = [ pkgs.html5validator ];
} ''
set -x
test "${esc "<> && \" \'"}" = "<> && " '"
# slow as hell unfortunately
html5validator "$exampleDocumentPath"
mv "$exampleDocumentPath" "$out"
set +x
''
|