diff --git a/machines/fuuko/configuration.nix b/machines/fuuko/configuration.nix index 7b90137..3cf3b94 100644 --- a/machines/fuuko/configuration.nix +++ b/machines/fuuko/configuration.nix @@ -52,6 +52,13 @@ enableACME = true; forceSSL = true; }; + + virtualHosts."sbruder.de" = { + enableACME = true; + forceSSL = true; + + root = pkgs.sbruder.contact; + }; }; networking.firewall.allowedTCPPorts = [ 80 443 ]; systemd.services.nginx.serviceConfig.SupplementaryGroups = lib.singleton "keys"; diff --git a/pkgs/contact-page/default.nix b/pkgs/contact-page/default.nix new file mode 100644 index 0000000..2f0263d --- /dev/null +++ b/pkgs/contact-page/default.nix @@ -0,0 +1,17 @@ +{ lib, stdenvNoCC }: + +stdenvNoCC.mkDerivation { + name = "sbruder-contact"; + + src = ./src; + + dontBuild = true; + installPhase = '' + mkdir $out + cp * $out + ''; + + meta = with lib; { + license = licenses.mit; + }; +} diff --git a/pkgs/contact-page/src/index.html b/pkgs/contact-page/src/index.html new file mode 100644 index 0000000..f62cc4d --- /dev/null +++ b/pkgs/contact-page/src/index.html @@ -0,0 +1,45 @@ + + + + + + Simon Bruder: Contact + + + +
+

