blob: 262be54c0ef164b94a1f669f148fc8795c9cf062 (
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
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
|
{ depot, lib, pkgs, ... }:
with depot.nix.yants;
let
inherit (builtins) filter;
inherit (pkgs) graphviz runCommandNoCC writeText;
inherit (depot.web) atom-feed blog tvl;
listPosts = defun [ (list blog.post) string ] (posts:
lib.concatStringsSep "\n" (map (p: "* [${p.title}](blog/${p.key})") posts)
);
postRenderingCommands = defun [ (list blog.post) string ] (posts:
lib.concatStringsSep "\n"
(map (p: "cp ${blog.renderPost tvl.blog.config p} $out/blog/${p.key}.html") posts)
);
tvlGraph = runCommandNoCC "tvl.svg"
{
nativeBuildInputs = with pkgs; [ fontconfig freetype cairo jetbrains-mono ];
} ''
${graphviz}/bin/neato -Tsvg ${./tvl.dot} > $out
'';
publishedPosts = filter blog.includePost tvl.blog.posts;
feed = {
id = "https://tvl.fyi/";
title = "TVL blog";
subtitle = "Thoughts and news from The Virus Lounge";
authors = [ "tazjin" ]; # TODO(tazjin): Extract from post info
links = lib.singleton {
rel = "self";
href = "https://tvl.fyi/feed.atom";
};
entries = map (blog.toFeedEntry tvl.blog.config) publishedPosts;
};
atomFeed = writeText "feed.atom" (atom-feed.renderFeed feed);
homepage = tvl.template {
title = "The Virus Lounge";
content = ''
The Virus Lounge
================
----------------
<img class="tvl-logo" src="https://static.tvl.fyi/${depot.web.static.drvHash}/logo-animated.svg"
alt="Virus with lambda-shaped spike proteins sitting on an armchair">
Welcome to **The Virus Lounge**. We're a group of people who got
together in 2020, when we felt that there was not enough
spontaneous socialising on the internet.
Because of our shared interests in topics like **build systems**
and **monorepos** we started working on code together, in our
monorepo called the *depot*.
Feel free to explore the tech we have built so far, all our
systems are linked in the footer.
We mostly hang out on IRC. You can find us in [`#tvl`][tvl-irc]
on [hackint][], which is also reachable [via XMPP][hackint-xmpp]
at [`#tvl@irc.hackint.org`][tvl-xmpp] (sic!) and [via
Matrix][hackint-matrix] at [`#tvl:hackint.org`][tvl-matrix].
Hackint also provide a [web chat][tvl-webchat].
[tvl-irc]: ircs://irc.hackint.org:6697/#tvl
[hackint]: https://hackint.org/
[hackint-xmpp]: https://hackint.org/transport/xmpp
[tvl-xmpp]: xmpp:#tvl@irc.hackint.org?join
[hackint-matrix]: https://hackint.org/transport/matrix
[tvl-matrix]: https://matrix.to/#/#tvl:hackint.org
[tvl-webchat]: https://webirc.hackint.org/#ircs://irc.hackint.org/#tvl
----------------
## Blog
Here are the most recent TVL blog posts.
${listPosts publishedPosts}
You can also follow our [atom feed](https://tvl.fyi/feed.atom).
----------------
## Where did all these people come from?
It's pretty straightforward. Feel free to click on people, too.
<div class="tvl-graph-container">
<!--
cheddar leaves HTML inside of HTML alone,
so wrapping the SVG prevents it from messing it up
-->
${builtins.readFile tvlGraph}
</div>
'';
extraHead = ''
<style>
.tvl-graph-container {
max-width: inherit;
}
.tvl-graph-container svg {
max-width: inherit;
height: auto;
}
.tvl-logo {
width: 60%;
display: block;
margin-left: auto;
margin-right: auto;
}
</style>
'';
};
in
runCommandNoCC "website" { } ''
mkdir -p $out/blog
cp ${homepage} $out/index.html
${postRenderingCommands tvl.blog.posts}
cp ${atomFeed} $out/feed.atom
''
|