From cf9dbf377a9abefe37af5b6e4b242c4b6a2cf849 Mon Sep 17 00:00:00 2001 From: ltadeu6 Date: Sun, 24 May 2026 15:22:30 -0300 Subject: [PATCH] NixOracle: add personal site on tadix.dev Static HTML/CSS served by nginx with Let's Encrypt. Includes about, projects and writing sections (placeholders) and contact links. Co-Authored-By: Claude Sonnet 4.6 --- hosts/NixOracle/configuration.nix | 10 ++++ hosts/NixOracle/site/index.html | 40 ++++++++++++++++ hosts/NixOracle/site/style.css | 78 +++++++++++++++++++++++++++++++ 3 files changed, 128 insertions(+) create mode 100644 hosts/NixOracle/site/index.html create mode 100644 hosts/NixOracle/site/style.css diff --git a/hosts/NixOracle/configuration.nix b/hosts/NixOracle/configuration.nix index 16abee1..bd659af 100644 --- a/hosts/NixOracle/configuration.nix +++ b/hosts/NixOracle/configuration.nix @@ -18,6 +18,11 @@ let numpy pandas ]); + site = pkgs.runCommand "tadix-site" { } '' + mkdir -p $out + cp ${./site/index.html} $out/index.html + cp ${./site/style.css} $out/style.css + ''; in { imports = [ ./hardware-configuration.nix @@ -78,6 +83,11 @@ in { services.nginx = { enable = true; + virtualHosts."tadix.dev" = { + enableACME = true; + forceSSL = true; + root = "${site}"; + }; virtualHosts."jupyter.tadix.dev" = { enableACME = true; forceSSL = true; diff --git a/hosts/NixOracle/site/index.html b/hosts/NixOracle/site/index.html new file mode 100644 index 0000000..1f8631f --- /dev/null +++ b/hosts/NixOracle/site/index.html @@ -0,0 +1,40 @@ + + + + + + Lucas Tadeu + + + +
+

Lucas Tadeu

+

tadeu(1) — personal page

+
+ +
+ +
+

ABOUT

+

Software developer. Interested in systems, automation, and open source.

+
+ +
+

PROJECTS

+

— nothing here yet —

+
+ +
+

WRITING

+

— nothing here yet —

+
+ +
+ + + + diff --git a/hosts/NixOracle/site/style.css b/hosts/NixOracle/site/style.css new file mode 100644 index 0000000..67f3f5b --- /dev/null +++ b/hosts/NixOracle/site/style.css @@ -0,0 +1,78 @@ +:root { + --bg: #0f0f0f; + --fg: #d4d4d4; + --dim: #555; + --accent: #7aa2f7; + --border: #2a2a2a; +} + +* { + box-sizing: border-box; + margin: 0; + padding: 0; +} + +body { + background: var(--bg); + color: var(--fg); + font-family: 'Courier New', Courier, monospace; + font-size: 14px; + line-height: 1.7; + max-width: 60ch; + margin: 5rem auto; + padding: 0 1.5rem; +} + +h1 { + font-size: 1em; + font-weight: bold; + letter-spacing: 0.05em; +} + +h2 { + font-size: 0.85em; + font-weight: normal; + letter-spacing: 0.12em; + color: var(--dim); + margin-bottom: 0.6rem; +} + +hr { + border: none; + border-top: 1px solid var(--border); + margin: 2rem 0; +} + +section { + margin-bottom: 2rem; +} + +p { + margin-bottom: 0.4rem; +} + +.dim { + color: var(--dim); +} + +a { + color: var(--accent); + text-decoration: none; +} + +a:hover { + text-decoration: underline; +} + +footer { + display: flex; + gap: 2rem; +} + +footer a { + color: var(--dim); +} + +footer a::before { + content: '→ '; +}