Simon Bruder

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Email(requires javascript)
Matrix(requires javascript)
GitHubsbruder
GitLabsbruder
Giteagit.sbruder.de
PGP47E7 559E 037A 3565 2DBB F8AA 8D3C 82F9 F309 F8EC
SSHpublic keys (dynamic)
+
+ + + diff --git a/pkgs/contact-page/src/main.js b/pkgs/contact-page/src/main.js new file mode 100644 index 0000000..ff77e9c --- /dev/null +++ b/pkgs/contact-page/src/main.js @@ -0,0 +1,18 @@ +(() => { + const givenName = document.getElementById('name').innerText.split(" ")[0].toLowerCase() + const domain = location.host + + if (domain !== "sbruder.de") { + return + } + + const mailAddress = givenName + '@' + domain + const mailEl = document.getElementById('email') + mailEl.innerText = mailAddress + mailEl.href = `mailto:${mailAddress}` + + const matrixAddress = '@' + givenName + ':' + domain + const matrixEl = document.getElementById('matrix') + matrixEl.innerText = matrixAddress + matrixEl.href = `https://matrix.to/#/${matrixAddress}` +})() diff --git a/pkgs/contact-page/src/pubkey.asc b/pkgs/contact-page/src/pubkey.asc new file mode 100644 index 0000000..d5aa897 --- /dev/null +++ b/pkgs/contact-page/src/pubkey.asc @@ -0,0 +1,52 @@ +-----BEGIN PGP PUBLIC KEY BLOCK----- + +mQINBF/lCz0BEADKOij3IA1IIiZc9c8rgxTUtrn4W1R8ncgsnFuXIDGD35dBB9e0 +wd5noQigoqts9N8ULHEV6J8AuBdl1IP2nAKAr6h3F+hrLjL5tZZCPpTN5fhxWguz +wt6aFZgcFwFmQfZHSInxO2XpcibyJAs5ZXW3cO+VYQdVxXLT6KOLKkqWCCGMlQSt +xNigzNbrjUcjrcGBcjNbFJs0P4BkVvD6+3xBerpT6zwAuFdBiUpZZk+XI1QCAuVF +6ld5A+x+pwvKoN/n040UAUAdLTne7oisNonLhSvZVrH2uH4dKkku/yi2glSkUwps +n+ffr0jD9VrdbxktcqQBE0WU2q7Eqe6EjSxURHI6uJ/wFh0QeYR8sT5mgPMt5O9T +T49Kz2uUdljuHW0eI37DJSUDcXWh0OtuENRFf7m0lvIIaaPpbPM4btS8j9lCFs9h +pJsQIQbNjV+UmIBvddDKGwcL+DHJFk0E2sqPYOwsebvbQLhVvPSPWWUVKrqMay9Y +Vd9KKy/KddESzM6c3TFmUbkEj1h4qWSZ0XX0vGL8LL68maaDHwO1nKuw/XfSpjAC +c+3wuqAgwFB+ihO/qWs8CB0z+wo+7NK9OUUVVucu2duUUjNknf6+v6fPedtziapp +SHVQQKWYvozxVa7XU+dnrU3ZUHzIrv6Fr6yTdGy6fw7pE3yPFIwbw9vsowARAQAB +tB9TaW1vbiBCcnVkZXIgPHNpbW9uQHNicnVkZXIuZGU+iQJSBBMBCgA8FiEER+dV +ngN6NWUtu/iqjTyC+fMJ+OwFAl/lCz0CGwMFCQeEzgAECwkIBwQVCgkIBRYCAwEA +Ah4BAheAAAoJEI08gvnzCfjsYFoP+weWMfiJ3mMeBeZBBcgp9NZTjrJoc2tKn/9s +RL4PL/3lwLRSEu6JS4LauAD6fW1d5QnNnUe4nIcvTO6RvJ7R/lDWg1KL+pdCfYtk +FiIesUkp+eW5Gqw5m6Bt1a9UjXdtHJuVGKQ/XjxC2914Ps6nhp5mY+NUm5zwZCBK +qbjiPjD17TeTCThEui3kwl0sgBhNX/eCPpJZtw3u7vzxpN24+sX8Ogo9r4nRtHKv +64vVggiT1Iu9JXm9KYlySFDZed9iVbgM2wKpylw1I0+F4VS8Jw/RDiIW61exKxAe +VuxPzbIGeJ0R8u0ZcvTiRbXr7op9barUDCQFn2K2oHXd8uCMUULinlO2pPYyshGh +znnZcZIvawqtWnImNnyTvKYe5Il9w2fmm6SzwRmcMvHBZ60eJC/PmnhpRcpBxyiG +mAWgFmmgMhc81wcPZFD0Mp91twMDHRchgfmBBlNdqMBt9nNJ2Mm7o52mVX/daMG4 +VCqLdvbW9mWkyQVjfBq30XabanzN8RST63LlZEwArQqFpH8OifNMHI22fW2xGvPq +09k6SLA9qbobGFw+OGKIaGHiVbFq5aeTkqHr0sgL8QBHUJWv+SE0q49GfDDvA4JE +iDsLW6RJuNFGTaBq/NzN3A7iT8tTcdClYc7MSQxsEyTpuU+BlC9ewNC4cV/PyJ8l +13yeMkdZuQINBF/lCz0BEADs+rV9/tDQ6hyJlgMEKA34LjV4OEBdpwnRS51juXYt +nJiRC22Ljs6FY3NivOQPUNJR4yLU7/FGCGgyXlsLEyMIqH5Lldq1iaTMY8FHSdc4 +e+BM4QYCiaYT05Jqeydorq0fZe0nIXobK7RqB4dG543JNzrttotQ94qpx/cFUy6i +ADxp216IyDFh0q10TKao/GB2gwkbOlRNuLYXXUMDON9i8VL0Yh7p0KhZuOl2vREm +9/IQDJJHFv4CbSTmdQ0de+k8rVgyiW05SdYq3vrqRmNuI9fbGTf3vw8bHljq1SiH +VoapbNJ8CnQCRzrsaX+pOlJwFVUUjxco7iyCHKFobfx+3ju5kwc+i/58nDiSkxMV +DPqfjFXnN+72EihfHiw56k1zIRhF9D9b8eq6aqGOIgTtjRujQUR9Rn5BJRZ87/pR +nlZsS3wE3nQxOo7fXKv9FU7TyEy6gu1LuK53dUk5xLlu4zMoIP8mc/mZchXqsksi +JSWPFDeXh9HLFhKyzintRxdXNp5xV5XaXsMlFkNiTBLUHLbU8Ln9tiLcuJZ29y3b +ynLtVo+GN4+G5b+koIoZ9065qSJ0coBPMUa6o7go2e1/oil+xKmtM3UHS+mMNa+4 +elSqSRdpv3Xgo5lLNP+e60FpN155/93Hq33UMvh8rS9KVaQgp0c1unP99ewY84ra +9QARAQABiQI8BBgBCgAmFiEER+dVngN6NWUtu/iqjTyC+fMJ+OwFAl/lCz0CGwwF +CQeEzgAACgkQjTyC+fMJ+OzfUBAAkVNY0chFGvzWHOxEKNJY9rW5EQrayrKPNhjr +3j9xHoD+1AO7Yinqgd8Ribw88l1+2lVQGHIpIQ2ZPDz/XGND5FvP5PrW71FcUJ/z +AKaEnYP4iZ1jgnjp280bJ2iHBMmHc5cs/7OwTCs1uos1kWhjLGA9M12OWDWN9iqB ++UJo5W8hs9c5LpYp7ByThQp+g0m3E/ZWSbfZqi0BqWX/X6QC1MMXYS1lZcg6qttF +rs6d9hquNHZO7PkI73Ph89DWdxMIirmmn4Iwv88w3jW1KJXiGJbp0N2yooZFtsq+ +Yd5SHexET9rtU49BfeggEcWuDWJCGvPqdqCfAH6lKe9ddXwQx/R4f+Ffib8WYA6k +49HA55U6WfPs74yfbR09mh79kDV2uQgtkaHFJyuVuO4e3oyUoqe3hQdqOMR2lCAR +NSc7j5JdR9LxkUDqjUT8ipjzsTxwgPHaO0QkUjugs2v1TpivsDSRooI7NzWFTxbk +MkUX5BGUnPnEivBiB3n++1o5kZp1jk3OAi8cqVkosOMjduWei8f6yKpQ4ZKg9cH7 +ovqpDS9R6CDrACDPNJSTBn2VyOdjGVc4FrhGsXp3FAe5prt1b9psvYTTuXrZZJZP +dI1cLPI0Knyymf56gVMGCjp+x1+w7ef0ylGLPtFEuy/6iqWR3H5htZDQo3AgOVgd +R7VFGCA= +=7eg7 +-----END PGP PUBLIC KEY BLOCK----- diff --git a/pkgs/contact-page/src/style.css b/pkgs/contact-page/src/style.css new file mode 100644 index 0000000..5d99114 --- /dev/null +++ b/pkgs/contact-page/src/style.css @@ -0,0 +1,18 @@ +body { + font-family: "PT Sans", "Helvetica", "Helvetica Neue", "Roboto", "Arimo", "Arial", sans-serif; +} + +.container { + max-width: 500px; + margin: 0 auto 50px; +} + +tr td:first-child::after { + content: ":"; +} + +a { + text-decoration: none; + color: inherit; + font-weight: 600; +} diff --git a/pkgs/default.nix b/pkgs/default.nix index 7c5fdbf..95c15d1 100644 --- a/pkgs/default.nix +++ b/pkgs/default.nix @@ -11,6 +11,7 @@ in wordclock-dimmer = prev.python3Packages.callPackage ./wordclock-dimmer { }; sbruder = prev.recurseIntoAttrs { + contact = callPackage ./contact-page { }; imprint = callPackage ./imprint { }; };