This repository has no description
8.2 kB
182 lines
1<!doctype html>
2<html lang="en">
3 <head>
4 <meta charset="utf-8" />
5 <meta name="viewport" content="width=device-width, initial-scale=1" />
6 <title>lassulus</title>
7 <meta
8 name="description"
9 content="lassulus - freelance NixOS & infrastructure consultant in Berlin. nixpkgs contributor, clan core developer, krebs & c-base member. Available for hire."
10 />
11 <link rel="canonical" href="https://lassul.us/" />
12 <script type="application/ld+json">
13 {
14 "@context": "https://schema.org",
15 "@type": "Person",
16 "name": "lassulus",
17 "url": "https://lassul.us",
18 "jobTitle": "NixOS & infrastructure consultant",
19 "address": {
20 "@type": "PostalAddress",
21 "addressLocality": "Berlin",
22 "addressCountry": "DE"
23 },
24 "memberOf": {
25 "@type": "OrganizationRole",
26 "roleName": "Treasurer",
27 "memberOf": {
28 "@type": "Organization",
29 "name": "NixOS Foundation",
30 "url": "https://nixos.org"
31 }
32 },
33 "sameAs": [
34 "https://github.com/lassulus",
35 "https://matrix.to/#/@lassulus:lassul.us"
36 ]
37 }
38 </script>
39 <!--
40 Font: "Web437 IBM VGA 8x16" from The Ultimate Oldschool PC Font Pack
41 (int10h.org/oldschool-pc-fonts), CC BY-SA 4.0. Inlined at build time.
42 Its metrics are exact: advance = 0.5em, line height = 1em, so the
43 80-column art is 40em wide and font-size: calc(100cqw / 40) makes it
44 fill the viewport width with no JS.
45 -->
46 <style>
47 @font-face {
48 font-family: "Web437 IBM VGA 8x16";
49 src: url("data:font/woff;base64,@font_woff_b64@") format("woff");
50 }
51 :root {
52 color-scheme: dark light;
53 --bg: #000;
54 --fg: #ccc;
55 --art: #ddd;
56 --str: #7c7;
57 --bool: #c96;
58 --cmt: #888;
59 }
60 @media (prefers-color-scheme: light) {
61 :root {
62 --bg: #f2efe6; /* paper terminal */
63 --fg: #333;
64 --art: #222;
65 --str: #171;
66 --bool: #941;
67 --cmt: #777;
68 }
69 }
70 html {
71 background: var(--bg);
72 overflow-x: hidden; /* guard against sub-pixel rounding */
73 }
74 body {
75 margin: 0;
76 color: var(--fg);
77 container-type: inline-size;
78 font-family: "Web437 IBM VGA 8x16", monospace;
79 }
80 pre {
81 margin: 0;
82 font-family:
83 "Web437 IBM VGA 8x16", monospace; /* UA pre{monospace} beats inheritance */
84 padding-bottom: 1em;
85 font-size: calc(100vw / 40); /* fallback: browsers without cq units */
86 font-size: calc(100cqw / 40); /* 80 cols x 0.5em, scrollbar excluded */
87 line-height: 1; /* VGA cell: 8x16 */
88 }
89 .art {
90 color: var(--art);
91 }
92 .s {
93 color: var(--str);
94 }
95 .b {
96 color: var(--bool);
97 }
98 .c {
99 color: var(--cmt);
100 }
101 a {
102 color: inherit;
103 text-decoration: underline dotted;
104 }
105 a:hover,
106 a:focus {
107 background: var(--str);
108 color: var(--bg);
109 text-decoration: none;
110 }
111 .cursor {
112 background: var(--fg);
113 animation: blink 1.2s steps(1) infinite;
114 }
115 @keyframes blink {
116 50% {
117 background: transparent;
118 }
119 }
120 </style>
121 </head>
122 <body>
123 <pre><span class="art"> ▀███▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀ ▄██
124 █▒▒█ ▄██████ ██████▄ ██████▄ ████ ████ █▒▒█ ████ ████ ██████▄
125 █▒▒█ ▄████▒▒▒█ █▒▒▒████▄ █▒▒▒████▄ █▒▒█ █▒▒█ █▒▒█ █▒▒█ █▒▒█ █▒▒▒████▄
126 █▒▒█ █▒▒█ █▒▒█▄▄▄▄▄ █▒▒█▄▄▄▄▄ █▒▒█ █▒▒█ █▒▒█ █▒▒█ █▒▒█ █▒▒█▄▄▄▄▄
127 █▒▒█ █████▒▒▒█ █▒▒▒▒▒▒▒█ █▒▒▒▒▒▒▒█ █▒▒█ █▒▒█ █▒▒█ █▒▒█ █▒▒█ █▒▒▒▒▒▒▒█
128 █░░█ █░░░█░░░█ ▀▀▀▀▀█░░█ ▀▀▀▀▀█░░█ █░░█ █░░█ █░░█ █░░█ █░░█ ▀▀▀▀▀█░░█
129 █░░░███ █░░█▄█░░█ ▀████░░░█ ▀████░░░█ █░░░█░░░█ █░░░███ █░░░█░░░█ ▀████░░░█
130 ███████ ███████▀ ▀██████ ▀██████ ███████▀ ███████ ███████▀ ▀████░█
131 ▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄██
132 ▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀███████████
133
134┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼</span>
135
136{
137 name = <span class="s">"lassulus"</span>;
138 location = <span class="s">"berlin"</span>;
139 skills = [
140 <a class="s" href="https://nixos.org">"nixos"</a>
141 <a class="s" href="https://github.com/Lassulus/superconfig">"infrastructure"</a>
142 <a class="s" href="https://github.com/lassulus">"programming"</a>
143 ];
144 crews = [
145 <a class="s" href="https://nixos.org/blog/announcements/2025/foundation-board-2025/">"NixOS Foundation (treasurer)"</a>
146 <a class="s" href="https://krebsco.de">"krebs"</a>
147 <a class="s" href="https://c-base.org">"c-base"</a>
148 ];
149 services = [
150 <span class="s">"nix/nixos consulting"</span>
151 <span class="s">"fleet deployments"</span>
152 <span class="s">"self-hosted infra: mail, matrix, dns, vpn, ci"</span>
153 ];
154 projects = {
155 nixpkgs = <a class="s" href="https://github.com/NixOS/nixpkgs/commits?author=Lassulus">"contributor & maintainer"</a>;
156 clan = <a class="s" href="https://clan.lol">"clan.lol"</a>;
157 disko = <a class="s" href="https://github.com/nix-community/disko">"declarative disk partitioning"</a>; <a class="c" href="https://www.youtube.com/watch?v=bKx7V917b2Q"># video</a>
158 nixos-anywhere = <a class="s" href="https://github.com/nix-community/nixos-anywhere">"install nixos over ssh"</a>; <a class="c" href="https://www.youtube.com/watch?v=4sypfTBuEbA"># video</a>
159 nix-writers = <a class="s" href="https://github.com/NixOS/nixpkgs/tree/master/pkgs/build-support/writers">"scripts in any language (pkgs.writers)"</a>; <a class="c" href="https://www.youtube.com/watch?v=qRE6kf30u4g"># video</a>
160 wrappers = <a class="s" href="https://github.com/Lassulus/wrappers">"wrapped executables via modules"</a>; <a class="c" href="https://www.youtube.com/watch?v=Zzvn9uYjQJY"># video</a>
161 thisWebsite = <a class="s" href="https://github.com/Lassulus/superconfig/tree/master/configs/websites/lassul.us">"self-hosted with nix"</a>;
162 };
163 github = <a class="s" href="https://github.com/lassulus">"https://github.com/lassulus"</a>;
164 matrix = <a class="s" href="https://matrix.to/#/@lassulus:lassul.us">"@lassulus:lassul.us"</a>;
165 email = <a href="#" id="email">x: x.click_to_uncover</a>;
166 availableForHire = <span class="b">true</span>;
167}<span class="cursor"> </span></pre>
168 <script>
169 document.getElementById("email").addEventListener(
170 "click",
171 function (e) {
172 e.preventDefault();
173 var addr = ["consulting", "lassul.us"].join("@");
174 this.textContent = '"' + addr + '"';
175 this.classList.add("s");
176 this.href = "mailto:" + addr;
177 },
178 { once: true },
179 );
180 </script>
181 </body>
182</html>